←2008-02 2008-03 2008-04→ ↑2008 ↑all
2008-03-01
00:00:31 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
00:10:00 -!- timotiis has quit ("leaving").
00:13:09 -!- pikhq has joined.
00:18:03 -!- olsner has quit (Read error: 110 (Connection timed out)).
01:06:02 * Sgeo wants to have lucid dreams!
01:12:26 <lamentb> then have them.
01:22:59 -!- ihope has joined.
02:01:24 -!- GreaseMonkey has joined.
02:03:46 -!- Corun has quit ("This computer has gone to sleep").
02:40:38 <ehird> > ((Array new '(1 2 3)) length)
02:40:38 <ehird> 3
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:23 <oklofok> never heard that!
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:10:37 <bsmntbombdood> scrubs is a terrible show
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:06 <bsmntbombdood> ads?
03:12:10 <bsmntbombdood> that's why you bittorent them
03:12:38 -!- ehird has quit ("Konversation terminated!").
03:13:31 -!- GregorR-L has joined.
03:19:55 <bsmntbombdood> purdue lol
03:20:02 <GregorR-L> PURDUELAWL
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:44:53 <bsmntbombdood> hahahahah awesome
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:47:06 <bsmntbombdood> doesn't need hot air...
03:47:30 <bsmntbombdood> uses heat right from the chip
03:48:17 <bsmntbombdood> cool that it's self-regulating too
03:49:47 -!- ihope_ has joined.
03:51:01 -!- ihope has quit (Read error: 110 (Connection timed out)).
03:51:10 -!- ihope_ has changed nick to ihope.
04:05:31 * GregorR-L reappears.
04:05:44 <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:18:01 <pikhq> Mmkay.
04:19:57 -!- immibis has quit ("Hi Im a qit msg virus. Pls rplce ur old qit msg wit tis 1 & hlp me tk ovr th wrld of IRC. and dlte ur files. and email ths to).
04:30:59 * Sgeo wants lucid dreams!
04:53:52 * bsmntbombdood too!
04:54:24 * pikhq considers vomiting
04:54:40 <bsmntbombdood> i've done that before
04:54:53 <GregorR-L> ... vomited?
04:54:57 <bsmntbombdood> yes
04:54:57 <GregorR-L> I should think so.
04:55:19 <bsmntbombdood> it is not something i consider pleasent
04:55:39 <GregorR-L> I'm going with the Seinfeld plan: I will never vomit again, because I WILL NEVER VOMIT AGAIN >_<
04:55:55 <bsmntbombdood> neither is my spelling
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.
15:19:11 <ehird> oklopol: hello
16:16:37 -!- Corun has quit ("This computer has gone to sleep").
16:16:51 -!- ihope has quit (Read error: 110 (Connection timed out)).
16:30:59 <oklopol> hies
16:53:37 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
16:53:37 -!- slereah__ has joined.
17:11:32 -!- slereah_ has joined.
17:11:32 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
18:02:38 -!- ihope___ has joined.
18:02:41 -!- ihope___ has changed nick to ihope.
18:24:23 -!- timotiis_ has joined.
18:26:02 -!- otesanek has joined.
18:29:54 * Judofyr makes a Skull-interpreter in Ruby
18:30:35 <RodgerTheGreat> Skull?
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:31:27 <Judofyr> things*
18:31:32 <RodgerTheGreat> interesting
18:31:33 <Judofyr> it only needs input...
18:32:13 <RodgerTheGreat> rather like BF squeezed into a LISP-like syntax
18:32:35 <Judofyr> yeah
18:32:40 <Judofyr> without input..
18:32:51 <Judofyr> but that shoudn't be hard to implement
18:33:17 <RodgerTheGreat> {read} :D
18:33:42 <Judofyr> what about (1)?
18:33:51 <RodgerTheGreat> hm..
18:34:01 <Judofyr> {} is already used...
18:34:03 <Judofyr> :P
18:34:08 <RodgerTheGreat> :INPUT: might match the syntax of the language better
18:34:13 <Judofyr> yeah
18:34:56 <RodgerTheGreat> { x[:INPUT:]} or similar
18:35:14 <RodgerTheGreat> and rather than incrementing, you could set?
18:35:34 <Judofyr> nah. I like the inc/dec
18:35:55 <Judofyr> we better speak to fr34k (the creator)
18:36:16 <RodgerTheGreat> good idea
18:38:42 -!- timotiis has quit (Read error: 110 (Connection timed out)).
18:44:44 -!- oerjan has joined.
18:46:31 -!- lamentb has changed nick to lament.
18:51:57 <ehird> Judofyr: Ruby!
18:52:01 <Judofyr> yay
18:52:05 <Judofyr> and Treetop
19:14:41 -!- otesanek has left (?).
19:20:55 <Judofyr> Yay!
19:21:03 <ehird> treetop, heh
19:21:05 <Judofyr> It runs the Hello World :D
19:21:08 <ehird> i might use that soemtime actually
19:21:09 <ehird> but..
19:21:12 <ehird> treetop is overkill for this
19:21:14 <ehird> don't you think
19:21:23 <Judofyr> I just want to check out Treetop
19:21:27 <ehird> hehe
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:25 <Judofyr> (which are modules)
19:23:53 * Judofyr doesn't know if it's the Treetop-way to do it, but it works like a charm
19:24:16 <Judofyr> beware of some weird names..
19:24:23 <Judofyr> negopos = negative or positive
19:24:30 <Judofyr> mod = modifies cell
19:30:12 <ehird> nice
19:30:34 <ehird> Judofyr: do you know of any doctest libs for ruby, btw?
19:30:42 <Judofyr> nope, sorry
19:31:08 <ehird> :(
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
19:39:12 <ihope> Sounds good.
19:57:07 * Judofyr implemented input too :)
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:41:16 <Judofyr> returns -1 on EOF
20:41:55 <Judofyr> hm..
20:42:02 <Judofyr> does it need negative values?
20:43:17 <ehird> return 0 on eof!
20:43:17 <ehird> :D
20:48:52 <ehird> i own #moderatelyrainyesoteric
20:48:53 <ehird> that rules
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:43:51 <Judofyr> i hope so :P
21:45:52 <ihope> Unfortunately, I have 1,376,544 distractions.
21:49:16 <Judofyr> /quit = -1
21:56:06 <ehird> Judofyr: i just got that
21:56:07 <ehird> :(
21:56:25 <Judofyr> Anyone knows how to get in touch with fr34k?
21:56:36 <ehird> cleverly
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:00:51 <ehird> (with pygame)
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:15:49 <ehird> perlnomic?!
22:16:06 <Judofyr> KilBot = ?
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:30:57 <ehird> :P
22:31:07 <Judofyr> :P
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)).
2008-03-02
00:00:16 -!- pikhq has joined.
00:02:44 -!- ehird has quit ("Konversation terminated!").
00:13:06 -!- timotiis_ has quit ("leaving").
00:20:11 -!- immibis has quit (Connection timed out).
00:32:03 -!- RedDak has quit (Remote closed the connection).
01:44:39 -!- UnrelatedToQaz has joined.
01:51:54 -!- jix has quit ("CommandQ").
02:24:01 -!- UnrelatedToQaz has quit ("ChatZilla 0.9.81 [Firefox 3.0b3/2008020514]").
02:33:24 -!- ihope has quit (Read error: 110 (Connection timed out)).
02:53:14 -!- Quaver has joined.
03:23:02 -!- immybo_ has joined.
03:25:04 -!- immybo_ has quit (Client Quit).
03:54:25 -!- Quaver has quit.
05:35:18 -!- Sgeo has quit (Connection timed out).
06:17:07 -!- immibis has joined.
06:59:01 -!- immibis has quit ("Hi Im a qit msg virus. Pls rplce ur old qit msg wit tis 1 & hlp me tk ovr th wrld of IRC. and dlte ur files. and email ths to).
07:22:53 -!- GreaseMonkey has joined.
07:23:39 -!- oerjan has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:17:18 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)).
08:37:29 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)").
09:43:01 -!- ihope___ has joined.
09:43:06 -!- ihope___ has changed nick to ihope.
10:30:17 -!- oerjan has quit ("Fool! Er, food.").
10:33:40 -!- sebbu2 has changed nick to sebbu.
10:36:03 -!- RedDak has joined.
11:11:07 -!- jix has joined.
14:29:53 -!- RedDak has quit (Remote closed the connection).
15:05:28 <slereah_> Is there an interpreter for the analytical engine?
15:06:16 <olsner> probably
15:07:34 <slereah_> http://www.fourmilab.ch/babbage/cmdline.html
15:07:37 <slereah_> Thar
15:23:15 -!- Judofyr has joined.
15:23:23 <Judofyr> Hi everybody :)
15:40:56 <slereah_> Hi.
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:22:50 <ehird> jee-zus
16:22:51 <ehird> ML is ugly
16:23:28 <slereah_> ML?
16:23:35 <ehird> specifically, OCaml
16:23:55 <slereah_> Oh.
16:24:01 <slereah_> The Haskell painted in red?
16:24:52 <ehird> *Sgeo wants lucid dreams!
16:24:52 <ehird> *bsmntbombdood too!
16:24:52 <ehird> *pikhq considers vomiting
16:24:55 <ehird> that is BIZZARE
16:25:05 <Judofyr> lol
16:48:29 -!- RedDak has joined.
17:25:19 -!- ihope___ has joined.
17:25:57 -!- Judofyr has quit ("- nbs-irc 2.36 - www.nbs-irc.net -").
17:37:09 <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:10 <slereah_> any number whatever.
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:06:36 <RodgerTheGreat> indefinite != infinite.
18:06:51 <slereah_> Oh. Misread that part.
18:07:02 <RodgerTheGreat> heh
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:11 <RodgerTheGreat> Looms were the first to use punchcards, remember?
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:03 <ehird> who's interested?
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:14:38 <Sgeo> WHat's zing/
18:15:06 * Sgeo goes to get rid of unneeded channels in his autojoin list
18:15:13 <ehird> ooh, maybe via irc!
18:15:16 <ehird> Sgeo: proglang
18:16:10 <ehird> the command line interface will be awesome
18:16:11 <ehird> :-P
18:17:31 <RodgerTheGreat> ehird: so, a todo list app with commandline, web-based and IRC-based interfaces?
18:17:51 <slereah_> In PSOX? :o
18:18:06 <ehird> RodgerTheGreat: Pretty much.
18:18:10 <ehird> RodgerTheGreat: But with actually unique features.
18:18:14 <RodgerTheGreat> sounds potentially quite nifty
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:20:06 <ehird> :P
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:23 <ehird> duh! :)
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:17 <ehird> or, something
18:22:34 <RodgerTheGreat> and if you just say "todo", it lists out a line-by line list of your todos
18:22:49 <RodgerTheGreat> then it'd be easy to grep for things
18:23:07 <ehird> yes
18:23:13 <ehird> formatted with gorgeous ANSI codes
18:23:15 <ehird> and maybe paged
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:35 <ehird> or something
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:25:56 <ehird> with git.
18:26:02 <RodgerTheGreat> :(
18:26:11 <RodgerTheGreat> this is a bad idea.
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:26 <ehird> hardly
18:28:30 <ehird> i like simple, minimalistic things
18:28:32 <ehird> like git.
18:31:52 * ihope___ arrives in a huff
18:31:54 -!- ihope___ has changed nick to ihope.
18:32:03 <slereah_> Hello iHope
18:32:42 <RodgerTheGreat> hey, ihope
18:33:27 -!- Judofyr has joined.
18:39:46 -!- oerjan has joined.
18:42:54 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
18:43:01 -!- slereah_ has joined.
19:01:44 -!- Sgeo has quit ("Ex-Chat").
19:02:03 -!- Sgeo has joined.
19:05:10 <Sgeo> http://sgeo.diagonalfish.net/screenshots/xchat_strangeness.png
19:11:40 <ihope> Subchannels. Cool.
19:12:44 <ehird> that's cool
19:12:44 <ehird> :D
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:19 <ehird> channel uris.
19:13:26 <ehird> decentralized channel relations!
19:13:31 <lament> ugh
19:13:34 <ihope> ehird: but IAIC doesn't spell anything!
19:13:47 <ehird> IIRC
19:13:49 <ehird> Infinite IRC
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:16:49 <ehird> of course.
19:16:51 <ehird> that's the joke.
19:17:16 <lament> oh, it was a joke?
19:17:17 <lament> :D
19:17:32 <ehird> yes.
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:14 <lament> and now you can!
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:57:53 <oklokok> topic awesome as always
21:58:21 -!- oklokok has set topic: Note to self: change topic..
21:58:42 -!- ehird has set topic: awesome as always.
22:13:55 -!- pikhq has set topic: #esoteric | awesome as always.
22:14:22 * Sgeo wonders why pikhq isn't in Sine
22:14:30 <Sgeo> Or ehird
22:26:21 <ihope> pikhq: get thee to Sine!
22:27:10 <slereah__> *sin
22:32:07 <pikhq> Ne.
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.
2008-03-03
00:09:18 -!- olsner has quit ("Leaving").
00:13:32 -!- ehird has quit ("Konversation terminated!").
00:17:47 -!- Corun has quit (Read error: 104 (Connection reset by peer)).
00:20:00 -!- Tritonio_ has joined.
00:20:25 -!- Corun has joined.
01:02:49 <slereah_> Man are the programs for the analytical engine ugly.
01:04:14 <Tritonio_> hello
01:04:40 <slereah_> Hi.
01:05:08 <ihope> Where can you see them?
01:05:42 -!- sebbu has quit ("@+").
01:06:27 <slereah_> IN MY MIND
01:06:28 <slereah_> AAAAAA
01:06:33 <slereah_> But more accurately,
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:19 <oklokok> no you didn't
05:10:22 <oklokok> get over it
05:10:28 <pikhq> www.xkcd.com
05:10:35 <pikhq> Randall Munroe's word is law.
05:11:04 -!- GreaseMonkey has joined.
05:11:13 <slereah_> Finally!
05:11:18 <slereah_> It's about time!
05:12:11 <oklokok> :o
05:21:19 -!- calamari has quit (Remote closed the connection).
05:25:30 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
05:26:50 -!- Judofyr has joined.
05:35:32 -!- Sgeo has quit (Remote closed the connection).
06:54:31 <bsmntbombdood> i was winning the game until 10:00
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:00 <oklokok> K={A=_;{B=_;A}};
07:15:00 <oklokok> S!K!K!3
07:15:09 <oklokok> that works now
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> K={A=_;X=8;{B=_;A}};
07:55:38 <oklokok> X = {_ - 3};
07:55:38 <oklokok> Y = 4;
07:55:38 <oklokok> (`(`(`(s (`(s (k S)) (`(s (k K)) (`(s K) K)))) (k (`(s K) K))) X) Y)
07:55:41 <oklokok> works!
07:56:14 <oklokok> wonder if i can safely assume scoping works perfectly
07:56:27 <oklokok> that applies X to Y
07:56:34 <oklokok> returning 1
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:08:13 <AnMaster> wtf is oklotalk?
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:13 <oklokok> you'd think :)
09:13:23 <oklokok> i wrote a tutorial of some sort
09:13:30 <AnMaster> link?
09:13:55 <oklokok> but that's a bit outdated now, because i made a few changes (for the better!)
09:13:59 <oklokok> hmm
09:14:10 <oklokok> i can try and locate it
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:15:57 <AnMaster> what kind of language is it
09:16:13 <oklokok> it's designed to be fairly terse
09:16:18 <oklokok> with a very free syntax
09:16:32 <AnMaster> you know about perl right?
09:16:34 <AnMaster> ;P
09:16:35 <oklokok> for example, you can do sexps, haskell-style and C-style function calls
09:16:38 <oklokok> yeah
09:16:47 <oklokok> i know some perl
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:17:52 <oklokok> perl is a lot less free
09:17:56 <oklokok> in syntax
09:18:11 <AnMaster> oklokok, ok thats extreme
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:02 <AnMaster> hm?
09:20:12 <AnMaster> what do you mean?
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:01 <AnMaster> what is it's idea?
09:21:18 <oklokok> you know haskell?
09:21:32 <oklokok> well, you don't have to
09:21:46 <AnMaster> I don't know much functional programming really
09:21:53 <AnMaster> a bit of lisp
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:03 <oklokok> like
09:22:04 <oklokok> hmm
09:22:16 <oklokok> Tree 0 = ()
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:49 <oklokok> do you see it?
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:18 <oklokok> in the mathematical sense
09:23:31 <AnMaster> ah now I think I understand
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:31 <AnMaster> ok
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 <oklokok> i can show this in code
09:25:04 <AnMaster> oklokok, we aren't talking about rings as in "kernel executes in ring 0" I assume?
09:25:12 <oklokok> heh
09:25:13 <oklokok> no
09:25:15 <oklokok> like
09:25:33 <oklokok> we have nodes A, B, C, D and E, where A->B->C->D->E->A
09:25:36 <AnMaster> ah right
09:25:37 <oklokok> where -> is a connection
09:25:52 <AnMaster> oklokok, looped linked list?
09:25:56 <oklokok> this would be something like this (wait a bit)
09:26:04 <oklokok> yeah
09:26:45 <AnMaster> (I normally prefer C, I guess that shows)
09:27:05 <oklokok> Ring n :: #top
09:27:05 <oklokok> = Ring n 0
09:27:05 <oklokok> Ring n n :: #top
09:27:05 <oklokok> Ring n m
09:27:05 <oklokok> -> Ring n m+1
09:27:10 <oklokok> this is one way to do it
09:27:16 <oklokok> :: means tagging
09:27:20 <AnMaster> ok
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:27:59 <oklokok> -> means "connection to"
09:28:11 <oklokok> as do <- and <->, but for different directions
09:28:24 <AnMaster> right
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:29:56 <oklokok> no it isn't
09:30:01 <AnMaster> no?
09:30:03 <oklokok> no.
09:30:07 <AnMaster> ?
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:07 <AnMaster> oklokok, a lot of things are
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:25 <oklokok> *actually
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:40:23 <oklokok> okay, fixed
09:42:05 <oklokok> also, dropped my cell phone in a glass of water
09:42:09 <oklokok> by accident
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:43:56 <oklokok> sql sucks by the way
09:44:25 <AnMaster> heh
09:44:35 <AnMaster> oklokok, I don't even understand the problem
09:44:42 <oklokok> 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:46 <AnMaster> so not cs student yet heh
09:45:52 <oklokok> AnMaster: 1) i wouldn't write that 2) graphica is designed for the exact purpose of making graphs
09:45:54 <AnMaster> however I plan that next year
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 <AnMaster> sigh
09:46:35 <oklokok> well, i'm in the same class
09:46:46 <oklokok> you know more of us?
09:46:57 <oklokok> hot stuph
09:47:10 <AnMaster> huh?
09:47:19 <AnMaster> ispell doesn't know "stuph"?
09:47:22 <AnMaster> nor do I
09:47:26 <oklokok> ph == ff
09:47:33 <AnMaster> ah
09:47:39 <oklokok> like graph is actually just leetspeak for graff
09:47:39 <AnMaster> weird typo
09:47:49 <AnMaster> oklokok, now that is a joke
09:48:02 <oklokok> yes.
09:48:06 <oklokok> it indeed was.
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:39 <AnMaster> mhm
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:51:05 <oklokok> r
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:11 <AnMaster> as a new language of course
09:53:29 <oklokok> i was designing something of that sort as a macro language for brainfuck
09:53:41 <oklokok> cerebral penetration
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:38 <AnMaster> oklokok, oh why not use m4 ;P
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:02 <oklokok> m4?
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:37 <AnMaster> oklokok, not procedural
09:55:44 <AnMaster> I done a procedural one myself so...
09:55:47 <AnMaster> I mean functional
09:55:56 <AnMaster> higher order functions and so on
09:56:00 <oklokok> first-class fucntions?
09:56:03 <oklokok> functions
09:56:04 <oklokok> yeah
09:56:31 <oklokok> so... m4 does generix object oriented macro languages?
09:56:33 <oklokok> generic
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:41 <oklokok> no
09:57:43 <AnMaster> they use m4 heavily
09:57:45 <oklokok> i've never used anything
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:58:06 <oklokok> it is windows now
09:58:11 <AnMaster> ugh
09:58:17 <oklokok> vista <3
09:58:27 <AnMaster> :(
09:58:30 <AnMaster> DRM :(
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:35 <AnMaster> well I don't use ubuntu
10:02:42 <AnMaster> I run Gentoo Linux and FreeBSD
10:02:56 <oklokok> i hear gentoo works
10:03:11 <oklokok> but i'm fairly sure i couldn't get it installed
10:03:14 <AnMaster> works well for me
10:03:23 <AnMaster> oklokok heh
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:09:49 <oklokok> <ololobot> scrubs
10:09:57 <oklokok> ololobot is never wrong
10:28:36 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
10:30:00 -!- slereah_ has joined.
10:30:27 <AnMaster> oklokok, what is scrubs?
10:30:31 <oklokok> a show
10:30:40 <oklokok> tv series
10:30:45 <oklokok> sitcom
10:30:50 <AnMaster> Isee
10:30:52 <AnMaster> I see*
10:41:59 <oklokok> F = {A B -> A * B; N -> N * 3};
10:41:59 <oklokok> f 3;
10:41:59 <oklokok> f 6 7
10:42:03 <oklokok> pattern mtaching works
10:42:07 <oklokok> *matching
10:42:08 <oklokok> yay
12:18:14 -!- oerjan has quit ("leaving").
12:25:47 -!- sebbu has joined.
13:17:19 -!- Deewiant has left (?).
13:43:39 -!- timotiis has joined.
13:48:45 -!- wildhalcyon has joined.
14:00:01 -!- timotiis has quit ("leaving").
14:00:09 -!- timotiis has joined.
14:04:03 -!- RedDak has joined.
14:21:52 -!- jix has joined.
14:51:31 -!- RedDak has quit (Remote closed the connection).
15:09:24 -!- dbc has quit (Read error: 110 (Connection timed out)).
15:31:03 -!- slereah__ has joined.
15:47:42 -!- dbc has joined.
15:58:45 -!- slereah_ has quit (Connection timed out).
16:09:49 * Judofyr is almost finished with a bf2sku program in Skull+ :)
16:10:54 <Judofyr> pretty slow though
16:27:46 -!- Sgeo has joined.
16:27:53 <Judofyr> yay!
16:28:03 <Sgeo> Hi
16:28:06 <Sgeo> Judofyr, hm?
16:28:11 <Judofyr> bf2sku is 780 bytes in Skull+ :D
16:28:18 <Judofyr> Sgeo: just written a bf2sku
16:28:21 <Sgeo> Skull+?
16:28:32 <Judofyr> http://esoteric.voxelperfect.net/wiki/Skull_plus
16:28:33 -!- helios24 has joined.
16:28:40 <Sgeo> hi helios24
16:28:50 <helios24> hi
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:07:59 <ehird> ais523: hellos
18:08:10 <ais523> ehird:
18:08:26 <ehird> ais523:
18:08:36 * ais523 is here
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:12 <ehird> ping
18:10:31 <ais523> pong
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:08 <ais523> yes
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:15 <ais523> s/propor/proper/
18:18:27 <ehird> ais523: no
18:18:32 <ehird> that's a different one
18:18:35 <ehird> Debian didn't do that
18:18:37 <ais523> that was Firefox
18:18:41 <ehird> yes
18:18:41 <ehird> but
18:18:42 <ehird> I meant the IceWeasel thing
18:18:45 <ehird> very recently
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:42 <ehird> Moz say 'SUR'
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:13 <ais523> I know
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:42 <ehird> yes
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:24 <ehird> exactly
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:48 <lament> Not free at all.
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:27:45 <lament> i mean at any rate
18:28:03 <Sgeo> ++ WARN: initializing libvcd 0.7.23 [linux-gnu/i486]
18:28:03 <Sgeo> ++ WARN:
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:06 <Sgeo> ++ WARN:
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:14 <Sgeo> oops
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:15 <ais523> Mesa
18:29:22 <ehird> ah
18:29:22 <ehird> opengl
18:29:35 <ais523> luckily they give lots of hints
18:29:39 <ehird> i like opengl
18:29:39 <ehird> :P
18:29:43 <ehird> ais523: their website says is.
18:29:44 <ehird> it
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 <ais523> yes
18:30:17 <Sgeo> wawait, OpenGL isn't open?
18:30:22 <ais523> although even that sentence is carefully worded
18:30:24 * Sgeo is confuzzled
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:46 <ais523> yes
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:33:57 * Sgeo opens up k3b
18:34:00 <ehird> Hm.
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:34:46 <ehird> yep
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:28 <ehird> that's trivial
18:37:29 <ehird> :)
18:37:45 <ais523> not that trivial with the particular make of power button
18:37:49 <ais523> when wearing shoes
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:41:10 <ehird> SWIM = awesome
22:41:38 <Sgeo> SWIM?
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
22:53:35 <ehird> Sgeo: ping
22:54:00 <Sgeo> pong
22:54:25 <ehird> #swim
23:08:32 -!- jix has quit ("CommandQ").
23:17:09 -!- RedDak has quit (Remote closed the connection).
23:25:26 -!- olsner has quit ("Leaving").
23:37:38 -!- timotiis_ has quit ("sleep").
2008-03-04
00:11:06 -!- adu has joined.
00:18:41 <adu> hi
00:19:35 -!- adu has quit.
00:20:30 <ehird> bye
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:56:57 <GregorR> It's pretty horrible.
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:21:12 <Sgeo> Rull-on?
01:25:21 <pikhq> Full-on.
01:31:34 * Sgeo is going to go to sleep soon, maybe I'll have a decent amount of sleep tonight!
01:47:14 -!- sebbu has quit (No route to host).
01:50:26 <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:26:06 <bsmntbombdood> meh
05:26:34 <RodgerTheGreat> meh?
05:29:48 <bsmntbombdood> at your comic
05:31:37 <pikhq> LMAO
05:31:40 <RodgerTheGreat> anything in particular you didn't like about it?
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:17 <RodgerTheGreat> thanks
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:43 <RodgerTheGreat> I'm not sure how I feel about the Comic Sans knockoff
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:11:51 <Tritonio_> hello
14:36:54 -!- RedDak has quit (Remote closed the connection).
15:19:54 * AnMaster just got a SQL error on esolang wiki
15:20:21 <AnMaster> not able to reproduce *shrug*
15:29:03 -!- ehird has joined.
15:29:22 -!- ehird has quit (Remote closed the connection).
15:29:41 -!- ehird has joined.
15:59:38 -!- Judofyr has joined.
16:12:51 -!- slereah_ has joined.
16:13:46 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
16:25:07 -!- timotiis has joined.
16:45:52 -!- ehird has quit ("Konversation terminated!").
16:46:33 -!- slereah__ has joined.
16:46:38 -!- ehird has joined.
16:47:06 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
17:07:54 -!- Corun has joined.
17:09:16 -!- slereah_ has joined.
17:09:52 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
17:38:55 <AnMaster> anyone got an idea for some new language, turing tarpit style, but not just some variation of brainfuck or similar languages
17:39:06 <RodgerTheGreat> hm
17:39:14 * AnMaster wants to code something
17:39:22 <AnMaster> (in C)
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:02 <RodgerTheGreat> one sec
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:08 <AnMaster> hm
17:42:23 <AnMaster> RodgerTheGreat, got any examples of existing stack based esoteric languages?
17:42:30 <AnMaster> (or queue based)
17:42:32 <ehird> yes...
17:42:33 <ehird> FALSE is one
17:42:35 <ehird> Befunge
17:42:40 <ehird> .... thousands, really
17:42:43 -!- ais523 has joined.
17:42:50 <AnMaster> hm ok
17:42:54 <RodgerTheGreat> Arguably, FORTH and PostScript
17:43:01 <slereah_> What of Underload!
17:43:03 <AnMaster> ehird, err wait, befunge is 2D hm
17:43:11 <ehird> uhhh
17:43:12 <ehird> and?
17:43:14 <ehird> slereah_: oh yeah
17:43:15 <AnMaster> hmmm
17:43:16 <RodgerTheGreat> befunge is a hybrid of several things
17:43:17 <ehird> wonderful underload <3
17:43:22 <AnMaster> is there any 3D language :D
17:43:25 <ehird> hello ais523
17:43:26 <ais523> TreFunge
17:43:29 <ehird> AnMaster: Funge-98
17:43:33 <ehird> contains N-funge
17:43:37 <ehird> for all values of N
17:43:38 <AnMaster> aww
17:43:38 <RodgerTheGreat> AnMaster: noit-o'-mnain worb
17:43:39 <AnMaster> sigh
17:43:40 <ehird> well, not negative
17:43:42 <ehird> and not 0 i don't think
17:43:44 * slereah_ had an idea.
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:43:55 <RodgerTheGreat> several n-dimensional languages exits
17:43:56 <RodgerTheGreat> *exist
17:43:58 <AnMaster> 1.6 dimensional
17:44:00 <AnMaster> hrrm?
17:44:09 <AnMaster> (wtf would that look like)
17:44:11 <slereah_> A language based on animal populations.
17:44:13 <RodgerTheGreat> queue-oriented languages are largely unexplored!
17:44:24 <RodgerTheGreat> a language involving apples and string
17:44:29 <AnMaster> RodgerTheGreat, not sure how to make one, but sounds interesting
17:44:32 <ehird> AnMaster: integers
17:44:41 <slereah_> You define areas, and animals
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:05 <slereah_> And you act on those.
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:38 <ais523> OK
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:14 <ais523> Sceql
17:46:21 <ais523> (if I've spelt that correctly)
17:46:30 <ais523> that was a queue-based language
17:46:33 * AnMaster looks at RodgerTheGreat
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:39 <AnMaster> ah true
17:46:51 <ehird> :D
17:46:58 <AnMaster> would it be possible to make a queue based language TC?
17:47:05 <RodgerTheGreat> I said "largely unexplored", not "none exist"
17:47:12 <slereah_> I don't see why it wouldn't be possible!
17:47:13 <ehird> AnMaster: yes
17:47:17 -!- oerjan has joined.
17:47:20 <AnMaster> hm
17:47:58 <RodgerTheGreat> and I'd still like that biblically-themed gimmick language we were tossing about a while back
17:48:26 <slereah_> Would it have TEN COMMANDS?
17:48:48 <ehird> ments
17:48:51 <ehird> oh
17:48:53 <oerjan> * AnMaster just got a SQL error on esolang wiki
17:48:53 <ehird> you referenced that
17:48:54 <ehird> heh
17:49:01 <AnMaster> oerjan, yep
17:49:01 <ehird> everyone gets those
17:49:01 <oerjan> it does that all the time
17:49:07 <AnMaster> oerjan, ah
17:49:10 <ehird> RodgerTheGreat: DO UNTO OTHERS
17:49:20 <oerjan> ye olde heisenbug
17:49:27 <RodgerTheGreat> I figured commandments would be like functions or assertions
17:49:30 <slereah_> CAST THE FIRST POINTER
17:49:32 <slereah_> Or something
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:49:47 <RodgerTheGreat> LET THERE BE PEPERONY AND CHEASE
17:49:53 <slereah_> What would Jesus program!
17:50:13 <AnMaster> what about other religions
17:50:26 <ehird> hmm
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:40 <ehird> * SELECT FROM
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:08 <ehird> KNOW <value>
17:51:12 <RodgerTheGreat> haha
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:02 <AnMaster> </random idea>
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:18 <ehird> yes, that's it
17:52:22 <ehird> <.<
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:46 <slereah_> Is heaven the output?
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:23 <oerjan> cat >/dev/hell
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:53:50 <RodgerTheGreat> "the void" or "clay" would probably be input
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:26 <AnMaster> oklokok, hehheh
17:54:40 <slereah_> LET THERE BE X
17:54:40 <AnMaster> RodgerTheGreat, this reminds me of that shakespearlang
17:54:44 <ehird> RodgerTheGreat: it would be 40% nop :p
17:54:49 <RodgerTheGreat> lol
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:30 <ais523> that exists
17:55:32 <ais523> it's called 'bash'
17:55:34 <AnMaster> Judofyr, err, that's called shell
17:55:35 <slereah_> Heh
17:55:49 <Judofyr> :P
17:55:56 <AnMaster> Judofyr, ais523, I wrote an modular irc bot in bash btw: http://envbot.org
17:56:02 <oklokok> ais knows
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:34 <ehird> *all
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:56:56 <AnMaster> ehird, too easy in zsh
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:22 <ehird> AnMaster: hardly
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:48 <ehird> most.
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:34 <AnMaster> and got bash but no zsh
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:00:30 <ehird> itd be a rewrite
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:31 <slereah_> Yes.
18:04:39 <slereah_> It's called the internet
18:04:47 <AnMaster> meaning, it would sooner or later generate a brainfuck interpreter heh
18:04:47 <ehird> AnMaster: um, duh
18:04:51 <slereah_> Millions of monkeys on millions of typewriters!
18:04:55 <ehird> why is that suprising?
18:04:59 <AnMaster> not really
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:13 <AnMaster> :)
18:05:17 <slereah_> Not really
18:05:20 <ehird> if you have a perfect random number generator on (0,1) [i.e. for bits]
18:05:21 <slereah_> It's totally random
18:05:23 <ehird> and run it infinitely
18:05:25 <AnMaster> ehird, indeed
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:12 <slereah_> well, what's inside the if
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:21 <AnMaster> anyone want to calculate? :)
18:06:43 <ehird> oklokok: support one
18:06:45 <ehird> err
18:06:46 <ehird> oklokok: support what
18:06:52 <ehird> AnMaster: /dev/urandom is not random
18:06:53 <AnMaster> ,
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:02 <oklokok> ehird: that monkey thing!
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:14 <ehird> oklokok: ummm
18:07:23 <ehird> oerjan: tell oklokok he is silly
18:07:26 <AnMaster> based on atmospheric noise
18:07:28 <AnMaster> ehird, ^
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:44 <ehird> slereah_: OK.
18:07:45 <oklokok> oerjan: tell ehird i was joking
18:07:50 <ehird> Then a rng on (0,255)
18:07:52 <ehird> oklokok: oh. :P
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:11 <slereah_> (32,127) would be better.
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:08:53 <oklokok> (i know i could kill it)
18:09:18 <oerjan> oklokok: tell let msg = "oerjan: tell oklokok to tell " ++ msg in msg
18:10:15 <ehird> uhh
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:29 <ehird> ======>
18:10:39 <ehird> oerjan: tell oklokok to tell oerjan: tell oklokok to tell oerjan: ...
18:10:44 <AnMaster> oklokok, hehe
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:05 <slereah_> IRP can does all!
18:11:14 <slereah_> ehird: Fuck-you error
18:11:44 <oerjan> sheesh
18:11:46 <oklokok> ehird: you too must be happy to know i actually begun writing an oklotalk interp
18:12:03 <ehird> oklokok: OH YEAH
18:12:11 <oklokok> :P
18:12:13 <AnMaster> oklokok, link to source?
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:25 <AnMaster> ehird, I know
18:12:28 <AnMaster> I seen it
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:23 <oklokok> no.
18:13:27 <oklokok> i'm scared of the wiki
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:13:48 <ehird> oerjan: ok, fine
18:13:49 <ehird> evaluate that
18:14:00 <slereah_> What be the syntax?
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:21 <slereah_> I've seen examples
18:14:23 <AnMaster> ehird, you forgot the magic word (not, xyzzy!)
18:14:25 <AnMaster> ;P
18:14:26 <slereah_> But I don't know what they mean
18:14:28 <ehird> Show him quicksoooooooooooooooooooooooooooooort
18:14:33 <oklokok> :D
18:14:39 <oklokok> i can show *a* quicksort
18:14:41 <ehird> yes
18:14:43 <ehird> an evil one
18:15:14 <slereah_> Bible Code does not approve of evil codes
18:16:15 <oklokok> {L->{.L>}/_+._+{.L<}/:_}
18:16:21 <oklokok> i think that will do
18:16:30 <slereah_> What does it mean:! :o
18:16:34 <oklokok> that's not fully portable
18:16:37 <Judofyr> it's just mean!
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:17:56 <AnMaster> ehird, how comes?
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:21 <ehird> ais523: haha
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:21 <AnMaster> ah ojk
18:19:22 <AnMaster> ok*
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:02 <ehird> hey
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:13 <slereah_> Ten-ary? :o
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:20:59 <oklokok> umm, not greater, smaller
18:21:03 <slereah_> 2i would be moar fun
18:21:04 <ehird> AnMaster: um it is
18:21:08 <oklokok> {.L<}/:_ is the inverse
18:21:14 <ehird> ais523 did a little bit writing a TURKEY BOMB interp beforehand
18:21:15 <ehird> so ... :D
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:36 <AnMaster> seemed*
18:21:39 <ais523> AnMaster: what in particular seems impossible about it?
18:21:40 <AnMaster> like "half a bit"
18:21:46 <ehird> AnMaster: half a bit is easy
18:21:49 <ehird> just use crazy padding
18:21:56 <AnMaster> ehird, err, what?
18:21:57 <oklokok> (i want to remind everyone once again oklotalk is *not* my official terse language! cise is :))
18:22:18 <slereah_> Cise?
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:09 <oklokok> slereah_: Cise owns.
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:34 <oklokok> umm, like what?
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:46 <slereah_> *own the wiki
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:56 <ehird> that's zen
18:23:59 <AnMaster> ehird, another thing: PUDDING size: Infinite. impossible to *implement*
18:24:01 <ais523> HexML?
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:24:46 <AnMaster> hm true
18:25:33 -!- RedDak has quit (Remote closed the connection).
18:25:50 <oerjan> ehird: the ide will be PARROT NUKE
18:25:54 <ehird> oerjan: haha
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:06 * AnMaster tries
18:26:19 <AnMaster> wow indeed
18:26:34 <ehird> breaks if you add more text though i think
18:26:34 <ehird> :)
18:26:43 <AnMaster> ehird, still, it's pretty :)
18:26:51 <ehird> yes
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:43 <AnMaster> weird
18:27:45 <ehird> ais523: opinions on the name CHICKEN EXPLOSIVE? ;)
18:27:48 <ehird> AnMaster: shell-mode is too hacky
18:27:50 <ehird> but try:
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:13 <ehird> ah
18:28:14 <ehird> let me try
18:28:14 <ais523> ehird: it doesn't trip off the tongue like TURKEY BOMB does
18:28:31 <ehird> hmm
18:28:32 <slereah_> oklokok: Looks like noise!
18:28:34 <ehird> you're right, AnMaster
18:28:39 <ehird> ais523: true
18:28:51 <AnMaster> ehird, no idea why it doesn't
18:29:31 <AnMaster> ehird, also doesn't work for lisp mode (as in *scratch* buffer
18:29:49 <ehird> nxml-mode is evil
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:13 <ehird> i'll impl
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:12 <ehird> hehe
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:37 <ehird> oklokok: sure
18:31:38 <ehird> i can do that
18:31:42 <oklokok> anyway, i'll go buy me some keb
18:31:45 <AnMaster> ah emacs-23 has it
18:31:59 <AnMaster> ehird, ok, that's eww
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:39 <ehird> AnMaster: no
18:32:41 <ehird> it's brilliant
18:32:45 <ehird> it is amazing for editing xml
18:32:47 <ehird> pure bliss
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:49 <AnMaster> ...
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:33:51 <AnMaster> it works fine under emacs-22
18:33:59 <ehird> -32
18:33:59 <ehird> xD
18:34:04 <AnMaster> ehird, err
18:34:06 <ehird> anyway
18:34:06 <AnMaster> 23 I meant
18:34:06 <ehird> its this
18:34:08 <AnMaster> sorry
18:34:08 <ehird> (setq inhibit-splash-screen t)
18:34:20 <AnMaster> ehird, err, they renamed it?
18:34:21 <AnMaster> sigh
18:34:49 <ais523> I have emacs aliased in my bashrc to not show the splash screen
18:34:51 <AnMaster> ehird, still doesn't work
18:35:17 <ais523> alias emacs='emacs --no-splash'
18:35:49 <ehird> AnMaster: #emacs
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:21 <ehird> ais523: hey you
18:41:26 <ehird> uhh what was i going to say
18:41:48 <ehird> :|
18:42:01 <ais523> how am I meant to know?
18:42:14 <ehird> magic
18:42:21 <ehird> ais523: how's BURKEY TOMB for a name? :P
18:42:28 <ais523> yes
18:43:10 <ehird> xD
18:43:13 <ehird> kind of hard to pronounce
18:44:02 <ais523> 'tomb' is a real word
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:35 <ehird> AIOTBIMJ
18:46:55 <ais523> that's even harder to pronounce
18:47:59 <ehird> Yeah well :P
18:49:06 <AnMaster> BURKEY TOMB is rather easy
18:49:13 <AnMaster> IMO
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:49:48 <ehird> :(
18:49:56 <AnMaster> nop?
18:50:01 <ehird> Turkey Bomb
18:50:01 <ehird> TB
18:50:06 <ehird> oklokok: \o/ :D
18:51:25 * slereah_ wrote a cat for the Andrei Machine :D
18:51:40 <AnMaster> slereah_, for what?
18:51:49 <slereah_> The Andrei Machine 9000
18:51:56 <AnMaster> what is it?
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:36 <oklokok> is andrei your name
18:52:44 <slereah_> It's the name of Kolmogorov
18:52:48 <slereah_> And shorter to write.
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:22 <AnMaster> but no mention of machine
18:53:30 <ehird> http://www.esolangs.org/wiki/Kolmogorov_machine
18:53:30 <ehird> second result
18:53:41 <AnMaster> ehird, not in Swedish google :(
18:53:59 <ehird> don't use swedish google then
18:54:07 <AnMaster> ehird, it redirects me to it
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:55:57 <oklokok> :P
18:56:00 <AnMaster> ehird, weirdly: redirects
18:56:02 * AnMaster sigjs
18:56:04 <AnMaster> sighs*
18:56:12 <oklokok> if i do something coding-related, it'll prolly be about oklotalk
18:56:17 <oklokok> *tonight
18:56:55 <ehird> oklokok: i just want the spec so i can badly fail to implement it
18:56:55 <ehird> :(
18:57:12 <oklokok> i don't have a spec yet!
18:57:15 <oklokok> so i'd need to make 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:57:53 <oklokok> perhaps tomorrow.
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:22 <Judofyr> lol
18:58:25 <ehird> ais523: okies :P
18:58:28 <Judofyr> I just got a job offer :D
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:08 <bsmntbombdood> oklo!
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:15 <oklokok> bsmnt!
18:59:15 <slereah_> Or something
18:59:24 * bsmntbombdood fellates oklo
18:59:28 <oklokok> uuhh
18:59:32 * Judofyr still has 3 years left with school :(
18:59:41 <bsmntbombdood> Judofyr: me quit school!
18:59:44 <oklokok> high school?
18:59:47 <ehird> Remind me that eso-std.org needs a qdb
18:59:49 <ehird> :D
18:59:54 <slereah_> PRE SCHOOL :O
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:25 <Judofyr> different*
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 <bsmntbombdood> yes i did
19:00:49 <ais523> ehird (and anyone else interested): http://pastebin.ca/928017
19:00:51 <oklokok> *not
19:01:04 <oklokok> bsmntbombdood: no university for you?
19:01:07 <bsmntbombdood> nope
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:31 <ehird> :-P
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:13 <oklokok> es
19:04:18 <ehird> ircbrowse.com
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:08 <ehird> but Don't Bother
19:05:11 <ehird> Writing an interp
19:05:15 <ehird> It is extremely difficult
19:05:17 <AnMaster> ehird, quote from esolang
19:05:21 <AnMaster> I didn't say it wasn't TC
19:05:22 <AnMaster> ...
19:05:27 <ehird> Since, you know, since it was released, *only one person has correctly implemented it*
19:05:27 <AnMaster> quote from the wiki
19:05:35 <slereah_> Heh
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:51 <AnMaster> slereah_, I'm not
19:05:56 <AnMaster> but will be fun to try
19:05:59 <ehird> CCBI/Mycology's site seems to be down
19:06:01 <slereah_> A reasonably good programer?
19:06:08 <AnMaster> slereah_, "okish"
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:49 <ehird> it's Funge98
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:06 <AnMaster> ehird, hrrm
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:32 <AnMaster> I could manage that
19:07:36 <AnMaster> though it isn't TC
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:51 <ehird> ais523: still
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:47 <oklokok> i should check it out
19:08:49 <ehird> by many factors
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:18 <ehird> ais523: doubt it
19:10:22 <ehird> AnMaster: no
19:10:25 <ehird> you couldn't
19:10:33 <AnMaster> then I could use some cleaver tricks with bash's one dimensional arrays
19:10:42 <AnMaster> well known way
19:10:46 <ehird> no, AnMaster
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:10:58 <ehird> heck, I couldn't
19:10:58 <ehird> :P
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:21 <AnMaster> also, speed would be terrible
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:12:58 <AnMaster> ok, befunge-93++ then it is
19:13:06 <ehird> AnMaster: hehe, did that spec scare you?
19:13:09 <ehird> sure scares me
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:13:48 <slereah_> Oh.
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:12 <slereah_> sup?
19:14:18 <ais523> superscript
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:31 <slereah_> It's not TB.
19:15:58 <ais523> ehird: if you can somehow get in the tuber=potato thing, then I like it
19:16:00 <ehird> slereah_: huh?
19:16:07 <slereah_> House reference.
19:16:51 <ehird> ais523: was that sentence even english?
19:16:51 <ehird> :p
19:16:57 <ais523> ehird: yes
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:08 <ehird> oh.
19:18:10 <ehird> potatoculosis
19:18:12 <ais523> and potatos seem linked to TURKEY BOMB in some way
19:18:18 <ehird> #tuberculosis
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:46 <ehird> hahaha
19:18:47 <ehird> :D
19:18:49 <ehird> no, it's fun
19:18:58 <ais523> besides, you aren't there
19:19:05 <ehird> yes, i am
19:19:08 <ehird> #tuberculosis
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:19:39 <ehird> fine, i reg'd it
19:19:51 <oklokok> tuber, cool oasis
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:20:35 <ehird> it's popular! ;)
19:20:37 <oklokok> *nulecule
19:21:54 -!- Corun has quit ("Leaving").
19:26:06 -!- Corun has joined.
19:27:55 <slereah_> oklokok!
19:28:30 <oklokok> !
19:28:51 <oklokok> and don't you fellate me
19:28:58 <oklokok> that's just for bsmnt
19:29:08 <slereah_> Okay.
19:29:08 <bsmntbombdood> what?
19:29:11 <slereah_> Where can I find this Graphica?
19:29:30 <oerjan> must be the alzheimer again
19:29:38 <slereah_> Probably.
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:12 <slereah_> Buttbabies, oerjan
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:31 <RodgerTheGreat> slereah_: try R, perhaps?
19:32:40 <oklokok> http://www.vjn.fi/oklopol/graphica.txt <<< and n-dimensional binary hypercube in case you missed it, slereah_
19:32:45 <oklokok> that's an example
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:33:50 <oklokok> slereah_: r programming
19:34:02 <RodgerTheGreat> wait, do you mean like graph theory graphs, or statistics graphs?
19:34:09 <oklokok> graph theory
19:34:09 <slereah_> Graph theory.
19:34:11 <oklokok> kolmogorov machine
19:34:20 <RodgerTheGreat> oh, then fuck- R probably can't do that
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:02 <oklokok> "managing"
19:35:11 <oklokok> it doesn't manage 'em, just makes
19:36:14 <RodgerTheGreat> I thought it came with some handy data structures
19:37:41 <oklokok> isn't gato just for drawing graphs?
19:37:51 <slereah_> I don't know.
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:49 <RodgerTheGreat> it'd be awfully.... esoteric...
19:38:53 <ais523> oklokok: why the hell would anyone make an esolang anyway?
19:39:01 <slereah_> Sexual perversion?
19:39:07 * RodgerTheGreat high-fives ais523
19:39:13 <Corun> Hmm, sex, what?
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:39:44 <slereah_> Heh.
19:40:01 <slereah_> I guess I can just whip up something with Python.
19:40:07 <slereah_> I always end up there!
19:40:18 <RodgerTheGreat> Corun: you are now in charge of developing a "sexy" programming language. Strike fear into us all.
19:40:30 <oerjan> ayeeeeeh
19:40:33 <slereah_> Penis input?
19:40:51 <RodgerTheGreat> void main() {} -> I put on my robe and wizzard hat
19:41:06 <ehird> zz?
19:41:11 <ehird> also
19:41:13 <ehird> void main()?!
19:41:19 <ehird> that won't even COMPILE
19:41:23 <ehird> you mean: int main(void)
19:41:24 <slereah_> Or would it?
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:23 <ehird> ais523: no no no
19:42:26 <ehird> func()
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:36 <ais523> main returns int
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:06 <RodgerTheGreat> ah, russell's paradox.
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:14 <oerjan> ais523: more or less
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:51:29 <oklokok> yes. even siojuww
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:39 <oklokok> hehe
19:53:41 <oklokok> i have a fun idea
19:53:54 <oklokok> something like urbandictionary, but meanings are generated
19:53:57 <slereah_> Does it involve jello?
19:54:02 <oklokok> that too.
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:42 <oklokok> :)
19:54:56 <oklokok> well, that's an easy but sucky way to do it
19:55:05 <ehird> :(
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:56:32 <oklokok> correct that way.
19:57:42 <ehird> ditto
19:58:08 <oerjan> Ditto: A popular lottery in New Zealand
19:58:35 <slereah_> Holy shit, Gygax is dead
20:00:20 * ais523 checks Slashdot to confirm
20:00:38 * oerjan checked wikipedia
20:00:47 <ehird> ..gygax
20:00:47 <ehird> ?
20:00:50 * ehird is dum
20:00:54 <oerjan> Gary Gygax
20:00:56 <slereah_> Gary Gygax
20:00:58 <slereah_> D&D guy
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:40 <ehird> hah
20:03:42 <ehird> oklokok: src?
20:03:45 <oklokok> the dynamic scoping should work too, sk ofc doesn't tell anything about that.
20:03:48 <oklokok> :o
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:29 <slereah_> As a tree or something
20:04:35 <oklokok> for one, the interp is so slow you would cry.
20:04:46 <ehird> i dooo
20:04:47 <ehird> i like slow
20:04:49 <oklokok> heh
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:05:56 <ehird> heh
20:05:58 <ehird> ok :p
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:33:48 <AnMaster> slereah_, inkscape?
20:33:58 <slereah_> I'll try it.
20:46:13 -!- Corun has quit ("Leaving").
21:06:40 <ehird> oerjan: ping
21:07:31 <oerjan> gnidllgnafnoopeepeepsnapfiongflipspIONG
21:07:46 <ehird> oerjan: erm.
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:03 <oerjan> oops
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:09:39 <ehird> :p
21:10:15 <oerjan> 1.45914791702724 bits
21:10:38 <ehird> oerjan: yes.
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:18 <ais523> (according to ghci)
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:12:45 <ehird> :-)
21:13:00 <oerjan> but it _is_
21:13:01 <ehird> (I think this should be resolved with matlab. ;P)
21:13:05 <ais523> haskell is good at arithmetic
21:13:11 <ehird> ais523: yes
21:13:15 <ais523> it does bignums automatically
21:13:17 <oerjan> as long as you don't want weird functions
21:13:18 <ehird> umm
21:13:27 <ehird> bignums automatically is an idea from the 50s
21:13:28 <ehird> :-)
21:13:38 <ais523> yes, but how many calculators actually do it?
21:13:43 <ehird> uhhh
21:13:48 <ehird> all of them? :/
21:13:59 <ais523> most don't
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> 1.4591479
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:30 <ais523> SBCL?
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:16:57 * ais523 fires up flonck
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:28 <ehird> ( to |
21:18:30 <ehird> err
21:18:32 <ehird> ( to `
21:18:36 <ehird> but a backwards `
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:03 <ehird> err
21:19:04 <ehird> wait
21:19:07 <oklopol> i don't get that
21:19:13 <ehird> oklopol: 0 (
21:19:18 <ehird> 1 ` (imagine the ` is backwards)
21:19:21 <oklopol> (
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:19:30 <oklopol> now wtf does that mean?
21:19:46 <oklopol> ah.
21:19:56 <ehird> oklopol: ...
21:19:56 <oklopol> wait...
21:19:57 <ehird> no
21:20:06 <ehird> WHOLE BIT --- HALF BIT
21:20:08 <ehird> 0 --- (
21:20:09 <ehird> 1 --- `
21:20:14 <ehird> It's half of the digit.
21:20:23 <oklopol> oh, it's a joke :D
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:22 <ais523> ehird: 1, 1a, 2, 2a
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:07 <ais523> ehird: yes
21:23:18 <ehird> @define flonck
21:23:22 <ehird> damn, we need Endeavour in here
21:23:25 <ehird> oh wait i didn't write it yet
21:23:26 <ehird> :P
21:24:47 <ais523> hmm... it gave me an output of 0.666666, which is obviously wrong
21:25:00 <ehird> @define flonck
21:25:08 <ais523> ehird: an RPN floating-point calculator written in INTERCAL-72
21:25:35 <ehird> wow
21:25:56 <ehird> ais523: what would overlambda be, by the way? :P
21:26:05 <ais523> no idea
21:26:20 <ehird> oklopol: Cise spec? :D
21:26:22 <ehird> I want to fail terribly!
21:27:05 <oklopol> oh, you :)
21:27:14 <oklopol> tomorrow isn't until like 30 minutes
21:27:24 <ehird> I CAN'T WAIT
21:27:24 <ehird> :(
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:32:27 <ais523> J
21:32:35 <ais523> s/.*\n//
21:33:03 <ais523> I now get an answer of 7.35053
21:33:06 <ais523> which is also wrong
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:22 <ehird> <3 gmp
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:34:56 <ais523> 110
21:35:16 <ais523> sorry, I thought I was in #irp for a moment
21:35:19 <ehird> oh
21:35:20 <ehird> and this:
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:35:54 <bsmntbombdood> what is that from?
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:34 <ehird> it's 1, of course
21:36:37 <ehird> so LHS = 1 acre
21:36:40 <ehird> now
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:03 <ais523> the rest make sense
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:38:39 <ehird> mostlikely
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:39:52 <bsmntbombdood> dunno
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:44:58 <ehird> (the TYPE THING)
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:18 <ehird> (the fixnum 5)
21:45:26 <ehird> (the list '(1 2 3))
21:45:29 <ehird> pseudo-english
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:39 <ehird> but e.g.
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:07 <oklopol> really? link!
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:29 <ehird> tee hee
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:12 <lament> SimonRC: lol
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 <ais523> s/$/?/
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:03 <ehird> \o/
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 <ehird> little else
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 <SimonRC> ais523: ah
21:52:31 <ehird> it probably deserves a WP article
21:52:34 <ehird> but it isn't highly notable
21:53:01 <oerjan> er i still won
21:53:06 <SimonRC> oerjan: huh?
21:53:12 * oerjan wonders what this is all about
21:53:24 * oerjan visited the xkcd page
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:46 <ehird> oerjan: The Game.
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:53:54 <ehird> 286th nomination
21:53:55 <ehird> :-D
21:54:00 <ais523> 6th, actually
21:54:04 <ehird> yes
21:54:05 <ais523> but it took that many before it was deleted
21:54:06 <ehird> ubt it looks funny
21:54:07 <ehird> Also
21:54:11 <ehird> 'The Game (game)'?!
21:54:13 <ehird> xD
21:54:18 <ehird> The Game (non-game)
21:54:25 <SimonRC> actually, reading the whole thread didn;t harm me
21:54:27 <lament> haha
21:54:29 <ais523> ehird: disambiguator
21:54:34 <ehird> ais523: a ridiculous one
21:54:34 <ehird> :-)
21:54:39 <SimonRC> it might make you lose a lot more over the next few weeks though
21:54:56 <ais523> I don't play
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:29 <SimonRC> hmm
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:22 <SimonRC> BUT
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:39 <ehird> ais523: No.
21:56:40 <SimonRC> ais523: yes
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:06 <oklopol> ehird: no i'm not
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:27 <oklopol> :P
21:57:28 <ehird> hehe :)
21:57:33 <ehird> oklopol: I win.
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:01 <ehird> Yay.
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:35 <ehird> :(
22:00:43 <SimonRC> summary: "I must obey the rules of The Game must I? Or else what?"
22:01:28 <SimonRC> hmm
22:01:48 <ehird> or else...
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:32 * SimonRC recalls the Basil puzzle.
22:02:33 <ehird> free
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:12 <SimonRC> a poster campaign?
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:19 <SimonRC> a prime-time TV ad?
22:03:49 <ais523> SimonRC: an IRC nickname?
22:03:58 <SimonRC> ais523: yes!
22:03:59 -!- ehird has changed nick to TheGamehird.
22:04:06 -!- SimonRC has changed nick to YouJustLostTheGa.
22:04:20 <TheGamehird> YouJustLostTheGa loses
22:04:23 -!- YouJustLostTheGa has changed nick to SimonRC.
22:04:23 <ais523> YouJustLostTheGa: is there a limit on nickname length?
22:04:32 <TheGamehird> yes
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:30 <oklopol> highlighting me ?
22:05:44 -!- TheGamehird has changed nick to UJustLostTheGame.
22:06:09 <UJustLostTheGame> ais523: wow, vi is actually pretty cool
22:06:13 <ais523> oklopol: yes
22:06:19 <ais523> UJustLostTheGame: also yes
22:06:22 <oklopol> interesting.
22:06:24 <UJustLostTheGame> the external file filtering is actually pretty cool
22:06:26 <ais523> but I haven't really learnt to use it
22:06:26 <UJustLostTheGame> saw this on reddit:
22:06:30 <UJustLostTheGame> if you're editing a file
22:06:32 <UJustLostTheGame> :%!xxd
22:06:37 <ais523> and it's very beginner-unfriendly
22:06:37 <UJustLostTheGame> xxd prints out a hex dump of the file
22:06:46 <UJustLostTheGame> edit the hex stuff (formatted just like a regular hex editor)
22:06:48 <UJustLostTheGame> then:
22:06:51 <UJustLostTheGame> :%!xxd -r
22:06:53 <UJustLostTheGame> and it goes back
22:06:55 <ais523> even worse than Emacs in that respect
22:07:05 <UJustLostTheGame> i never thought of using filtering for stuff like that
22:07:20 -!- oerjan has quit ("Good night").
22:07:24 <UJustLostTheGame> and the coolest thing, of course
22:07:32 <UJustLostTheGame> is that you can use vi's moving commands to use it efficiently
22:07:38 <SimonRC> wow
22:07:41 <UJustLostTheGame> hl -> bw
22:07:47 <UJustLostTheGame> and you go one hex block at a time
22:07:55 <SimonRC> I think that comes to almost 1000 people simultaneously
22:07:59 <SimonRC> surely a record...
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:22 <SimonRC> ...
22:08:24 <SimonRC> ais523: yes
22:08:43 <UJustLostTheGame> hmm
22:08:48 <UJustLostTheGame> i'm going to join #ubuntu
22:08:50 <ais523> what we need to do now is get [[The Game (game)]] as Wikipedia's front-page featured article
22:08:53 <UJustLostTheGame> and try it there
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:09:23 <UJustLostTheGame> ais523: i'll try :P
22:09:27 <SimonRC> I bet severl will copy it
22:09:29 <UJustLostTheGame> acutally no
22:09:32 <UJustLostTheGame> i'm too lazy
22:09:43 <UJustLostTheGame> hey -- is anyone here an ircop on a relatively big network?
22:09:52 <UJustLostTheGame> /wall You just lost the game.
22:09:53 <UJustLostTheGame> :-)
22:10:03 <ais523> you would so get in trouble for that
22:10:11 <UJustLostTheGame> bah
22:10:14 <UJustLostTheGame> not if it was efnet
22:10:16 <UJustLostTheGame> :P
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:38 <UJustLostTheGame> efnet is anarchic
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:23 <SimonRC> oops
22:11:31 <SimonRC> ais523: you are that guy, right?
22:11:34 <ais523> yes
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:47 <UJustLostTheGame> ais523: ummm
22:12:51 <UJustLostTheGame> i assume he means a diff. network
22:12:52 <ais523> (does IRC have threads?)
22:12:59 <SimonRC> kinda
22:13:00 <UJustLostTheGame> there's not 800 people in here
22:13:11 <SimonRC> UJustLostTheGame: I am in many channels
22:13:23 <UJustLostTheGame> [22:13] [Whois] SimonRC is a user on channels: #esoteric
22:13:25 <ais523> all of which are apparently secret apart from this one, or on different networks
22:13:28 <UJustLostTheGame> ah
22:13:29 <SimonRC> #uncyclopedia #haskell and #nethack being the major contributors
22:13:33 <UJustLostTheGame> um
22:13:36 <UJustLostTheGame> they're not secret
22:13:38 <UJustLostTheGame> and you're not in them, SimonRC
22:13:45 <SimonRC> yes I am
22:13:51 <SimonRC> go visit them
22:13:51 <UJustLostTheGame> well
22:13:54 <UJustLostTheGame> /whois disagrees
22:14:07 <SimonRC> /whois is cencored
22:14:10 <SimonRC> *censored
22:14:18 <ais523> SimonRC is in #haskell
22:14:22 <ais523> I just nipped over there to check
22:14:24 <bsmntbombdood> i don't see the game in wikipedia
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:14:43 <bsmntbombdood> oh
22:15:07 <oklopol> afd?
22:15:23 <ais523> Articles for Deletion
22:15:30 <ais523> where people debate about whether to delete an article
22:15:30 <oklopol> ah
22:15:35 <UJustLostTheGame> hmm
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:15:55 <UJustLostTheGame> ais523: 'normally'? hardly
22:15:55 <UJustLostTheGame> :p
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:31 <SimonRC> ais523: such bots exist
22:16:31 <UJustLostTheGame> ais523: well sure
22:16:33 <UJustLostTheGame> but ... that's kinda ugly
22:16:35 <UJustLostTheGame> :P
22:16:37 <SimonRC> ais523: they can tie networks together
22:16:40 <UJustLostTheGame> one channel is far nicer
22:16:49 <UJustLostTheGame> let's all migrate to eso-std.org#esoteric
22:16:49 <UJustLostTheGame> :D
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:19 <UJustLostTheGame> ais523: xkcd.
22:17:22 <SimonRC> *while
22:17:26 <UJustLostTheGame> there was an xkcd comic on that
22:17:29 <UJustLostTheGame> and now people are copying it
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:11 <SimonRC> *pause*
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:20:52 <SimonRC> bugger
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:39 <UJustLostTheGame> ais523: simon peyter jones is a MSofties
22:21:43 <SimonRC> hmm
22:21:52 <SimonRC> nah MS research isn't real MS
22:22:06 <UJustLostTheGame> hehe
22:23:27 <UJustLostTheGame> anyone here checked out DragonFly BSD?
22:23:32 <UJustLostTheGame> its checkpointing stuff looks awesome
22:23:34 <SimonRC> why?
22:23:36 <UJustLostTheGame> + the virtual kernels
22:23:38 <SimonRC> cool
22:23:47 <UJustLostTheGame> SimonRC: smalltalk-like imaging of any process
22:23:51 * SimonRC want's hot-swappable kernels
22:23:56 <UJustLostTheGame> & chroot jails and such are replaced with virtual kernels
22:23:57 <SimonRC> *want
22:23:59 <SimonRC> *wants
22:24:18 <UJustLostTheGame> _why uses it as his main OS
22:24:28 <UJustLostTheGame> & is maintaining a ruby binding to those nifty dfly stuff
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:25:44 <UJustLostTheGame> ais523: i had an idea for bignum libs
22:25:53 <SimonRC> ais523: good point
22:25:57 <UJustLostTheGame> since you need internal bookkeeping even gmp has max-digits
22:26:06 <UJustLostTheGame> what if you stored bookkeeping nums as bigints?
22:26:09 <UJustLostTheGame> turtle bignum! ;)
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:08 <SimonRC> hmm
22:27:54 <ais523> is savethegame.org still running?
22:28:03 <SimonRC> dunno
22:30:51 -!- ais523 has quit ("what oerjan said").
22:31:23 <UJustLostTheGame> ?
22:31:35 <slereah_> Well, the first version of the Andrei Machine's specs is posted.
22:31:44 <slereah_> I should prolly go to bed.
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:35:53 <SimonRC> slereah_: where
22:36:29 <slereah_> http://www.esolangs.org/wiki/Andrei_Machine_9000
22:37:06 <SimonRC> ok
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:38:49 <oklopol> wuzz that
22:39:47 <SimonRC> oklopol: it's that one with the engineer with the wonky tie
22:39:49 <SimonRC> ;-)
22:40:06 <oklopol> i know *dilbert*, just not gruntmeister
22:40:08 <oklopol> :)
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:41:48 <oklopol> please make it that
22:41:53 * slereah_ erases oklopol memory
22:41:56 <oklopol> :P
22:41:59 <slereah_> It's my trademark, bitch.
22:42:45 <oklopol> love machine 9000, andrew machine 9000, will we be seeing something *original* soon?
22:42:55 <slereah_> Well, there's Lazy Bird!
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:44:27 <slereah_> *its
22:44:39 <oklopol> heh
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:26 <oklopol> o is a nop
22:46:27 <slereah_> So far, you have to define the animals. Their original populations, reproduction rates, predation conversion.
22:46:29 <oklopol> oo is fibonacci
22:46:56 <oklopol> parens someway separate populations
22:47:05 <SimonRC> how is that fibb?
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:55 <oklopol> and thus live forever
22:47:58 <slereah_> As the name implies, it's based on the Lotka-Volterra equation.
22:48:11 <SimonRC> obviously
22:48:12 <slereah_> So it's a very simple model.
22:48:21 <slereah_> It's also on a discrete version of it.
22:48:28 * SimonRC looks it up
22:48:54 <slereah_> You've got n populations. herbivores at the bottom, and then, n eats n-1
22:49:04 <SimonRC> oh, fun
22:49:18 <SimonRC> unbounded storage?
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:16 <slereah_> Even for Hello, world
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:41 <SimonRC> where is clockpunk?
22:51:41 <oklopol> as they say
22:51:58 <slereah_> Clockpunk has an interpreter, of sort, if you want
22:52:02 <slereah_> But it isn't complete yet
22:52:08 <SimonRC> ah, ok
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:31 <slereah_> I forgot
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:53 <SimonRC> ah, ok
22:53:59 <SimonRC> not like my idea quite then
22:54:14 <slereah_> What was your idea?
22:54:26 <slereah_> Just clocks as variables?
22:54:32 <SimonRC> yesish
22:54:45 <slereah_> It's actually a better idea, since you can use conditionals
22:54:51 <slereah_> And actually have inputs.
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:13 <slereah_> Not very clocklike
22:56:19 <SimonRC> slereah_: hmm
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:33 <SimonRC> hmm
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:26 <slereah_> Sheep, wolves, and BEARS
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:03:53 <slereah_> So they can do functions? :o
23:04:08 <oklopol> nopular == one that performs a nop
23:16:43 -!- timotiis has quit ("leaving").
23:18:15 <UJustLostTheGame> no
23:18:18 <UJustLostTheGame> add lazy birds
23:18:20 <UJustLostTheGame> (birii?)
23:19:01 <slereah_> I'm not sure combinators would fit well in the context!
23:21:45 <UJustLostTheGame> birii -> virii
23:21:48 <UJustLostTheGame> add lazy viruse
23:21:48 <UJustLostTheGame> s
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:00 <slereah_> Combinators, yes.
23:27:22 <oklopol> yeah, that's the reference i didn't get from what i said myself
23:27:33 <oklopol> which is kinda weird.
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:40:54 <UJustLostTheGame> 3 = 33 ascii
23:40:55 <UJustLostTheGame> in hex
23:40:55 <UJustLostTheGame> cool
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:42:47 <UJustLostTheGame> well still :(
23:42:53 <oklopol> oh, indeed
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
23:43:28 <SimonRC> etc
23:44:28 <SimonRC> zzzzz
2008-03-05
00:05:34 -!- olsner has quit ("Leaving").
00:14:27 -!- UJustLostTheGame has quit (Remote closed the connection).
00:14:57 -!- ehird has joined.
00:26:19 -!- jix has quit ("CommandQ").
00:32:54 -!- RedDak has quit (Remote closed the connection).
00:40:43 -!- Sgeo has joined.
01:39:10 <pikhq> All in favor of me writing an OS?
01:39:26 <lament> No.
01:39:27 * pikhq shouts 'Aye'
01:40:05 <ehird> No.
01:40:07 <ehird> I tried it once.
01:40:12 <ehird> It's not exciting.
01:40:13 <ehird> Or fruitful.
01:40:16 <pikhq> And where'd you get stuck?
01:40:26 <ehird> At the part where it became terminally boring.
01:40:34 <pikhq> . . . Which is?
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:35 <slereah_> Regular OS, or eso OS?
01:41:44 <pikhq> I dunno.
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:25 <slereah_> Well, if it's CISC yes.
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:57:09 <pikhq> Hmm.
01:57:16 <pikhq> Lisp? :p
01:57:43 * pikhq shrugs
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:16 <pikhq> NEVER!!!
02:04:21 -!- bsmntbombdood has quit (brown.freenode.net irc.freenode.net).
02:04:21 -!- Tritonio_ has quit (brown.freenode.net irc.freenode.net).
02:04:22 -!- atsampson has quit (Read error: 104 (Connection reset by peer)).
02:09:13 -!- SimonRC_ has joined.
02:09:45 -!- Sgeo has joined.
02:09:45 -!- AnMaster has joined.
02:09:45 -!- GregorR has joined.
02:09:45 -!- Overand has joined.
02:10:09 -!- bsmntbombdood has joined.
02:10:09 -!- Tritonio_ has joined.
02:10:11 -!- cmeme has quit (Killed by ballard.freenode.net (Nick collision)).
02:10:13 -!- cmeme has joined.
02:10:13 -!- RodgerTheGreat has joined.
02:10:13 -!- sekhmet has joined.
02:10:38 -!- atsampson has joined.
02:10:38 -!- oklopol has joined.
02:10:38 -!- dbc has joined.
02:10:38 -!- tejeez has joined.
02:10:38 -!- cherez has joined.
02:18:14 -!- SimonRC has quit (Connection timed out).
02:29:12 -!- cmeme has quit (brown.freenode.net irc.freenode.net).
02:29:12 -!- RodgerTheGreat has quit (brown.freenode.net irc.freenode.net).
02:29:12 -!- sekhmet has quit (brown.freenode.net irc.freenode.net).
02:31:13 -!- poiuy_qwert has joined.
02:32:32 -!- cmeme has joined.
02:32:32 -!- RodgerTheGreat has joined.
02:32:32 -!- sekhmet has joined.
02:33:04 -!- sekhmet has quit (Read error: 104 (Connection reset by peer)).
02:33:07 -!- sekhmet has joined.
02:39:03 -!- calamari has joined.
02:52:25 -!- sekhmet has quit (brown.freenode.net irc.freenode.net).
02:52:25 -!- RodgerTheGreat has quit (brown.freenode.net irc.freenode.net).
02:52:25 -!- cmeme has quit (brown.freenode.net irc.freenode.net).
02:54:23 -!- Tritonio_ has quit (brown.freenode.net irc.freenode.net).
02:54:23 -!- bsmntbombdood has quit (brown.freenode.net irc.freenode.net).
02:54:23 -!- Sgeo has quit (brown.freenode.net irc.freenode.net).
02:54:23 -!- Overand has quit (brown.freenode.net irc.freenode.net).
02:54:23 -!- GregorR has quit (brown.freenode.net irc.freenode.net).
02:54:23 -!- AnMaster has quit (brown.freenode.net irc.freenode.net).
02:54:23 -!- tejeez has quit (brown.freenode.net irc.freenode.net).
02:54:23 -!- atsampson has quit (brown.freenode.net irc.freenode.net).
02:54:24 -!- oklopol has quit (brown.freenode.net irc.freenode.net).
02:54:24 -!- dbc has quit (brown.freenode.net irc.freenode.net).
02:54:24 -!- cherez has quit (brown.freenode.net irc.freenode.net).
02:54:24 -!- lifthrasiir has quit (brown.freenode.net irc.freenode.net).
02:54:24 -!- pikhq has quit (brown.freenode.net irc.freenode.net).
02:54:25 -!- poiuy_qwert has quit (brown.freenode.net irc.freenode.net).
02:54:25 -!- SimonRC_ has quit (brown.freenode.net irc.freenode.net).
02:54:25 -!- slereah_ has quit (brown.freenode.net irc.freenode.net).
02:54:25 -!- puzzlet has quit (brown.freenode.net irc.freenode.net).
02:54:25 -!- mtve has quit (brown.freenode.net irc.freenode.net).
02:54:49 -!- lament has quit (Nick collision).
02:55:06 -!- lament has joined.
02:55:06 -!- sekhmet has joined.
02:55:06 -!- RodgerTheGreat has joined.
02:55:06 -!- cmeme has joined.
02:55:06 -!- poiuy_qwert has joined.
02:55:06 -!- cherez has joined.
02:55:06 -!- tejeez has joined.
02:55:06 -!- dbc has joined.
02:55:06 -!- oklopol has joined.
02:55:06 -!- atsampson has joined.
02:55:06 -!- Tritonio_ has joined.
02:55:06 -!- bsmntbombdood has joined.
02:55:06 -!- Overand has joined.
02:55:06 -!- GregorR has joined.
02:55:06 -!- AnMaster has joined.
02:55:06 -!- Sgeo has joined.
02:55:06 -!- SimonRC_ has joined.
02:55:06 -!- slereah_ has joined.
02:55:06 -!- lifthrasiir has joined.
02:55:06 -!- pikhq has joined.
02:55:06 -!- puzzlet has joined.
02:55:06 -!- mtve has joined.
03:50:23 -!- Tritonio_ has quit (Remote closed the connection).
03:53:04 <RodgerTheGreat> pikhq: behold a doodle! http://www.nonlogic.org/dump/images/1204661750-arch.png
03:53:33 <oklopol> it's got all kinda feet!
03:53:37 <oklopol> *kindsa
03:53:56 <RodgerTheGreat> they're all four-toed, just in different orientations
03:55:03 <oklopol> well, my point was in no way anything. i should really start tagging my actually meaningful sentences somehow...
03:55:10 <RodgerTheGreat> haha
03:55:14 <oklopol> :P
03:55:23 <pikhq> Heh.
03:55:37 <RodgerTheGreat> likin' the character design overall?
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:02 <oklopol> i should sleep...
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:28:42 * AnMaster goes to code string mode
10:45:17 -!- jix has quit ("CommandQ").
11:07:46 -!- Corun has joined.
11:32:05 -!- Corun has quit ("This computer has gone to sleep").
11:43:35 -!- pikhq has quit (Read error: 110 (Connection timed out)).
12:08:18 <slereah_> Hell.
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:01 <slereah_> I can't help you!
18:46:05 <slereah_> I know little of efunge.
18:46:16 <AnMaster> err, how is that related to befunge?
18:46:26 <AnMaster> ah
18:46:27 <AnMaster> sorry
18:46:28 <AnMaster> bad font
18:46:36 * AnMaster read "efunge" as "europe"
18:46:41 <AnMaster> weird mis-reading
18:47:57 <slereah_> Heh.
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:36 <AnMaster> calling it befunge08 now
18:52:43 <slereah_> *9000
18:52:51 <AnMaster> death station 9000?
18:52:54 <AnMaster> http://rage.kuonet.org/~anmaster/bzr/index.py/log/bashfunge/head
18:52:56 <AnMaster> :D
18:53:06 <AnMaster> still a few eval around, plan to fix that later
18:53:14 <AnMaster> (but only in libstack.sh)
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:55:37 <AnMaster> ;P
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:02:41 <bsmntbombdood> so do i
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:35:42 <ehird_> :-P
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:23 <louzer> *wiki
20:24:47 <louzer> I mean I went to BF wiki and found non-wrapping and wrapping constants
20:24:55 <louzer> what's the difference
20:25:29 <louzer> anyone?
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:27:54 <louzer> is that wat u mean?
20:28:13 <Judofyr> yes
20:28:18 <Judofyr> I think so :P
20:28:40 <louzer> hmm interesting..
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:29 <oerjan> yes
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:31:56 <louzer> finally! got it
20:32:01 <louzer> thank you
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:32:35 <louzer> hmm interesting
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:33:48 <louzer> ok
20:34:08 <louzer> i cant believe this thing is turing complete
20:34:19 <louzer> haha
20:34:26 -!- jix has joined.
20:35:13 <louzer> if ur on mac os x what is the recommended bf interpreter
20:36:02 <oerjan> no idea
20:36:07 <louzer> its ok
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:38:11 <Judofyr> yeah
20:38:16 <Judofyr> that's pretty easy
20:38:22 <louzer> hehe
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:27 <Judofyr> what*
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:10:22 * SimonRC does sick things with C
21:10:29 <SimonRC> A Forth!
21:22:20 <SimonRC> in the style of that J interpreter
21:23:01 <ehird_> SimonRC: brillant
21:24:18 <SimonRC> "V(tl)for(;;){w.p=*ip.p;(*w.p+2)();}}
21:24:28 <ehird_> that's awesome
21:24:37 <SimonRC> the top-leve loop, with extraneous "
21:24:39 <ehird_> truly, how c was meant to be
21:24:42 <SimonRC> heh
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:15 <ehird_> :D
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:37 <ehird_> like Joy & Cat
21:27:41 <ehird_> but strongly-typed like Cat
21:27:49 <SimonRC> ok
21:27:50 <ehird_> but cooler - I hope to make it *purely functional* like Haskell
21:27:53 <ehird_> Monads!
21:27:59 <SimonRC> grin
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:28:51 <ehird_> :P
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:31:29 <ehird_> or, you know. don't.
21:32:05 <SimonRC> sounds rather lie cat so far
21:32:07 <SimonRC> *like
21:32:26 <ehird_> SimonRC: yes
21:32:29 <ehird_> but far more awesome
21:32:43 <ehird_> because cat is not purely functional
21:32:50 <SimonRC> ah, ok
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:17 <ehird_> and no
21:33:20 <ehird_> you can reason about stacks functionally
21:33:27 <SimonRC> oh, yes
21:33:31 <ehird_> a function is `stack -> stack`
21:33:36 <ehird_> but with more constraints on 'stack'
21:33:37 <ehird_> like, dup:
21:33:44 <ehird_> 'R 'a -> 'R 'a 'a
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:34:08 <ehird_> AnMaster: ?
21:34:15 <AnMaster> that you are talking about
21:34:32 <ehird_> one i'm making
21:34:50 <AnMaster> what is it called?
21:35:07 <AnMaster> also, what about TURKY BOMB, did you get anywhere with the interpreter?
21:35:08 <ehird_> no name ye
21:35:08 <ehird_> tt
21:35:11 <ehird_> and not yet
21:35:13 <AnMaster> or did you give it up?
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:35:58 <ehird_> I said Funge-98.
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:26 <AnMaster> even the stack stack bit
21:36:42 <ehird_> until you get Fingerprints and Funge's topology rules..
21:36:48 <ehird_> its not even CLOSE
21:36:51 <ehird_> SimonRC: hmm
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:12 <AnMaster> ehird_, not fully yet however
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:42:16 <oerjan> m ('R 'b) obviously
21:43:20 <ehird_> oerjan: that wraps the whole stack in the monad
21:43:27 <oerjan> yes.
21:43:29 <ehird_> specifically, the stack gets reduced to one element
21:43:33 <ehird_> with the whole stack
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:12 <oerjan> i see. tricky.
21:44:18 <ehird_> SimonRC: if cpp -
21:44:19 <SimonRC> the c one
21:44:22 <ehird_> it uses c identifier rules#
21:44:27 <ehird_> so you can't define $
21:44:34 <SimonRC> oh
21:44:45 <SimonRC> does that mean I can't have a macro called ^ either?
21:45:19 * SimonRC calls in _ instead
21:45:21 <SimonRC> *it
21:45:42 <ehird_> SimonRC: that is correct
21:45:51 <ehird_> WAIT
21:45:53 <ehird_> NO DISREGARD THAT
21:45:55 <ehird_> $ is a valid macro nam
21:45:56 <ehird_> e
21:46:00 <SimonRC> cool!
21:46:03 <ehird_> but
21:46:10 <ehird_> SimonRC: it uses C breaking rules, but dumbified
21:46:11 <ehird_> #define $ 2
21:46:13 <ehird_> hello$world
21:46:14 <ehird_> -> hello$world
21:46:18 <SimonRC> :-(
21:46:24 <ehird_> the cpp is retarded
21:46:24 <ehird_> :)
21:47:19 <SimonRC> #define _ ;ip.p++;}
21:47:36 <ehird_> heh
21:47:41 <ehird_> SimonRC: that won't break though
21:47:43 <ehird_> you can't do a_b
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:48:15 <SimonRC> not yet
21:49:06 <ehird_> aww
21:49:18 <ehird_> SimonRC: hehe, HUMAN-LOOKING DEFINITIONS:
21:49:28 <SimonRC> hm?
21:49:38 <ehird_> say-hi: "Hello, world!" print.
21:49:42 <SimonRC> ok
21:49:45 <ehird_> NAME: DEF.
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:43 <SimonRC> the usual
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:05 <SimonRC> not yet
21:57:16 <ehird_> IMO most 'forths' out there that aren't actual real ANS Forth are more like 'regular stack languages'
21:57:22 <SimonRC> yeah
21:57:37 <SimonRC> the secret of forth is factoring, simplicity, and smallness
21:57:42 <SimonRC> and hackability
21:57:47 <ehird_> SimonRC: jonesforth is the best example of what i'd consider "real forth"
21:57:55 <SimonRC> yes
21:57:55 <ehird_> i wouldn't call yours forth, probably :-)
21:58:00 <SimonRC> why?
21:58:08 <ehird_> well, I consider 'forth'ness to be an implementation attribute
21:58:12 <ehird_> not the external interface
21:58:26 <SimonRC> and?
21:58:33 <SimonRC> how is mine not forth?
22:00:11 <ehird_> SimonRC: it looks programmed at a too high level
22:00:11 <ehird_> :-P
22:00:30 <SimonRC> I am using lots of macros
22:04:19 * SimonRC wonders if there is a way to get macros to set up the initial dictionary
22:05:01 <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:06:31 <SimonRC> yeah
22:06:36 <SimonRC> or in Forth :-)
22:07:07 <SimonRC> or in fact any language with a semi-decent macro system
22:07:49 <ehird_> nahh
22:07:51 <ehird_> asm is the easiest
22:12:14 <ehird_> SimonRC: I broked jonesforht
22:12:15 <ehird_> JONESFORTH VERSION 45
22:12:16 <ehird_> 14498 CELLS REMAINING
22:12:16 <ehird_> OK SWW LIT
22:12:16 <ehird_> PARSE ERROR: SWW
22:12:16 <ehird_> SEE LIT
22:12:16 <ehird_> Segmentation fault (core dumped)
22:12:20 <ehird_> err
22:12:24 <ehird_> flood.
22:12:29 <SimonRC> heh
22:12:30 <ehird_> but still
22:17:02 <ehird_> SimonRC: I wonder how small you can make a Fort
22:17:03 <ehird_> h
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:41:38 <SimonRC> gimme a pastebin
22:45:14 -!- sebbu has quit ("@+").
22:45:16 <SimonRC> ooh
22:45:18 <ehird_> pastebin.ca
22:45:28 <SimonRC> yeah, my logger just told me that
22:46:26 <ehird_> SimonRC: soon, pb.eso-std.org
22:46:27 <ehird_> ;)
22:47:54 <SimonRC> http://pastebin.ca/929695
22:48:03 <SimonRC> now, bed-time for me
23:02:17 <ehird_> Return to Sender
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:38:55 <ehird> I hope so.
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:42:02 <pikhq> Try 'thinko'. :p
23:45:14 <ehird> ?
23:45:29 <ehird> oh
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
2008-03-06
00:16:33 <Sgeo> thinko?
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:25:36 <Sgeo> wha?
00:27:01 <ehird> /sigh.
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:33 <ehird> hahaha
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:38:35 <pikhq> ehird: LMAO
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:27:17 <faxathisia> morning
01:42:58 <Sgeo> morning
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:06 <bsmntbombdood> 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:02:01 <bsmntbombdood> oh
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:04:59 <oklofok> i'm going to hurt myself.
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:17:31 <bsmntbombdood> you can implement nats in just about anything
03:20:24 <oklofok> bsmntbombdood: i'm aware of that. anyway, new quicksort: h:L,JnH'/#>h
03:20:40 <bsmntbombdood> O.o
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:21:33 <faxathisia> Jn pattern seems common
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:23:05 <oklofok> *through
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:35 <oklofok> that's not good...
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:03 <Sgeo> cise?
03:29:09 <oklofok> :D
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)).
04:22:20 <oklofok> /whois bsmntbombdood
04:22:23 <oklofok> whoops
04:22:29 * oklofok fails at stalking
05:07:27 -!- GreaseMonkey has joined.
06:46:27 -!- louzer has joined.
06:46:47 -!- louzer has quit (Client Quit).
06:54:24 -!- Judofyr has joined.
07:23:03 -!- Judofyr has quit.
07:30:16 -!- atsampson has quit (Connection reset by peer).
07:45:26 -!- GregorR has quit (Remote closed the connection).
07:51:10 -!- GregorR has joined.
07:51:53 -!- atsampson has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:10:40 -!- oerjan has joined.
08:44:08 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)").
10:46:50 -!- oerjan has quit ("leaving").
11:05:53 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
11:06:08 -!- slereah_ has joined.
11:09:50 <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:05 <AnMaster> interesting
11:13:22 <AnMaster> I find befunge source a lot easier to follow than brainfuck btw, is that normal?
11:14:31 <faxathisia> I can't read befunge
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:24 <slereah_> Some ass took note in it.
12:11:33 <faxathisia> :/
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:34 <faxathisia> oh :/
12:12:35 <slereah_> Maybe that's why he sold it.
12:12:39 <faxathisia> lol
12:12:40 <slereah_> To buy a notebook.
12:12:46 <slereah_> But now, he doesn't have the book!
12:12:52 <faxathisia> hahaha
12:12:55 <slereah_> Quite the conundrum.
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:16 <faxathisia> rofl..
12:14:31 <faxathisia> (wtf is a metaproof?)
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:17:35 <slereah_> Maybe I should have read it.
12:18:50 -!- Tritonio_ has joined.
12:35:27 -!- Corun has joined.
12:55:55 -!- Corun has quit ("This computer has gone to sleep").
12:58:51 -!- timotiis has joined.
13:50:34 -!- RedDak has joined.
14:47:59 <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:16 <slereah_> RodgerTheGreat: I don't know!
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:02:39 <ihope> Ello.
18:03:03 <slereah_> Hello sir.
18:06:01 -!- jix has joined.
18:07:20 -!- RedDak has joined.
18:35:40 -!- Judofyr has joined.
18:46:37 -!- cherez has quit ("Leaving.").
18:46:46 -!- cherez has joined.
18:51:12 -!- RedDak has quit (Remote closed the connection).
18:59:33 -!- jix has quit ("CommandQ").
19:21:14 -!- olsner has joined.
19:23:04 -!- jix has joined.
19:36:10 <SimonRC> An amazing mix of the serious and parody: http://www.gamasutra.com/view/feature/3563/microsoft_excel_revolutionary_3d_.php?page=1
19:40:38 <slereah_> Awesome.
19:43:42 -!- oerjan has joined.
19:52:43 <SimonRC> hi
19:52:46 <SimonRC> http://www.bash.org/?845468
19:53:16 <faxathisia> :(((
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:06 <AnMaster> as post increment
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:55:53 <bsmntbombdood> why would it matter?
19:55:55 <AnMaster> faxathisia, err?
19:56:09 <AnMaster> faxathisia, the former I would say
19:56:16 <AnMaster> at least in English
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:57:33 <faxathisia> lol
19:57:48 <bsmntbombdood> language of the day
19:57:50 <slereah_> I do!
19:58:00 <AnMaster> you got a infinite queue of sheeps, jumping over the gate (ie, pushing them onto the stack)
19:58:03 <AnMaster> something like that
19:58:25 <AnMaster> anyone want to write a spec for it?
19:58:26 <slereah_> A queue jumping on a stack? :o
19:58:38 <AnMaster> slereah_, err, sheeps
19:58:56 <AnMaster> anyway
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
19:59:52 <faxathisia> or abject oriented
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:00:31 <AnMaster> faxathisia, "abject"?
20:00:41 <faxathisia> as coined by GOTO++
20:00:53 <AnMaster> faxathisia, *googles*
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:02:55 <AnMaster> argh, manual only in French
20:03:23 <AnMaster> so impossible for me
20:03:29 <AnMaster> faxathisia, tell me about abject
20:03:38 * slereah_ be French
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:07 <faxathisia> It's hilarious
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:36 <slereah_> :D
20:04:52 * slereah_ once thought of making a BF clone in ancient egyptian
20:05:01 <AnMaster> you know that language
20:05:01 <slereah_> But unicode doesn't have hieroglyphs
20:05:07 <AnMaster> slereah_, hahah
20:05:12 <AnMaster> it doesn't?
20:05:13 <AnMaster> wow
20:05:51 <oerjan> i thought it did
20:06:02 <slereah_> I looked!
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:09 <faxathisia> It does
20:07:11 <AnMaster> oerjan, hahah
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:38 <faxathisia> nothing
20:07:40 <faxathisia> lol
20:07:55 <oerjan> what about subject-oriented programming, anyone done that?
20:07:57 <faxathisia> The whole thing is a joke
20:08:06 <faxathisia> which I was referencinc
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:04 <slereah_> Not what's their IP numbers.
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:14:17 * AnMaster looks for ehird
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:15:51 <AnMaster> ehird bet I couldn't do it
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:20:50 * slereah_ be wondering.
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:23 <slereah_> Also popped collars.
20:21:51 <slereah_> Well, you design a circuit in ASCII.
20:22:05 <slereah_> And run it.
20:22:25 <lament> AnMaster: python
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:32 <AnMaster> slereah_, btw:
20:23:34 * AnMaster be funge
20:23:36 * AnMaster runs
20:23:49 <slereah_> Well, I just mean being 2D.
20:23:56 <slereah_> I'm not too knowledgable on funges
20:24:08 <AnMaster> slereah_, why not make it?
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:24:46 <slereah_> So 2D is kinda hard
20:24:50 <faxathisia> What's 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:38 <AnMaster> micro-recursive?
20:25:44 <slereah_> AnMaster: You define a list of functions.
20:25:49 <slereah_> There's 4 primitives :
20:25:50 <faxathisia> it is shown that the μ-recursive functions are precisely the functions that can be computed by Turing machines
20:25:58 <slereah_> The 0() function
20:26:09 <slereah_> The successor function s(x)
20:26:12 <AnMaster> slereah_, interesting
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:06 <AnMaster> ok
20:27:16 <AnMaster> and that is turing complete?
20:27:18 <slereah_> And it is indeed Turing complete.
20:27:26 <slereah_> The first one to be!
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:36:54 <oklofok> my head hurts a bit
20:37:12 <slereah_> Well, in your head gets awkward fast.
20:37:17 <slereah_> But a man with a pen can do!
20:37:27 <faxathisia> you can't program a brain
20:37:38 <oklofok> sure you can
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:38:08 <slereah_> Through a metric tensor?
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:13 <slereah_> I hope you're right!
20:56:14 <bsmntbombdood> READ
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".
20:59:51 <slereah_> Heh.
21:00:13 <ihope> Program number 27 is +++++++++++++++++++++++++++R.
21:00:28 <slereah_> Is this actually true?
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:36 <slereah_> Next and run D:
21:02:46 <ihope> It's possible, but very inefficient. :-)
21:03:09 <slereah_> Do you even need the run?
21:03:23 <ihope> You do if you want these to actually be instructions.
21:03:29 <faxathisia> make any character + and EOF run
21:03:35 <ihope> And if you don't want the instructions to be psychic.
21:03:39 <faxathisia> makes it easier to writea quine
21:03:51 <ihope> Quine? Fun.
21:04:27 <slereah_> Well, repeating quine at least.
21:04:37 <slereah_> Just a loop with print x
21:04:38 <ihope> Here we go: http://esoteric.voxelperfect.net/wiki/Unary
21:04:40 <slereah_> *+
21:04:45 <ihope> I imagine an actual quine would be possible.
21:04:54 <slereah_> I know of unary.
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:16:41 <ehird> HELLO
21:17:01 <faxathisia> HI
21:17:04 <slereah_> HI DUDE
21:17:18 -!- ehird has set topic: Topic: Topic topic topic topic topic 20 topic topic 'topic topic topic' topic topic. | #topic | topic topic topic.
21:17:27 <ehird> Message message message message message.
21:17:37 * faxathisia action
21:17:50 <slereah_> ALL CAPS
21:18:47 <ihope> Question?
21:19:05 <ihope> Word!
21:19:06 <slereah_> Answer.
21:19:26 <slereah_> "String"
21:20:20 <oerjan> no caps
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:31 <ehird> Type -> Type
21:22:40 <ehird> and I repeat
21:22:53 <ehird> dip :: 'R 'a ('R -> 'S) -> 'S 'a
21:22:58 <ehird> awesomecakes
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:23 <ehird> err
21:24:25 <ihope> But * is a type. :-P
21:24:25 <ehird> ['a]
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:11 <faxathisia> no
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 <faxathisia> no I wont
21:30:33 <ehird> it's a lot simpler
21:30:34 <ehird> and purer
21:30:43 <faxathisia> I tried to write a type inferer in it
21:30:43 <ehird> faxathisia: seriously.
21:30:45 <faxathisia> that was horrible
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:31:54 <ehird> printf skeleton
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:18 <faxathisia> that's neat
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:32:59 <ehird> it is lispish
21:33:06 * faxathisia used case
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:18 <ehird> :P
21:33:26 <faxathisia> It looks exactly like Joy
21:33:30 <ehird> faxathisia: maybe so
21:33:32 <ehird> but it's more fun
21:33:34 <ehird> and it's strongly typed
21:34:08 <ehird> hmm
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:05 <ehird> oerjan: indeed
21:36:19 <ehird> oerjan: but i like the []y syntax
21:36:19 <ehird> :-p
21:36:27 <ehird> also, case is
21:36:31 <ehird> [a b a b]...
21:36:41 <ehird> which won't type even as a tuple (e.g. [(a,b)] would be [(a b) (a b)])
21:42:05 <AnMaster> ehird,
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:35 <AnMaster> it's late here now though
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:20 <ehird> AnMaster: and
21:46:24 <ehird> have you tried Mycology on it?
21:46:28 <AnMaster> ehird, I have
21:46:33 <AnMaster> that is how I can say what is left
21:46:34 <AnMaster> :)
21:46:40 <ehird> pretty good, then
21:46:41 <ehird> link?
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:11 <AnMaster> but it isn't pushed yet
21:47:15 <AnMaster> as it breaks other stuff
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 <AnMaster> ehird, no, just befunge
21:48:22 <ehird> that is, not just Une/Be/Tre
21:48:24 <ehird> ah
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:39 <ehird> no special cases
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:46 <AnMaster> "sex"
21:49:54 <ehird> AnMaster: Sextuple
21:49:57 <ehird> -> Sexfunge
21:50:02 <slereah_> Is that when you got mushrooms on your genitals?
21:50:07 <AnMaster> s-expressions
21:50:12 <AnMaster> readjust -
21:50:19 <ehird> Sex, pressions, funge.
21:50:25 <AnMaster> -_-
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:03 <AnMaster> afaik
21:51:09 <ehird> mycology tests them
21:51:13 <ehird> so ha :)
21:51:17 <AnMaster> ehird, and accepts if they don't exist
21:51:21 <ehird> yes, but still
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:42 <ehird> beh
21:51:46 <ehird> it's no fun without the fprints
21:51:54 <AnMaster> ehird, e?
21:51:56 <AnMaster> eh*
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:33 <AnMaster> one for each "quadrant"
21:52:38 <AnMaster> with origin in the middle
21:52:40 <AnMaster> that could work
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:53:21 <AnMaster> :/
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:54:41 <AnMaster> as I do it as a wrapped aray
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:29 <AnMaster> and the whole thing is slow
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:55:53 <AnMaster> ehird, err
21:55:57 <AnMaster> whatever
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:29 <AnMaster> :)
21:56:54 <AnMaster> ehird, also, I'm not even going to try concurrent funge or file io or execute
21:57:00 <AnMaster> because, those are optional
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:21 <AnMaster> ;P
22:01:48 <AnMaster> actually once I get this working, I may do a C version
22:01:51 <AnMaster> or maybe objc
22:04:42 <ehird> objc<3
22:04:45 <ehird> objc+os x<3
22:05:10 <ehird> AnMaster: fix yur bzrweb
22:05:14 <faxathisia> I wish objc would replace c++
22:05:21 <ehird> yes, me too
22:05:31 <faxathisia> It's everything C++ should have been
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:09:56 <ehird> Why? numpy.
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:26 <lament> objc seems kinda lame
22:12:32 <ehird> lament: lies
22:12:34 <ehird> it is awesome
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:12:56 <lament> ehird: yeah, yeah
22:12:58 <faxathisia> It's a decent language
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:53 <faxathisia> kind of irrelevant details
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:14:46 <ehird> It's called NS*
22:14:50 <lament> um
22:14:52 <lament> ...yeah.
22:14:56 <faxathisia> nah
22:15:03 <ehird> fyi the NS classes are awesome.
22:15:06 <faxathisia> It's called objcruntime.h
22:15:07 <faxathisia> :P
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:45 <faxathisia> oh I wrote a parodey
22:15:51 <ehird> parodey?
22:15:53 <lament> ehird: oh, apple, sure. I agree.
22:15:56 <ehird> is that a parody involving e?
22:15:59 <faxathisia> parody
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:14 <faxathisia> http://fax.twilightcoders.net/CocoaC/
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:24 <ehird> ;)
22:16:27 <lament> witness objc 2.0
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:23 <ehird> so die die die
22:17:27 <lament> faxathisia: hahaha
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:20:14 <lament> lovely tutorial
22:20:20 <faxathisia> ty :D
22:22:16 <oerjan> Also, why is this involving bridal affairs?
22:30:06 <SimonRC> hmm
22:30:14 <lament> faxathisia: you actually use CL? :)
22:30:25 <SimonRC> well, KigForth now does a little bit of stuff
22:30:26 <faxathisia> for a couple years yeah
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:34 <ehird> SimonRC: meh
22:31:37 <ehird> i tried kigforth when you posted it
22:31:39 <ehird> syntax errs.
22:31:42 <SimonRC> yes
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:11 <SimonRC> no
22:32:15 <SimonRC> it's a Forth damnit
22:32:32 <ehird> SimonRC: but strongly-typed functional concatentative languages are fun
22:32:54 <lament> wow @ N0x35C49E
22:32:59 <SimonRC> http://pastebin.ca/931031
22:33:05 <SimonRC> lament: ???
22:33:18 <SimonRC> noxes cage?
22:33:27 <ehird> SimonRC: that c code is actually really nice
22:33:33 <SimonRC> huh?
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:06 <SimonRC> not really
22:34:08 <ehird> SimonRC: good thing -- it wasn't sarcasm
22:34:15 <SimonRC> really?
22:34:20 <SimonRC> thanks
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:01 <faxathisia> like CL? Yes It's fanstic
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:29 <faxathisia> fantastic .. beh cannot type
22:35:38 <SimonRC> no, my paste
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:15 <ehird> #define C(x) (x)
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:27 <ehird> :)
22:37:42 <SimonRC> hmm
22:37:54 <lament> mm... maybe i should learn CL after all
22:38:27 <slereah_> Combinatory logic?
22:39:42 <lament> lisp
22:40:03 <slereah_> CL?
22:40:12 <faxathisia> Common Lisp
22:40:15 <slereah_> Oh.
22:40:59 <SimonRC> heh, obviously the definition of fetch should be:
22:41:01 <SimonRC> W(st,fe,"!" ,*T.p=S;D;D)
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:41:24 <SimonRC> it looks... happy
22:42:38 * SimonRC goes to bed
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:12:23 <slereah_> ...
23:12:27 <slereah_> A bell for output?
23:12:33 <slereah_> Is that for error messages?
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:57:36 <ehird> QED.
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:23 <ehird> :D
23:58:34 <slereah_> P=NP is so boring.
23:58:45 <faxathisia> P\=NP is in
23:58:47 <slereah_> Let's make something bolder.
23:58:52 <slereah_> Like NC=EXP
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:33 <ehird> that is an axiom
23:59:37 <ihope_> Ah, I see.
23:59:55 <ihope_> So, MPEG looks like a series of JPEG images, doesn't it?
2008-03-07
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:14:52 <lament> it's porn
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:01 <ihope_> lament: yes.
00:18:02 -!- slereah__ has joined.
00:18:15 <ihope_> Which, I suppose, means "both".
00:19:16 <slereah__> >:|
00:19:35 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
00:21:25 -!- olsner has quit ("Leaving").
00:53:59 -!- Sgeo has joined.
01:10:46 <ehird> hmmm
01:10:52 <ehird> the eso-std.org pastebin will be up sometime
01:11:20 <slereah__> Is it ESO approved?
01:11:34 <ehird> but of course.
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:07 <ehird> <> and +- and ,.
01:17:17 <ehird> those groups should be highlighted differently but the same between chars
01:17:19 <ehird> < and > the same
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__> Pastebin. 9000.
01:20:16 <slereah__> Well, I have no idea.
01:20:16 <slereah__> Wouldn't highlighting the +- and all result in a terrible eyesore?
01:20:16 <slereah__> Oh, grouping.
01:20:16 <slereah__> Why ., then?
01:20:21 <slereah__> It's a legitimate pice of code!
01:21:00 <ehird> ...
01:21:03 <ehird> Highlight +-
01:21:06 <ehird> as the same
01:21:08 <ehird> Same with <>
01:21:09 <ehird> etc
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:16 <slereah__> Like a gay alphabet soup
01:22:40 <ehird> No.
01:22:43 <ehird> It's quite nice in ais523's mode
01:22:59 <slereah__> Pixplz?
01:23:04 <ehird> Noes, lazy.
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:01 * slereah__ tries to make esolangs stats
01:26:10 <slereah__> number of symbols/commands
01:26:28 <slereah__> The "command" thing is a little fuzzy for some though.
01:28:55 <slereah__> ...
01:28:58 <slereah__> Holy shit.
01:29:03 <slereah__> I have no attention span
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:43 <slereah__> You know, motivation and focus!
01:34:59 <ihope> Are you currently schooling?
01:35:14 <slereah__> Yes. Although it has little to do with it.
01:35:30 <slereah__> It's mostly motivation.
01:40:47 * ihope nods
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:51:18 <slereah_> Mudkips.
01:57:18 <ihope> Interesting.
01:57:47 <slereah_> Quite.
01:58:36 <ihope> Well, I'll be gone, sir, and anon sir, and quoting Shakespeare again when I return.
01:58:40 <ihope> Adieu.
01:58:56 <slereah_> Bai
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:11 <slereah__> Are you going to use it?
03:39:14 <Sgeo> ehird?
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:49:26 <oklofok> also, he's not here
03:49:38 <slereah__> Oh you.
03:50:11 <oklofok> yeah, me :)
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:22 <slereah__> But...
03:51:26 -!- ehird has quit ("This computer has gone to sleep").
03:51:26 <slereah__> What is Oklotalk!
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:52:28 <oklofok> also my oldest language
03:52:39 <slereah__> Yes, that much I know.
03:52:43 <slereah__> But what is inside!
03:52:48 <slereah__> What is the underlying concept!
03:53:01 <oklofok> it's very... ugly.
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:35 <oklofok> *scoping
03:54:54 <slereah__> 'kay
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:29 <slereah__> Funcokens?
03:56:32 <oklofok> a funcoken is a token parsed as an operation, kinda
03:56:49 <slereah__> Phew. I had gay porn on my mind.
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:57:55 <oklofok> it means ropd
03:57:58 <oklofok> right operand
03:58:01 <oklofok> _ is left operand
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:51 <slereah__> Heh.
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:15 <oklofok> oklotalk? i guess by K
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:11 <slereah__> Holy hell, K is ugly.
04:01:17 <slereah__> Looks like an esolang!
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:48 <slereah__> faxathisia: It's superior.
04:01:51 <slereah__> One letter above.
04:01:52 <oklofok> faxathisia: it's one more?
04:01:55 <oklofok> yeah
04:02:01 <faxathisia> I like J a lot more
04:02:35 <oklofok> nothing says a joke is trivial more than two guys saying it simultaneously
04:03:07 <slereah__> :D
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:04:40 <oklofok> oh, right, they don't.
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:01 <oklofok> not qwerty, pretty random
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:06:38 <slereah__> DVORAK?
04:06:40 <oklofok> no
04:06:45 <oklofok> well
04:06:48 <oklofok> i don't know dvorak
04:06:54 <oklofok> so, maybe dvorak.
04:07:02 <slereah__> Well, you know 6 letters of it already!
04:07:10 <faxathisia> ',.ppyfgfgcrgrcl
04:07:12 <faxathisia> aoeuueididhtdhtn
04:07:13 <faxathisia> ;qjkjkxbkxbmmxbw
04:07:22 <oklofok> faxathisia: gesundheit
04:07:47 <faxathisia> this is roughly the layout :P
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:18 <oklofok> *banging
04:08:45 <faxathisia> ',.pyfgcrl aoeuidhtn qjkxbmwv <-- without duplicates
04:09:56 <oklofok> hmm
04:10:05 <oklofok> i like the idea of left-had only okoing
04:10:14 <oklofok> scscscscscscscscscscscscs
04:10:23 <oklofok> well
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:17:39 <oklofok> orange juice, i want that
04:22:04 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
05:26:08 -!- calamari has quit ("Leaving").
05:58:20 -!- lifthras1ir has quit (brown.freenode.net irc.freenode.net).
05:58:33 -!- Sgeo has quit (Remote closed the connection).
05:58:45 -!- lifthras1ir has joined.
06:18:02 <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:45:41 <oklofok> lament: pix
06:46:04 <lament> http://z3.ca/~lament/keyboard.html
06:46:31 <oklofok> 8|
06:46:37 <oklofok> du bist schnell
06:47:26 <faxathisia> wow nice
06:47:38 <oklofok> hmph, i'm still loading
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:56 <lament> what do you mean?
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:20 <oklofok> where the characters are
06:50:25 <lament> it's mostly symmetric
06:50:39 <oklofok> the uppermost line
06:50:48 <oklofok> is wrong
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:10 <oklofok> you mean, your kind?
06:52:14 <oklofok> that i now
06:52:15 <oklofok> konw
06:52:17 <oklofok> know
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 <oklofok> misaligned
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:54:49 <oklofok> that would be double cool
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.
10:52:32 <SimonRC> lament: nise kb
10:52:34 <SimonRC> *nice
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:15:40 <ais523> Sgeo: ?
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:20:54 <AnMaster> ais523, indeed
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:23:22 <AnMaster> oerjan, same
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:27:53 <AnMaster> ehird, hi
16:28:05 <AnMaster> <ehird> AnMaster: fix yur bzrweb <--- what is wrong with it?
16:28:08 <AnMaster> it works fine here?
16:28:10 <oerjan> http://en.wikipedia.org/wiki/Fine-structure_constant
16:28:20 <AnMaster> oerjan, thanks
16:28:51 <oerjan> WIYF (& G T)
16:28:51 <AnMaster> "WIFY"?
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:23 <ais523> AnMaster: yes
16:34:24 <AnMaster> what if the binary is somewhere else?
16:34:28 <AnMaster> like in /usr/local/bin
16:34:31 <ais523> symlink
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:05 <AnMaster> for example
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:08 <AnMaster> /usr/local/bin/python
16:38:13 <ais523> so maybe /usr/bin/env would work
16:38:14 <AnMaster> on freebsd
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:36 <ais523> s/ww/w/
16:38:39 <AnMaster> on gentoo linux:
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:40 <AnMaster> /usr/bin/python
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:39:52 <AnMaster> hm
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:20 <ais523> agreed
16:49:28 <ais523> on modern systems, it should be available
16:49:31 <ais523> is it in POSIX?
16:49:52 <AnMaster> ais523, not sure about that, but I think it may be
16:50:09 <AnMaster> STANDARDS
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:53:30 <ais523> OK
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:56:55 <AnMaster> what is their speciality?
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:38 <ais523> yes
16:58:39 <AnMaster> but with just one stack?
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:01:59 <AnMaster> ais523, hm?
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:20 <ais523> yes
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:18 <slereah__> Hello people folks.
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:23 <ais523> hello slereah__
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:04:57 <ais523> same here, actually
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:38 <AnMaster> windows, bah
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:14 <ais523> yes
17:06:15 <AnMaster> it is possible I know
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:39 <AnMaster> indeed
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:13 <AnMaster> rerr
17:09:14 <AnMaster> err*
17:09:17 <AnMaster> */usr/bin
17:09:22 <AnMaster> yay for *not copy pasting*
17:09:24 <AnMaster> :/
17:09:46 <AnMaster> <Slereah> If there's a syntax error, it deletes your hard drive :o <-- you mean deathstation 9000?
17:10:01 <Slereah> Sure, why not
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:10:58 <Slereah> A hostile language
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:15 <ais523> it should be .b
17:12:23 <AnMaster> hm
17:12:33 <AnMaster> ais523, what about befunge98 then?
17:12:42 <ais523> .b98
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:17:37 <oklofok> pm?
17:17:47 <Slereah> Principia Mathematica.
17:17:56 <oklofok> ah
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:00 <oklofok> :D
17:21:03 <oklofok> sounds awesome
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:11 <Slereah> At least the first line.
17:22:16 <oklofok> kinda like you do with standard division notation
17:22:21 <oklofok> i cannot open that
17:22:30 <oklofok> something wrong with my internets
17:22:37 <Slereah> Oh.
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:23:41 <Slereah> If the unicode displays.
17:23:46 <oklofok> it does
17:23:49 <oklofok> go that's sexy
17:23:56 <oklofok> *god
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:08 <oklofok> "is super-/subset of"
17:26:13 <Slereah> No.
17:26:15 <oklofok> oh
17:26:17 <oklofok> just superset
17:26:20 <Slereah> It's the old notation for "imply"
17:26:21 <oklofok> and okay
17:26:24 <oklofok> yeah
17:26:29 <oklofok> that was my second guess
17:26:32 <oklofok> seen that somewhere
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:10 <oklofok> thnks
17:28:25 <ais523> I actually think that's a mirror, but it seems to have the right data on
17:28:30 <oklofok> *thanks
17:28:56 <oklofok> that's the massive spec even ehird was scared of?
17:30:49 * ais523 isn't scared of it
17:30:53 <ais523> but ehird was for some reason
17:31:23 <ehird> vacj
17:31:25 <ehird> back
17:31:31 <ehird> whoa
17:31:34 <ehird> i missed a LOT
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:25 <ais523> I'll use that, then
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:36 <ehird> :-)
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:36:53 <ehird> SunOS, hee :)
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:25 <ehird> it was this one
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:34 <ehird> :|
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:14 <ehird> it's huge
17:43:17 <ais523> from memory, maybeunarymaybebinary /1*0; #/;
17:43:37 <ais523> actually, that should be 'maybenullarymaybeunary'
17:43:52 <ehird> ah it's this
17:43:52 <ehird> whatever / 25 ; # / ; die "this dies!";
17:44:07 <ais523> same principle
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:32 <ais523> kate beats it on that
17:46:34 <AnMaster> <ehird> AnMaster: bzrweb -- yours wont;' show the file contentes *looks*
17:46:54 <AnMaster> ehird, ah indeed
17:46:57 <AnMaster> will fix later
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:47:47 <AnMaster> 04-k#
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:31 <ehird> 2008?02?02
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:46 <AnMaster> ehird, err no
17:48:49 <ehird> okay
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:05 <ehird> AnMaster: hmm
17:49:07 <ehird> jump bcakwards?
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:35 <AnMaster> but what about other ones?
17:49:42 <AnMaster> like +? or a number
17:49:43 <ehird> AnMaster: I am sorry, I have no idea.
17:49:46 <ehird> Ask Deewiant. :-)
17:49:49 <AnMaster> hm ok
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:55 <ehird> Aww.
17:50:57 <Sgeo> Who's Deewiant?
17:50:58 <ehird> You can only invite if you're an op?!
17:50:59 <ehird> Lame.
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:43 <AnMaster> * [Deewiant] is away (Sauna.)
17:51:56 <ehird> I'll /msg him for when he gets back, I guess.
17:53:02 <AnMaster> ehird, I sent a /msg to him
18:01:13 * oerjan smells a finn
18:01:51 <oklofok> KILL WITH FIRE
18:01:53 <oklofok> KILL KILL
18:02:10 <oerjan> no, another one
18:02:13 <oklofok> (i actually mean POWER, but no one knows the reference anyway)
18:02:56 <oerjan> POWER WITH FIRE? interesting.
18:03:11 <oklofok> umm no, silly
18:03:15 <oklofok> KILL POWER FIRE
18:03:21 <oerjan> ah
18:03:26 <oklofok> and then POWER KILL
18:03:28 <oerjan> that makes sense
18:03:28 <oerjan> not
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:04:15 <oklofok> :D
18:04:25 <oklofok> KILL POWER FIRE
18:04:42 <Slereah> FIRE POWER KILL
18:05:01 <oklofok> KIRE FOWER PILL
18:05:47 <Slereah> PILL ROW FREE PK
18:07:08 <oklofok> this channel must be the second weirdest i ever encountered
18:07:09 <oerjan> FLOWER KIPPER POLE
18:07:16 <oerjan> o_O
18:07:20 <oklofok> CLOWER FLIPPER MOLE
18:07:23 <Slereah> oklofok: Not even close!
18:07:27 <oklofok> *CLOVER
18:07:34 <Slereah> *CLOWNER
18:07:43 <oklofok> Slereah: well, unless you count temporary chanels
18:07:45 <oerjan> NOONE OWNS CL
18:07:47 <oklofok> *chanelzorz
18:08:01 <oerjan> chanel 5?
18:08:10 <oklofok> yeah, and 9.
18:08:29 <ais523> oklofok: which one was weirder?
18:08:44 <oklofok> not in this network
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:09:57 <oklofok> *on
18:10:21 <ais523> okoing?
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:10:55 <oklofok> well, why not.
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:11:50 <oklofok> :D
18:12:01 <AnMaster> ehird, how goes tuberculosis?
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:22 <lament> there were one or two
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:12:51 <oklofok> *two*?
18:12:54 <oklofok> hmm
18:13:03 <oklofok> actually, i think i remember another one
18:13:08 <oklofok> the one i scared away
18:13:16 <lament> with the naked pics?
18:13:30 <oklofok> i don't remember
18:14:11 <oklofok> hmm
18:14:16 <oklofok> something about being a sexbot
18:14:19 <oklofok> :D
18:14:33 <oklofok> i should dig up the logs
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:24 <lament> believable so far
18:16:28 <lament> now change it to oklogirl
18:16:33 <okloMAN> omg
18:16:35 <okloMAN> no way!
18:16:39 <oerjan> rofl
18:16:43 <okloMAN> okay, okay
18:16:47 -!- okloMAN has changed nick to okloHOTGIRL.
18:16:52 <Slereah> HEY BABY
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:16:59 <lament> yes
18:17:03 -!- Deewiant has joined.
18:17:03 <Slereah> :D
18:17:08 <okloHOTGIRL> lez hope not.
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:21 <oklopol> lament: nooooo :D
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:43 <AnMaster> so what would 2k'c do?
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:07 <oklopol> make that over 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:25 <AnMaster> ehird, indeed
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:20:58 <oerjan> a *hot* toaster
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:19 <ehird> ais523: hah
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:47 <Slereah> Heh
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:22:53 <Deewiant> ehird: sh'ya right :-D
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:32 <AnMaster> Deewiant, errm who?
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:24:31 <AnMaster> hm
18:24:52 <Slereah> When was the last time!
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:38 <Deewiant> s/on/of/
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:19 <oerjan> that would be Nov 13
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:33 <Deewiant> ehird: :-)
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:25 <AnMaster> is that correct?
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:35:48 <AnMaster> err not " nested ' "
18:35:51 <Deewiant> so what about 2k# then
18:35:54 <AnMaster> remove nested in that place
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:36:23 <AnMaster> Deewiant, indeed I know that
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:13 <AnMaster> *runs*
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:18 <AnMaster> ais523, aww
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:39:56 <AnMaster> ais523, yeah
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:35 <AnMaster> ais523, exactly
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 <Deewiant> ais523: I linked to it above
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:45:46 <AnMaster> sigh
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:19 <AnMaster> or if you use bignums
18:47:28 <Deewiant> eh
18:47:31 <Deewiant> I dunno :-P
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:44 <AnMaster> (say, quantum befunge)?
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:19 <AnMaster> Deewiant, so I'd do befunge08
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:23 * AnMaster fires up lyx
18:50:27 <Deewiant> ais523: it's defined as above
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:45 <Deewiant> AnMaster: gotta love bash :-)
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:50 <Deewiant> AnMaster: beats me
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:17 <AnMaster> ais523, indeed
18:56:22 <AnMaster> anyone know his email?
18:56:30 <Deewiant> it's on the web page
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:58:45 <AnMaster> ah
18:59:53 <ehird> ais523: hurray for the {{catseye}} template!
18:59:57 <ehird> the snarkiest template on all wiki.
19:01:17 * ais523 has to go, anyway
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:11:46 <AnMaster> :)
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:33 <Deewiant> yeah, I suppose
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:07 <Deewiant> complain to the GDC folks :-)
19:13:14 <AnMaster> hm
19:13:33 <Deewiant> join #d and ask about it
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:14:58 <AnMaster> Deewiant, for what arch?
19:15:05 <Deewiant> x86, it's all I've got
19:15:09 <AnMaster> I got x86_64
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:23 <Deewiant> everything wraps
19:17:39 <AnMaster> would that wrap a lot of times?
19:17:39 <AnMaster> hm
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:18:51 <AnMaster> err not s indeed
19:18:54 <AnMaster> g I meant
19:18:59 <AnMaster> (late here)
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:19:58 <Deewiant> although it prolly should
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:41 <AnMaster> time consuming I know
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:25:55 <AnMaster> not a lot on each line though
19:26:05 <Deewiant> that's not the hard part
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:12 <AnMaster> Deewiant, ah ok
19:28:13 <AnMaster> right
19:28:35 <AnMaster> you could check if it is 93 or 98, like you do in the main test suite
19:28:36 <AnMaster> ;P
19:28:46 <Deewiant> I couldn't be bothered
19:28:55 <Deewiant> I do do something though since it checks a few fingerprints
19:29:09 <AnMaster> yeah
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:19 <Deewiant> (or infinity)
19:30:37 <AnMaster> Deewiant, yep but funge98 says: "1 cell containing the number of bytes per cell (global env)."
19:30:41 <AnMaster> that wants it in bytes
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:02 <Deewiant> 8-bit bytes? 24-bit bytes?
19:31:07 <AnMaster> Deewiant, aren't they always 8 bits?
19:31:08 <ehird> Deewiant: byte = 8-bit
19:31:11 <Deewiant> no
19:31:12 <ehird> that's the definition of 'byte'
19:31:16 <Deewiant> http://en.wikipedia.org/wiki/Byte
19:31:19 <AnMaster> ehird, I thought so too
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:49 <ehird> ok
19:31:50 <ehird> that's fskced
19:31:51 <ehird> :)
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:04 <Deewiant> etc. :-)
19:32:12 <AnMaster> ehird, so if char is 16 bits, then what would sizeof a type of less bits be?
19:32:23 <Deewiant> there is no such type
19:32:32 <AnMaster> ah, char must be smallest?
19:32:36 <Deewiant> yep
19:32:57 <AnMaster> right, then that part of the standard needs to be cleaned up
19:33:11 <Deewiant> are you making notes? :-)
19:33:26 <AnMaster> Deewiant, I am
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:34:49 <AnMaster> something like that
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:09 <AnMaster> :)
19:35:11 <oklopol> read funge-98
19:35:16 <oklopol> was quite simple
19:35:19 <AnMaster> oklopol, I have
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:21 <AnMaster> Deewiant, indeed
19:36:37 <oklopol> so... funge-98 doesn't have n-funge?
19:36:43 <Deewiant> sure it does
19:36:45 <AnMaster> oklopol, it does
19:36:53 <Deewiant> it introduced them :-P
19:36:53 <AnMaster> however, that is n dimensions
19:36:54 <oklopol> hmm, i missed that then :)
19:37:09 <AnMaster> but it assumes binary
19:37:20 <oklopol> ...binary?
19:37:29 <AnMaster> oklopol, as in "not trinary"
19:37:31 <AnMaster> or such
19:37:35 <AnMaster> (fournary?)
19:37:39 <oklopol> oh, right
19:37:39 <Deewiant> quaternary
19:37:42 <AnMaster> ah
19:37:49 <oklopol> anyway, where's n-dimensionality defined?
19:37:52 <oklopol> in the spec
19:37:57 <Deewiant> probably in a footnote at the bottom or something
19:37:58 <Deewiant> aside from trefunge
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:37 <Deewiant> there you go
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:12 <AnMaster> or 1.84-funge?
19:39:24 <Deewiant> AnMaster: how would you define a nonintegral space :-)
19:39:34 <Deewiant> I mean, go ahead by all means
19:39:35 <AnMaster> Deewiant, indeed, no idea
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:36 <Deewiant> AnMaster: :-)
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:30 <Deewiant> darn
19:41:30 <oklopol> lol.
19:41:32 <Deewiant> oklopol: "a vector (set of co-ordinates)"
19:41:40 <ehird> Deewiant: TURKEY BOMB is odd yet.
19:41:41 <ehird> *yes
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:41:56 <Deewiant> ehird: good for you :-)
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:39 <AnMaster> there English fails
19:43:52 <AnMaster> you can add 3 more dimensions using Swedish
19:44:02 <oklopol> yeah, or finnish
19:44:03 <AnMaster> öäåzyx
19:44:04 <Deewiant> oklopol: no, it has to be finite if it's to be Cartesian
19:44:07 <AnMaster> oklopol, indeed
19:44:13 <AnMaster> anyway I meant zyx above
19:44:16 <AnMaster> not zxy
19:44:17 <oklopol> Deewiant: no
19:44:22 <oklopol> it can be *extendable*
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:12 <AnMaster> adding dimensions on demand?
19:45:32 <oklopol> just that i could start moving into any dimension
19:45:45 <Deewiant> how would that work
19:45:48 <Deewiant> using x
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:06 <oklopol> but you don't
19:46:13 <AnMaster> oklopol, ah sounds good
19:46:22 <AnMaster> however, a problem
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:46:55 <AnMaster> that would be equal to >
19:47:04 <AnMaster> oklopol, got a link?
19:47:04 <oklopol> because even rail is more complicated than that :)
19:47:12 <oklopol> i don't have much online.
19:47:16 <AnMaster> aww
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:47:38 <oklopol> err no
19:47:44 <oklopol> rail @ esolang
19:47:47 * AnMaster looks
19:48:08 <oklopol> rail has function entry points at a semantical level, funge doesn't seem to
19:48:13 <Deewiant> nope
19:48:17 <Deewiant> it's all 'goto'
19:48:23 <oklopol> yeah.
19:48:33 <Deewiant> not even 'gosub' :-)
19:48:38 <oklopol> heh :)
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:45 <oklopol> COME TO PAPA
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:32 <AnMaster> what about that?
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:17 * AnMaster looks at Judofyr
19:53:43 <oklopol> what's that one language on esolang where every operation only *probably* works?
19:53:46 <oklopol> or are there multiple?
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:54:18 <oerjan> Java2K
19:54:26 <oklopol> ah
19:54:32 <oklopol> remembered it had a j
19:54:52 <oklopol> damn
19:55:01 <AnMaster> what?
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:12 <oklopol> i'm feeling eso tonight
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:23 <oklopol> dunno why, but dcc works.
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:01 <AnMaster> may I ask why
19:57:16 <ehird> Judofyr: I have data here, I have data there
19:57:16 <oerjan> what about ftp?
19:57:18 <oklopol> i'd like to read 'em
19:57:19 <ehird> I have data that has never been together
19:57:24 <ehird> Wi-wi-wi-windows 386!
19:57:29 <Judofyr> yes!
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:31 <AnMaster> ;P
19:57:50 <AnMaster> oklopol, what about gopher? would be easier for me
19:57:55 * AnMaster runs a gopher server
19:58:00 <Deewiant> gopher!
19:58:00 <oklopol> AnMaster: umm... java2k specs that is
19:58:02 <oklopol> :)
19:58:05 <AnMaster> Deewiant, :D
19:58:08 <oklopol> i don't need dcc specs
19:58:13 <oklopol> what's gopher?
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:55 <oklopol> stop linking stuff! :D
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:32 <Deewiant> ah, I see
19:59:38 <AnMaster> Deewiant, yes to make ppl on irc ask about it
19:59:39 <AnMaster> :P
19:59:43 <AnMaster> but bash I use more in fact
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:45 <AnMaster> ehird, no in fact not
20:00:49 <AnMaster> Deewiant, because it is fun
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:00:55 <AnMaster> and a challenge
20:01:00 <AnMaster> ehird, yes I 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:20 <AnMaster> year*
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:06 <oklopol> what client?
20:02:09 <AnMaster> please don't flame about that I use ERC
20:02:14 <AnMaster> oklopol, I said ERC didn't I?
20:02:15 <oklopol> ah.
20:02:21 <AnMaster> irc client for emacs
20:02:22 <ehird> AnMaster: inspircd is far too unmodern..
20:02:22 <oklopol> i'm not aware of that
20:02:23 <ehird> :)
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:41 <oklopol> i'm guessing /dcc
20:02:47 <AnMaster> ehird, what one would you call modern then?
20:02:47 <ehird> itamyklncf1ims
20:02:56 <AnMaster> oklopol, "unknown command"
20:03:04 <ehird> erc can't do dcc
20:03:09 <AnMaster> ehird, ah
20:03:10 <oklopol> heh
20:03:15 <AnMaster> maybe I could write a module to do it
20:03:20 <AnMaster> just I suck at elisp
20:03:22 <ehird> AnMaster: already done
20:03:23 <ehird> erc-dcc
20:03:26 <ehird> but erc is just a toy.
20:03:27 <ehird> seriously.
20:03:27 <AnMaster> ehird, ah right
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:03:53 <ehird> :(
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:09 <ehird> :D
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:04:35 <AnMaster> pure latex would be hard
20:04:50 <AnMaster> Deewiant, http://www.lyx.org/
20:04:54 <ehird> ummm
20:04:56 <ehird> latex isn't hard
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:29 <ehird> TeX is simple.
20:05:30 <ehird> And nice.
20:05:33 <ehird> oklopol: naww
20:05:35 <ehird> I suck at parsers
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:05 <AnMaster> like brainfuck or funge
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:00 <AnMaster> not for writing parsers in
20:07:01 <AnMaster> :P
20:07:06 <oklopol> ehird: it is very awesome, indeed :)
20:07:27 <AnMaster> oklopol, fun!
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:42 <AnMaster> oklopol, 100%?
20:08:43 <oklopol> the exact answer would be no, though, iirc.
20:08:54 <oklopol> AnMaster: no
20:08:57 <oklopol> i mean
20:08:59 <oklopol> limit of 100
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:23 <ehird> hello world2k
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:32 <AnMaster> ah
20:09:33 <ehird> this prints out F
20:09:45 <oklopol> is it long? paste it to me if not :<
20:09:52 <AnMaster> oklopol, it certainly is
20:09:56 * oklopol is retarded
20:09:58 <AnMaster> I could pastebin it though
20:10:02 <oklopol> ...
20:10:04 <AnMaster> ;P
20:10:08 <oklopol> :D
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 <ehird> :D
20:10:14 <AnMaster> oklopol, tried restarting your router?
20:10:32 <oklopol> ehird: i lolled too :D
20:10:33 <AnMaster> heh indeed
20:10:41 <oklopol> AnMaster: no. i don't want to disconnect irc...
20:10:44 <oklopol> :<
20:10:45 -!- ehird has set topic: Fe fi fo funge, I smell the brainfuck of an Englishman. | pastebin - http://pb.eso-std.org/.
20:10:49 <ehird> lulz, not yet :D
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:02 <ehird> Sgeo: lulz
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:25 <ehird> oklopol: no
20:11:28 <ehird> but it will remember everything
20:11:29 <AnMaster> oklopol, depends
20:11:34 <ehird> so you'll be out for about 3 mins
20:11:34 <ehird> max
20:11:37 <oklopol> ehird: i have konversation
20:11:45 <oklopol> can it be made remember?
20:11:47 <oklopol> :)
20:11:56 <ehird> oklopol: yes
20:11:57 <AnMaster> oklopol, with static ip it *may* be possible for client and server not to note that you disconnected
20:11:58 <ehird> go into networks
20:12:00 <oklopol> i'm assuming you know everything about it becauseeeee you were using it iirc
20:12:00 <ehird> edit Freenode
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:11 <ehird> yes
20:13:15 <ehird> add to auto commands:
20:13:18 <ehird> /msg nickserv identify FOO
20:13:20 <ehird> and voila
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:13:30 <ehird> on the menu bar
20:14:48 <pikhq> Heh.
20:14:57 <oklopol> define "in the first menu", it's not in any of the basic menus or "settings" :)
20:15:24 <oklopol> *because
20:15:58 * Sgeo wonders if YouOS is Still Alive
20:16:29 <oklopol> ehird: found it
20:16:33 <oklopol> thanks
20:16:57 <oklopol> it was "server list", so naturally my robot brain saw no relation to "networks"
20:17:35 <ehird> ah
20:17:36 <ehird> :)
20:17:51 <ehird> Sgeo: Hmm.
20:17:56 <ehird> Another "Web OS"
20:18:02 <ehird> How interesting, exciting, and useful.
20:18:16 <Sgeo> I made some apps for i
20:18:17 <Sgeo> it
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:38 <ehird> oklopol: plz spec
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:20:16 <oerjan> what country is er?
20:21:13 <oklopol> ehird: hard to define
20:21:23 <oerjan> hm cannot find it
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:22:13 <oklopol> :)
20:23:30 <oerjan> ehird: i conclude that .er would be a great name to be domainsquatted
20:24:33 <oerjan> oh, Eritrea
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:09 <ehird> heh
20:26:17 <ehird> .er is great for obscenities
20:26:19 <ehird> http://fuck.er/
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:45:57 <ehird> back
20:46:03 <ehird> Judofyr: What about it?
20:46:15 <ehird> SimonRC: Blah blah blah blah blah THIS IS FORTH DAMNIT
20:46:17 <Judofyr> is it usable?
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:24 <SimonRC> ok
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:38 <SimonRC> a bit, yes
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:26 <ehird> SimonRC: oh, yes
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:02 <ehird> yes
20:57:03 <ehird> and?
20:57:03 <SimonRC> ehird: no
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:57:37 <ehird> ip++()
20:57:37 <ehird> ip++()
20:57:37 <ehird> ip++()
20:57:38 <ehird> ip++()
20:57:38 <ehird> ip++()
20:57:38 <ehird> ip++()
20:57:46 <lament> ip--()
20:57:51 <ehird> ip%2()
20:57:58 <AnMaster> err, what is the problem?
20:58:06 <SimonRC> ok...
20:58:08 * AnMaster reads up but can't find where discussion start
20:58:14 <AnMaster> starts*
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:35 <SimonRC> yes
20:58:36 <ehird> it's (*funcptr)()
20:58:47 <ehird> SimonRC: anyway
20:58:55 <ehird> if we have '+ +'
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:36 <SimonRC> ok
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?
20:59:53 <ehird> SimonRC: ...
20:59:54 <ehird> i just told you
20:59:55 <SimonRC> AnMaster: write a forth
21:00:05 <SimonRC> um
21:00:08 <SimonRC> no
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 <SimonRC> ehird: yes
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:35 <AnMaster> ehird, ok, point taken
21:00:38 <AnMaster> ;P
21:00:54 <AnMaster> but forth isn't really esoteric is it?
21:01:39 <ehird> no
21:01:39 <ehird> it isn't
21:01:39 * AnMaster makes a difference between "writing yet another compiler/interpreter for an esoteric language" and for "normal languages"
21:02:24 <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:31 <ehird> stfu.
21:02:42 <AnMaster> ehird, so when do you plan to write your own C compiler?
21:02:45 <AnMaster> *runs*
21:02:48 <ehird> I have.
21:02:49 <ehird> :|
21:02:54 <AnMaster> ehird, oh!?
21:02:55 <AnMaster> link?
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:17 <AnMaster> ah
21:03:19 <AnMaster> I see
21:03:35 <AnMaster> considering GCC is still not fully C99...
21:04:00 <ehird> uhm
21:04:02 <ehird> k&r c ofc
21:04:08 <AnMaster> ok :/
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:05 <ehird> err, wait
21:05:08 <ehird> a funcptr won't fit into a char.
21:05:09 <ehird> oops.
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:40 <ehird> AnMaster: anywayu
21:05:41 <AnMaster> ...
21:05:44 <ehird> i can't just use an integer type
21:05:45 * AnMaster runs x86_64
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:21 <ehird> SimonRC: maybe
21:06:25 <AnMaster> SimonRC, 8 char!
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:06:54 <AnMaster> ehird, in C99 you can afaikk
21:07:01 <SimonRC> {.foo = bar}
21:07:06 <ehird> no, no c99 kthx
21:07:08 <AnMaster> no idea about older C
21:07:38 <AnMaster> anyway please don't assume pointers are 32-bits. Such C code is horrible
21:07:38 <ehird> hmm
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> if so...
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:33 <AnMaster> ;P
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:44 <ehird> 0 terminates
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:06 <SimonRC> hmm
21:09:07 <ehird> damnit.
21:09:16 <SimonRC> what is the def of F_hlt?
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:20 <AnMaster> *runs*
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:35 <SimonRC> AnMaster: yup
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:21 <ehird> hmm
21:10:22 <SimonRC> ah, I think I see
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:39 <SimonRC> ouch
21:10:41 <ehird> the perverse way of doing closures
21:10:42 <ehird> :-)
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:18 <ehird> hmm
21:11:19 <ehird> but then..
21:11:24 <ehird> words aren't a list of funcptrs any more
21:11:30 <ehird> :(
21:11:31 <ehird> AnMaster: stfu
21:12:09 <SimonRC> (In fact I had mentally discounted your perverse closures)
21:12:22 <ehird> haha
21:12:28 <ehird> ooh, wait...
21:12:32 <ehird> hmm, no..
21:12:40 <ehird> SimonRC: since ip will be F_magic.. there's no way to utilize ip
21:12:41 <ehird> unless..
21:12:43 <ehird> ip2!
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:47 <ehird> Then ignore it
21:13:53 <AnMaster> btw, someone made a forth interpreter in bash
21:13:54 <ehird> I repeat --
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:16 <AnMaster> ah
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:34 <ehird> SimonRC: ditto
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:10 <AnMaster> ehird, aye
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:31 <SimonRC> Or this:
21:16:33 <AnMaster> but it is easy to overdo it
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:04 <ehird> IT'S AMUSING
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:26 <AnMaster> hm
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:17:41 <ehird> and oh
21:17:43 <ehird> okay then
21:17:43 <ehird> :p
21:17:54 <AnMaster> SimonRC, indeed you got it
21:18:00 * SimonRC bangs ehird and AnMaster's heads together
21:18:03 <ehird> ow
21:18:04 <AnMaster> ouch!
21:18:22 <SimonRC> the traditional Clarkstone approach for bickering boys
21:18:24 <SimonRC> :-)
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:35 <AnMaster> I use it
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:09 <SimonRC> *grin*
21:19:11 <AnMaster> SimonRC, haha
21:19:31 <AnMaster> SimonRC, I got programs in bash with over 1000 lines of code (comments excluded)
21:19:38 <AnMaster> I think envbot is such
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:19 <ehird> BUT
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:29 * AnMaster runs
21:21:35 <ehird> then, NEXT is:
21:21:57 <SimonRC> ehird: that is exactly what mine does, I think...
21:22:06 <SimonRC> and JonesForth
21:22:15 <SimonRC> it's indirect-threaded code
21:22:20 <ais523> the topic lies!
21:22:27 <ehird> ip += (*ip)+2; ip(ip+1);
21:22:29 <AnMaster> ais523, it does
21:22:30 <ehird> ais523: yes
21:22:30 <ehird> :)
21:22:45 <SimonRC> ah, waitamo, maybe not
21:22:55 <ehird> #define NEXT ip+=(*ip)+2,ip(ip+1)
21:22:56 <ehird> :D
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:24:39 <SimonRC> ok
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:29 <SimonRC> it is 3+n cells
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:26:43 <ais523|sl_busy> luckily, we have logs, so you're still alright
21:27:10 <SimonRC> to execute forth code:
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:05 <oerjan> ah that's good
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:31:05 <SimonRC> EOF
21:37:55 <oklopol> yay
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:10 <SimonRC> hmm
21:43:12 <oklopol> which would be a total of 2 points!
21:43:14 <oklopol> mwahaha
21:43:42 <SimonRC> have you read about ursala?
21:43:49 <oklopol> no :|
21:43:57 <oklopol> is it... that? :)
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:34 <oklopol> i can't open that :)
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:44:53 <SimonRC> oklopol: huh?
21:45:03 <oklopol> umm, and it does type checking for tokenization and parsing?
21:45:09 <SimonRC> no,
21:45:13 <oklopol> SimonRC: i cannot open webpages.
21:45:16 <SimonRC> I was thinking m,ost ly the insane density
21:45:20 <SimonRC> oklopol: why?
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:19 <SimonRC> ok
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:46:56 <oklopol> sure.
21:47:00 <SimonRC> ouch
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:47:33 <SimonRC> can humans parse it?
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:17 <SimonRC> oh dear
21:48:22 <SimonRC> well, it is esoteric
21:48:30 <oklopol> i'm going to add commands for actually choosing the parse tree ;)
21:48:38 <SimonRC> how about ( and )
21:48:46 <oklopol> like, "choose fifth parse tree"
21:48:54 <SimonRC> ouch
21:49:05 <oklopol> those are parsed as you'd except
21:49:07 <oklopol> expect
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:49:33 <oklopol> okay
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:22 <oklopol> }#<
21:50:34 <oklopol> ((}# <) arg)
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:51:50 <oklopol> *minimum
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:47 <SimonRC> ok
21:52:49 <oklopol> so }#< gets two sorted lists (they were recursed into), and always picks the smaller of their heads
21:52:55 <oklopol> until they're empty
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:42 <oklopol> *in
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:10 <oklopol> pattern?
21:54:15 <oklopol> what do you mean?
21:54:21 <SimonRC> what exactly does ' do?
21:54:25 <oklopol> ah
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:54:58 <SimonRC> ok
21:55:01 <oklopol> well, the mergesort
21:55:17 <SimonRC> what does comma do?
21:55:26 <oklopol> separates two expressions
21:55:33 <oklopol> when a function is called
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:29 <SimonRC> "run through"?
21:56:39 <SimonRC> and in what order?
21:56:48 <oklopol> lessay you have expressions e1 e2 e3 ... en
21:56:53 <oklopol> separated by commas
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:07 <SimonRC> hmm
21:58:08 <oklopol> because i decided it is :)
21:58:18 <oklopol> information kinda flows through the expressions
21:58:22 <oklopol> that's the idea
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:58:48 <SimonRC> wait
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:10 <oklopol> depends
21:59:13 <oklopol> what's increment?
21:59:21 <SimonRC> \x -> x + 1
21:59:32 <oklopol> that would not have a parse tree.
21:59:44 <SimonRC> indeed, no
21:59:52 <oklopol> well
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:41 <SimonRC> "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:01:33 <SimonRC> ok
22:01:44 <SimonRC> this is nuts
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:02:50 <oklopol> ah
22:02:54 <oklopol> it has two definitions
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:49 <oklopol> then
22:03:52 <SimonRC> cool
22:03:56 <oklopol> there's just / :: list -> list of lists
22:03:59 <oklopol> which splits in hald
22:04:01 <oklopol> *half
22:04:07 <AnMaster> night
22:04:26 <oklopol> i'll try actually adding / :: int -> list -> list of lists now, lessee what happens
22:04:27 <SimonRC> AnMaster: 'night
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:38 <SimonRC> ok
22:07:47 <SimonRC> waitamo...
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:36 <oklopol> now
22:08:45 <oklopol> mergesort gets (list int)
22:08:55 <oklopol> / makes it (list (list int))
22:09:13 <oklopol> ' makes it (list (list int)), just recurses through them
22:09:22 <oklopol> then
22:09:37 <oklopol> (}# <) gets the (list (list int)) ' returned
22:09:46 <oklopol> hmm...
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:19 <oklopol> you call Sp on a list
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:05 <oklopol> hmm
22:13:16 <oklopol> just today i had a situation where i needed that...
22:13:22 <SimonRC> that's cool
22:13:43 <SimonRC> it allows you to keep keys and values in seperate lists, and sort both by sorting one
22:14:02 <oklopol> yeah, for instance.
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:27 <oklopol> yeah.
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:40 <SimonRC> kinda
22:15:42 <SimonRC> and the overloading
22:15:49 <oklopol> and cise should, at least in the future, also have a nice support for tttttrees
22:15:55 <oklopol> hmm
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:13 <SimonRC> oklopol: indeed
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:16:54 <SimonRC> yup
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:17:55 <SimonRC> ?
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:19:15 <SimonRC> mmmm, jit
22:19:25 <oklopol> "jit"?
22:19:33 <SimonRC> oops, JIT
22:19:39 <SimonRC> just-in-time compiling
22:19:43 <oklopol> ah.
22:19:44 <oklopol> right
22:19:46 <oklopol> ofc
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:28 <oklopol> hmm
22:21:30 <oklopol> ah
22:21:42 <oklopol> you mean
22:21:57 <oklopol> i could use the functions that have been defined in the source up to the point of parsing
22:21:57 <oklopol> ?
22:22:06 <SimonRC> yes-ish
22:22:11 <oklopol> that's not good, because you may want to have circular dependency
22:22:20 <SimonRC> that is rare
22:22:27 <oklopol> i guess.
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:47 <SimonRC> yup
22:22:49 <oklopol> i already have an operator for setting a variable.
22:22:56 <oklopol> hmm
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:26 <oklopol> oh
22:23:30 <oklopol> or then does
22:23:35 <oklopol> i mean
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:22 <oklopol> ; sets a variable
22:24:41 <ais523|sl_busy> that's actually what C does, more or less
22:24:48 <oklopol> yeah
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:20 <oklopol> ";" is a pattern matcher
22:26:43 <SimonRC> ok
22:26:43 <oklopol> so you can put parts of the stream or all of it in variables midway in the function
22:26:56 <SimonRC> wibble
22:27:12 <SimonRC> BTW, does the left or the right part of a function go "first"?
22:27:31 <oklopol> xD
22:27:44 <oklopol> okay, this was a classic failure from my part...
22:27:52 <oklopol> i did ghc cise.hs -o cise
22:28:03 <oklopol> guess what my cise SPEC was called ;)
22:28:09 <SimonRC> ouch
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:28:51 <oklopol> i'm a fucking idiot
22:28:59 <SimonRC> lost much?
22:29:00 <Sgeo> oklopol, is there a cise~ ?
22:29:00 <oklopol> hmm
22:29:12 <Sgeo> or whatever?
22:29:17 <SimonRC> can you "undo" the re-load~?
22:29:20 <oklopol> SimonRC: it's basically prefix + currying
22:29:25 <ais523|sl_busy> look for a backup
22:29:25 <oklopol> Sgeo: i may just love you
22:29:28 <oklopol> let's see
22:29:38 <ais523|sl_busy> or see if you pasted or copied it anywhere
22:29:48 <SimonRC> or something in a pastebin?
22:29:50 <oklopol> yeah! :)
22:30:04 <oklopol> i probably wouldn't even have looked xD
22:30:11 <oklopol> but it was there
22:30:13 <SimonRC> or be like Paul Graham and say "screw the docs the program is the spec"
22:30:26 <oklopol> :P
22:30:35 <SimonRC> in future, keep you manual is a different dir
22:30:43 <Sgeo> oklopol, so I was right?
22:30:43 <oklopol> guess i should
22:30:45 <SimonRC> or maybe call it "cise.txt"
22:30:52 <oklopol> Sgeo: yes, i do love you
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:22 <ais523|sl_busy> I was doing it on my laptop
22:36:32 <ais523|sl_busy> not on the University servers
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:34 <oklopol> wow
22:37:43 <oklopol> [['}#', '<'], ["'", ['/', '*']]] from }#<'/
22:37:47 <oklopol> oh right
22:37:51 <oklopol> i didn't check if that was right
22:37:53 <oklopol> lol :P
22:37:55 <oklopol> let's check
22:38:02 <oklopol> it is
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:38:38 <oklopol> (okay, it's not)
22:38:45 <oklopol> (but it's promising!)
22:39:21 <oklopol> 5 character mergesort, and not even *complete* cheat
22:39:35 <ais523|sl_busy> is cise concatenative
22:39:42 <ais523|sl_busy> I can't quite tell from your description
22:39:47 <oklopol> not fully, i don't think so
22:39:49 <lament> are they unicode characters
22:39:51 <oklopol> well
22:39:54 <SimonRC> cise is "gluing"
22:40:05 <SimonRC> it stick stuff together in whatever way works
22:40:11 <oklopol> :P
22:40:15 <SimonRC> composition, argument-passing, curring, etc
22:40:23 <SimonRC> *currying
22:40:24 <oklopol> yeah, you can pretty much just slash your characters there and it works!
22:40:33 <oklopol> lament: i don't think so
22:40:52 <SimonRC> except when the computer finds a nex and exciting interpreetation of your ambiguous parse tree...
22:40:56 <SimonRC> *new
22:41:02 <oklopol> curly bracket close, that number character, less-than, single quote, slash
22:41:07 <SimonRC> And I thought C++ was bad
22:41:14 <oklopol> heh
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:41:46 <oklopol> ais523|sl_busy: (exactly)
22:42:07 <ais523|sl_busy> what do you do when there are two non-erroneous ways to parse the program?
22:42:09 <SimonRC> what is your typesystem?
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:07 <SimonRC> brackets?
22:45:09 <oklopol> so it should try to parse your thing as such
22:45:18 <oklopol> there are not brackets.
22:45:31 <SimonRC> they would help human readers
22:45:33 <oklopol> well, () are used to define a function
22:45:37 <SimonRC> ok
22:45:55 <oklopol> i guess i might make it possible to use that in a sort of bracket-like fashion
22:45:57 <oklopol> somehow...
22:46:05 <SimonRC> or something liek it
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:31 <oklopol> hehe
22:46:33 <SimonRC> but less ambiguously than without
22:46:40 <SimonRC> ok
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:47:45 <SimonRC> what should it do?
22:47:49 <SimonRC> cool
22:48:00 * ais523|sl_busy is amused by IRC messages crossing from time to time
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:25 <SimonRC> *boggle*
22:48:31 <SimonRC> but, it's like, 1 line!
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:00 <oklopol> i think.
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:49:48 <ais523|sl_busy> umlaut is a character in cise?
22:49:50 <ais523|sl_busy> that isn't in ASCII
22:49:56 <oklopol> true.
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:50:44 <ais523|sl_busy> in Perl
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:51:40 <oklopol> SimonRC: ascii-checker?
22:52:23 <SimonRC> oops
22:52:28 <SimonRC> I meant prime-checker
22:52:45 <oklopol> hmm, first of all, Al/_¨ should work now, second, this seems to rely on type *conversion*
22:52:45 <oklopol> :)
22:53:14 <oerjan> haskell.org
22:53:31 <oklopol> that does (all (div val [1..val-1]))
22:53:42 <oerjan> wong time no see
22:53:51 <oklopol> and assumes an integer can also be divided by a list to get a list of them resultzorz
22:53:56 <ais523|sl_busy> oerjan: I don't understand your last two comments
22:54:01 <oklopol> :)
22:54:06 * oklopol does
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:54:43 <ais523|sl_busy> really? I thought they were a Norwegian mathematician
22:55:05 <ais523|sl_busy> but it's easy to jump to conclusions over the internet
22:55:08 <SimonRC> Ah, I see
22:55:17 <oklopol> ais523|sl_busy: observe oerjan closely, what you just saw was oerjan's *thing*
22:55:37 <oklopol> everyone has a thing!
22:55:42 <SimonRC> hmm, no I don't
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:57:53 <oklopol> hmm, one a clock
22:58:02 <Sgeo> What's my thing?
22:58:11 <oklopol> Sgeo: do you really have to ask?
22:58:30 <ais523|sl_busy> Sgeo: it most probably starts with P
22:59:12 <oklopol> ais523|sl_busy's thing is also pretty clear, you're branded for life.
22:59:29 <oklopol> well
22:59:29 * oerjan thinks ais523|sl_busy has at least two things
22:59:41 <oklopol> oerjan: what's the other?
22:59:43 <ais523|sl_busy> I'm pretty sure I have several
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:10 <ais523|sl_busy> even though I forget to use it from time to time
23:01:20 <oklopol> true
23:01:30 <SimonRC> Didn't we have this conversation a few months back?
23:01:45 <SimonRC> I am the neophile.
23:01:52 <oklopol> heh
23:02:03 * oklopol is many philes...
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:45 <ais523|sl_busy> oerjan: that would have no effect, surely?
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:02:59 <SimonRC> etc
23:03:07 <SimonRC> *higher-order
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:28 <SimonRC> hmm
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:08 <SimonRC> but not neon afaik
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:04:55 * SimonRC recalls a GITP episode
23:04:55 <ais523|sl_busy> flourine, or fluorine?
23:05:01 <SimonRC> whatever
23:05:02 <ais523|sl_busy> I think we've been mispelling it consistently
23:05:16 <SimonRC> "uo" is rare in English
23:05:27 <ais523|sl_busy> Noun
23:05:27 <ais523|sl_busy> flourine
23:05:27 <ais523|sl_busy> 1. Common misspelling of fluorine.
23:05:34 <ais523|sl_busy> (from Wiktionary)
23:05:55 <oerjan> that's a LIE
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:18 <ais523|sl_busy> s/'fluorine'/'flourine'/
23:06:26 <oerjan> flourine is a dangerous chemical arising in flour that has been stored too long
23:06:34 <SimonRC> :-P
23:06:37 <ais523|sl_busy> so therefore 'flourine' is a noun that can only possibly refer to the word 'flourine'
23:06:43 <ais523|sl_busy> in a nice bit of self-reference
23:06:53 <SimonRC> heh
23:07:15 <SimonRC> oklopol: how about a compiler with common sense
23:07:18 <SimonRC> ?
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:05 <oklopol> DWYM?
23:09:18 <SimonRC> Do What You Mean
23:09:22 <oklopol> (cannot google...)
23:09:23 <oklopol> ah
23:09:25 <ehird> SimonRC: main(){printf("%i",pi);}
23:09:29 <ais523|sl_busy> as in WYSIWYM
23:09:29 <ehird> prints out all of pi
23:09:30 <ehird> but
23:09:41 <ehird> comparisons etc involving pi
23:09:41 <ais523|sl_busy> (posited as an improvement on WYSIWYG)
23:09:44 <ehird> use an approx. value
23:09:46 <SimonRC> oklopol: why you not have interwebz?
23:09:53 <oklopol> i have no idea
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:07 <ais523|sl_busy> oerjan: that doesn't terminate
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:10:46 <ais523|sl_busy> with a genuine definition in the first edition
23:11:12 <ais523|sl_busy> oklopol: can you ping anywhere outside your network?
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:24 <oklopol> ais523|sl_busy: lessee
23:11:36 <ais523|sl_busy> ehird: eso-std.org doesn't respond to pings
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:52 <oklopol> i can ping 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:22 <ais523|sl_busy> the University firewall must block pings...
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:03 <oklopol> hmm no
23:13:06 <SimonRC> or telnet www.google.com 80
23:13:09 <ehird> oklopol: gimme spec
23:13:13 <ais523|sl_busy> what about typing HTML commands in by hand?
23:13:26 <ais523|sl_busy> (heh, that's what SimonRC suggested, but I meant to say HTTP and got the wrong acronym)
23:13:57 <oklopol> okay.
23:14:03 <oklopol> i can get google on telnet :P
23:14:06 <oklopol> ah.
23:14:08 <oklopol> LOL
23:14:18 <oklopol> i have a proxy set, must be down :)
23:14:21 * oklopol owns
23:15:14 <SimonRC> I have noticed I sometimes try to apply debugging techniques to religion-like things
23:15:26 <ais523|sl_busy> SimonRC: that's unlikely to work
23:15:31 <SimonRC> otehr peoples'
23:15:41 <SimonRC> :twisted:
23:15:41 <ais523|sl_busy> unless they're porting gdb to humans nowadays
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:18 <SimonRC> oklopol: again
23:16:23 <SimonRC> ?
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:06 <SimonRC> hmm
23:17:08 <ais523|sl_busy> BTW, I made an ogg version of the Fugue Hello World I wrote
23:17:14 <ais523|sl_busy> (for people who can't read MIDI)
23:17:16 <oklopol> i've just seen so many cult movies i'm afraid they'd kill me :)
23:17:25 <SimonRC> start your own
23:17:25 <ais523|sl_busy> but Esolang doesn't accept ogg-format uploads for some reason
23:17:30 <SimonRC> then you'd be boss
23:17:36 <Sgeo> ais523|sl_busy, url?
23:17:37 <oklopol> heh
23:17:50 <ais523|sl_busy> Sgeo: nowhere, as I've just explained
23:17:53 <Sgeo> oh
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:30 <oklopol> yeah
23:18:36 <SimonRC> yay!
23:18:42 <oklopol> yayeeee
23:18:45 <ais523|sl_busy> Sgeo: http://filebin.ca/ddtfxb/hworld.ogg
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:25 <SimonRC> mwahaha
23:19:45 <oklopol> omg i love tub parties
23:19:52 <SimonRC> uh
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:03 <SimonRC> oklopol: of course
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:53 <ais523|sl_busy> and unfortunately that computer isn't this one
23:20:54 <Sgeo> chain of programs? Please elaborate?
23:21:12 <SimonRC> oklopol: dunno
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:33 <ais523|sl_busy> Sgeo: almost but not quite
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:22:52 <ais523|sl_busy> but that's a very minor difference
23:22:58 <ais523|sl_busy> SimonRC: no Choon anywhere
23:23:42 <SimonRC> :')
23:23:44 <SimonRC> oops
23:23:47 <SimonRC> :'(
23:23:59 <Sgeo> So why not translate Prelude to Fugue directly?
23:24:01 <ais523|sl_busy> SimonRC: because it's a different language
23:24:05 <ais523|sl_busy> Sgeo: because I don't know MIDI
23:24:11 <ais523|sl_busy> or at least, I know MIDI pretty well
23:24:13 <ais523|sl_busy> but not its file format
23:24:25 <ais523|sl_busy> (I'm more used to it as a protocol)
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:10 <ais523|sl_busy> which discriminates between tunes pretty quickly
23:26:15 <ais523|sl_busy> althoug of course it isn't a perfect hash
23:26:16 <SimonRC> but only roughly
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:27:13 <oklopol> *sucks
23:27:14 <SimonRC> *intro
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:07 <ais523|sl_busy> my bf2pre.c is in the Esolang filestore IIRC
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:29:55 <SimonRC> mine task-switches...
23:30:19 <SimonRC> I do actually task-switch quite explicitly in some situations
23:30:46 <oklopol> atlantis theme?
23:30:51 <ehird> SimonRC: you read the daily wtf, don't you? that place is becoming a wtf in itself
23:30:59 <SimonRC> ehird: really?
23:31:00 * ais523|sl_busy reads it
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:30 <SimonRC> which?
23:31:31 <ais523|sl_busy> presumably it was linked from one of the big sites
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:04 <ais523|sl_busy> ehird: that would explain it
23:32:05 <SimonRC> hehehe
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:23 <ehird> sfhkjsdfh
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:28 <ais523|sl_busy> that's one thing to be said for it, at least
23:33:34 <SimonRC> ais523|sl_busy: no, but it might make it through to the server side
23:33:54 <ais523|sl_busy> there was no server side
23:34:01 <SimonRC> wibble
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:20 <SimonRC> ah, ok
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:55 <SimonRC> lol
23:34:59 <ais523|sl_busy> (but of course they were still visible in view source...)
23:35:02 <SimonRC> What the fuck?!
23:35:11 <SimonRC> that is the WTF moment
23:35:13 <SimonRC> really
23:35:30 <ais523|sl_busy> it was one of the better frontpage stories there
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:15 <SimonRC> *too
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:36 <ehird> hahahaha
23:36:36 <SimonRC> ah
23:36:37 <ais523|sl_busy> I found the acronym coincidence amusing
23:36:40 <ehird> that's great
23:36:44 <SimonRC> maybe deliberate
23:36:49 <SimonRC> what does "MFD" stand for?
23:36:55 <ehird> SimonRC: Misc. for deltition
23:36:56 <ais523|sl_busy> Miscellany for Deletion
23:36:57 <ehird> *deletion
23:36:59 <SimonRC> ok
23:37:05 <ais523|sl_busy> as in, all pages not covered by other deletion processes
23:37:12 <ais523|sl_busy> mainly, it's used for project pages and user pages
23:37:12 <SimonRC> hm....
23:37:12 <ehird> Mandatory Fun Day: Man, Fuck 'Dis
23:37:30 <SimonRC> no
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:37:58 <ehird> heh
23:37:58 <ais523|sl_busy> (I have 2, nobody else has any)
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:19 <SimonRC> wow
23:38:21 <ehird> MediaWiki is awful, awful software
23:38:23 <ais523|sl_busy> not quite transcluded, but much the same
23:38:26 <ehird> I think everyone can agree on that
23:38:31 <ais523|sl_busy> and MediaWiki makes a lot of sense for WMF
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:43 <ais523|sl_busy> SimonRC: I know
23:38:45 <ehird> the wiki software is TRWTF
23:38:46 <SimonRC> the preview that isn't
23:38:57 <ais523|sl_busy> I mentioned the CAPTCHA in one of my posts
23:39:00 <ehird> Twiki softwareITRWTF <-- shorthand!
23:39:04 <ehird> ais523|sl_busy: everyone does that
23:39:05 <ehird> :(
23:39:11 <ais523|sl_busy> when you preview the post, it changes the captcha image, but keeps the same word
23:39:22 <SimonRC> hehehe
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:41:34 <ais523|sl_busy> ehird: I actually rather like MediaWiki in some ways
23:41:42 <ais523|sl_busy> (see Wiki Cyclic Tag on Esolang, for instance)
23:41:49 <ais523|sl_busy> it's not TC because infinite loops are impossible
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:20 <ehird> everything
23:42:24 <ehird> 's tc when the user does it
23:42:24 <ehird> :)
23:42:36 <ais523|sl_busy> yes, but not much user intervention is needed
23:42:42 <ais523|sl_busy> I call the situation 'Muriel-complete'
23:43:06 <ehird> ais523|sl_busy: Would a brainfuck interp in MWT be possible?
23:43:24 <ehird> {{brainfuck|,[.,]|hello}}
23:43:25 <ais523|sl_busy> ehird: I've already written a cyclic tag system in it
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:43:54 <ehird> ah
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:32 <ehird> Like this:
23:45:42 -!- oerjan has quit ("Good night").
23:45:44 <ehird> K is
23:45:50 <ehird> Err
23:45:54 <ehird> Let's try the mocking bird combinator
23:45:54 <ehird> easier
23:45:55 <ehird> :P
23:46:01 <ehird> {{ {{{1}}} | {{{1}}} }}
23:46:33 <ais523|sl_busy> ehird: no
23:46:45 <ehird> ais523|sl_busy: Yes, I know MW's probably doesn't allow that, but that's because it sucks
23:46:48 <ais523|sl_busy> actually, maybe that would work
23:46:53 <ais523|sl_busy> and MW does allow that syntax
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:10 <ais523|sl_busy> but it seems it's fine
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:47:56 <ehird> Hmm.
23:48:00 <ehird> I'll try S, K, I
23:48:03 <ais523|sl_busy> you may be able to do something with extra parameters
23:48:07 <ehird> Hmm, wait..
23:48:11 <ais523|sl_busy> by defining K1, S1, S2
23:48:15 <ehird> ais523|sl_busy: Is it possible to curry it?
23:48:15 <ehird> Yes
23:48:19 <ais523|sl_busy> (the partially-curried forms of S and K)
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:44 <ehird> show me K
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:16 <ehird> Hmm
23:49:19 <ehird> What is {{!}}
23:49:27 <ais523|sl_busy> a template containing just |
23:49:30 <ehird> OK.
23:49:33 <ehird> I'll give it a try.
23:49:38 <ais523|sl_busy> but that only worked by exploiting a parser bug
23:49:42 <ehird> ais523|sl_busy: K1, or {{{K1 ...}}} ?
23:49:49 <ais523|sl_busy> related to ParserFunctions, which aren't on Esolang
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:28 <ehird> is that OK?
23:50:41 <ehird> also
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:50:55 <ais523|sl_busy> and ehird, no, it was a bug in #if
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:25 <ais523|sl_busy> yes
23:51:29 <ehird> Hmm
23:51:31 <ehird> Then it could be
23:51:35 <ehird> I {{!} {{{1}}}
23:51:35 <ehird> :-)
23:51:37 <ais523|sl_busy> allowing for dereferences in appropriate places
23:51:54 <ais523|sl_busy> and I can't figure out where they ought to go right now
23:51:59 <ehird> ah
23:52:12 <ais523|sl_busy> but they won't work anyway, so you can't test
23:52:16 <ehird> okay :(
23:52:21 <ehird> ais523|sl_busy: so there's no way to curry a template properly
23:52:36 <ais523|sl_busy> there may still be a way
23:52:38 <SimonRC> alas, that si so often the case
23:52:40 <ais523|sl_busy> but it's kind of hard to explain
23:52:48 <SimonRC> I am working at work on a system that would be TC if you could curry
23:52:50 <ais523|sl_busy> suppose /every/ template carries around two params
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:22 <ais523|sl_busy> and somehow cart blocks of those around
23:53:33 <ais523|sl_busy> ehird: I can't give you that permission, you'd have to ask Graue
23:53:47 <SimonRC> who is 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:03 <ehird> K = K1 {{{1}}}
23:54:06 <SimonRC> not on IRC?
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:19 <ehird> -> foo
23:54:29 <ais523|sl_busy> SimonRC: not registered, apparently, but he does come here occasionally
23:54:34 <SimonRC> +
23:54:38 <ehird> I've gottt it!
23:54:41 <ehird> Time to do shizz
23:55:03 <ais523|sl_busy> ehird: I can also block users :)
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:55:38 <ehird> that's cool
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:24 <ehird> Well, not sure.
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:57:48 <ais523|sl_busy> no matter what the params
23:57:49 <ehird> Hmph. Oh well
23:58:21 <Sgeo> MW?
23:58:25 <ais523|sl_busy> MediaWiki
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:58:58 <ais523|sl_busy> ehird: sometimes
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:42 <ehird> S2
23:59:44 <ehird> ais523|sl_busy: is that OK?
2008-03-08
00:00:00 <ais523|sl_busy> that looks right
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:12 <ehird> -->
00:02:19 <ehird> {{ I| hello | world }}
00:02:27 <ehird> Oh, of course.
00:02:29 <ais523|sl_busy> that's not a bug
00:02:31 <ehird> Hmm, wait..
00:02:35 <Sgeo> {{{subst:ns:0}}{some_template}}
00:02:36 <ais523|sl_busy> that's just MediaWiki marking characters as literal
00:02:41 <ehird> ais523|sl_busy: Ah.
00:02:42 <ais523|sl_busy> they don't magically deliteralise
00:02:44 <ehird> So I need your trick?
00:02:46 <Sgeo> erm wait
00:02:48 <ehird> (What was it, again?)
00:02:55 <ais523|sl_busy> ehird: I already explained that it doesn't work
00:03:15 <ehird> ais523|sl_busy: OK. So should I just give up, or is there hope?
00:03:24 <ais523|sl_busy> well, I just gave up last time I tried
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:14 <ais523|sl_busy> although I admit that it was an ingenious thing to do
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:32 <ehird> think about it
00:06:37 <SimonRC> cool
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:52 <ais523|sl_busy> it's not as simple as that
00:06:53 <ehird> when edited, it sees ~~~~
00:06:54 <ais523|sl_busy> but I can't remember why
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 <ais523|sl_busy> and I think it may have changed over time
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:13 <ais523|sl_busy> ehird: there are sig filters nowadays
00:07:16 <ehird> if you have any ideas I'd really like to hear them :)
00:07:48 <ais523|sl_busy> I don't have enough of one
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:08:59 <ehird> hmm
00:09:01 <ehird> what is =
00:09:05 <ehird> oh
00:09:05 <ehird> yes
00:09:07 <ehird> keywording
00:09:09 <ehird> hey, that's a good idea..
00:09:14 <ehird> I mean
00:09:16 <ais523|sl_busy> it's for named parameters
00:09:21 <ehird> if we say that we have args x, y, z for S
00:09:21 <ehird> then
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:43 <ehird> and 1 must be =
00:09:49 <ehird> ais523|sl_busy: actually i have no idea how i could utilize that
00:09:49 <ehird> heh
00:10:14 <ais523|sl_busy> I don't either
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:34 <ais523|sl_busy> I like how it formats the drive beforehand
00:12:35 <ais523|sl_busy> and then asks the user whether it should have done
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:22 <ehird> don't delete it
00:14:24 <ehird> its hilariously bad
00:14:35 <ehird> btw
00:14:36 <ais523|sl_busy> write that onwiki, so your opinion is preserved?
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:07 <ais523|sl_busy> ehird: MediaWIki blocks template loops anyway
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:30 <ais523|sl_busy> yes
00:17:36 <ais523|sl_busy> it makes them into links rather than transclusions
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:18:36 <ehird> :|
00:18:55 <ais523|sl_busy> it isn't easy, although I managed it once
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:24 <ehird> :p
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:32 <ais523|sl_busy> it's about esoteric sorting algorithms
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:48 <SimonRC> "mine truly"?
00:37:54 <lament> ais523|sl_busy: not as small as it could be!
00:37:56 <SimonRC> ais523|sl_busy: lol
00:38:00 * lament likes halfbits
00:38:15 <SimonRC> sqrt(2) values
00:38:26 <SimonRC> ISTR they exis in QM
00:38:35 <ais523|sl_busy> wow, we seem to have been having a lot of TURKEY BOMB discussions later
00:38:41 <ais523|sl_busy> although this one is in disguise
00:38:43 <SimonRC> and probably in other information theories
00:38:45 <ais523|sl_busy> s/later/lately/ two lines ago
00:39:03 <SimonRC> has anyone tried to implement TB?
00:39:14 <ehird> SimonRC: yes
00:39:21 <ehird> ais523 and I have a project to do so ongoing
00:39:23 <SimonRC> where?
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:25 <SimonRC> you mean s/credit/smear/?
00:41:27 <SimonRC> :-)
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:41:56 <ehird> and I am ongoing
00:42:00 <ais523|sl_busy> I didn't get all that far
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:42:56 <ais523|sl_busy> which are an esolang by themselves
00:43:10 <ais523|sl_busy> we need quantum TwoDucks!
00:46:13 <lament> halfbits in particular deserve more attention
00:46:58 <ais523|sl_busy> is it possible to write numbers in base 1/sqrt(2)?
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:32 <SimonRC> and if so, yes
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.
00:50:22 <SimonRC> wow
01:03:29 -!- ais523|sl_busy has quit ("ehird, if you want those pages deleted, you're going to have to ask onwiki because I really ought to go home").
01:08:59 -!- faxathisia has joined.
01:39:37 * SimonRC goes to bed.
01:40:47 * ehird doesn't. Ever.
01:41:51 <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:27 <faxathisia> reboot o_o
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:45 <Sgeo> killed
01:45:51 <Sgeo> And that sound is STILL playing
01:45:53 <faxathisia> what is difficult about rebooting..?
01:46:35 * Sgeo will reboot
01:47:38 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
01:51:23 -!- calamari has joined.
01:51:30 -!- Sgeo has joined.
01:51:40 * Sgeo is obviously back
02:01:22 <faxathisia> did that work?
02:04:53 <Sgeo> yes ofc
02:05:02 <Sgeo> But I want to know what process I could have killed to fix it
02:06:00 * Slereah is less obviously back
02:15:39 <pikhq> http://pikhq.nonlogic.org/kernel.tar.bz2
02:16:56 <Sgeo> Does it support PSOX? </blatant-and-random-self-promotion>
02:17:38 * Slereah sees the future.
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:20:37 <Slereah> Heh.
02:21:01 <Sgeo> Slereah, eh?
02:21:11 <Slereah> I'm reading the INTERCAL dow
02:21:13 <Slereah> *dox
02:36:17 <pikhq> Sgeo: It doesn't even have *processes*. ;)
02:36:18 <pikhq> (yet)
02:36:53 -!- ehird has quit ("This computer has gone to sleep").
02:39:12 -!- olsner has joined.
02:50:00 -!- Corun has quit ("This computer has gone to sleep").
02:57:09 -!- Corun has joined.
02:59:35 <Sgeo> pikhq, will it eventually support Python?
02:59:49 <Sgeo> btw PSOX 1.0 spec not finalized, that will come with b1
02:59:52 <Sgeo> PSOX 1.0b1
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:12:42 <Slereah> Lul
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:31:42 <Sgeo> Newlib?
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:32:56 <calamari> uclibc
04:34:52 <calamari> err uClibc, sorry :)
04:42:51 <pikhq> calamari: Isn't that harder to port?
04:43:05 <calamari> probably
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:29 <Sgeo> G'night all
04:45:31 <calamari> http://www.busybox.net/lists/busybox/2005-March/013759.html
04:46:25 <pikhq> :)
04:47:02 -!- Sgeo has quit ("Ex-Chat").
06:17:44 <bsmntbombdood> i missed the orgy :(
06:18:17 <pikhq> Apparently.
06:18:33 -!- pikhq has set topic: bsmntbombdood missed the orgy. | Fe fi fo funge, I smell the brainfuck of an Englishman. | pastebin - http://pb.eso-std.org/.
06:49:49 <Slereah> http://www.erbzine.com/mag17/1744.html
06:49:51 <Slereah> :D
07:25:40 -!- calamari has quit ("Leaving").
07:48:06 -!- Slereah has quit (Remote closed the connection).
07:52:33 -!- Slereah has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:19:15 -!- oerjan has joined.
08:49:19 -!- Sukoshi has joined.
08:51:35 <faxathisia> Hello
08:52:15 <Slereah> Hi.
08:52:48 <Sukoshi> Hi.
08:53:28 <Slereah> Sukoshi is a cat program :o
08:53:38 <Sukoshi> I am?
08:53:42 <Sukoshi> Oh :D
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:54:18 <Sukoshi> (Hah.)
08:54:21 <faxathisia> lol
08:54:25 <faxathisia> I'm not saying that...
08:55:06 <Sukoshi> Situation:
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:56:08 <Sukoshi> Ideas?
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:20 <Sukoshi> (Not.)
09:01:36 <Slereah> Can it wait? My Guy Fawkes mask still hasn't arrived.
09:01:41 <Sukoshi> Nah.
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:35 <Slereah> Look at Ron Paul!
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:03:57 <Sukoshi> faxathisia: No PHP here.
09:04:07 <Sukoshi> Not that I know PHP.
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:04:53 <Slereah> Why, you a girl?
09:04:54 <oerjan> iirc
09:04:57 <Sukoshi> Yes.
09:05:10 <Slereah> So there are girls on esolangs!
09:05:13 <Sukoshi> Indeed.
09:05:21 <Slereah> What's your esolang?
09:05:26 <Sukoshi> BF.
09:05:34 <Sukoshi> For winz and justicez.
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:28 <faxathisia> aw..
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:09:50 <Sukoshi> o_O?!
09:09:54 <Sukoshi> Link plz !!!
09:09:59 <faxathisia> I have it was so awesome
09:10:42 <Sukoshi> Link!
09:10:45 <Sukoshi> Wow, that sounds awesome.
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:08 <Sukoshi> .....
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:01 <Sukoshi> Definition of Continuity?
09:13:09 <Sukoshi> Oh wait. :P
09:13:12 <faxathisia> aha! http://en.wikipedia.org/wiki/Intermediate_value_theorem
09:13:19 <Sukoshi> IVT?
09:13:25 <faxathisia> Bolzano Weierstrass
09:13:28 <Sukoshi> Ohhhh.
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:13:47 * faxathisia hisses at Set theory
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:14:55 <faxathisia> lol
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:16:50 <faxathisia> hmm never heard of PM
09:17:00 <Slereah> Principia Mathematica
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:42 <Sukoshi> o_O
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:01 <faxathisia> oh
09:20:05 <faxathisia> I heard of Principa..
09:20:12 <faxathisia> have not read it yet
09:20:26 <Slereah> You can have it for free!
09:20:27 <Sukoshi> Hey, anyone here up for a game of Nomic in parallel with an evolving Prolog mirror?
09:20:31 <Slereah> It has 0 copyright!
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:21:45 <Sukoshi> No Nomic/Prolog? Awww :|
09:22:06 <faxathisia> Sukoshi: What is your intrest in Prolog?
09:22:09 <Slereah> Forgot what theiota means
09:22:12 <oerjan> the sphere exactly touches the cube center for n=4
09:22:25 <Slereah> Ew. Balls are touching.
09:22:28 <oerjan> sqrt(4*(1/2)^2) = 1
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:21 <Slereah> Never tried though
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:33 <faxathisia> I don't know..
09:24:42 <faxathisia> I don't think mercury is that wonderful
09:25:01 <Sukoshi> Prolog is 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:27:18 <Slereah> Only time will tell!
09:28:08 <Sukoshi> (Only your mom will tell.)
09:28:39 <Slereah> Zing!
09:51:02 -!- sebbu2 has joined.
10:04:50 -!- sebbu has quit (Read error: 110 (Connection timed out)).
10:06:39 -!- Judofyr has changed nick to JudoBot.
10:07:10 -!- JudoBot has changed nick to Judofyr.
10:23:55 -!- Judofyr has quit.
10:24:24 -!- Judofyr has joined.
11:18:44 <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
13:53:37 <oklopol> *your
13:53:43 <oklopol> r r brokens.
14:22:18 <Slereah> My mother wasn't born :o*
14:24:15 -!- Corun has quit ("This computer has gone to sleep").
14:38:41 -!- ihope has joined.
15:05:56 <faxathisia> Slereah: What are Schofinkel's combinators
15:06:25 <Slereah> Regular combinators.
15:06:35 <faxathisia> like S and K?
15:06:39 <Slereah> And they were created by Schonfinkel
15:06:44 <faxathisia> but just any set which are TC?
15:06:50 <Slereah> In 1920.
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:42 <Slereah> They're TC.
15:08:52 <Slereah> Well, they can be at least.
15:08:59 <Slereah> Although I think CA are more 60's.
15:09:04 <faxathisia> I don't think I get your question
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:40 <faxathisia> Ohhhh
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:12:26 <Slereah> 1842
15:12:45 <Slereah> Or something
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:10:33 <Slereah> and, or and xor
16:10:36 <Slereah> (yes, unary)
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.
16:35:56 <ehird> hello
16:36:03 <faxathisia> Hi
16:36:15 <ehird> :)
16:47:25 <ehird> Cheese.
16:47:35 <faxathisia> You know Prolog?
17:01:48 <ehird> Kind of.
17:02:07 <faxathisia> (to-derive (append x '() x))
17:02:07 <faxathisia> (to-derive (append (cons x xs) y (cons x zs))
17:02:07 <faxathisia> (append xs y zs))
17:02:14 <faxathisia> acceptable syntax?
17:10:38 -!- Judofyr has quit.
17:11:06 <ehird> faxathisia: no
17:11:11 <ehird> verbose.
17:11:14 <ehird> Try this
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:24 <faxathisia> the arrow is the wrong way :P
17:12:36 <ehird> faxathisia: no
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:13:18 <faxathisia> unicode :o
17:13:18 <ehird> Like this:
17:13:46 <ehird> (? append x '? x)
17:13:52 <faxathisia> omg lol
17:13:56 <faxathisia> it's ?'s
17:14:02 <faxathisia> arg
17:14:03 <ehird> err
17:14:03 <ehird> wait
17:14:04 <ehird> (? append x '? x)
17:14:12 <ehird> was using the norweigen oerjan-o instead of the empty set symbol
17:14:12 <ehird> heh
17:14:16 <ehird> faxathisia: i'll screeny
17:14:17 <faxathisia> can you send it in UTF-8?
17:14:20 <faxathisia> oh ok
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:04 <faxathisia> yeah
17:15:22 <ehird> faxathisia: i'll jsut screeny then
17:15:23 <ehird> :p
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:18 <ehird> :p
17:17:22 <ehird> well
17:17:26 <ehird> You could use the |- unicode symbol
17:17:29 <ehird> For more pretentiousness
17:17:31 <ehird> But I like mine
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:30 <ehird> by typing
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:01 <faxathisia> yeah that sucks :?
17:22:14 <ehird> faxathisia: But everyone knows proportional fonts for coding rawk, if the font's good.
17:22:16 <ehird> BE REVOLUTIONARY
17:31:36 -!- Judofyr has joined.
17:31:42 <ehird> Judofello.
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:34:11 <Judofyr> ehird: Hello :)
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:28 <ehird> UPDATE AT 11
17:41:37 <faxathisia> bullshit.
17:41:49 <faxathisia> oh
17:41:54 <faxathisia> I:D
17:41:59 <ehird> faxathisia: reddit is such fun
17:42:04 * faxathisia did not notice 'IDIOT"
17:42:16 <ehird> it was far better before they switched to python
17:42:17 <ehird> :p
17:42:21 <ehird> it was like
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:42:46 <faxathisia> :D :D lol
17:42:58 <faxathisia> It's true
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:45:41 <faxathisia> not seen reddits code
17:46:09 <faxathisia> looks pretty trivial if you know dhtml or whatever they do that stuff with
17:49:07 <ehird> faxathisia: uhh
17:49:12 <ehird> reddit is written in dhtml now?
17:49:25 <faxathisia> I don't know :P
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:45 <ehird> ...
17:49:49 <ehird> http://reddit.com
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:04 <faxathisia> :S
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:03 <faxathisia> lol
17:52:16 <ehird> faxathisia: seriously, WTF
17:52:22 <fizzie> Why does this disuccsion remind me of a train wreck?
17:52:30 <faxathisia> I'm not up with the latest web 2.0
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:05 <faxathisia> exactly
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:01:49 <Judofyr> Do*
18:04:41 <ehird> Judofyr: noes.
18:04:45 <ehird> I was just quoting Look Around You
18:04:58 <Judofyr> fyr = guy in norwegian :)
18:05:05 <Judofyr> it's sort fo Karate Kid :P
18:05:10 <Judofyr> of*
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:08 <Judofyr> Thaxathisia?
18:08:10 <faxathisia> what's it about?
18:08:18 <ehird> faxathisia: an esolang
18:08:20 <ehird> but it's not just a language
18:08:23 <Judofyr> :O
18:08:24 <ehird> it's.. ahrd to explain
18:08:29 <Judofyr> try
18:08:32 <ehird> #nodist, i'll explain there
18:08:34 <ehird> its long
18:39:27 -!- oerjan has joined.
18:40:33 <pikhq> Hey, oerjan.
18:41:20 <ehird> Hey, pikhqoerjan.
18:42:36 <oerjan> 'evening
18:56:58 -!- calamari has joined.
19:16:10 * SimonRC thinks of a privacy escalation: pty-grabbing. If someone runs sudo from a pty, then sudo usually caches their ability to use sudo there for about 5 mins. There might be a way to exploit this to escalate local to root.
19:19:32 <ehird> SimonRC: there is
19:19:45 <ehird> this is why you configure sudos timeout to 0
19:29:43 <AnMaster> Deewiant, there?
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:08 <AnMaster> oh and quite a few N/A
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:34:12 <AnMaster> bbiab
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:41:18 <SimonRC> intimidate the muggles!
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:43:47 <SimonRC> ah, nm, I just saw
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:45 <SimonRC> yes
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
19:53:26 <AnMaster> ehird, ahah
19:53:29 <AnMaster> aha*
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:04:43 <ehird> GregorR: <_<
20:06:39 * SimonRC is surprised to find out that most of the humanoid furry things on Sesame street are left-handed
20:07:55 <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:40 <ehird> oerjan: hahah
20:09:59 <ehird> #esoteric is great
20:10:01 <ehird> :p
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:05 <ehird> SimonRC: ..
20:12:12 <SimonRC> http://www.erbzine.com/mag17/1744a.html
20:12:16 <SimonRC> (part 2 of 3)
20:12:36 <SimonRC> read part 1 first, I recommend
20:12:37 <ehird> thats a parody
20:12:38 <ehird> yes??
20:15:42 <SimonRC> yes
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:13 <ehird> :)
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:05 <ehird> oerjan: kind of
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:46 <ehird> yes
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:20:02 <ehird> yes
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:30:43 * oerjan hacks at your foils
20:36:13 <SimonRC> ehird: what is that?
20:37:25 <ehird> SimonRC: me tryingh to do evil
20:37:35 <SimonRC> what evil?
20:37:38 <SimonRC> Python?
20:37:42 <ehird> Pythonic 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:01 <ehird> hmm
21:23:06 <ehird> i think Nodist's operations may be halting-problem
22:37:10 <SimonRC> what is Nodist?
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:35 <bsmntbombdood> hawt
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:55 <SimonRC> ah, ok
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:10 <SimonRC> ah, ok
22:42:12 <ehird> (try to add as much evil as possible)
22:42:24 <SimonRC> did you get it to work?
22:42:27 <ehird> nope
22:42:28 <ehird> :)
22:43:03 <oerjan> ehird has no talent for evil
22:43:06 -!- ehird has left (?).
22:43:10 -!- ehird has joined.
22:43:11 <ehird> shitcakes
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:21 <SimonRC> that makes a bit of snese
22:48:31 <SimonRC> but it seems some of the conversation is missing
22:49:45 <oerjan> darn, urbandictionary has a definition for snese
22:50:08 <oerjan> the verb, though
23:22:21 -!- jix has quit ("CommandQ").
23:28:57 -!- oerjan has quit ("Good night").
23:50:31 -!- Corun has quit ("Leaving").
2008-03-09
00:05:38 -!- timotiis has quit ("leaving").
00:47:10 <ehird> omfg
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
00:54:59 <ehird> :D
01:07:05 <ehird> OH MY
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:15 <ehird> ihope: yes
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:47:04 <SimonRC> Slereah: huh?
01:48:12 <Slereah> <SimonRC> Slereah: what are these "Schofinkel's combinators"?
01:48:16 <Slereah> (I was sleeping)
01:48:25 <Slereah> Also, it's Schonfinkel
01:48:33 <Slereah> I can never remember the spellin
01:48:34 <Slereah> g
02:04:51 <ihope> An esolang based on Go, how about.
02:06:15 <Slereah> Conway's game of life? :o
02:06:26 <ihope> Bingo.
02:06:30 <Slereah> IIRC, the earliest simulations were done on a Go board ":0)
02:06:35 <Slereah> Among other things
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:24 <ihope> What do you mean?
02:08:41 <Sukoshi> How about a game of Nomic with a Prolog mirror?
02:08:45 <Sukoshi> What do y'all say?
02:08:53 <ihope> A Prolog mirror?
02:09:26 <pikhq> ihope: Step one: universal constructor.
02:09:29 <pikhq> (good luck)
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:09:43 <Slereah> And the input
02:10:11 <ihope> Yes, that.
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:40 <ihope> I see.
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:13:59 <pikhq> :D
02:14:03 <pikhq> Anyways.
02:14:10 <pikhq> I have an OS kernel in progress. :)
02:14:18 <pikhq> http://pikhq.nonlogic.org/kernel.tar.bz2
02:14:51 <Sukoshi> Heh.
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:37 <ehird> pretty cool
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:33 <Sukoshi> Yah:)
02:17:34 <ehird> I would start an OS project again if I didn't sux0r at asm
02:17:37 <ehird> & x86
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:53 <ehird> :)
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:06 <ehird> s
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:07 <pikhq> ehird: Plan to.
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:20:55 <pikhq> It *is* minimal.
02:21:03 <pikhq> I just want to be able to say 'Oooh, shiny.'
02:21:04 <pikhq> :p
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:46 <ehird> pikhq: bah
02:21:49 <ehird> #define! :D
02:21:50 <ehird> return 0xDEADBEEF;
02:21:51 <ehird> heh
02:21:59 <ehird> I prefer DEFEC8ED
02:22:04 <ehird> (solaris coredump magicnum)
02:22:09 <ihope> Why is the file called kernel.tar.bz2.tar, I wonder...
02:22:19 <pikhq> ihope: Um, what?
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:25:27 <ehird> :)
02:26:17 <ihope> You evil, evil persono, you.
02:26:42 * pikhq adds __attribute__((always_inline)) in kport.h
02:26:51 <ehird> pikhq: nooooo
02:26:54 <ehird> don't depend on gcc
02:26:54 <ehird> srsly
02:27:04 <ehird> you could be one of the only modern OSs not to
02:27:05 <ehird> :-)
02:27:09 <pikhq> Too late.
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:38 <ehird> haha
02:27:46 <ehird> i don't really consider windows an os
02:27:47 <ehird> :)
02:27:59 <pikhq> I consider it a really *bad* VMS clone.
02:28:11 <ehird> Comparing windows to vms?
02:28:14 <ehird> sacrelihe
02:28:16 <pikhq> With Win32 thrown in for God-knows-why.
02:28:17 <ehird> ge
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:25 <ehird> :)
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:29:44 <ehird> :p
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:18 * ehird 's confuzed
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:34:23 <Sukoshi> Your Mom.
02:34:52 <pikhq> Anata no haha.
02:35:01 <Sukoshi> Vian Patrinon.
02:35:08 <Sukoshi> Ta mere.
02:35:18 <lament> ima shelha
02:35:19 <Sukoshi> Tomaar Maa.
02:35:22 <pikhq> Via patrino estas patrifikulon.
02:35:23 <lament> tua mae
02:35:29 <lament> tvoya mat'
02:35:38 <ihope> ¿Por qué estamos hablando en otras however-you-want-to-say-"language"-today?
02:35:54 <pikhq> ihope: Ne.
02:36:01 <lament> tu mama esta hablando en otras idiomas
02:36:13 <ihope> Touché.
02:36:19 <pikhq> Douch'e.
02:36:29 <lament> Crochet.
02:36:35 <pikhq> Krikkit.
02:36:48 <lament> Ribbit.
02:36:55 <Sukoshi> Anta no LULZ ga Ookiku natta.
02:37:04 <pikhq> Sukoshi: :D
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:14 <Sukoshi> Boku tachi no YUME HA
02:42:19 <Sukoshi> Sekai wo KAERU YO
02:42:37 <pikhq> yume?
02:42:39 <Sukoshi> Kurumayoi ni NOTTE! Bishounen no sonzai wo UBARECHA-U!
02:43:03 <Sukoshi> *BARECHA-U
02:43:03 <pikhq> . . .
02:43:09 <pikhq> ldgt [eax]
02:43:19 <Slereah> Ching chong?
02:43:25 <olsner> Sukoshi: henna koto iwanaide yo
02:43:46 <Sukoshi> 女の気紛れな夢は普通じゃないの。
02:43:52 <olsner> pikhq: writing boot loaders are we?
02:44:04 <olsner> *lgdt
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:23 <pikhq> olsner: Kernels.
02:44:34 <Sukoshi> HaikuOS that is.
02:44:38 <ihope> Neko pan wa desu desu pan wa desu... um... domo arigato.
02:44:51 <pikhq> Moto desu, ne.
02:45:01 <Sukoshi> Pan bread is. Pan bread is. Many thanks.
02:45:08 <Sukoshi> *Pan = cat
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:24 <pikhq> (In Linux)
02:46:28 <Sukoshi> Hehe.
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:30 <lament> don't learn Japanese.
02:47:56 <ehird> olsner: just what i've always wanted
02:48:03 <ehird> :|
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:49:55 <olsner> desu desu hai
02:50:11 <pikhq> It segfaults.
02:50:21 <pikhq> jmp 0x08:0x00
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:01 <pikhq> ;)
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:51:52 <pikhq> Bochs.
02:52:02 <ehird> pikhq: try linux 0.1
02:52:05 <ehird> it's very understandable
02:52:06 <Sukoshi> Aw. Why not QEMU?
02:52:16 <ehird> QEMU is nice
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:21 * pikhq hurls
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:00 <lament> kekeke
03:22:19 <lament> very hard to tell black pieces apart
03:22:25 <Slereah> Racist.
03:22:47 <lament> the world is racist.
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:24:05 <Slereah> Hm.
03:28:21 -!- ihope has quit (Read error: 110 (Connection timed out)).
03:29:24 -!- ehird has quit (No route to host).
03:54:33 -!- Corun has joined.
04:18:14 -!- Corun has quit ("This computer has gone to sleep").
04:21:37 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
04:30:36 <SimonRC> anyway, 04:30 = bed-time
04:34:30 <olsner> 05:30 = even more so
04:34:38 -!- slereah_ has joined.
04:35:48 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
04:41:25 <Sukoshi> Nah.
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:43:27 * faxathisia wakes up at 04:43 :S
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:02:26 <slereah__> Heh
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:22:15 <slereah__> Sleeping pills dude
08:24:47 <Sukoshi> Sleep is for the week.
08:25:00 <Sukoshi> Weak even :D
08:31:37 <ehird> slereah__: Noes.
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:38:06 <Sukoshi> I know :D
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:45:26 <faxathisia> interesting
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:38 <Sukoshi> Squaring a circle?
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:54 <slereah__> Meh.
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
08:55:13 <slereah__> Heh.
08:55:22 <slereah__> I'm not privy to those details!
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:01:40 <faxathisia> and I can't spell :S
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:19 <ehird> SCIENCE!
09:02:21 <Sukoshi> faxathisia: Think of it this way. Law is logic.
09:02:32 <Sukoshi> A bunch of horn clauses.
09:02:43 <Sukoshi> Except it's not just horn clauses in theory. It's horn clauses in practice.
09:02:53 <slereah__> Only fascists love law :o
09:03:02 <ehird> Sukoshi: SCIENCE!
09:03:36 <Sukoshi> Heh.
09:04:01 <slereah__> WHAT HAS SCIENCE DONE!
09:04:25 <Sukoshi> Your mom?
09:04:30 <Sukoshi> (Come on. You had that coming.)
09:04:45 <slereah__> Yeah. LIKE YOUR MOM
09:04:55 <Sukoshi> faxathisia: At least, that's how I view law. From a logic perspective.
09:05:13 <ehird> SCIENCE!
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:05:55 <faxathisia> Prolog for President!
09:06:08 <Sukoshi> Hahaha :D
09:06:16 <slereah__> Science H. Logic!
09:06:26 <slereah__> I have a friend in law school.
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:23 <ehird> err
09:07:24 <ehird> I mean
09:07:25 <ehird> SCIENCE
09:07:29 <Sukoshi> It's actually just incredibly boring.
09:07:29 <faxathisia> lol
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:08:24 <faxathisia> swing is great,
09:08:27 <faxathisia> compared to awt :P
09:09:10 <Sukoshi> Oh gawd :D
09:09:20 <Sukoshi> GTK is great. I heard QT is a lot better though.
09:09:24 <Sukoshi> KDE is definitely nice.
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:10:29 <ehird> Qt<3
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:15 <Sukoshi> Huh?
09:14:23 <Sukoshi> Oh, you mean cross-platform issues?
09:14:27 <ehird> mostly, yeah
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:14:55 <Sukoshi> Yeah. It's livable.
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:42 <Sukoshi> Hrm?
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:15:58 <ehird> foo = <html>
09:16:01 <ehird> foo = <head>
09:16:02 <ehird> ...
09:16:04 <ehird> foo.add(bar)
09:16:05 <ehird> etc
09:16:10 <ehird> totally tedious way of working
09:16:12 <Sukoshi> I got nothing of that :P
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:16:39 <Sukoshi> Huh?
09:17:20 <faxathisia> it's just the difference between imperative and declarative
09:18:43 <Sukoshi> Hm. An example?
09:19:29 <ehird> faxathisia: yes
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:40 <ehird> Sukoshi: yep
09:19:49 <Sukoshi> Swing attempts that with its content panes.
09:20:02 <Sukoshi> It's ... not as good IMO.
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:19 <Sukoshi> Well in general.
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:22:37 <Sukoshi> ADD is perfectly Lispy.
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:04 <Sukoshi> Why?
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:17 <Sukoshi> How?
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:04 <Sukoshi> XML. Right.
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:20 <Sukoshi> Yeah :P
09:26:30 <ehird> Also, s-expressions might be a non-horrible example, if you're in need of one. :p
09:26:40 <Sukoshi> Exactly.
09:28:02 <faxathisia> well look at McCLIM
09:29:49 <faxathisia> XML should be fine as a file format, if you have a GUI program to edit GUIs
09:30:51 <Sukoshi> Glade, yep.
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:24 <slereah__> What's the second rule?
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:09 <ehird> honest
09:43:17 <faxathisia> well.. I'm there
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:32 <faxathisia> perm nil.
09:58:33 <faxathisia> perm (H::L) o- elm H , perm L.
09:58:42 <ehird> faxathisia: what's that
09:58:45 <ehird> it's pretty
09:58:47 <faxathisia> lollimon
09:58:50 <ehird> I like elegant nondeterminism
09:58:53 <faxathisia> Yes :D
09:59:05 <faxathisia> this is impressive
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:01 <faxathisia> http://www.cs.cmu.edu/~fp/lollimon/
11:00:13 <ehird> friendly page
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:01:12 <Sukoshi> Waiiii?!
11:01:39 <ehird> faxathisia: ocaml
11:01:40 <ehird> how shitty
11:01:45 <faxathisia> :/
11:01:59 <faxathisia> ocaml is fine
11:02:30 <Sukoshi> Nah. It has side effects faxathisia, so it is made of FALE :P
11:02:31 <ehird> noes
11:02:35 <ehird> and yeah
11:02:38 <ehird> what Sukoshi sed
11:02:48 <faxathisia> beh
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:11 * Sukoshi joins faxathisia.
11:03:44 <ehird> Hey, I'm not a haskell fanboi
11:03:46 <ehird> :(
11:04:05 <faxathisia> :p
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:08 <Sukoshi> I think side effects are.
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:30 <faxathisia> I like Haskell too
11:08:34 <Sukoshi> I got into Haskell for a while. I left. I tried to get back in, but failed.
11:08:35 <ehird> exactly
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:08:50 <ehird> weird :|
11:09:27 <Sukoshi> I sincerely wish Java had structs.
11:09:33 <Sukoshi> Why, oh why, does Java not have structs.
11:09:37 <faxathisia> class ..
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:49 <ehird> Considered Scala?
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:10:58 <Sukoshi> ... :D
11:11:05 <faxathisia> I might try when I finish some stuff
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:35 <Sukoshi> Who's watching Gundam 00?
11:14:56 -!- faxathisia has quit ("-").
11:14:59 <slereah__> Weeaboos.
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:18:46 <Sukoshi> Ye gods weeaboo.
11:19:17 <slereah__> Did someone just say weeaboo?
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:10 <ehird> WAIT WHAT
11:23:24 <Sukoshi> Your mom.
11:23:30 <slereah__> :D
11:23:51 -!- Sukoshi has left (?).
11:23:57 * slereah__ can't think of one jap scientist :o
11:24:02 <slereah__> Only chinese ones!
11:24:23 <ehird> JAPANESE SCIENCE IS SUPERIOR TO JAPANESE SCIENCE IN ALL OTHER COUNTRIES
11:24:41 <slereah__> It doesn't recycle well, ehird
11:24:50 <ehird> JAPANESE RECYCLING --
11:25:05 <slereah__> Try another classic.
11:25:16 <slereah__> EVEN THE JAPANESE GET IN TROUBLE!
11:25:28 <ehird> JAPANESE GETTING IN TROUBLE --
11:25:36 <slereah__> ...
11:25:40 <slereah__> You are both suspended.
11:29:28 <ehird> JAPANESE SUSPENSION
11:30:19 <slereah__> Japan
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:34 <ehird> an ddamn
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:15 <ehird> wowzers
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:06 <slereah__> Lynxplz?
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:26 <slereah__> Of what?
11:55:30 <ehird> the spec
11:55:35 <ehird> I apologize for my spelling, I can barely type.
11:55:43 <slereah__> What was the basic idea?
11:55:54 <ehird> sdfjkhsjkgdfg i keep typing 'cat ..'
11:55:55 <ehird> slereah__: that.
11:56:05 <ehird> be hellish at programming, but rely on *chance* for many operations
11:56:24 <slereah__> Quantum malbolge?
11:57:03 <ehird> nah
11:59:41 <ehird> hmmm
11:59:49 <ehird> Joy quotations AREN'T lists, are they?
11:59:53 <ehird> for one simple reason --
11:59:55 <ehird> [foo]
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:21:23 <ehird> 45345
12:22:19 -!- oerjan has joined.
12:39:02 -!- timotiis has joined.
13:25:48 <ehird> y
13:27:06 <slereah__> z
13:27:13 <oerjan>
13:27:37 <slereah__> D:þ
13:27:47 <slereah__> Even the passenger gets in trouble!
13:27:48 <faxathisia> XB
13:27:51 * oerjan saw you running out of english alphabet, so he assisted
13:28:01 <faxathisia> hahah @ those comics
13:28:22 <slereah__> You are both suspended.
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:46:52 <ehird> Refridgerator
14:59:00 -!- slereah_ has joined.
14:59:59 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
15:11:12 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
15:12:13 -!- Slereah has joined.
15:23:41 <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:27:59 <ehird> omg
16:28:01 <ehird> lyx is awesome
16:30:18 -!- Tritonio_ has quit (Remote closed the connection).
17:15:57 <ehird> holy crap
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:19:16 <ehird> :/
17:20:05 <ehird> hmmm
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:21:37 <ehird> aha
17:21:38 <ehird> PL/0
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:32:36 <AnMaster> ok
17:32:40 <AnMaster> so, any idea?
17:33:47 <Slereah> Hell, what is the topic anyway!
17:33:53 <Slereah> It is pretty broad
17:34:25 <AnMaster> so anyone got an answer?
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:35:34 <olsner> AnMaster: nope, sorry
17:35:39 <AnMaster> sigh
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:22 <AnMaster> why fortran?
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:37:27 <ehird> it will be
17:37:28 <ehird> sometime
17:38:09 <oklopol> what's with the delay?
17:38:14 <ehird> laze.
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:38:47 <oklopol> cba?
17:38:50 <ehird> can't be arsed
17:38:55 <oklopol> ah
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:16 <ehird> heh
17:42:18 <ehird> that sounds painful
17:42:48 <AnMaster> ehird, do you have any idea about sparse matrix in C?
17:43:19 <ehird> no
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:50:20 <ehird> example(R) -> No
17:50:20 <ehird> :(
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:37 <ehird> [lam|[E|[A|[C]]]
17:52:44 <ehird> but can you pattern match calls in prolog?
17:52:46 <ehird> well that changes everything
17:52:47 <ehird> :)
17:52:49 <faxathisia> [lam,E,A,C]
17:52:53 <ehird> yes
17:52:55 <ehird> err
17:52:56 <ehird> i want
17:53:00 <ehird> [lam|[E|[A|C]]
17:53:03 <ehird> subtle difference
17:53:03 <faxathisia> [lam,E,A|C]
17:53:03 <ehird> :)
17:53:10 <ehird> but, if i can pattern match on func calls, faxathisia ..
17:53:14 <ehird> then certainly!
17:53:25 <olsner> ehird: prolog doesn't have function calls, you construct expressions which you can match on
17:53:25 <faxathisia> Functions don't exist
17:53:29 <ehird> yes yes
17:53:31 <ehird> it was a metaph000r
17:53:59 <olsner> metaphor? mispresentation of facts! :P
17:54:02 <faxathisia> It's a compound
17:54:19 <ehird> faxathisia: do you like my lack of spaces by the way.
17:54:37 <faxathisia> I don't see any missing spaces
17:54:45 <ehird> faxathisia: arglists
17:54:47 <ehird> after commas
17:54:47 <ehird> etc
17:54:52 * faxathisia usually puts a space after commas
17:54:56 <ehird> yes
17:54:57 <ehird> i don't
17:54:58 <ehird> i' mevil
17:55:11 <faxathisia> No you aren't that's perfectly acceptable
17:55:12 <faxathisia> :P
17:55:19 <ehird> :(
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:04 <faxathisia> and in particular
17:57:07 <ehird> whutz dat
17:57:08 <ehird> :(
17:57:24 <olsner> it's funny how prolog just answers your buggy programs with "No." like some zen master
17:57:26 <faxathisia> [a,b,c] = '.'(a,'.'(b, '.'(c, '[]')))
17:57:37 <ehird> yes
17:57:38 <ehird> that thing
17:57:38 <faxathisia> (just like lisp)
17:57:38 <ehird> still
17:57:39 <ehird> :)
17:58:24 <ehird> faxathisia: I can't do "Y is cons(A,B)"
17:58:25 <ehird> :(
17:58:43 <faxathisia> is does arithmetic calculation
17:58:43 <olsner> maybe you're mixing up is and =?
17:59:24 <faxathisia> 5 is 2+3.
17:59:48 <faxathisia> 2+X = Y+3. %% X = 3, Y = 2
18:01:06 <ehird> probably :|
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:07:59 <faxathisia> no..
18:08:06 <faxathisia> that would make no sense
18:08:14 <oklopol> oh :<
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:07 <faxathisia> :(
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:13:29 <oklopol> ofc
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:16:24 <faxathisia> 7 + 3 = 7 + 3.
18:17:05 <oklopol> is there a situation where these unevaluated expressions are actually useful?
18:17:05 <faxathisia> Yes
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:18:48 <oklopol> i guess
18:20:28 <oklopol> guess you cannot actually write a function like + anyway.
18:20:30 <faxathisia> for example, :- op(600, fy, s).
18:20:30 <faxathisia> peano_add(X, o, X).
18:20:30 <faxathisia> peano_add(X, s Y, s Z) :- peano_add(X, Y, Z).
18:20:30 <faxathisia> now you can go
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:11 <oklopol> hmm
18:21:14 <faxathisia> or you could write
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:21:56 <oklopol> s/:/;
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:22:55 <faxathisia> what is?
18:23:00 <oklopol> it's meaning
18:23:07 <oklopol> because with that
18:23:12 <oklopol> 7 = 3+4
18:23:31 <oklopol> *its
18:24:21 <faxathisia> you can do stupid things like:
18:24:22 <faxathisia> :- op(900, xfy, ++).
18:24:31 <faxathisia> A ++ B = X :- append(A, B, X).
18:24:42 <faxathisia> now I can write
18:24:57 <faxathisia> X ++ [c] = [a,b,c]. % to find out X = [a,b]
18:25:10 <oklopol> wtf
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:31 <faxathisia> it's not like eval/apply
18:26:31 <oklopol> hmm?
18:26:38 <oklopol> is that AST right?
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:28:49 <oklopol> i guess
18:29:44 <oklopol> but you can write a lot thinking it works like that
18:29:53 <oklopol> *lot of programs thinkgin
18:30:00 <oklopol> *thinking
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:33:38 <oklopol> you can't?
18:33:45 <oklopol> i sure can
18:33:53 <oklopol> well
18:34:11 -!- fizzie has quit (brown.freenode.net irc.freenode.net).
18:34:11 -!- tejeez has quit (brown.freenode.net irc.freenode.net).
18:34:11 -!- Deewiant has quit (brown.freenode.net irc.freenode.net).
18:34:11 -!- jix has quit (brown.freenode.net irc.freenode.net).
18:34:12 -!- lament has quit (brown.freenode.net irc.freenode.net).
18:34:26 <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:34:39 <faxathisia> is shouldn't be taught
18:35:06 <oklopol> what do you mean?
18:35:14 <oklopol> that it's stupid? :P
18:35:23 <faxathisia> doing lots of numerical work in Prolog is not good
18:36:27 <Slereah> Doggy Muzzle
18:36:27 <Slereah> Doggy Muzzle
18:36:27 <Slereah> £107.00
18:36:27 <Slereah> Displaying 1 to 7 (of 7 products) Pages:
18:36:28 <oklopol> prolly
18:36:39 <Slereah> Damn copypasta
18:36:56 <oklopol> btw is there a prolog bot :-)
18:37:02 <faxathisia> yes
18:37:03 <faxathisia> Tomy
18:37:09 <oklopol> on #prolog?
18:37:24 <faxathisia> yeah, not there just now though
18:37:24 <oklopol> guess i could just check the userlist
18:37:27 <oklopol> god i'm lazy
18:37:32 <oklopol> i see
18:37:39 <faxathisia> I wrote something silly just now :)
18:37:49 <faxathisia> metacircular thing
18:38:05 <faxathisia> http://rafb.net/p/06NXcc30.txt
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:40:05 <oklopol> \= ?
18:41:42 <faxathisia> \= means not unifiable
18:44:48 <ehird> okierific
18:48:16 <Slereah> *kablamo
18:49:49 -!- timmytiptoe has joined.
19:01:54 <ehird> s
19:02:08 <faxathisia> 5
19:03:03 <Slereah> §
19:16:57 <ehird> $
19:17:35 <faxathisia> ζ
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:18:55 <faxathisia> śŜŝŞşŠșșṠṤṦṨṢṡṩṨsⓈⓢ⒮
19:19:50 -!- fizzie has quit (brown.freenode.net irc.freenode.net).
19:19:50 -!- tejeez has quit (brown.freenode.net irc.freenode.net).
19:19:50 -!- Deewiant has quit (brown.freenode.net irc.freenode.net).
19:19:50 -!- timmytiptoe has quit (brown.freenode.net irc.freenode.net).
19:19:52 -!- lament has quit (brown.freenode.net irc.freenode.net).
19:19:52 -!- jix has quit (brown.freenode.net irc.freenode.net).
19:20:26 -!- timmytiptoe has joined.
19:20:26 -!- jix has joined.
19:20:26 -!- fizzie has joined.
19:20:26 -!- Deewiant has joined.
19:20:26 -!- tejeez has joined.
19:20:26 -!- lament has joined.
19:23:07 -!- fizzie has quit (brown.freenode.net irc.freenode.net).
19:23:07 -!- tejeez has quit (brown.freenode.net irc.freenode.net).
19:23:07 -!- Deewiant has quit (brown.freenode.net irc.freenode.net).
19:23:08 -!- lament has quit (brown.freenode.net irc.freenode.net).
19:23:08 -!- jix has quit (brown.freenode.net irc.freenode.net).
19:23:10 -!- timmytiptoe has quit (brown.freenode.net irc.freenode.net).
19:23:29 -!- timmytiptoe has joined.
19:23:29 -!- jix has joined.
19:23:29 -!- fizzie has joined.
19:23:29 -!- Deewiant has joined.
19:23:29 -!- tejeez has joined.
19:23:29 -!- lament has joined.
19:27:19 -!- fizzie has quit (brown.freenode.net irc.freenode.net).
19:27:19 -!- tejeez has quit (brown.freenode.net irc.freenode.net).
19:27:19 -!- Deewiant has quit (brown.freenode.net irc.freenode.net).
19:27:21 -!- lament has quit (brown.freenode.net irc.freenode.net).
19:27:21 -!- jix has quit (brown.freenode.net irc.freenode.net).
19:27:22 -!- timmytiptoe has quit (brown.freenode.net irc.freenode.net).
19:28:02 -!- timmytiptoe has joined.
19:28:02 -!- jix has joined.
19:28:02 -!- fizzie has joined.
19:28:02 -!- Deewiant has joined.
19:28:02 -!- tejeez has joined.
19:28:02 -!- lament has joined.
19:32:40 <ehird> HEH.
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:46 <ehird> No.
20:14:48 <ehird> *ANSI*
20:14:51 <ehird> As in with colour codes
20:14:56 <slereah_> Oh.
20:15:01 <slereah_> I'm not too good on codes.
20:15:03 <ehird> cacaview does it
20:15:06 <ehird> butit's ncurses thingy
20:15:08 <ehird> it can't dump to afile
20:22:55 <ehird> hmm
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:51 <a> oops
21:03:53 -!- a has changed nick to ehird.
21:04:18 <slereah_> Hello mister A.
21:04:24 <slereah_> I am mister N.
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:10:56 <ehird> olsner: even so.
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:16 <pikhq> LMAO
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:28 <ehird> <3
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:20 <olsner> egobfi?
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:33 <ehird> yes :D
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:33 <ehird> ITYM _my 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:08 <slereah_> PLON RAU!
21:23:13 <slereah_> PRO LUNA!
21:23:25 <olsner> I'm thinking about getting a _comind_ with secret category-theory powers at some point
21:23:29 <slereah_> PORN AUL!
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:48 <slereah_> Is it like kryptonite?
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:22 <oerjan> ITYM "unthunk"
21:26:29 <ehird> oerjan: shush you
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:28:55 <olsner> thank you?
21:29:13 <oerjan> quite often, in fact.
21:29:51 <olsner> :P
21:31:03 <ehird> by the way
21:31:06 <ehird> who here knows LyX
21:31:36 <oerjan> *chirp*
21:34:06 <ehird> *chirp*
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:21 <ehird> :p
21:35:38 -!- calamari has joined.
21:48:54 <AnMaster> ehird, I love lyx
21:49:07 <AnMaster> use it a lot
21:49:16 <AnMaster> ehird, so yes I know lyx
21:49:30 <AnMaster> however, I won't answer any question if you haven't read and done the tutorial first
21:49:36 <AnMaster> and looked in user guide
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:51:05 <ehird> in .html
21:51:06 <ehird> :D
21:51:07 <AnMaster> ehird, haven't used it
21:51:19 <AnMaster> using pdftex output only
21:52:28 <AnMaster> ehird, just tried it, it looks ok?
21:52:43 <AnMaster> a table is broken
21:52:47 <AnMaster> but apart from that
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> Elliott Hird
21:53:18 <ehird> 9th March 2008
21:53:18 <ehird> Abstract
21:53:18 <ehird> Brainfuck is a minimal esoteric programming
21:53:18 <ehird> etc
21:53:20 <AnMaster> and List class got images
21:53:21 <ehird> plaintext foramtinged
21:53:30 <ehird> but iwth html entityioes
21:53:34 <ehird> sorry i can;t ype
21:53:38 <AnMaster> errrrrrrrrrrrrr?
21:53:56 <AnMaster> oh and index looks like crap
21:54:05 <AnMaster> but apart from that, quite ok
21:54:12 <AnMaster> would need some post processing but quite ok
21:54:16 <ehird> AnMaster: i got into view->html
21:54:18 <AnMaster> anyway I prefer pdf output
21:54:21 <ehird> and it gives me a n html page with that source
21:54:22 <ehird> not even html
21:54:23 <AnMaster> ehird, I did export html
21:54:27 <ehird> don't you undestantd what i'm saying :|
21:54:31 <AnMaster> file -> export -> html
21:54:32 <ehird> i click html, it gives me plaintetxt
21:54:33 <AnMaster> worked here
21:54:42 <ehird> oh
21:54:44 <ehird> iwas using view->html
21:54:47 -!- slereah__ has joined.
21:54:47 <ehird> because there was view->pdf
21:54:48 <ehird> etc
21:54:49 <ehird> that worked
21:54:54 <AnMaster> ehird, view -> html works too
21:54:58 <AnMaster> what lyx version?
21:55:26 <AnMaster> $ lyx --version
21:55:27 <AnMaster> LyX 1.5.4 (Mon, Feb 25, 2008)
21:55:27 <AnMaster> Built on Mar 7 2008, 22:58:56
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:55:55 <AnMaster> ehird, duh, that's old
21:55:59 <ehird> beh
21:55:59 <AnMaster> get 1.5.4
21:56:03 <ehird> blame the fscking ftp seorver
21:56:07 <ehird> ftp link plz
21:56:19 <AnMaster> no idea
21:56:23 <AnMaster> I get it using portage
21:56:26 * AnMaster uses gentoo
21:56:29 <ehird> i dont
21:56:33 <AnMaster> try their website
21:56:36 <ehird> o ise os x, except when ic ant type like now
21:56:36 <AnMaster> maybe it got a download
21:56:40 <ehird> in which case i use odfgi x
21:56:43 <ehird> or somethign simlar
21:57:01 <AnMaster> http://www.lyx.org/download/
21:57:06 <AnMaster> you *could* have googled
21:57:10 -!- Tritonio_ has joined.
21:57:11 <AnMaster> as iirc you told me some time ago
21:57:25 <ehird> i diify--yes
21:57:28 <ehird> but i lost the ftp link
21:57:31 <ehird> to the actual bins ofr os ox
21:57:33 <AnMaster> ehird, so don't complain
21:57:37 <AnMaster> you could have googled for lyx
21:57:39 <ehird> sheesh
21:57:39 <ehird> yes
21:57:40 <AnMaster> hit their website
21:57:44 <ehird> but that doesnt get the m the tftp link
21:57:47 <AnMaster> click download link
21:57:56 <AnMaster> and look, it got a link for download!?
21:57:59 <AnMaster> YES IT DOES!
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:58:53 <AnMaster> for os x
21:58:58 <AnMaster> but I won't paste link
21:59:01 <ehird> fine, great, so what
21:59:03 <ehird> jeez
21:59:05 <AnMaster> because you can find it yourself
21:59:06 <AnMaster> :)
21:59:08 <AnMaster> no problem
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:40 <AnMaster> ehird, how comes?
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:06 <AnMaster> ehird, ouch
22:00:10 <AnMaster> ok a link then
22:00:11 <AnMaster> ftp://ftp.lip6.fr/pub/lyx/bin/1.5.4
22:00:13 <AnMaster> next time
22:00:14 <AnMaster> google
22:00:22 <AnMaster> in that dir is a file for os x
22:00:55 <ehird> ueah i just found it
22:00:56 <ehird> :)
22:01:13 <ehird> theys hould fix their damn ftp not to leave old releases in top level disr
22:01:14 <ehird> :|
22:01:19 <ehird> with no newer releases in sight
22:01:20 <AnMaster> err?
22:01:36 <AnMaster> I just followed link from download page
22:01:41 <AnMaster> their stuff is not broken
22:01:51 <AnMaster> ftp://ftp.lip6.fr/pub/lyx/ is top dir
22:01:55 <AnMaster> then I clicked bin
22:02:00 <AnMaster> and selected last version
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:09 <ehird> it was there
22:02:10 <ehird> so there
22:02:11 <ehird> :p
22:02:14 <AnMaster> there are no old in top dir
22:02:21 <ehird> pre/ or someting
22:02:22 <ehird> :)
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:02:54 <AnMaster> I would suggest pdftex
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:03:39 <AnMaster> :)
22:03:45 <AnMaster> so don't complain about 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:04:36 * AnMaster changes from befunge to funge
22:05:34 <AnMaster> document class is koma-script article with options: bibtotoc,idxtotoc
22:05:41 <ehird> woot
22:05:42 <ehird> htmnl works now
22:05:54 <AnMaster> ehird, ok
22:05:56 <ehird> my document is kinda lacking in markup though
22:05:56 <ehird> :(
22:05:59 <ehird> so it isn't that nice
22:05:59 <AnMaster> ehird, oh?
22:06:04 <ehird> AnMaster: its very simple
22:06:05 <ehird> :)
22:06:15 <AnMaster> ehird, ah well then that's your input
22:06:19 <ehird> yeah
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:07:42 <AnMaster> ehird, ?
22:07:43 <AnMaster> wtf
22:08:05 <AnMaster> UnicodeDecodeError: 'utf8' codec can't decode bytes in position 34-39: unsupported Unicode code range
22:08:09 <AnMaster> that is what I get
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:29 <ehird> maybe the ''s
22:08:30 <ehird> ko
22:08:32 <ehird> *ok
22:08:33 <ehird> ill filebin
22:08:36 <AnMaster> ehird, can you upload it to a server?
22:08:37 <AnMaster> ah good
22:08:44 <AnMaster> (wtf is filebin btw?)
22:09:10 <ehird> pastbein but for files
22:09:10 <ehird> :|
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:10:08 <AnMaster> that works
22:11:27 <AnMaster> ehird, that's short
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:12:39 <oerjan> the dragon i think
22:12:59 * oerjan googles
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:19 <AnMaster> calamari, nah
22:17:24 <calamari> AnMaster: yeah
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:17:48 <AnMaster> ?
22:17:55 <calamari> no, the documents
22:18:04 * ehird is back
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:38 <AnMaster> ehird, I use helvetica
22:18:41 <AnMaster> a sec
22:18:46 <ehird> Which just means that you don't share Knuths sense of aesthetics
22:18:49 <ehird> pretty common ;)
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:40 <ehird> AnMaster: kill it
22:19:47 <AnMaster> hahh
22:19:51 <AnMaster> ehird, kill what?
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:53 <AnMaster> it is a pdf
22:21:54 <calamari> ehird: I'll take your word for it
22:21:58 <AnMaster> calamari, look at 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:39 <AnMaster> calamari, blame nopaste
22:22:42 <calamari> hehe
22:22:42 <ehird> AnMaster: dude give source
22:22:42 <AnMaster> just use wget or curl
22:22:44 <AnMaster> then rename it
22:22:46 <ehird> NOBODY wants to download a pdf
22:22:48 <AnMaster> ehird, I will
22:22:56 <AnMaster> ehird, what?
22:23:00 <AnMaster> yes you want
22:23:09 <ehird> well, no
22:23:12 <ehird> i for one won't :)
22:23:12 <AnMaster> it works very well in konqueror
22:23:13 <AnMaster> :)
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:43 <AnMaster> calamari, haha
22:24:48 <AnMaster> calamari, so what do you think of it
22:24:54 <AnMaster> a browser would mess it up
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:02 <ehird> Oh, not bad.
22:25:03 <calamari> AnMaster: that is from LaTeX?
22:25:07 <AnMaster> calamari, it is
22:25:10 <ehird> AnMaster: lex! lex! lex! lex! lex!
22:25:13 <ehird> errr
22:25:14 <ehird> i mean
22:25:14 <ehird> lyx
22:25:15 <calamari> okay cool.. see that looks fine
22:25:28 <AnMaster> eh yes from lyx
22:25:31 <AnMaster> and lyx uses latex
22:25:32 <AnMaster> so..
22:25:33 <ehird> no i mean
22:25:35 <ehird> LYX SRC
22:25:36 <ehird> PLZ
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:54 <AnMaster> :(
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:26 <calamari> in an ugly kind of way
22:26:29 <AnMaster> ehird, the lyx source would make no sense
22:26:37 <AnMaster> it includes stuff like external *.eps
22:26:39 <AnMaster> and *.png
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:17 <AnMaster> hurry
22:30:32 <ehird> people on #esoteric are simultaneously paranoid and lax..
22:30:46 <AnMaster> ehird, got it yet?
22:31:01 * pikhq pulls it for his archive of censored files
22:31:03 <AnMaster> the images I both made myself
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:33:00 <AnMaster> just for pdf
22:33:08 <AnMaster> makes some nicer typesetting
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:38 <AnMaster> 5 minutes passed
22:35:40 <AnMaster> removed file
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:38:51 <ehird> kthx
22:46:13 <AnMaster> ehird, it isn't here
22:46:14 <AnMaster> weird
22:46:32 <AnMaster> ehird, anyway you got my lyx source
22:46:36 <AnMaster> what did you think of it?
22:46:37 <AnMaster> :)
22:58:06 -!- CakeProphet has joined.
23:01:22 <AnMaster> ehird, ?
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:18 <olsner> table
23:02:31 <olsner> I wonder what the heck I was doing back then
23:04:32 <ehird> TM?
23:04:56 <olsner> TM? 386!
23:05:17 <oerjan> SK! 42.
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:08 <pikhq> Yeah.
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:51 * AnMaster sighs
23:19:52 <pikhq> I believe it's sector 0x18 that's user mode's CS?
23:20:02 <pikhq> s/sector/segment/
23:20:07 <olsner> depends on the gdt :P
23:20:22 <olsner> I only have a kernel-mode CS and DS thus far
23:20:24 * pikhq reads gdt.c again
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 <pikhq> s/and/at/
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:22:03 <pikhq> *Ugh*.
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:25 <ehird> ;)
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:25:36 <ehird> pikhq: bah
23:25:37 <ehird> compatibility
23:25:39 <ehird> who needs it
23:25:51 <pikhq> *shrug*
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:42 <pikhq> ehird: No.
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:25 <ehird> >:(
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:35 <pikhq> LMAO
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:32:52 <ehird> :-)
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:06 <olsner> hmm?
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:27 <ehird> (so: fix that.)
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:03 <ehird> :)
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:41 <ehird> pikhq: Meh.
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.
2008-03-10
00:02:11 <ehird> pikhq: opinions?
00:02:30 <calamari> pikhq: I've used UMSDOS
00:03:19 <calamari> seemed to work fine
00:03:40 <ehird> pikhq: hmm
00:03:40 <ehird> one way to do IPC
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:34 <calamari> yes
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:33 <calamari> only if the cube does
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:31 <calamari> perhaps not
00:16:57 <oerjan> calamari: you should check if any intermediate states repeat
00:17:01 <calamari> yes I should
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:18:34 <calamari> what do mean?
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:19:54 <calamari> nice
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:05 <oerjan> don't know
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:29:12 <calamari> boom.. repeated
00:29:23 * oerjan is not surprised
00:29:25 <calamari> so it's not good enough yet
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:31:27 <calamari> tool
00:31:32 <calamari> argh...
00:31:35 <calamari> took
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:37:35 <ehird> :-)
00:37:39 <pikhq> :)
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:38:19 <ehird> :D
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:39 <ehird> hmm
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:17 <ehird> pikhq: yes
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:43:58 <ehird> calamari: heh
00:44:03 <ehird> calamari: pikhq's writing a little kernel
00:44:07 <ehird> i'm throwing around batty ideas
00:44:21 <calamari> posix?
00:44:27 <ehird> calamari: that's his intention
00:44:31 <calamari> nifty
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:06 <ehird> /sigh
00:46:24 <oerjan> calamari: that's essentially the question of whether the configuration graph has a hamiltonian path
00:46:37 <calamari> right
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:48:32 <ehird> pikhq: good idea?
00:49:22 <calamari> oerjan: thanks for all the help with this :)
00:49:44 <pikhq> Evil.
00:49:48 <pikhq> But that'd work.
00:49:55 <Sgeo> Is there a point to Exclaim?
00:50:05 <Sgeo> mallocd?
00:50:07 <pikhq> Probably not.
00:50:38 <Sgeo> what's mallocd?
00:52:06 <pikhq> A malloc daemon.
00:52:32 <Sgeo> WHY would there be a malloc daemon?
00:52:43 * Sgeo goes insane
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:47 <Sgeo> brb
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:54:57 <ehird> let me find it..
00:55:02 <calamari> who was talking about newlib the other day?
00:55:19 <calamari> libgloss?
00:55:59 <pikhq> I was.
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:28 <ehird> Which is nice.
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:17 <ehird> it's been done.
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:42 <ehird> Sgeo: hee
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:06 <pikhq> I've done worse.
01:01:11 <ehird> pikhq: check out pdclib!
01:01:21 <pikhq> (Setting up a Hurd cross-dev environment? *shudder*)
01:01:38 * Sgeo looks up libc
01:01:51 <pikhq> Sgeo: Sure there is. It's called *C*.
01:01:58 <pikhq> :p
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:10 <calamari> ehird: no need to mock
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:27 <ehird> calamari: pi.
01:04:41 <calamari> ehird: float or double?
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:12 <ehird> Sgeo: Yes.
01:05:14 <calamari> ehird: you need to go back to C class
01:05:17 <Sgeo> ehird, why?
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:07 <ehird> calamari: Shush.
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:08 * pikhq returns pi
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:53 <calamari> oerjan: great link, thanks
01:07:54 <pikhq> Sgeo: I can make *libc* without assembly.
01:08:05 <oklofok> ehird: :DD
01:08:15 <oklofok> owned those bastards!
01:08:17 <pikhq> Assuming that my syscall interface has a function entering the kernel at a specified address. . .
01:08:26 <GregorR> Hmmmmmmmm
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:01 <ehird> because, well, it
01:09:07 <ehird> 's the *C library*
01:09:08 <ehird> :)
01:09:09 <pikhq> Then, I need only do (kernel_entry)(syscall, args);
01:09:10 <Sgeo> brb
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:20 <ehird> calamari: yes
01:11:23 <ehird> but once we get irc.eso-std.org ;)
01:11:27 <ehird> we can have # !
01:11:31 <ehird> ooh
01:11:35 <ehird> #!/bin/esoteric
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:17 <calamari> ehird: yeah
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:13:45 <oklofok> !
01:13:59 <ehird> actually
01:14:01 <ehird> we could have +
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:41 <oklofok> :D
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:34 <oklofok> woke up at 1:14
01:15:37 <ehird> is that appropriate for freenode
01:15:37 <ehird> :|
01:15:58 <oklofok> let's report them!
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:12 <ehird> :(
01:16:38 <Sgeo> <calamari> I think I made a comment about it needing and/or/xor
01:17:19 <Sgeo> ..and it does
01:17:24 * oerjan imagines GregorR going to protest #jesus and Freenode staff answering, "Oh no, the channel owner gave us conclusive proof that he is representing Jesus. Unfortunately we are not at liberty to disclose it" :D
01:17:28 <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:19:58 <ehird> #awesome is REGGD
01:20:12 <oklofok> awesome.
01:20:32 <Sgeo> Hm, a discussion about the LNUM/LBYTES format
01:20:35 <oklofok> umm... by you?
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:22:36 <ehird> ircbrowse.com
01:22:37 <ehird> srsly
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:35:48 <oklofok> oh, i see
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:36:57 <ehird> :D
01:37:01 <calamari> need to make an ipod shuffle os
01:37:14 <ehird> calamari: no uclinux support
01:37:15 <ehird> :)
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:02 <Sgeo> Back
01:39:06 <calamari> ehird: the universe?
01:39:07 <Sgeo> What did I miss?
01:39:11 <ehird> one that somehow interacted with a normal webserver machine
01:39:12 <ehird> basically
01:39:21 <ehird> it would accept programs
01:39:25 <ehird> over the web
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:40:51 <GregorR> Way to aim high.
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:21 <ehird> string -> ?
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:45:57 <pikhq> GregorR: :D
01:47:07 <ehird> pikhq: hmm
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:14 <pikhq> Hmm.
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:49:44 <pikhq> messaged.
01:49:45 <pikhq> ;
01:49:47 <pikhq> ;p
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:06 <ehird> :P
01:50:13 <pikhq> Fine, fine.
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:34 <pikhq> Yeah.
01:50:37 <oklofok> who here linked the bogosort paper?
01:50:41 <oklofok> was it faxathisia?
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:50:52 <ehird> you'll have to do
01:51:04 <ehird> #include <myos/internal/message.h>
01:51:08 <ehird> and they'll haev names like
01:51:18 <ehird> MyOS_send_
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:53:24 <ehird> :)
01:53:51 <ehird> oh, and of course
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:49 <ehird> err
01:56:51 <ehird> better post an example
01:56:51 <ehird> heh
02:00:28 -!- olsner has quit ("Leaving").
02:03:20 <ehird> pikhq: behold --
02:03:31 <ehird> http://pastebin.ca/935965 actually nice-looking event based programming thingy in c
02:04:25 <ehird> hmm, wait
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:09:05 <ehird> hm
02:09:07 <ehird> need a cast
02:09:08 <ehird> :)
02:12:33 <ehird> err
02:12:34 <ehird> no char
02:12:51 <ehird> wow
02:12:58 <ehird> const *const is a valid type on c
02:13:00 <ehird> all on its own?!
02:13:04 <ehird> wtf
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:32 * Sgeo is bored
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:12 <oklofok> quite dazzzzzling
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:43:58 <calamari> cool
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:45:11 <pikhq> :p
03:55:50 <lament> yes, it looks pretty
03:56:02 <lament> compare with http://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/KSpaceDuel1.1.png/800px-KSpaceDuel1.1.png
03:56:07 <lament> ewww
04:13:32 -!- AnMaster has quit (Connection timed out).
04:14:34 -!- AnMaster has joined.
04:20:39 -!- calamari has quit ("Leaving").
04:23:40 -!- calamari has joined.
05:16:52 <Sgeo> Bye all
05:16:56 -!- Sgeo has quit ("Ex-Chat").
06:48:36 -!- calamari has quit ("Leaving").
07:51:16 -!- BMeph has quit ("calls it a night").
07:59:59 -!- clog has quit (ended).
08:05:29 -!- clog has joined.
08:05:29 -!- olsner has joined.
09:23:38 -!- oerjan has joined.
09:48:57 -!- olsner has quit ("Leaving").
09:53:05 <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:07:07 <slereah__> FIGHT!
11:08:35 * oerjan informs Xion that #esoteric is about esoteric programming languages. Our topic has just been a bit anarchic of late.
11:10:00 <Xion> Ouch
11:10:10 <slereah__> Although it doesn't mention castenada
11:10:17 <oerjan> indeed not
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:03 <faxathisia> :/
16:12:05 <faxathisia> http://pb.eso-std.org/
16:12:33 <faxathisia> does not load
16:12:42 -!- BMeph has joined.
17:04:49 -!- sebbu has joined.
17:08:57 -!- RedDak has quit (Remote closed the connection).
17:15:22 -!- timotiis has quit (Read error: 104 (Connection reset by peer)).
17:33:59 -!- ais523 has joined.
17:34:38 <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:51:56 <lament> haha
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:24 <AnMaster> Deewiant, there?
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:31 <AnMaster> when I try to build ccbi
19:48:54 <AnMaster> and:
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:02 <AnMaster> tango-0.99.5
19:49:16 <Deewiant> the former sounds like a tango problem
19:49:23 <Deewiant> or rather a GDC problem
19:49:49 <AnMaster> Deewiant, I can't change gdc version
19:49:56 <AnMaster> it would be painful
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:16 <AnMaster> $ gcc --version
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:26 <Deewiant> ah, gdc 0.24
19:50:27 <AnMaster> I installed tango from source
19:50:30 <Deewiant> there's a note about that on the page as well
19:50:33 <AnMaster> Deewiant, I did the change
19:50:35 <AnMaster> for it
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:50:47 <AnMaster> followed that
19:50:53 <Deewiant> since the line is identical
19:50:59 <Deewiant> do the same change there
19:51:51 <lament> i'm learning emacs!!
19:52:00 <AnMaster> Deewiant, and the tango thing? downgrading is not an option, I got other apps needing the latter version
19:52:12 <oklofok> i'm earning lemacs!!
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:04 <AnMaster> Deewiant, hm
19:53:06 <lament> yes, i use vim
19:53:11 <AnMaster> lament, emacs here
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:13 <lament> i don't get it
19:56:18 <lament> well
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:32 <lament> oh, true
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:57:55 <lament> can emacs do that?
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:58:30 <ais523> (just like in bash)
19:58:37 <lament> oh, cool
19:59:01 -!- atsampson has joined.
19:59:06 <AnMaster> Deewiant, that older tango fails to build
19:59:06 <lament> thanks
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:30 <Deewiant> baah
19:59:40 <Deewiant> make things easy and get DMD
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:34 <AnMaster> imo that's shitty
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:01:41 <AnMaster> Deewiant, C99 btw :)
20:01:52 <Deewiant> go ahead
20:02:14 <AnMaster> http://rafb.net/p/Y44uBK56.html
20:02:16 <AnMaster> so far
20:02:24 <AnMaster> started coding on it yesterday
20:02:35 <Deewiant> nice :-)
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:03:27 <AnMaster> got any good idea?
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:06:26 <AnMaster> err
20:06:30 <AnMaster> what file is first change in
20:06:34 <AnMaster> the diff isn't valid
20:06:46 <AnMaster> it's missing a line
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:43 <ais523> OK
20:07:56 <Deewiant> but hmm, I'm getting this tango error with DMD on Linux myself
20:07:57 <Deewiant> am investigating
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:09 <AnMaster> IMO it should
20:16:12 <AnMaster> but not on space
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:23 <Deewiant> k always takes one tick
20:17:27 <AnMaster> ah right
20:17:37 <AnMaster> if (i == ' ' || i == ';' || i == 'z')
20:17:37 <AnMaster> return;
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:17:52 <Deewiant> apparently not :-P
20:18:00 <AnMaster> Deewiant, indeed it was 0.99.5
20:18:03 <Deewiant> doesn't matter, the spec is so unclear
20:18:06 <Deewiant> AnMaster: alright, thanks
20:18:11 <AnMaster> and 0.99.4 fails to compile
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:36 <Deewiant> I'll fix the code
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:25:58 <AnMaster> pastebin that is
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:21 <Deewiant> *sigh* I HATE this bug
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:11 <Deewiant> here we go
20:30:46 <Deewiant> AnMaster: there's a function called 'help' in ccbi.d
20:30:54 <AnMaster> yes?
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:19 <Deewiant> aaaagh, no don't
20:31:20 <Deewiant> darn
20:31:26 <Deewiant> it compiles, but doesn't work :-P
20:31:34 <AnMaster> ok *waits*
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:21 <Deewiant> I think it's BSD actually
20:32:29 <AnMaster> ah, can still use it
20:32:33 <AnMaster> my project is gpl3
20:32:34 <AnMaster> :)
20:32:45 <AnMaster> I just need to read your code to understand how k should work
20:33:06 <Deewiant> heh
20:33:28 <AnMaster> the bit about moving if executing k did move it is complex
20:33:36 <Deewiant> yes, it is
20:33:45 <AnMaster> scope (exit)
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:33:45 <AnMaster> ip.move();
20:33:47 <AnMaster> wtf is that
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:36:48 <AnMaster> ais523, gaaa!
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:37:51 <AnMaster> I get that now
20:38:04 <Deewiant> O_o
20:38:09 <Deewiant> dammit
20:38:15 <AnMaster> Deewiant, what does that mean
20:38:21 * AnMaster is a C programmer!
20:38:35 <Deewiant> AnMaster: my function returns ulong while the library function returns uint or vice versa
20:38:55 <Deewiant> or no, incorrect
20:39:01 <Deewiant> this is due to the fact that you're on x86_64
20:39:03 <Deewiant> sec
20:39:11 <AnMaster> Deewiant, indeed I am :)
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:54 <Deewiant> AnMaster: I'm using size_t
20:39:59 <Deewiant> AnMaster: but it appears the code uses uint :-P
20:40:05 <AnMaster> hah
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:40:56 <AnMaster> just FYI
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:41:55 <AnMaster> oh god!
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:10 <AnMaster> LOTS of things like that
20:42:12 <Deewiant> O_o
20:42:15 <AnMaster> maybe 2-3 screens
20:42:34 <Deewiant> are you using rebuild?
20:42:37 <AnMaster> I am
20:42:43 <ais523> AnMaster: are you recursing into the source directories, and linking tango?
20:42:45 <AnMaster> from dsss-0.75
20:42:51 <AnMaster> ais523, ?
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 <ais523> but not its subdirs
20:43:03 <Deewiant> and it outputs a six-line command line when it tries to build?
20:43:07 <Deewiant> GregorR: :-)
20:43:09 <AnMaster> I installed tango following http://dsource.org/projects/tango/wiki/UnixInstallGdc
20:43:12 <AnMaster> ais523, ^
20:43:49 <AnMaster> Deewiant, err?
20:44:01 <AnMaster> now it says: ccbi.d(19): module instructions cannot read file 'ccbi/instructions.d'
20:44:02 <AnMaster> instead
20:44:03 <AnMaster> wtf
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:17 <AnMaster> that was needed
20:44:21 <AnMaster> for it to build
20:44:28 * AnMaster renames source dir instead
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:10 <AnMaster> Deewiant, aha
20:45:24 * GregorR strokes his nonexistent beard.
20:45:29 * GregorR then goes to eat lunch :P
20:45:36 <oklofok> GregorR is the D guru
20:45:37 <Deewiant> GregorR: tango + GDC 0.24 isn't a good combination
20:45:45 <AnMaster> /usr/bin/gdmd
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:45:46 <AnMaster> what one?
20:45:48 <oklofok> ask him !!
20:46:03 <AnMaster> /usr/bin/gdmd is some gentoo specific wrapper
20:46:12 <AnMaster> to select version of gcc
20:46:20 <Deewiant> AnMaster: probably the third but I'd check all to be sure
20:46:35 <AnMaster> ah a perl script
20:47:40 -!- oklofok has changed nick to oklopol.
20:48:40 <AnMaster> err
20:48:48 <AnMaster> now it fails to build
20:48:50 <AnMaster> new tango that is
20:49:17 * AnMaster tries clean sources
20:49:19 <Deewiant> heh
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:05 <AnMaster> takes too long
20:50:16 <Deewiant> shouldn't be necessary
20:50:32 <Deewiant> the binaries are the same, after all
20:51:35 <AnMaster> nop just fails still
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:51:43 <Deewiant> how does it fail
20:51:50 <AnMaster> in that way ^
20:51:55 <Deewiant> odd
20:52:03 -!- oerjan has joined.
20:52:22 <AnMaster> look, it replaced libgphobos.a it seems
20:52:25 <AnMaster> so I blame tango for it
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:52:55 <AnMaster> Deewiant, how?
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:54:08 <Deewiant> make it not clean it out
20:55:33 <Deewiant> AnMaster: tell you what, see if http://iki.fi/deewiant/ccbi works for you
20:56:24 <AnMaster> it can execute yes
20:56:34 <AnMaster> $ ./ccbi --help
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:35 <AnMaster> hah
20:56:42 <Deewiant> oh yeah, right
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:56:54 <AnMaster> so it won't work for me then?
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
20:57:21 <AnMaster> very nice
20:57:23 <Deewiant> exactly :-)
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:07 <AnMaster> BAD: ' reflects
21:02:07 * AnMaster implements
21:02:29 -!- BMeph has quit (Read error: 104 (Connection reset by peer)).
21:03:21 -!- sebbu2 has joined.
21:05:37 * AnMaster implements x
21:06:40 <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:03 * AnMaster ponders that one
21:07:20 <AnMaster> it's hard to solve
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:17 <AnMaster> ais523, err what?
21:09:31 <ais523> it's the whole ABSTAIN thing
21:09:40 <AnMaster> assume I don't know intercal
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:01 <AnMaster> ais523, yes I got a mode enum
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:10:30 <AnMaster> right
21:10:44 <AnMaster> but still...
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:49 <Deewiant> AnMaster: try again?
21:11:58 <Deewiant> AnMaster: err, referring to CCBI of course :-P
21:12:01 <AnMaster> Deewiant, wgetting same binary?
21:12:04 <Deewiant> yeah
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:16 <AnMaster> Deewiant, yes the registry
21:13:19 <Deewiant> AnMaster: same place as the funge-98 spec, move one directory up
21:13:22 <AnMaster> but that is dead and broken
21:13:36 <Deewiant> AnMaster: as in, http://catseye.tc/projects/funge98/
21:13:41 <AnMaster> aha
21:13:42 <Deewiant> the library/*.html
21:14:20 -!- SimonRC has joined.
21:17:02 -!- sebbu has quit (No route to host).
21:17:03 -!- sebbu2 has changed nick to sebbu.
21:17:40 <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:19:55 <AnMaster> in 3D
21:19:56 <AnMaster> 2d*
21:20:01 <Deewiant> aye
21:20:04 <AnMaster> so really bounding rect
21:20:08 <Deewiant> there are other ways, too
21:20:21 <oerjan> yeah
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:34 <Deewiant> AnMaster: the CCBI bin works?
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:23:48 <AnMaster> (but it breaks cardinal wrap)
21:24:56 <AnMaster> Deewiant, err your y is not correct it seems, it leaves out some utf8 from env variables?
21:25:11 <Deewiant> AnMaster: how's that
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:52 * AnMaster pipes
21:25:56 <Deewiant> AnMaster: no, I like my computer games :-)
21:26:14 <AnMaster> Deewiant, no ö
21:26:23 <AnMaster> just empty in that place
21:26:27 <Deewiant> AnMaster: just nothing? like "aäb" becomes "ab"?
21:26:29 <Deewiant> hrm
21:26:32 * AnMaster notes CCBI is NOT conforming :P
21:26:35 * AnMaster runs
21:26:38 <Deewiant> :-)
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:48 <AnMaster> ais523, you mean uniq -d ?
21:29:54 <AnMaster> that style of thing?
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:18 <ais523> AnMaster: yes
21:30:26 <AnMaster> ais523, try seen trick in awk
21:30:27 <AnMaster> :O
21:30:29 <AnMaster> :P*
21:30:46 <AnMaster> <greybot> awk '!seen[$0]++' # Remove second and subsequent instances of each input line, without having to sort them first.
21:30:55 <AnMaster> adapt to your case
21:31:00 <AnMaster> I assume you know awk
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:33 <AnMaster> don't know those
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:35 <AnMaster> a2p?
21:32:48 <ais523> awk to perl compiler
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:31 <AnMaster> Deewiant, interesting
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:34:51 <Deewiant> AnMaster: yes, of course
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:35:32 <ais523> AnMaster: definitely
21:35:34 <Deewiant> AnMaster: for CCBI?
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:06 <AnMaster> bleh, grammer
21:36:10 <AnMaster> grammar*
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:46 <AnMaster> like say, that drawing thing
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:38 <AnMaster> Deewiant, hm ok
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:37 <AnMaster> or maybe it was turn left
21:38:41 <AnMaster> anyway, one of them
21:38:47 <Deewiant> AnMaster: I can't test for every possible bug
21:38:53 <AnMaster> Deewiant, indeed not hehe
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:39:40 <ais523> x or =?
21:39:44 <Deewiant> ais523: darn, good point
21:39:53 <Deewiant> but either way, really :-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:37 <AnMaster> I still don't get that
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:52 <ais523> ysae s'ti
21:40:55 <Deewiant> AnMaster: 1 year of writing Befunge :-D
21:41:02 <AnMaster> hahah
21:41:08 <AnMaster> ais523, :(
21:41:26 <ais523> hmm...
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:38 <ais523> retsaMnA ,:(
21:41:52 <Deewiant> d-: '325sıɐ
21:41:55 <AnMaster> haha that actually makes sense in Swedish backwards
21:41:56 <AnMaster> ais523, ^
21:42:04 <AnMaster> retsam = teasing
21:42:18 <AnMaster> and you are doing that!
21:42:30 <Deewiant> dǝʎ
21:42:49 <AnMaster> ok now you are just crasy, using uncide to write upside down
21:42:50 <AnMaster> ...
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:18 <AnMaster> much easier to read
21:43:26 <Deewiant> ais523: lɯʇɥ˙dılɟ/ɯoɔ˙pɐɟʌǝɹ˙ʍʍʍ//:dʇʇɥ
21:43:42 <AnMaster> pɐɟʌǝɹ?
21:43:50 <AnMaster> my font fails on that
21:43:53 <AnMaster> partly
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:45 <AnMaster> Deewiant, hah
21:44:52 <AnMaster> or you could have used several files
21:44:55 <Deewiant> AnMaster: rather 200x25
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:08 <AnMaster> Deewiant, why?
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:21 <AnMaster> Deewiant, interesting
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:46:40 <Deewiant> yeah, but that's late
21:46:46 <Deewiant> and it should fail nicely
21:46:51 <AnMaster> it does
21:47:01 <Deewiant> and it continues despite that
21:47:02 <AnMaster> Deewiant, where do you find fungus?
21:47:09 <Deewiant> probably linked from my page
21:47:13 <Deewiant> J^4's site
21:47:20 <AnMaster> J^4?
21:47:27 <Deewiant> http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/fungus.php
21:47:39 <Deewiant> guy who made !Befunge
21:47:41 <AnMaster> wow at that domain name
21:47:53 <Deewiant> yeah, he's proud of it, a domain name which is valid befunge code :-)
21:48:04 <AnMaster> hehehe
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:48:57 <ais523> OK, that's harder
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:43 * ais523 tests it
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:42 <AnMaster> ais523, there is
22:04:56 <AnMaster> ais523, the first 80x25 chars in mycology is 93 testsuite
22:05:01 <AnMaster> so just discard the rest
22:05:03 <ais523> yes, I just realised that
22:05:05 <AnMaster> like a interpreter should
22:05:17 <ais523> that's a nonconformance in the INTERCAL interp already, then
22:05:36 <AnMaster> indeed
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:07:46 <AnMaster> like a trace mode
22:07:48 <AnMaster> or whatever
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:11:44 <AnMaster> ais523, interfunge?
22:11:54 <AnMaster> ah intercal fungus
22:12:00 <ais523> AnMaster: it seems J^4 wrote a Befunge interp in INTERCAL
22:12:01 <AnMaster> ah well
22:12:10 <AnMaster> ais523, ok that's insane
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:38 <AnMaster> -_-
22:12:39 <ais523> and AnMaster: brainfuck is marginally easier to program in than INTERCAL, in most cases
22:12:51 <AnMaster> ais523, ah, that's amazing
22:12:59 <ais523> except for those cases where INTERCAL's more advanced features come in useful
22:13:09 <AnMaster> ais523, PLEASE COME FROM?
22:13:10 <AnMaster> ;P
22:13:23 <ais523> INTERCAL's probably better for really complex programs, but writing such in esolangs is normally inadvisable anyway
22:13:26 <AnMaster> (no idea what that would do)
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:52 * AnMaster points to nptl on linux
22:14:59 <ais523> you can't get much more elegant than aiming two COME FROMs at the same line
22:15:12 <AnMaster> ais523, what would that do?
22:15:23 <ais523> AnMaster: multithread and run both
22:15:28 <AnMaster> oh god
22:15:47 <ais523> what did you expect it to do?
22:17:34 <AnMaster> no clue
22:17:36 <AnMaster> error out maybe
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:39:57 <AnMaster> I don't know prolog either
22:39:58 <AnMaster> tell me
22:40:02 <AnMaster> what is backtracking?
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:41:56 <AnMaster> mhm
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:34 <AnMaster> :)
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:43:53 <ais523> or a parser
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:20 <AnMaster> lex I mean probably
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:50 <AnMaster> yep it does
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:49:45 <AnMaster> horrible
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:11 <AnMaster> I don't know prolog
22:54:18 <AnMaster> I don't know intercal
22:54:22 <AnMaster> I DO know C
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:30 <AnMaster> eww
22:56:40 <ais523> and you have to save all the variables involved, too
22:56:44 <AnMaster> ick_?
22:56:55 <ais523> AnMaster: it's the INTERCAL compiler's name
22:57:03 <AnMaster> I understand it
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:49 <AnMaster> I see it use rand function
22:57:54 <ais523> AnMaster: it's standard C89, rather than POSIX
22:58:10 <AnMaster> CONFORMING TO
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:16 <AnMaster> ah ok
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:58:49 <AnMaster> stupid
22:59:58 <AnMaster> ais523, what about drand48 then?
23:00:13 <AnMaster> are they more or less random?
23:00:14 <ais523> no idea
23:00:16 <AnMaster> than random()
23:00:21 <slereah_> http://www.muppetlabs.com/~breadbox/intercal-man/blotch.gif
23:00:25 <slereah_> What's this symbol?
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:00:59 <AnMaster> slereah_, inkblot?
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:24 <slereah_> Oh.
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:05 <slereah_> That's why I ask!
23:02:11 <AnMaster> ais523, oh god
23:02:14 <AnMaster> wait a second
23:02:15 <slereah_> Even the rabbit one?
23:02:21 <ais523> no, not the rabbit
23:02:32 <AnMaster> intercal used PUNCH CARDS?
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:49 <ais523> AnMaster: yes
23:02:52 <AnMaster> someone was stupid enough to do an esoteric language on punch cards!?
23:02:54 <AnMaster> -_-
23:02:55 <ais523> it dates from the days of EBCDIC
23:03:02 <ais523> it was invented in 1972, after all
23:03:03 <AnMaster> that's just, fucked up
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:03:48 <slereah_> MULTICS?
23:03:54 <AnMaster> or whatever
23:03:59 <AnMaster> before unix
23:04:17 <AnMaster> http://en.wikipedia.org/wiki/Multics
23:04:19 <AnMaster> that one
23:04:19 <slereah_> I'm not old enough, AnMaster
23:04:28 <AnMaster> slereah_, nor am I
23:04:39 <slereah_> I'm also not that computer savvy
23:04:45 <AnMaster> ah, I'm that
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:21 <AnMaster> bah bad mimetype
23:05:37 <ais523> it's the multithreading/backtracking part of C-INTERCAL's runtime library
23:05:43 <AnMaster> oh god
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:29 <AnMaster> you just need some goto
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:07 <AnMaster> it's a well commented mess
23:08:09 <AnMaster> horrible
23:08:38 <ais523> any budding open source programmer is invited to refactor if they feel they're up to the challenge
23:08:58 <AnMaster> no that's way below me
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:09:59 <AnMaster> Deewiant, there?
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:17 <AnMaster> :P
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:34 <AnMaster> I know
23:11:37 <ais523> but then it flags you as beeing away too
23:11:44 <AnMaster> ais523, I should be
23:11:48 <AnMaster> but I'm not
23:11:53 * AnMaster really needs to sleep
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> Selected base 3
23:17:02 <AnMaster> Input a number in that base: 47
23:17:09 <AnMaster> hehe
23:17:40 <AnMaster> Which base to read input in? 473
23:17:40 <AnMaster> Selected base 473
23:17:40 <AnMaster> Input a number in that base:
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:22:21 <slereah_> Awesome
23:23:00 <olsner> wonderful domain name too
23:23:08 <AnMaster> ais523, indeed
23:25:49 * ais523 has to go, anyway
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").
2008-03-11
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:05:33 <lament> (lisp as in CL)
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:22 <CakeProphet> ...what's a good C reference?
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").
03:53:38 <pikhq> man
04:02:31 -!- GregorR has quit (brown.freenode.net irc.freenode.net).
04:03:08 -!- GregorR has joined.
04:15:23 * pikhq declares some of his music 'hell for basses'.
04:15:37 <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:37 <pikhq> I'm a bass.
06:19:41 <pikhq> I fucking hate it.
06:19:47 <lament> oh, you're a bass.
06:19:55 * pikhq wants to be *below* the bass clef, thanks.
06:19:58 <lament> cut your balls off.
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.
08:15:21 <oklopol> pikhq: aaand notes please
09:00:04 -!- bsmntbombdood has joined.
09:27:19 -!- oerjan has joined.
10:11:06 <AnMaster> stack stacks in funge is really complex
10:11:15 <AnMaster> are*
10:26:16 <oklopol> they are?
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:02 <faxathisia> WOAH
10:45:21 <faxathisia> 2 seconds in it's already /awesome/
10:45:25 <oklokok> :D
10:45:27 <oklokok> well, thx
10:45:35 <oklokok> that's just the midi guitar, it' kinda sucky
10:45:38 <oklokok> *it's
10:46:04 <faxathisia> It's the sort of similar to the sound as Ooze on megadrive
10:46:17 <faxathisia> or Alien Solier
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:55 <faxathisia> that was good
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:56:22 <oklokok> uhh, i sing like a horse
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:06 <faxathisia> what's gp?
10:59:09 <oklokok> guitar pro
10:59:35 <oklokok> usually do songs with that, because i tablatures are a lot nicer than the normal score notation
10:59:38 <oklokok> *-i
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:23 * oklokok HATES.
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:11:18 * oklokok counts
11:12:41 <oklokok> lol just 50
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:14:09 * oklokok kills
11:22:04 * oerjan verbs
11:39:14 <oklokok> oerjan: verb verbing you verbing motherverber
11:40:52 <oerjan> your noun!
11:41:38 <oklokok> verb pronoun.
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:44:22 <AnMaster> lol
11:45:53 <oklokok> AnMaster: no need to verb adjective.
11:46:07 <oklokok> s/adjective/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:47:44 <oklokok> s/oerjan/nick :D
11:47:59 <oklokok> s/:D/smiley
11:48:01 * AnMaster goes to verb on his noun interpreter
11:48:10 <oklokok> s/s/*/*/substitution
11:48:16 <oklokok> AnMaster: that might be for the vest.
11:48:27 <oklokok> *best, actually
11:48:35 <AnMaster> "vest"? A kind of clothing right?
11:48:41 <oklokok> yeah
11:48:45 <AnMaster> ah best
11:49:11 <AnMaster> verb verb stackstacks of befunge!
11:49:12 <AnMaster> :(
11:49:26 <oklokok> what's adjective about them, really?
11:49:39 <AnMaster> they are complex to implement
11:49:41 <AnMaster> that's the problem
11:49:47 <oklokok> hmm, in bash?
11:49:49 <AnMaster> in C
11:49:50 * oerjan calls a moratorium on generic grammar terms
11:49:53 <oklokok> hm
11:49:59 * AnMaster points to his cfunge
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:11 <AnMaster> you decide
11:50:21 <AnMaster> anyway it will be conformant
11:50:28 <oklokok> you make a stack thingie, then make a stack of stacks.
11:50:33 <oklokok> that's it, really
11:50:48 <AnMaster> oklokok, yep, but then there is the complexities of { and } instructions
11:50:52 <AnMaster> begin stack and end stack
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:20 <AnMaster> yep
11:51:21 <oklokok> you just do exactly what it says.
11:51:23 <oklokok> *is
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:06 <AnMaster> a C99 feature
11:52:26 <AnMaster> anyway I think I got it mostly now
11:52:32 <AnMaster> begin stack that is
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:55:36 <AnMaster> err whatever
11:56:34 <oklokok> well, if you care about stuff like that
11:56:36 <oklokok> i don't :D
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:20:48 <oklokok> works
12:20:50 <oklokok> yay
12:20:57 <oklokok> already owns java then
12:23:05 <oklokok> 1 + n always calls int(n)
12:23:29 <oklokok> 4 + 2.0 = 6, which might confuse some
12:25:51 <AnMaster> oklokok, wtf are you doing?
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:45:37 <Deewiant> n29*y is meant to be 0
12:45:43 <Deewiant> why should it be 1
12:46:01 <Deewiant> ah, wait a minute
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:19 <Deewiant> so they're 2 cells each
12:47:22 <AnMaster> yes but 29* = 18
12:47:24 <AnMaster> not 14
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> indeed and?
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:04 <AnMaster> the stack.
12:48:12 <Deewiant> that's not the 18th cell
12:48:14 <AnMaster> there is just a single stack
12:48:27 <AnMaster> Deewiant, ok that's stupid -_-
12:48:34 <Deewiant> it's what the spec says
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:17 <AnMaster> err
12:49:21 <AnMaster> new y entries
12:49:22 <AnMaster> I mean
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:32 <Deewiant> how's that
12:50:41 <Deewiant> you have to run y first to get the size of the stack it pushes anyway
12:50:54 <AnMaster> hm
12:50:55 <Deewiant> since the length of y isn't predetermined
12:51:01 <AnMaster> y is silly IMO
12:51:02 <Deewiant> consider command line args and envvars
12:51:08 <AnMaster> the way it is done I mean
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:24 <AnMaster> on the very first {-test
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:31 <AnMaster> from mycouser:
12:53:35 <AnMaster> UNDEF: BASE fingerprint not loaded, won't check I.
12:53:38 <AnMaster> and
12:53:39 <AnMaster> UNDEF: STRN fingerprint not loaded, wo<n't check I.
12:53:44 <AnMaster> those look weird to me
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:28 <Deewiant> oh, right
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:06 <AnMaster> I see
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:33 <AnMaster> Deewiant, ah thanks
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:56:57 * AnMaster uncomments trace output
12:57:42 <AnMaster> ok, not easy to parse my trace output though
12:58:50 <AnMaster> v<1w>^1<< < < < < <
12:58:59 <AnMaster> so the very first one fails
12:59:19 <Deewiant> so what was your stack at that point and why :-)
12:59:37 * AnMaster looks
13:00:20 <AnMaster> call StackDump(newStack)
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:00:35 <Deewiant> what's with the two zeros
13:00:42 <AnMaster> that's storage offset right?
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:01 <AnMaster> preserved.
13:01:02 <Deewiant> ", then pushes the storage offset as a vector onto the SOSS"
13:01:03 <AnMaster> from standard
13:01:05 <Deewiant> the SOSS, not the TOSS
13:01:13 <AnMaster> Deewiant, aha
13:03:03 <AnMaster> BAD: { doesn't set storage offset correctly, or p doesn't use it <-- right, time to fix that
13:03:07 * AnMaster changes p
13:14:06 <AnMaster> Deewiant, p should push at (offset + requested position) right?
13:15:02 <Deewiant> aye
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:18:44 <Deewiant> err
13:18:47 <Deewiant> s/write/right/
13:18:59 <Deewiant> how did that happen O_o
13:19:27 <slereah_> Rampant illetrism sweeping the nation?
13:20:36 <Deewiant> sumthin like thät
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 <AnMaster> a bit off is it?
13:23:19 <Deewiant> AnMaster: that's FPSP probably?
13:23:30 <AnMaster> FPDP
13:23:38 <Deewiant> darn
13:23:39 <Deewiant> ah well
13:23:43 <AnMaster> and FPSP too
13:23:44 <Deewiant> it's floats, what do you expect :-)
13:23:58 <AnMaster> Deewiant, still :P
13:24:08 <Deewiant> oh, come on
13:24:49 <AnMaster> why is BASE totally UNDEF?
13:24:58 <Deewiant> looks like it's the same on windows btw
13:25:16 <Deewiant> 2^-7 is 0.0078125
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:20 <AnMaster> Deewiant, CNCBI ?
13:26:33 <Deewiant> it's not defined anywhere what should be done in that case
13:26:36 <Deewiant> same with the BASE
13:26:42 <Deewiant> have you looked at the RC/Funge-98 docs? they /suck/
13:26:46 <AnMaster> ah
13:26:51 <Deewiant> and the source is worse
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:18 * AnMaster sighs
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:05 <Deewiant> possibly { 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:22 <Deewiant> or setting them incorrectly
13:30:22 <AnMaster> ipForward(1, ip, fspace);
13:30:23 <AnMaster> pos.x = ip->position.x;
13:30:23 <AnMaster> pos.y = ip->position.y;
13:30:23 <AnMaster> ipForward(-1, ip, fspace);
13:30:34 <AnMaster> that is how you get the new vector right?
13:30:38 <AnMaster> the new offset I mean
13:30:58 <Deewiant> err, sec
13:31:20 * AnMaster notes ccbi tend to reverse instead, and can't go backwards in one function call :P
13:31:25 <Deewiant> yeah, looks like
13:31:33 <AnMaster> somehow, that feels like a small win there :)
13:31:34 <AnMaster> ;P
13:31:37 <Deewiant> :-P
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> {
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:31:53 <AnMaster> }
13:31:55 <AnMaster> indeed
13:31:57 <AnMaster> :)
13:32:17 <Deewiant> CCBI isn't optimized at all
13:32:24 <Deewiant> or a bit, but not much really
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:10 <Deewiant> and such
13:33:20 <Deewiant> but I'm off to eat now, have fun with your debugging o)
13:33:27 * AnMaster sighs
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:54:53 <AnMaster> right
13:55:42 * AnMaster wish mycology code wasn't so dense
13:56:04 <Deewiant> it could use a rewrite, yeah
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
13:59:51 <AnMaster> oh I got it, it wraps things
13:59:52 <AnMaster> hah
14:00:03 <AnMaster> the "set with offset" wraps things
14:00:09 * AnMaster changes order of calculation
14:02:11 * AnMaster implements } too
14:04:17 <AnMaster> yay segfault
14:04:25 <Deewiant> yay C ;-)
14:04:59 <AnMaster> Deewiant, can't you get segfaults in D?
14:05:04 <AnMaster> you got pointers after all
14:05:10 <Deewiant> it's less likely
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:42 <AnMaster> so are C ones partly
14:05:47 <AnMaster> FUNGEDATATYPE entriesCopy[count + 1];
14:05:49 <Deewiant> only static arrays
14:05:56 <AnMaster> that one is dynamic
14:05:58 <AnMaster> C99 feature
14:06:03 <Deewiant> yeah, C99 has VLAs
14:06:07 <Deewiant> but they're a bit clunky
14:06:12 <AnMaster> Deewiant, and my code is C99
14:06:34 <AnMaster> Deewiant, and memory managment: not an issue, I use boehm-gc
14:06:47 <Deewiant> that helps a lot :-)
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> size_t current;
14:07:59 <AnMaster> // Array of pointers to stacks
14:07:59 <AnMaster> fungeStack * stacks[];
14:07:59 <AnMaster> } fungeStackStack;
14:08:10 <AnMaster> err, messed up newlines in paste
14:08:29 <Deewiant> what's "current stack"?
14:08:38 <AnMaster> TOSS and top also
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:09 <AnMaster> unlike normal stacks
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:12:41 <AnMaster> yay
14:13:11 <AnMaster> stacks[0] and stacks[2] are valid, but stacks[1] = NULL
14:13:13 * AnMaster looks
14:16:14 <AnMaster> GOOD: { transfers cells correctly
14:16:15 <AnMaster> GOOD: { sets storage offset correctly, and p uses it
14:16:15 <AnMaster> Program exited normally.
14:16:18 <AnMaster> Deewiant, any clue?
14:16:20 <Deewiant> heh
14:16:27 <Deewiant> nope
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:16:48 <AnMaster> that is what gdb says
14:16:52 <AnMaster> ie, exit code = 0
14:17:10 <AnMaster> x=87 y=72: # (35)
14:17:10 <AnMaster> x=89 y=72: } (125)
14:17:10 <AnMaster> Program exited normally.
14:17:11 <AnMaster> interesting
14:17:26 <Deewiant> :-)
14:17:39 <AnMaster> aha, missing break in case lol
14:17:52 <AnMaster> so fell through to next, that was @
14:18:00 <Deewiant> :-D
14:18:05 <AnMaster> nop, not that
14:18:18 <AnMaster> now it quits in another way
14:18:30 * AnMaster removes trace output to be able to see what mycology said
14:18:48 <AnMaster> BAD: } reflects, hrrm
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: } resets storage offset
14:19:28 <AnMaster> GOOD: } transfers cells correctly
14:19:28 <AnMaster> Segmentation fault
14:19:29 <AnMaster> bbl
14:19:35 <Deewiant> how about right now just test if args[2] is -t or something
14:28:44 <AnMaster> heh indeed
14:32:19 -!- RedDak has joined.
14:37:09 <AnMaster> yay fixed it
14:54:00 <AnMaster> Deewiant, there?
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:52 <Deewiant> no :-/
14:56:53 <AnMaster> at least mine doesn't print anything for that test when I corrected it
14:56:56 <AnMaster> so confusing
14:57:00 <AnMaster> Deewiant, that is bad :(
14:57:00 <Deewiant> aye :-/
14:57:06 <AnMaster> FIX! ;P
14:57:06 <Deewiant> I agree :-/
14:57:12 <Deewiant> easier said than done :-D
14:57:18 <AnMaster> BAD: fedcba0{05-} doesn't leave 15 on stack
14:57:23 <AnMaster> explain that one please
14:57:24 <Deewiant> wow, that's rare
14:57:31 <Deewiant> well, self-explanatory?
14:57:31 <AnMaster> Deewiant, tell me about it
14:57:36 <AnMaster> no I don't get it
14:57:41 <Deewiant> I think I've only seen one other interpreter that does that
14:57:43 <Deewiant> well
14:57:46 <AnMaster> well mine does
14:57:47 <Deewiant> fedcba0{05-} was executed
14:57:52 <AnMaster> ok
14:57:57 <Deewiant> and the top of the stack should be 15 after that, but it isn't
14:58:02 <Deewiant> or wasn't, whatever
14:58:29 <AnMaster> so my handling of negative counts for } is bad in other words?
14:58:35 <Deewiant> probably
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:18 <AnMaster> that's an easy fix
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:07 <Deewiant> yep
15:00:09 * AnMaster thinks that second message is wrong with y says = doesn't exist
15:00:16 <Deewiant> meh
15:00:18 <AnMaster> it doesn't work!
15:00:21 <Deewiant> read it as "works as intended"
15:00:26 <AnMaster> ok
15:00:36 <Deewiant> it doesn't use it anywhere
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:15 <AnMaster> y does allow that
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:45 <AnMaster> from y
15:01:48 <Deewiant> yep
15:01:54 <Deewiant> but there is no registry
15:01:57 <AnMaster> so that means you could make a new one
15:01:57 <Deewiant> so we're screwed :-)
15:02:03 <AnMaster> Deewiant, ah, so no libffi then :(
15:02:03 <Deewiant> basically yes
15:02:06 <Deewiant> but the problem is
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:16 <AnMaster> call libffi :)
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:02:51 <Deewiant> that's up to you :-)
15:03:09 <AnMaster> just to be a pain in the **** for everyone else
15:03:20 <Deewiant> I'd just call that 2 actually
15:03:21 <Deewiant> "Equivalent to interpretation by a specific shell or program "
15:03:25 <Deewiant> or even 3
15:03:30 <Deewiant> since yours is a C program
15:03:33 <AnMaster> haha
15:03:42 <Deewiant> or no, scratch that
15:03:47 <Deewiant> 3 refers to the command-line shell
15:03:52 <Deewiant> 2 is what it'd be
15:04:00 <AnMaster> heh
15:04:14 <AnMaster> no, I'm not likely going to do libffi
15:04:18 <AnMaster> too painful
15:04:44 <AnMaster> Deewiant, the push on other stack then pop back thing for y = really painful :(
15:05:08 <AnMaster> it's bad for performance
15:05:09 <Deewiant> somewhat, yes
15:05:15 <AnMaster> and coding style too
15:05:27 <Deewiant> I just push all the things and then, at the end, check if some need to be popped
15:06:28 <AnMaster> on a temp stack?
15:06:47 <Deewiant> no, on the real stack
15:07:08 <AnMaster> if you got 2y, that means 3y will also end up on stack?
15:07:10 <AnMaster> but below it?
15:07:21 <Deewiant> no, they're removed as well
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:07:53 <Deewiant> not sure though
15:08:03 <AnMaster> that is even messier
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:08:57 <AnMaster> btw if I get this:
15:08:57 <AnMaster> GOOD: ] turns flying IP right
15:09:01 <AnMaster> and then lockup
15:09:07 <AnMaster> what is the likely cause
15:09:12 <Deewiant> can't remember
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:47 <Deewiant> yep, I use that
15:10:58 <AnMaster> not that I will implement that I think
15:10:59 <Deewiant> in Mycology that is
15:11:07 <AnMaster> concurrent that is
15:11:13 <Deewiant> meh
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:11:46 <Deewiant> aye, sure
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:04 <AnMaster> 64-bit or 32-bit?
15:15:06 <Deewiant> 32-bit int
15:15:10 <Deewiant> I think
15:15:12 <Deewiant> or no, wait
15:15:15 <Deewiant> its int_fast32_t
15:15:22 <AnMaster> hah, mine use 64-bit, and should be easy to make 128-bit
15:15:30 <AnMaster> using int128 thing for amd64
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:20 <AnMaster> long long is such a value
15:16:24 <Deewiant> oh yeah, C99
15:16:28 <AnMaster> Deewiant, :D
15:16:34 <Deewiant> ah well
15:16:35 <AnMaster> C99 rocks
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:24 <AnMaster> to something else
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:17:55 <Deewiant> why don't you use typedef
15:17:59 <AnMaster> because that makes print sane
15:18:08 <AnMaster> Deewiant, no real reason
15:18:19 <AnMaster> it hardly matters though
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:35 <AnMaster> :)
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:21 <Deewiant> and meh
15:20:27 <Deewiant> no, but I like using real languages ;-)
15:20:43 <AnMaster> C is more real
15:20:52 <AnMaster> what language is the D compiler itself written in?
15:20:57 <AnMaster> I bet answer is: C
15:20:59 <Deewiant> C++ I believe
15:21:03 <AnMaster> ok or C++
15:21:04 <AnMaster> :)
15:21:08 <AnMaster> and C++ compiler is in C
15:21:10 <AnMaster> so well
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:32 <AnMaster> or maybe it bootstraps
15:21:38 <Deewiant> I'm not sure about GCC actually
15:21:42 <Deewiant> DMD and DMC are both C++
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:15 <Deewiant> that's debatable
15:22:18 <Deewiant> but what do you need it for
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:23:50 <AnMaster> Deewiant, for ? instruction
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:32 <AnMaster> of*
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:24:48 <AnMaster> yeah
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:21 <AnMaster> long int rnd = random() % 4;
15:25:28 <AnMaster> is good enough I think
15:25:35 <faxathisia> :S
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:26:15 <AnMaster> and I use -Werror
15:26:16 <AnMaster> :P
15:26:25 <faxathisia> O-o
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:28:00 <AnMaster> redundant-decls -Werror
15:28:02 <AnMaster> in fact
15:28:22 <faxathisia> nice
15:28:32 <faxathisia> I use -funroll-loops
15:28:38 <faxathisia> and no other flags
15:28:43 <AnMaster> look it is for debugging!
15:28:50 <AnMaster> to code good code
15:29:16 <AnMaster> I use -ggdb3 -O0
15:29:18 <AnMaster> -_-
15:29:23 -!- Tritonio_ has quit (Remote closed the connection).
15:29:25 <faxathisia> hhehe
15:29:36 <AnMaster> for this app that is
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:35:49 <AnMaster> hm
15:35:52 * AnMaster looks again
15:37:11 <AnMaster> yay
15:39:27 <AnMaster> Deewiant, BAD: after y the top cell is greater than 15
15:39:45 <AnMaster> hm
15:46:09 <Deewiant> unclear?
15:46:13 <AnMaster> no
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:03 <AnMaster> Deewiant, interesting:
15:50:04 <AnMaster> That the command-line arguments were: [ "/" null "jÿ" null ]
15:50:15 <Deewiant> :-)
15:50:16 * AnMaster pushes two null atm until he fixed some things
15:50:28 <AnMaster> \0\0 = end of list
15:50:29 <AnMaster> so?
15:50:37 <Deewiant> so?
15:50:44 <AnMaster> why does it not realize it is just a case of an empty list?
15:50:56 <Deewiant> it should
15:50:56 <AnMaster> after all, it is valid to not have command line arguments
15:51:02 <Deewiant> no it's not
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:51:58 <AnMaster> or streams
15:52:01 <AnMaster> where it won't know
15:52:12 <Deewiant> it can push the URL then
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:52:46 <AnMaster> Deewiant, :)
15:52:52 <AnMaster> 93, but still
15:53:01 <Deewiant> yep, I know :-)
15:53:06 <AnMaster> or:
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:29 <AnMaster> to fit inside it as well
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:53:50 <AnMaster> yep I do
15:53:53 <AnMaster> I know that
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:10 <AnMaster> so
15:54:19 <Deewiant> so they're not valid :-)
15:54:33 <AnMaster> Deewiant, btw what is this minifunge thing?
15:54:36 <AnMaster> or whatever it was called
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
15:56:47 <AnMaster> why not?
15:56:53 <AnMaster> do they differ much?
15:57:05 <Deewiant> not IIRC
15:57:09 <AnMaster> Deewiant, what is hover mode?
15:57:15 <AnMaster> and such
15:57:20 <Deewiant> defined in MODE fingerprint
15:57:29 <Deewiant> as it says there :-)
16:02:02 * AnMaster wonders if it would be nice to make HRTI take advantage of HPET on linux when available
16:02:14 <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:38 <AnMaster> it isn't afaik?
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:00 <AnMaster> of course with some fallback
16:03:09 <AnMaster> as only one of my computers got hpet
16:03:38 <AnMaster> Deewiant, but maybe
16:03:51 <AnMaster> anyway use NO_HZ so...
16:03:51 <AnMaster> heh
16:08:33 * AnMaster writes functions to push and pop C string to/from 0gnirts
16:13:29 -!- RedDak has joined.
16:57:29 -!- RedDak has quit (Remote closed the connection).
17:15:32 <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:15:33 <AnMaster> Deewiant, ^
17:15:38 <AnMaster> that is the infinite loop
17:15:53 <Deewiant> 'the'?
17:15:59 <AnMaster> that my code get into
17:16:15 <Deewiant> f8+y doesn't work then apparently
17:16:24 <AnMaster> what is f8+y supposed to be?
17:16:35 <Deewiant> I don't know, what does CCBI output there
17:16:52 <AnMaster> a sec
17:17:43 <AnMaster> GOOD: ] turns flying IP right
17:17:44 <AnMaster> GOOD: : on empty stack makes stack size 2 according to y
17:17:47 <AnMaster> hm
17:17:49 <AnMaster> the second one
17:17:54 <Deewiant> so it's trying to get the stack size
17:18:06 <Deewiant> TOSS size to be exact
17:18:11 * AnMaster checks
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:44 <AnMaster> ;P
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:12 <AnMaster> interesting
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:08 <AnMaster> simple really
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:22 <Deewiant> too much trouble really
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:02 <Deewiant> not sure
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:23:36 <AnMaster> oklokok, simple really
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:24:26 <oklopol> what should i use?
17:24:31 <oklopol> for the interp
17:24:34 <Deewiant> a text editor? :-P
17:24:36 <Deewiant> CCBI, of course
17:24:53 <oklopol> ccbi is what?
17:24:59 <Deewiant> my interpreter :-)
17:25:03 <oklopol> for what os?
17:25:17 <AnMaster> oklokok, ccbi
17:25:17 <AnMaster> for now
17:25:17 <AnMaster> :P
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 <AnMaster> so a bit hard to compile
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:25:55 <pikhq> (painful)
17:25:57 <oklopol> Deewiant: you finnish?
17:26:01 <Deewiant> oklopol: aye
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:35 <AnMaster> add the link there
17:26:37 <Deewiant> AnMaster: yes it is
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:12 <AnMaster> Deewiant, had to do Ctrl-R
17:27:16 <AnMaster> to make it show up
17:27:16 <Deewiant> AnMaster: I don't know, they're school servers
17:27:18 <AnMaster> interesting
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:07 <Deewiant> bah
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:30 <AnMaster> Deewiant, correct link then
17:28:35 <oklopol> not worth 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:04 <oklopol> not much difference
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:29:56 <AnMaster> when I get it done
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:19 <Deewiant> AnMaster: undo the fix :-)
17:31:22 <pikhq> oklopol: At *least* to low C. . .
17:31:31 <oklopol> what's low c?
17:31:37 <oklopol> what are the names of the octaves?
17:31:38 <pikhq> C below bass clef.
17:31:48 <pikhq> ERm.
17:31:53 <pikhq> I might have screwed that up.
17:31:59 * pikhq imagines scale, labelling notes. . .
17:32:03 <oklopol> low C, some C, middle C
17:32:04 <oklopol> ?
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:32:48 <oklopol> well
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:14 <oklopol> oh
17:35:26 <oklopol> C3 C2 C c c2 c3
17:35:30 <oklopol> and c is middle c?
17:35:33 <Deewiant> AnMaster: 0.
17:35:41 <pikhq> Yeah.
17:35:44 <oklopol> ah
17:35:54 <AnMaster> then wtf is up with:
17:35:54 <oklopol> same as in finnish then
17:35:55 <AnMaster> BAD: \ on empty stack doesn't make stack size 2, says y
17:36:00 <oklopol> well
17:36:06 <AnMaster> because, according to gdb
17:36:07 <AnMaster> it does
17:36:09 <pikhq> That range chart is a bit bad, though. . .I know all those parts have wider ranges.
17:36:10 <AnMaster> Deewiant, ^
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:36:52 <Deewiant> AnMaster: I disagree
17:37:00 <AnMaster> Deewiant, the standard says so
17:37:10 <Deewiant> AnMaster: does it?
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:23 <Deewiant> AnMaster: sure, it says that
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:37:39 <AnMaster> Deewiant, that too ^
17:37:54 <AnMaster> section "Instructions"
17:37:55 <AnMaster> :P
17:37:57 <Deewiant> AnMaster: alright
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:42 <Deewiant> darn, not much space there
17:38:48 <AnMaster> what you say is:
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:39:36 <AnMaster> nor do I plan to yet
17:39:39 <AnMaster> as they are optional
17:40:28 <AnMaster> Deewiant, so far: http://rafb.net/p/AA3KEd72.html
17:40:32 <AnMaster> yes I know y is broken still
17:40:39 <AnMaster> and so is some wrap parts
17:42:36 <pikhq> oklopol: Nope.
17:42:46 <oklopol> *whether
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:01 <Deewiant> AnMaster: there'
17:45:06 <Deewiant> s a new Mycology up
17:45:13 <Deewiant> should say UNDEF at those two places now
17:46:17 <AnMaster> did you update test results?
17:46:19 <AnMaster> :P
17:46:26 <Deewiant> no, can't be bothered 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:47:39 <Deewiant> yep
17:48:27 <AnMaster> ok, interesting why CRLF btw?
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:52 <AnMaster> don't remember name
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:07 <Deewiant> can't be helped
17:59:13 <AnMaster> Deewiant, so befunge breaks on such systems
17:59:14 <AnMaster> I see
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:11:51 <AnMaster> reserved hm?
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:13:16 <Deewiant> ip.d probably
18:14:40 <Deewiant> yeah, IP.move
18:14:42 <lament> bah, CLOS is lame
18:14:53 <faxathisia> no it's not
18:15:07 <faxathisia> Have you used other object systems?
18:15:26 <lament> for lisp or in general?
18:15:31 <faxathisia> In general
18:15:53 <AnMaster> lament, what is CLOS?
18:15:58 <AnMaster> some befunge fingerprint?
18:16:09 <lament> object system for common lisp
18:16:14 <lament> faxathisia: i just don't like (method object)
18:16:33 <faxathisia> huh?
18:16:49 <lament> because it's namespace clutter
18:16:57 <faxathisia> you'd rather write method(object) ?
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:17:43 <faxathisia> You can use packages
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:40 <faxathisia> if you didn't want it, don't write it
18:19:41 <oklokok> or they usually don't?
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:18 <faxathisia> Lisp is different .. embrace it :)
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:38 <Deewiant> oklokok: and then use pg
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:01 <AnMaster> hehe
18:22:09 <AnMaster> yay wrapping now works
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:17 <AnMaster> non-cardinal I mean
18:22:42 <oklokok> Deewiant: that sounds slow
18:22:47 <AnMaster> Deewiant:
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:40 <AnMaster> that is clear
18:24:56 <Deewiant> but after that, there are at least 3 options
18:25:00 <Deewiant> 1) reflect
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:20 <AnMaster> and third?
18:25:41 <AnMaster> Deewiant, what one would you recommend?
18:25:46 <Deewiant> CCBI does 2
18:25:53 <Deewiant> some do 1, some do 3
18:25:59 <AnMaster> Deewiant, and the one I did?
18:26:03 <Deewiant> up to you really, based on the spec all can be justified
18:26:09 <AnMaster> I mean, the result
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:28 <Deewiant> why reflect on "?
18:28:35 <Deewiant> " toggles stringmode
18:28:43 <AnMaster> Deewiant, because standard says " isn't allowed in k
18:28:51 <Deewiant> it does?
18:29:02 <AnMaster> or rather indicates
18:29:09 <Deewiant> :-P
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:10 <Deewiant> how's that
18:29:20 <AnMaster> I would suggest " is a marker
18:29:29 <Deewiant> no, it's not
18:29:32 <Deewiant> it's an instruction
18:29:43 <Deewiant> The instruction " "Toggle Stringmode" toggles a special mode
18:29:47 <AnMaster> Deewiant, so what should 2k" do?
18:29:54 <Deewiant> nothing
18:30:06 <AnMaster> and 3k" ?
18:30:12 <Deewiant> same as 1k"
18:30:16 <Deewiant> or just "
18:30:20 <AnMaster> Deewiant, turn string mode on that is
18:30:23 <Deewiant> the only two markers are space and ;
18:30:26 <AnMaster> ok, that's stupid
18:30:27 <Deewiant> AnMaster: yep
18:30:29 <Deewiant> why
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:28 <AnMaster> j instruction
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:55 <AnMaster> hm ok
18:31:58 <Deewiant> so you put 1 on the stack and turn right
18:32:00 <AnMaster> relocate your code
18:32:05 <Deewiant> :-)
18:32:09 <Deewiant> that's not what befunge is about :-P
18:32:26 <Deewiant> to me anyway
18:32:31 <AnMaster> Deewiant, and you get a lot of crap on the stack right?
18:32:35 -!- ais523 has joined.
18:32:42 <Deewiant> do n afterwards
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:23 <Deewiant> yep
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:11 <AnMaster> as I don't implement ( yet
18:36:25 <Deewiant> an easy way to implement ( is just to make it pop a value then pop that many cells
18:36:30 <Deewiant> and reflect, of course
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:07 <Deewiant> nope
18:37:10 <AnMaster> Deewiant, well my y is still seriously broken
18:37:38 <Deewiant> heh, looks like
18:37:48 <AnMaster> http://rafb.net/p/OqbNQJ59.html
18:37:51 <AnMaster> there ^
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:41 <Deewiant> :-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:20 <AnMaster> hahahah
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:01 <AnMaster> uhu
18:41:05 <AnMaster> right
18:41:10 <Deewiant> so basically, each funge-space cell has pointers to each immediate neighbour
18:41:42 <AnMaster> I see
18:42:05 <AnMaster> Deewiant, must be slow to traverse if you want to not just go to next cell
18:42:14 <Deewiant> I don't know to be honest
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:31 <Deewiant> he might have partitioned it
18:42:37 <Deewiant> AnMaster: D has built-in hash tables :-)
18:42:41 <AnMaster> :(
18:42:48 <faxathisia> Perl too..
18:42:53 <Deewiant> AnMaster: cell[cellidx][cellidx] space; or something
18:43:08 <AnMaster> well bash got sparse arrays hm
18:43:14 <AnMaster> but not matrixes
18:43:31 <AnMaster> so no point in looking at bash source
18:43:46 <Deewiant> there're libraries
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:03 <AnMaster> and obfuscated source
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:31 <Deewiant> the first one there is for C
18:45:36 <AnMaster> hm yes
18:45:37 * AnMaster looks
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:17 <AnMaster> they were not 2D
18:46:32 <Deewiant> they don't have to be 2D
18:46:35 <AnMaster> oh?
18:46:44 <Deewiant> you have two options basically
18:46:52 <AnMaster> go on :)
18:46:53 <Deewiant> 1) what I do, have a hash table containing hash tables
18:47:06 <AnMaster> mhm
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:50:24 <Deewiant> CFUN eh
18:50:34 <AnMaster> Deewiant, er yes?
18:50:37 <AnMaster> is it in use?
18:50:47 <Deewiant> don't think so
18:51:02 <Deewiant> most use BEF or something instead of FUN
18:51:15 <AnMaster> FUN as in FUNGE
18:51:20 <Deewiant> yep
18:51:20 <AnMaster> but true it is just 2D
18:51:50 <AnMaster> Deewiant, does handprint have to be 4 chars?
18:51:58 <Deewiant> no
18:52:03 <Deewiant> it has to be a cell
18:52:08 <Deewiant> in your case it could be up to 8 chars
18:52:15 <Deewiant> since you have 64 bits
18:52:38 <AnMaster> I wonder, what about BIGNUMs?
18:52:46 <Deewiant> in that case it could be anything
18:52:52 <AnMaster> indeed
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:51 <Deewiant> befunge only
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:04 <Deewiant> no, not at all
18:54:08 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
18:54:15 <Deewiant> or unefunges ;-)
18:54:17 <AnMaster> Deewiant, it should check size of vectors :)
18:54:29 <Deewiant> tricky in 80x25 chars
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:54:52 <AnMaster> oh?
18:54:58 <AnMaster> Deewiant, 80x25xwhat?
18:55:02 <Deewiant> funge93 has p and g
18:55:04 <Deewiant> which use vectors
18:55:17 <AnMaster> for trefunge93 I mean
18:55:26 <Deewiant> beats me
18:55:41 <Deewiant> but I guess you're right in that way, -93 didn't specify anything other than 2D
18:55:42 <AnMaster> does trefunge93 exist even?
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:35 <AnMaster> nah, not at all
18:56:48 <AnMaster> you check it once, then do some self modifcation
18:56:56 <AnMaster> to change all p/g instructions
18:56:59 <Deewiant> err
18:57:07 <Deewiant> there are a lot more instructions than just p and g that use vectors :-P
18:57:07 <AnMaster> you should leave place around
18:57:09 <AnMaster> of course
18:57:14 <AnMaster> Deewiant, yes all those twoo
18:57:15 <AnMaster> too*
18:57:16 <Deewiant> it's too difficult
18:57:19 <Deewiant> intractable in fact
18:57:28 <AnMaster> Deewiant, but not inpossible
18:57:30 <Deewiant> once again, since you can't tell what direction an instruction is entered from
18:57:32 <Deewiant> it's impossible
18:57:41 <Deewiant> and consider y for instance
18:57:48 <AnMaster> yes?
18:57:49 <Deewiant> it pushes 5 vectors
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:32 <AnMaster> using p
18:58:39 <AnMaster> to change the mycology program itself
18:58:41 <Deewiant> how would you find 'the place'
18:58:48 <Deewiant> 'each place' that is
18:58:55 <Deewiant> it's impossible, I tell you
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:29 <Deewiant> here's some code: aa+y
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:07 <AnMaster> the position of that aa
19:00:15 <Deewiant> haha
19:00:25 <Deewiant> for every use of vectors, store the position somewhere? :-D
19:00:36 <Deewiant> no thanks
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:12 <AnMaster> as needed
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:23 <AnMaster> !
19:01:32 <Deewiant> it's impossible programmatically
19:01:40 <Deewiant> you need to change the original code beforehand
19:01:45 <AnMaster> err no?
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:42 <Deewiant> exactly
19:02:55 <Deewiant> so first of all that limits you to a static number of dimensions
19:03:01 <AnMaster> no wait, you don't need to
19:03:08 <Deewiant> and second, that's changing the original code
19:03:13 <AnMaster> all you need is a sub routine
19:03:25 <AnMaster> simple you told someone here yourself how to
19:03:28 <AnMaster> jump and so on
19:03:54 <Deewiant> it's not that simple
19:04:02 <Deewiant> there are instructions that do X, then pop a vector, then do Y
19:04:07 <Deewiant> or s/pop/push/
19:04:20 <Deewiant> you'd need a subroutine for each such instruction
19:04:25 <Deewiant> not just p/g
19:04:37 <AnMaster> just a make vector subroutine
19:04:38 <AnMaster> :)
19:04:50 <AnMaster> that you can use for p/g/whatever
19:05:04 <AnMaster> even for x
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:49 <AnMaster> then all will be +
19:05:50 <AnMaster> eh
19:05:51 <AnMaster> 0
19:05:55 <Deewiant> write befunge code that loads mycology.b98 and modifies each vector use to work for any number of dimensions
19:05:59 <Deewiant> without changing mycology.b98
19:06:06 <Deewiant> beforehand
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:35 <Deewiant> just ugly :-P
19:07:40 <Deewiant> and overly tricky
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:12 <Deewiant> s/Funge/greater-than-2-Funge/
19:09:14 <Deewiant> nitpicker :-P
19:09:19 <AnMaster> hah
19:09:37 <AnMaster> also what about "extra dimensions on demand" style funge
19:09:44 <AnMaster> that would be nice
19:10:20 <AnMaster> Deewiant, wouldn't it?
19:10:21 <ais523> Deewiant: aren't all Befunge programs also legal Trefunge programs?
19:10:28 <Deewiant> ais523: nope
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:38 <AnMaster> so that won't work
19:10:48 <Deewiant> ais523: consider 102p
19:10:54 <AnMaster> of course they are legal
19:10:56 <Deewiant> that should put 1 at the position (0,2)
19:10:58 <AnMaster> just won't do the same thing
19:11:06 <AnMaster> Deewiant, assuming befunge
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:41 <AnMaster> ais523, yes
19:11:42 <ais523> so that we can have Hilbert-space-funge
19:11:49 <AnMaster> ais523, err what?
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:12 <AnMaster> ah got an idea:
19:12:14 <Deewiant> AnMaster: just give the size
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:20 <AnMaster> ah yes
19:12:35 <AnMaster> Deewiant, first in vector: size of vector
19:12:38 <AnMaster> rest is vector
19:12:41 <Deewiant> yep
19:13:10 <AnMaster> Deewiant, now that would need some substantial redesigning or a fingerprint of some kind
19:13:35 <AnMaster> ais523, err?
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:40 <Deewiant> AnMaster: I think.
19:14:42 <Deewiant> at least some fingerprint did.
19:14:49 <AnMaster> Deewiant, interesting
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:14 <AnMaster> ais523, also need X too
19:15:33 <Deewiant> it wasn't INDV.
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:34 <AnMaster> ais523, it does
19:15:38 <Deewiant> oklokok: you were asking about functions: there's the SUBR fingerprint
19:15:40 <AnMaster> so Y too
19:16:11 <AnMaster> Deewiant, hm fingerprints got to fit in a cell?
19:16:14 <AnMaster> they don't do they?
19:16:17 <Deewiant> nope
19:16:24 <Deewiant> or yep, actually
19:16:26 <Deewiant> or wait
19:16:29 <Deewiant> not sure
19:16:32 <Deewiant> read the spec :-P
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:19 <Deewiant> yep, jesse van herk's
19:17:22 <AnMaster> btw, the rcfunge with SGNL didn't compile
19:17:29 <AnMaster> had to remove SGNL thing
19:17:31 <Deewiant> quite possible
19:17:36 <AnMaster> and this is unix
19:17:45 <AnMaster> so it should work
19:17:46 <Deewiant> like said, POSIX is a bad thing ;-)
19:17:55 <AnMaster> Deewiant, it isn't
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:32 <AnMaster> it should be QT of course
19:18:33 <AnMaster> :D
19:18:38 <Deewiant> baah
19:18:42 <AnMaster> or maybe XLIB or GTK+
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:20 <ais523> s/$/?/
19:19:23 <AnMaster> ais523, what is it?
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:48 <AnMaster> ais523, eww
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:09 <Deewiant> AnMaster: obfuscated code :-)
19:21:20 <Deewiant> it is an /esoteric/ language after all
19:21:27 <AnMaster> yes
19:21:35 <AnMaster> not drawing pictures then!
19:21:41 <Deewiant> true
19:21:49 <Deewiant> I just liked the idea of TURT
19:21:52 <Deewiant> seemed to fit the theme
19:22:13 * ais523 was under the impression that Befunge was originally invented to be hard to compile
19:22:25 <AnMaster> ais523, indeed
19:22:26 <Deewiant> yes, I believe so
19:22:29 <AnMaster> and it is
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:06 <Deewiant> or can rely
19:23:09 <AnMaster> Deewiant, you know W^X/NX/PaX/misc/other/names
19:23:11 <AnMaster> ?
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:00 <AnMaster> so you can't compile it
19:24:04 <Deewiant> yeah, that effectively disallows all self-modifying code I believe
19:24:08 <AnMaster> and run it on any sane system
19:24:15 <AnMaster> Deewiant, well JITs does work around it
19:24:36 <AnMaster> and pure interpreters too
19:24:54 * AnMaster ponders NX bit for funge, per-cell
19:25:00 <Deewiant> :-)
19:25:00 <AnMaster> as a fingerprint
19:25:01 <AnMaster> :)
19:25:12 <Deewiant> best make it possible to set an area in one instruction then
19:25:19 <AnMaster> yep indeed
19:25:24 <AnMaster> anyway I won't do that yet
19:25:53 <AnMaster> also, following style of how hardware NX works, it shouldn't just reflect, but instead terminate current IP
19:25:54 <AnMaster> :D
19:26:08 <Deewiant> that'd work too
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:02 <AnMaster> err no
19:27:05 <AnMaster> ah yes
19:27:11 <Deewiant> :-P
19:27:13 <AnMaster> and NoWrite bit too
19:27:15 <AnMaster> as well
19:27:21 <Deewiant> well, not necessarily
19:27:24 <Deewiant> you can use it for scratch space
19:27:26 <AnMaster> yes both are useful
19:27:33 <AnMaster> NX for scratch space
19:27:35 <Deewiant> sure, const :-D
19:27:38 <AnMaster> and NW for code space
19:27:43 <Deewiant> Funge++
19:27:46 <ais523> NX?
19:27:53 <Deewiant> ais523: http://en.wikipedia.org/wiki/NX_bit
19:27:53 <AnMaster> ais523, No eXcute
19:28:01 <AnMaster> eXecute*
19:28:16 <AnMaster> Deewiant, we need a NoRead bit too of course
19:28:22 <AnMaster> for write only data
19:28:26 <AnMaster> no idea about use
19:28:29 <Deewiant> :-D
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:46 <Deewiant> ah, there's an idea
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:25 <Deewiant> 'zM rather
19:29:35 <AnMaster> yes I know that
19:29:38 <ais523> you'll end up inventing Malbolge at that rate
19:29:42 <Deewiant> :-)
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:30:49 <Deewiant> one generates the other
19:31:10 <AnMaster> Deewiant, not going to try that
19:31:12 <AnMaster> I'm not insane
19:31:23 <AnMaster> writing a malbolge interpreter however, isn't as hard
19:31:27 <Deewiant> :-)
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:04 <AnMaster> ais523, indeed
19:32:25 <ais523> maybe someone should invent a 2D version of malbolge
19:32:25 <AnMaster> ais523, err what?
19:32:26 <AnMaster> no
19:32:34 <Deewiant> -93 sucks
19:32:36 <ais523> that combines the worst aspects of malbolge and befunge
19:32:40 <AnMaster> you can load files into befunge98
19:32:59 <AnMaster> so just use 98
19:32:59 <AnMaster> -_-
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:01 <Deewiant> of course you're fine in -98
19:33:06 <AnMaster> true
19:33:09 <AnMaster> or well no
19:33:13 <AnMaster> you are insane still
19:33:14 <AnMaster> :P
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 <AnMaster> ais523, indeed
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:21 <AnMaster> Deewiant, oh? what ones?
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:34:46 <AnMaster> Deewiant, interesting
19:34:55 <AnMaster> ais523, err no
19:35:04 <AnMaster> ais523, it should discard the extra data
19:35:05 <AnMaster> :P
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:14 <Deewiant> s/here/there/
19:35:23 <AnMaster> Deewiant, lol
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:44 <AnMaster> sorry
19:35:49 <AnMaster> not even 93 one
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:02 <AnMaster> ais523, there you are then
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:49 <AnMaster> oh god
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:09 <ais523> AnMaster: that was me
19:38:14 <AnMaster> oh
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:43 <Deewiant> ais523: what did you prove
19:38:45 <faxathisia> me neither :D
19:38:49 <faxathisia> I will read it again
19:38:52 <ais523> that a particular Turing machine was Turing-complete
19:38:55 <AnMaster> ais523, how much money=
19:38:57 <AnMaster> was it
19:39:00 <ais523> $25000
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:26 <faxathisia> what did you do with the money? :P
19:39:27 <Deewiant> oh, that one
19:39:32 <ais523> faxathisia: put it in the bank
19:40:12 <AnMaster> ais523, still a LOT
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:18 <AnMaster> indeed a lot
19:40:27 <AnMaster> enough to buy a car
19:40:40 <AnMaster> (small car that is)
19:40:45 <ais523> or, in my case, just about cancel out my student loan
19:40:54 <AnMaster> ah nice
19:40:55 <Deewiant> of course, the dollar was much more valuable 6 months ago :-)
19:41:06 <AnMaster> bad luck
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:41:32 <AnMaster> ah maybe?
19:41:33 <ais523> yes
19:41:35 <AnMaster> right
19:41:50 <AnMaster> was thinking in reverse
19:41:53 <AnMaster> too much befunge
19:41:57 <Deewiant> heh
19:42:19 <ais523> Befunge is more interesting than some Turing machine that executes programs in O(2^2^n) time
19:42:42 <AnMaster> ais523, err?
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:19 <AnMaster> ais523, ?
19:43:22 <Deewiant> kudos for getting it done :-)
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:47 <AnMaster> ah
19:43:50 <AnMaster> he said befunge too
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:12 <Deewiant> err
19:44:13 <Deewiant> AnMaster: ^
19:44:17 <AnMaster> ah
19:44:19 <AnMaster> right
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:05 <AnMaster> ais523, that is?
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:39 <Deewiant> :-D
19:46:45 <ais523> (that is, the argument, not the moderator)
19:46:51 <AnMaster> heh
19:46:58 <AnMaster> ais523, so well was it useful or not?
19:47:02 <ais523> I think it was
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:52 <ais523> s/realises/realised/
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:23 <AnMaster> ais523, oh?
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:08 <AnMaster> mhm
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:32 <ais523> Deewiant: yes
19:53:42 <AnMaster> aha
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:09 <Deewiant> how am I to understand that
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:43 <Deewiant> the same as !Befunge
19:54:50 <AnMaster> and what does it do?
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:18 <AnMaster> oklokok, of course not
19:55:20 <oklokok> lame :<
19:55:24 <oklokok> AnMaster: of course?
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:48 <AnMaster> :P
19:55:52 <AnMaster> that are printable
19:55:53 <Deewiant> AnMaster: and outputs a warning if in warning mode, etc.
19:56:06 <AnMaster> Deewiant, interesting
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:22 <oklokok> k could be replaces
19:56:24 <oklokok> *replaced
19:56:26 <oklokok> it's useless
19:56:27 <AnMaster> the specs I mean
19:56:29 <ais523> I'm guessing it reflects because the constant wasn't provided...?
19:56:31 <AnMaster> oklokok, it isn't!
19:56:37 <oklokok> yeah it is
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:56:53 <Deewiant> ais523: possibly
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:31 <Deewiant> AnMaster: or choosing not to
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:01 <AnMaster> oklokok, yes it does
19:58:04 <oklokok> like what?
19:58:08 <AnMaster> * / \ : and a few more
19:58:09 <AnMaster> :)
19:58:15 <Deewiant> $ for instance
19:58:22 <AnMaster> 2222222222222222 88+k*
19:58:24 <Deewiant> $ and , are the ones I use
19:58:28 <AnMaster> what does that result in?
19:58:30 <oklokok> pop makes sense in some cases
19:58:32 <AnMaster> yes , too
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:58:51 <Deewiant> so the output becomes b0rked
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:41 <AnMaster> Deewiant, why not?
19:59:47 -!- faxathisia has quit (Connection reset by peer).
19:59:48 <AnMaster> are you also no longer interested in the language
19:59:49 <AnMaster> :(
20:00:03 <Deewiant> I've written more befunge than all others on this planet put together :-D
20:00:22 <AnMaster> you are sure?
20:00:23 <Deewiant> I was interested in implementing it and then writing that test suite, for fun
20:00:32 <Deewiant> of course not
20:00:35 <Deewiant> but probably
20:00:35 <AnMaster> ah
20:00:38 <AnMaster> indeed
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:10 <Deewiant> AnMaster: not necessarily
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:52 <AnMaster> ais523, yes indeed
20:01:57 <Deewiant> a quick look at J^4 suggests he's written around 30K, maybe
20:01:59 <AnMaster> but it wouldn't actually end
20:02:01 <Deewiant> or published, at least
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:02:34 <AnMaster> considering how hard it is
20:02:35 <AnMaster> :)
20:02:36 <Deewiant> AnMaster: so have I :-)
20:02:51 <AnMaster> heh true
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:25 <AnMaster> hah
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:43 <Deewiant> although not quite as sparse
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:06 <Deewiant> yes, because I was naïve :-S
20:05:14 <Deewiant> ais523: too much, I'd say :-)
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:43 <ais523> have you seen SNUSP?
20:05:49 <AnMaster> ais523, what is that?
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:08 <AnMaster> urgh?
20:06:13 <Deewiant> befunge with ] and [
20:06:13 <ais523> but with procedures added in (in Modular SNUSP)
20:06:17 <Deewiant> and #
20:06:27 <Deewiant> and something weird
20:06:29 <AnMaster> Deewiant, err befunge got #
20:06:30 <Deewiant> which looks like !j
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:31 <AnMaster> Deewiant, true
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:09:15 <Deewiant> yep
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:01 <AnMaster> Deewiant,
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:50 <Deewiant> exactly :-)
20:25:53 <ais523> now, an interp which had a fingerprint for /every/ 32-bit number might be interesting
20:26:01 <AnMaster> ais523, heh :)
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:26:39 <AnMaster> so just the y mess left :D
20:27:00 <AnMaster> and the sparse thing
20:27:11 <Deewiant> so you get to the end?
20:27:18 -!- Hiato has left (?).
20:27:21 <AnMaster> Deewiant, I do
20:27:25 <Deewiant> not bad :-)
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:29:43 <Deewiant> yep
20:29:55 <AnMaster> oh and I think mycouser works
20:30:20 <AnMaster> Deewiant, no longer the < in mycouser
20:30:26 <AnMaster> got no idea what I changed
20:30:30 <Deewiant> heh
20:30:39 <AnMaster> Deewiant, still the horrible grammar though
20:30:40 <AnMaster> :(
20:30:45 <AnMaster> UNDEF: BASE fingerprint not loaded, won't check I.
20:30:52 <Deewiant> it's absolutely correct
20:30:56 <AnMaster> that's just not correct English
20:30:56 <Deewiant> I is the instruction that isn't checked
20:31:01 <AnMaster> ah
20:31:12 <AnMaster> it looks like it's horrible grammer
20:31:16 <Deewiant> not to me
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:25 <Deewiant> because check needs an object
20:31:28 <Deewiant> maybe
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:31:53 <Deewiant> I'd prefer it did
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:12 <AnMaster> why?
20:32:22 <AnMaster> is it?
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:38 <Deewiant> heh
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:04 <Deewiant> er, bigger than 80x25
20:34:26 * ais523 guesses that those dimensions are because they're the standard dimensions of characters on the screen in DOS
20:34:38 <AnMaster> Deewiant, getoptlong though :/
20:34:48 <AnMaster> is gnu only
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:28 <AnMaster> Deewiant, and that is silly
20:35:39 <Deewiant> works fine for me
20:35:41 <AnMaster> I would never do that in C
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:35:52 <Deewiant> since you have to use strcmp
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 <AnMaster> ais523, autotools :(
20:38:09 -!- oerjan has joined.
20:38:11 * AnMaster use cmake
20:38:21 <AnMaster> brb
20:38:22 <ais523> AnMaster: it only uses autoconf, not the other autotools
20:41:13 <AnMaster> I won't use that either
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:23 <Deewiant> aye
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:03 <Deewiant> true
20:52:31 <ais523> 8/2 would be one way to solve that problem without modifying anything else
20:52:53 <Deewiant> I was thinking 3-1
20:52:59 <Deewiant> hmm, is that problematic
20:53:11 <Deewiant> er, 5-1 of course
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:33 <Deewiant> ;-)
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:07 <ais523> Deewiant: no
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:41 <Deewiant> :-)
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:46 <Deewiant> of course
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:10 <Deewiant> that's double-point precision
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:27 <Deewiant> I am checking
20:59:48 <Deewiant> UNDEF: K says ln(2) is 0.693147 (0.693147)
20:59:51 <Deewiant> works fine here
21:00:03 <ais523> must be something at my end, then
21:00:23 <Deewiant> and also on a school linux comp
21:13:09 <AnMaster> ais523, what arch?
21:13:23 <ais523> Ubuntu 7.10
21:13:27 <ais523> running on x86
21:14:31 <AnMaster> hm
21:14:50 <AnMaster> I just got a nice idea
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:03 <Deewiant> ais523: worked on such
21:15:10 <AnMaster> Deewiant, what do you think?
21:15:18 <AnMaster> as a #ifdef
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:38 <AnMaster> real 0m0.367s
21:16:38 <AnMaster> user 0m0.076s
21:16:38 <AnMaster> sys 0m0.022s
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:02 <Deewiant> beats me
21:17:15 <AnMaster> Deewiant, I'm aware of that, and it is compiled as 64-bit
21:17:17 <AnMaster> real 0m4.975s
21:17:17 <AnMaster> user 0m0.718s
21:17:17 <AnMaster> sys 0m0.104s
21:17:19 <AnMaster> for ccbi
21:17:27 <AnMaster> but note!
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:21 <AnMaster> real 0m2.236s
21:18:21 <AnMaster> user 0m0.707s
21:18:21 <AnMaster> sys 0m0.050s
21:18:22 <AnMaster> for ccbi
21:18:35 <AnMaster> real 0m0.243s
21:18:36 <AnMaster> user 0m0.073s
21:18:36 <AnMaster> sys 0m0.017s
21:18:37 <AnMaster> for cfunge
21:18:47 <Deewiant> damn, that's slow
21:18:51 <Deewiant> real 0.66
21:18:51 <Deewiant> user 0.58
21:18:51 <Deewiant> sys 0.04
21:18:56 <Deewiant> for CCBI on a school linux comp
21:19:01 <Deewiant> and /dev/null
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:19:36 <AnMaster> 128 kb cpu cache
21:19:42 <Deewiant> odd
21:20:00 <Deewiant> well, I dunno
21:20:02 <Deewiant> sempron 3300+
21:20:47 -!- GregorR has quit (Read error: 113 (No route to host)).
21:21:06 <Deewiant> well, okay
21:21:10 <Deewiant> these are apparently Intel Celeron 2.4 Ghz
21:21:25 <Deewiant> so beats me
21:22:49 <AnMaster> Deewiant, well a 64-bit version of ccbi would likely be faster
21:22:55 <AnMaster> let me try mine with -O
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:23:56 <AnMaster> -O3
21:23:57 <AnMaster> real 0m0.216s
21:23:58 <AnMaster> user 0m0.047s
21:23:58 <AnMaster> sys 0m0.019s
21:24:05 <AnMaster> with cfunge of course
21:24:06 <ais523> Deewiant: -O2 tends to be much better than -O
21:24:07 <AnMaster> wait
21:24:13 <Deewiant> AnMaster: that was for you
21:24:15 <AnMaster> sorry
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 <AnMaster> real 0m0.170s
21:24:28 <Deewiant> depends on the system and the code in question
21:24:29 <AnMaster> user 0m0.045s
21:24:29 <AnMaster> sys 0m0.020s
21:24:36 <AnMaster> when I abort that compile
21:24:37 <AnMaster> Deewiant, ^
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:20 <Deewiant> although hmm
21:25:24 <AnMaster> real 0m0.234s
21:25:25 <AnMaster> user 0m0.065s
21:25:25 <AnMaster> sys 0m0.019s
21:25:27 <Deewiant> I wonder if the linux ccbi one is compiled with optimizations :-)
21:25:28 <AnMaster> with -Os
21:25:38 <AnMaster> all these are average on 5 runs
21:25:40 <AnMaster> Deewiant, ^
21:25:54 <Deewiant> AnMaster: your numbers mean nothing to me :-P
21:26:02 <AnMaster> Deewiant, why not?
21:26:17 <AnMaster> it is the normal way
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:38 <AnMaster> <AnMaster> real 0m0.243s
21:27:42 * AnMaster points to that
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:22 <AnMaster> so I can call same from k
21:28:26 <Deewiant> aye
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:35 <AnMaster> in execute instruction
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:15 <AnMaster> so rather:
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> than
21:29:44 <AnMaster> struct whatever { fungevector * foo; .... }
21:29:50 <AnMaster> not a huge difference
21:30:10 <AnMaster> and there are two reasons for that I do so: less memory managment needed
21:30:22 <AnMaster> faster theoterically
21:30:30 <AnMaster> theoretically*
21:30:50 <ais523> AnMaster: unless you need to make shallow copies of the objects inside
21:30:59 <AnMaster> ais523, indeed
21:31:21 <AnMaster> typedef struct {
21:31:21 <AnMaster> FUNGEVECTORTYPE x;
21:31:21 <AnMaster> FUNGEVECTORTYPE y;
21:31:21 <AnMaster> } fungePosition;
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:20 <AnMaster> Deewiant, link?
21:34:28 <Deewiant> iki.fi/deewiant/befunge/ccbi.html
21:34:41 <AnMaster> Deewiant, page fails in lynx :/
21:34:47 <Deewiant> O_o
21:34:48 <Deewiant> it shouldn't
21:34:50 <AnMaster> and I don't want to start firefox
21:35:05 <Deewiant> looks good here
21:35:13 <AnMaster> ok, maybe lynx version then
21:35:29 <Deewiant> Lynx Version 2.8.5rel.1 (04 Feb 2004)
21:35:47 <AnMaster> Deewiant, you got a issue
21:35:55 <AnMaster> $ ls -l
21:35:55 <AnMaster> total 261
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:04 <Deewiant> issue?
21:36:09 <Deewiant> I'm on windows
21:36:09 <AnMaster> I don't know if zip can do it
21:36:10 <Deewiant> impossible
21:36:13 <AnMaster> but well tar can
21:36:16 <AnMaster> tar.bz2
21:36:20 <Deewiant> quite possible
21:36:22 <AnMaster> is what I recommend for linux binaries
21:36:24 <Deewiant> but like said, I'm on windows
21:36:28 <Deewiant> where such distinctions don't exist
21:36:32 <AnMaster> Deewiant, you crosscompiled?
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:55 <AnMaster> real 0m2.418s
21:36:55 <AnMaster> user 0m0.542s
21:36:55 <AnMaster> sys 0m0.050s
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:05 <Deewiant> AnMaster: heh, slower
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:26 <Deewiant> optimized that is
21:37:27 <AnMaster> Deewiant, depends, it won't be if system enforce NX bit
21:37:29 <AnMaster> like mine does
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:37:59 <AnMaster> Deewiant, I don't have upx
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:20 <Deewiant> ah, darn
21:38:20 <AnMaster> * app-arch/upx
21:38:21 <AnMaster> Available versions: *1.25 ~2.02 ~3.00
21:38:26 * AnMaster tries to avoid running ~arch
21:38:33 <AnMaster> though sometimes I have to
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:17 <Deewiant> uncompressed
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:39:22 <AnMaster> sure
21:40:12 <AnMaster> real 0m1.755s
21:40:12 <AnMaster> user 0m0.520s
21:40:12 <AnMaster> sys 0m0.055s
21:40:13 <AnMaster> better
21:40:26 <Deewiant> damn, that was a big difference
21:40:28 <Deewiant> almost a second
21:40:37 <AnMaster> op
21:40:46 <Deewiant> and maybe the remaining second can be attributed to 32/64-bit differences
21:40:49 <AnMaster> .4 + .3 != 1
21:41:06 <Deewiant> 0.7 ~= 1
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:14 <AnMaster> it is almost as fast
21:41:23 <Deewiant> well whatever
21:41:34 <AnMaster> real 0m0.307s
21:41:34 <AnMaster> user 0m0.076s
21:41:34 <AnMaster> sys 0m0.015s
21:41:35 <AnMaster> with 32-bit
21:41:51 <Deewiant> if I could be bothered to get GDC running this might end up being a lot faster
21:41:57 <Deewiant> but I can't, so. :-)
21:42:18 <AnMaster> Deewiant, gdc is faster than dmd?
21:42:28 <Deewiant> maybe
21:42:29 -!- RedDak has joined.
21:42:31 <AnMaster> Deewiant, anyway function pointers in hash map is slower
21:42:35 <Deewiant> with GCC 4.x, probably
21:42:40 <Deewiant> of course, that's what I said
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:06 <Deewiant> yes, it would be
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:44 <AnMaster> if you can do such stuff in D
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:10 <AnMaster> ok
21:44:25 <AnMaster> so
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:44:39 <AnMaster> :)
21:44:43 <AnMaster> for control chars
21:44:53 <Deewiant> aye
21:44:59 <AnMaster> and why 255?
21:45:14 <Deewiant> hmm, never mind actually
21:45:20 <AnMaster> if (opcode < 127) { use array here } else { reflect here }
21:45:21 <AnMaster> :)
21:45:27 <Deewiant> there's a fingerprint that allows rewriting instructions
21:45:30 <AnMaster> err actually
21:45:32 <AnMaster> < 128
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:04 <AnMaster> true
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:25 <Deewiant> so it shouldn't matter
21:46:26 <AnMaster> Deewiant, btw, want to see my switch case?
21:46:57 <AnMaster> it's "inlined" mostly
21:47:04 <AnMaster> http://rafb.net/p/Ry1n7736.html
21:47:07 <AnMaster> XD
21:47:21 <AnMaster> just k and y are outside
21:47:25 <AnMaster> because they were so complex
21:47:31 <Deewiant> ew, messed up indentation
21:47:33 <AnMaster> and y is still broken
21:47:36 <AnMaster> Deewiant, what?
21:47:39 <AnMaster> I like that style
21:47:40 <AnMaster> :)
21:47:44 <Deewiant> O_o
21:47:47 <Deewiant> do {
21:47:47 <Deewiant> ipForward(1, ip, fspace);
21:47:47 <Deewiant> } while (fungeSpaceGet(fspace, &ip->position) == ' ');
21:47:55 <AnMaster> err that is pastebin messup
21:48:01 <Deewiant> thought so :-)
21:48:14 <AnMaster> do {
21:48:14 <AnMaster> ipForward(1, ip, fspace);
21:48:14 <AnMaster> } while (fungeSpaceGet(fspace, &ip->position) == ' ');
21:48:17 <AnMaster> is how it looks here
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:40 <AnMaster> actually I wonder
21:49:50 <AnMaster> I may have a off by one issue with ;
21:49:51 <Deewiant> I'm on firefox 3 beta 3
21:49:59 <AnMaster> Deewiant, firefox whatever the stable is on gentoo
21:50:07 <Deewiant> 2.0.0.12 prolly
21:50:09 <AnMaster> [I] www-client/mozilla-firefox (2.0.0.12@2008-02-15): Firefox Web Browser
21:50:11 <AnMaster> indeed
21:50:15 <AnMaster> 64-bit version
21:50:32 <AnMaster> do {
21:50:33 <AnMaster> ipForward(1, ip, fspace);
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:50:52 <AnMaster> or?
21:51:04 <AnMaster> wait it doesn't
21:51:05 <Deewiant> no, shouldn't be a problem
21:51:06 <AnMaster> it's fine
21:51:08 <Deewiant> as you forward up to the ; there
21:51:10 <Deewiant> and then past it
21:51:47 <AnMaster> Deewiant, anyway bzr branch http://rage.kuonet.org/~anmaster/bzr/cfunge08
21:51:51 <AnMaster> if you want the whole thing
21:51:58 <AnMaster> my bzrweb is currently broken
21:52:03 <AnMaster> haven't had time to look at problem
21:52:13 <AnMaster> so just go to bazaar-vcs.org
21:52:17 <AnMaster> and get your copy today :)
21:52:22 <Deewiant> :-)
21:52:23 <Deewiant> maybe later
21:52:28 <AnMaster> the best distributed version control system IMO :D
21:52:36 <Deewiant> I like mercurial myself
21:52:38 * AnMaster ducks for git and mercurial dans
21:52:40 <AnMaster> fans*
21:52:48 <AnMaster> Deewiant, mercurial isn't too bad
21:52:50 <AnMaster> it is git I hate
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:13 <AnMaster> err remove ' at end
21:53:14 <Deewiant> yes, I saw that
21:53:24 <AnMaster> ah?
21:53:35 * AnMaster saw it posted in #friendly-coders recently
21:53:43 <AnMaster> I don't normally read blogs
21:53:49 <Deewiant> I saw it on reddit myself
21:53:53 <AnMaster> on what?
21:54:00 <Deewiant> http://reddit.com/
21:54:02 <AnMaster> slashdot, dig and such: I don't do them
21:54:07 <AnMaster> or digg or whatever
21:54:14 <Deewiant> your loss :-)
21:54:19 <Deewiant> although in the case of digg, maybe a win ;-)
21:54:26 <AnMaster> hah :)
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:00 <AnMaster> looks very nice
21:59:08 <AnMaster> and it says license is GPL2 compatible
21:59:13 <AnMaster> but what about GPL3?
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:00:55 <AnMaster> oerjan, it is
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:08 * AnMaster will change his to 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:36 <ais523> in what ways?
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:39 <ais523> I don't know offhand
22:04:46 <AnMaster> it doesn't say
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:01 <AnMaster> wow this looks good
22:14:16 <AnMaster> POSIX.1-2001 got some hash functions built in
22:14:17 <AnMaster> Deewiant, ^
22:14:18 <AnMaster> :D
22:14:25 <Deewiant> thought it might :-)
22:14:27 <AnMaster> hcreate, hdestroy, hsearch
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:02 <AnMaster> Deewiant, got a download?
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:16:53 <Deewiant> hm, wonder why
22:17:13 <Deewiant> might be something in the compiler runtime
22:17:17 <AnMaster> $ scanelf -txebS ccbi2
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:21 <AnMaster> that is how it looks
22:17:30 <Deewiant> looks greek to me :-D
22:17:38 <AnMaster> wants executable stack
22:17:43 <AnMaster> that is the bad part
22:17:46 <AnMaster> STK
22:17:48 <AnMaster> and under it
22:17:49 <Deewiant> I suppose there's no way of figuring out why
22:17:50 <AnMaster> RWX
22:17:55 <AnMaster> Deewiant, no clue
22:18:07 <AnMaster> Deewiant, at least *I* can't
22:18:16 <AnMaster> you would need to look at your linker
22:18:17 <AnMaster> and such
22:18:23 <Deewiant> yeah, and that's tricky
22:18:28 <Deewiant> closed source, written in asm :-P
22:18:34 <Deewiant> or no, actually
22:18:37 <Deewiant> on linux it uses ld I think
22:18:43 <AnMaster> $ scanelf -txebS cfunge08
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:18:47 <AnMaster> much saner
22:18:58 <AnMaster> non-executable stack
22:19:17 <Deewiant> any performance difference between this version and the last?
22:20:02 <AnMaster> real 0m1.743s
22:20:02 <AnMaster> user 0m0.515s
22:20:02 <AnMaster> sys 0m0.063s
22:20:15 <Deewiant> so not much
22:20:20 <AnMaster> indeed
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:02 <AnMaster> Deewiant, it does
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:21:56 <AnMaster> into my irc client only
22:22:00 <Deewiant> heh
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:00 <Deewiant> :-)
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:23 <AnMaster> tried gdc?
22:23:34 <Deewiant> would require recompiling gcc
22:23:39 <Deewiant> to install it
22:23:41 <AnMaster> you got gcc don't you?
22:23:44 <AnMaster> Deewiant, true
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:05 <AnMaster> ah you run gentoo :D
22:24:33 <AnMaster> Deewiant, still when I implement finger prints mine will be slower
22:24:36 <AnMaster> I will do a few
22:24:39 <AnMaster> I won't do them all
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:05 <AnMaster> WIND and SNGL
22:25:09 <Deewiant> all but 2 or 3
22:25:17 <Deewiant> SGNL can't work on windows so it's out for not being portable
22:25:21 <Deewiant> and WIND is just crap :-D
22:25:32 <AnMaster> Deewiant, and I think TURT is silly too
22:25:49 <AnMaster> is there any *stream IO* fingerprint
22:25:54 <AnMaster> unlike i/o instructions
22:26:02 <AnMaster> that hardly would work on binary streams well
22:26:02 <Deewiant> there's FILE
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:26:32 <AnMaster> using FILE
22:26:53 <Deewiant> yeah, you could :-)
22:26:58 <AnMaster> TURT is just silly
22:27:07 <AnMaster> Deewiant, how do you create svg files btw?
22:27:12 <AnMaster> in your D app I mean
22:27:23 <AnMaster> you use some library for it?
22:27:26 <Deewiant> no, manually
22:27:29 <Deewiant> it's all in the source
22:27:36 <Deewiant> I read the SVG spec a bit
22:27:39 <AnMaster> isn't svg xml-o-crap?
22:27:41 <Deewiant> it's pretty simple actually
22:27:50 * AnMaster prefers S-Expressions
22:27:50 <Deewiant> if all XML is crap to you, then yes :-P
22:27:53 <Deewiant> but it could be worse
22:27:56 * Deewiant also
22:28:02 <AnMaster> ever played supertux?
22:28:05 <Deewiant> nope
22:28:07 <AnMaster> mario like open source game
22:28:13 <AnMaster> side scrolled platform jump
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:28:40 <Deewiant> (I don't have scanelf)
22:28:55 <AnMaster> Deewiant, it doesn't need it
22:29:01 <Deewiant> okay
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:21 <AnMaster> Deewiant, ever used lyx?
22:30:37 <AnMaster> LaTeX with WYSIWYM (what you see is what you meant)
22:30:37 <Deewiant> nope
22:30:40 <AnMaster> very nice
22:30:58 <AnMaster> you just take care of the structure it does the formatting
22:31:07 <AnMaster> it works very well
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:03 <Deewiant> sane?
22:33:17 <AnMaster> insane: as in PaX flags being PeMRxS
22:33:24 <Deewiant> how's that insane
22:33:31 <AnMaster> sane: as in ---xe-
22:33:31 <Deewiant> like said it's all greek to me :-)
22:34:05 <Deewiant> so what does PeMRxS mean
22:34:27 <AnMaster> Deewiant, because it basically means that PaX (hardened kernel thing for NX) would allow lots of things
22:34:28 <AnMaster> a sec
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:22 <Deewiant> got a link or something?
22:35:33 <AnMaster> PAGEEXEC EMUTRMAP MPROTECT RANDMMAP RANDEXEC SEGMEXEC
22:35:36 <AnMaster> those are the flags
22:36:10 <Deewiant> so it's got more protections enabled
22:36:25 <AnMaster> less
22:36:37 <AnMaster> chars mean those are disabled
22:37:05 <AnMaster> or "BAD"
22:37:05 <AnMaster> as you would say in mycology
22:37:05 <AnMaster> :P
22:37:36 <AnMaster> apart from the e there
22:37:40 <AnMaster> it is actually good
22:37:50 <Deewiant> aye
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:29 <AnMaster> :P
22:38:33 <Deewiant> meh :-P
22:38:36 <Deewiant> shouldn't take too long :-P
22:38:49 <AnMaster> Deewiant, I got a blender render running now
22:38:58 <AnMaster> huge size very slow
22:39:10 <AnMaster> guess 24 hours from now or so
22:39:10 <AnMaster> maybe
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:38 <Deewiant> meeh
22:39:44 <AnMaster> had it at 180 days at most
22:39:57 <AnMaster> currently at 19 due to power outage :(
22:40:01 <Deewiant> heh
22:40:06 <Deewiant> so it's not a big loss anyway ;-)
22:40:10 <AnMaster> it is
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:11 <Deewiant> O_o
22:41:32 <Deewiant> I see, that's why you don't have time for things like slashdot ;-)
22:42:29 <AnMaster> heh
22:42:39 <AnMaster> I'm ircoper on some smaller networks
22:43:59 <AnMaster> night
22:44:05 <Deewiant> night
22:49:15 -!- Deformative has joined.
22:49:55 -!- Deformative has left (?).
22:56:12 -!- ais523 has quit ("too tired to concentrate").
22:58:13 -!- RedDak has quit (Remote closed the connection).
23:07:23 <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:16 * oerjan laughs and points
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:14:12 <oklokok> This is the stack
23:18:35 <oerjan> i noticed that, after a while. first i thought those were some strange commands...
23:18:47 <oklokok> hehe
23:35:53 <oklokok> hmm...
23:36:10 <oklokok> might be fun to make something that executes english sentences
2008-03-12
00:05:57 -!- BMeph has joined.
00:07:30 -!- RodgerTheGreat has joined.
00:07:41 <RodgerTheGreat> hey guys, quick question-
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:08:40 <RodgerTheGreat> double vx = blah;
00:08:48 <RodgerTheGreat> double vy = blah;
00:09:01 <RodgerTheGreat> double max = very close to zero, like .00001;
00:09:29 <oklokok> just divide by length
00:09:31 <oklokok> but do go on
00:09:40 <RodgerTheGreat> if (abs(vx) > abs(vy)) {max = vx;} else if (vy != 0) {max = vy;}
00:09:57 <RodgerTheGreat> double uvx = vx/max
00:10:03 <RodgerTheGreat> double uvy = vy/max
00:10:06 <RodgerTheGreat> like that
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:11:11 <RodgerTheGreat> I understand that
00:11:24 <oklokok> but that works?
00:11:26 <RodgerTheGreat> so "unit vector" was probably unclear
00:11:32 <oklokok> probably
00:11:33 <RodgerTheGreat> that does essentially what I want
00:12:07 <oklokok> i see :P
00:12:07 <oerjan> you're using the max (L^infinity) norm...
00:12:14 <oklokok> umm
00:12:31 <oklokok> ah
00:12:31 <oklokok> right
00:12:33 <oklokok> heh :D
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:15:25 <RodgerTheGreat> hm.
00:15:29 <oklokok> ah, right
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:03 <oklokok> so why not calc it
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:48 <oklokok> well, not really
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:19:31 <oerjan> er, scalar multiple
00:19:43 <RodgerTheGreat> yes
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:06 <oklokok> ...not gonna? :<
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:45 <RodgerTheGreat> yeah, I follow you
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:29 <RodgerTheGreat> oerjan: yeah, that's why it's working for my purposes
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:14 <RodgerTheGreat> oerjan: ah- that's an excellent idea
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:00 <oklokok> for what purpose?
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:25:36 * oklokok searches
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:14 <oklokok> ah
00:29:21 <oklokok> you don't want l^1 then
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:51 <oklokok> *the nucleus
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:27 <RodgerTheGreat> oklokok: really depends on the game
00:31:47 <RodgerTheGreat> oerjan: yes, that's how I do it
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:27 <RodgerTheGreat> yeah, I
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.
00:57:45 <Quendus> \o/
01:03:33 -!- oerjan has quit ("Good night").
01:33:53 -!- Corun has quit ("This computer has gone to sleep").
01:37:42 -!- jix has quit ("CommandQ").
01:39:25 -!- CakeProphet has joined.
02:50:42 -!- calamari has joined.
02:50:51 <calamari> hi
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:36 <AnMaster> and no clearing
12:45:51 <AnMaster> NCRS work however
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:15 <Deewiant> but the ECMA-48 CSI sequences
12:46:32 <Deewiant> they worked on cygwin, I think
12:48:16 <AnMaster> well....
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:43 <AnMaster> man 5 terminfo
12:48:59 <Deewiant> I just copied RC/Funge's implementation
12:49:05 <AnMaster> and, just use curses to do it
12:49:06 <AnMaster> :)
12:49:11 <AnMaster> curses will use terminfo databse
12:49:13 <AnMaster> database*
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:41 <Deewiant> nothing 'special', no
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:48 <Deewiant> nope
12:50:54 <Deewiant> D doesn't use .h files
12:50:58 <oerjan> terminfo is an improved system on termcap iirc
12:51:04 <AnMaster> oerjan, something like that
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:48 <AnMaster> wasn't a big difference
12:51:51 <Deewiant> AnMaster: you haven't run that one
12:51:57 <AnMaster> err link then?
12:52:02 <Deewiant> AnMaster: I said it above
12:52:11 <AnMaster> ah
12:52:13 <AnMaster> right
12:52:52 <Deewiant> hmm, I can't use curses, right
12:52:53 <AnMaster> real 0m1.623s
12:52:53 <AnMaster> user 0m0.477s
12:52:53 <AnMaster> sys 0m0.053s
12:52:59 <AnMaster> Deewiant, you can't?
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:15 <AnMaster> Deewiant, ah ok
12:54:19 <Deewiant> because TERM doesn't have any "initialize" instruction, but NCRS does
12:55:40 <AnMaster> hmm
12:55:49 <AnMaster> tput uses curses it seems
12:56:15 <AnMaster> but it doesn't clear the screen at the start or such
12:56:21 <AnMaster> like NCRS do
12:57:00 <Deewiant> initscr() does that
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:58:13 <AnMaster> Deewiant, well, no idea then
12:58:22 <AnMaster> tput doesn't clear the screen
12:58:24 <AnMaster> man tput
12:59:07 <Deewiant> hmm, term.h
12:59:49 <AnMaster> /usr/include/ncursesw/term.h ?
13:00:04 <Deewiant> probably
13:00:38 <AnMaster> $ diff /usr/include/term.h /usr/include/ncursesw/term.h
13:00:38 <AnMaster> 47c47
13:00:38 <AnMaster> < #include <ncurses_dll.h>
13:00:38 <AnMaster> ---
13:00:38 <AnMaster> > #include <ncursesw/ncurses_dll.h>
13:00:38 <AnMaster> heh
13:01:28 <AnMaster> Deewiant, btw can a fingerprint be loaded several times?
13:01:32 <Deewiant> sure
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:00 <AnMaster> for NCRS
13:02:07 <Deewiant> yes, it probably would
13:02:17 <AnMaster> Deewiant, it probably shouldn't
13:03:11 <Deewiant> so what should one do after endwin()?
13:03:20 <Deewiant> and hmm, actually it won't
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:05:57 <AnMaster> :)
13:06:27 <AnMaster> weird, now pasting started working in irc client again
13:06:30 * AnMaster shrugs
13:06:44 <AnMaster> Deewiant, btw, does D use a garbage collector?
13:06:58 <Deewiant> yes, built-in
13:07:30 <AnMaster> not boehm then when using gdc?
13:07:37 <Deewiant> no
13:07:44 <oklokok> Deewiant: what age are ya?
13:07:49 <Deewiant> oklokok: 20
13:07:54 <AnMaster> considering boehm is used for the gcj thing iirg
13:07:56 <AnMaster> iirc*
13:08:21 <oklokok> Deewiant: math matriculation exams were just now, so i was just checking whether you happened to do that too
13:08:57 <Deewiant> nope
13:09:55 <oklokok> prolly not, programmers tend not to fail enough to be at high school at the age of 20
13:10:02 <Deewiant> heh
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> mycotemp.tmp: ASCII text
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:28 <Deewiant> AnMaster: just some binary
13:12:31 <Deewiant> I think
13:12:34 <Deewiant> can't remember
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:10 <Deewiant> they're just tmp files
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:17:03 <AnMaster> called prelinking
13:17:16 <AnMaster> oh wait this is a debug build
13:18:15 <AnMaster> ok down with another 0.2 now, almost as fast as with static array for fungespace
13:18:21 <AnMaster> real 0m0.348s
13:18:21 <AnMaster> user 0m0.108s
13:18:21 <AnMaster> sys 0m0.020s
13:18:24 <AnMaster> cfunge :)
13:18:37 * AnMaster goes to fix y instruction now
13:19:24 <Deewiant> AnMaster: how do you do output, btw
13:19:28 <Deewiant> I mean just basic ,
13:19:42 <AnMaster> , = putchar((char)a);
13:19:48 <AnMaster> . = printf("%ld ", a);
13:20:03 <AnMaster> and I flush after each put char
13:20:07 <AnMaster> I probably shouldn't do that
13:20:18 <AnMaster> would make it faster to just flush at input or newline
13:20:22 <AnMaster> probably
13:20:35 <AnMaster> Deewiant, what do you think?
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:20:59 <AnMaster> travel in time it says
13:21:01 <Deewiant> aye
13:21:08 <AnMaster> but what does it mean
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:31 <AnMaster> ah
13:21:57 <AnMaster> sounds like that think ais[0-9]+ (can't remember actual nick) talked about
13:22:00 <AnMaster> for intercal
13:22:03 <AnMaster> MAYBE statement
13:22:07 <AnMaster> that was such a mess in C
13:22:14 <AnMaster> using setjmp and what not
13:22:39 <AnMaster> Deewiant, so I'm not going to implement TRDS then
13:22:42 <AnMaster> :)
13:22:53 <Deewiant> I suggest you don't
13:23:00 <Deewiant> it's /hard/
13:23:05 <Deewiant> to get it to work properly
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:26 <AnMaster> using getopt of course
13:23:35 <Deewiant> heh, null is just the default
13:23:45 <AnMaster> Deewiant, indeed, but I got a question
13:23:46 <AnMaster> say:
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:28 <AnMaster> ?
13:24:39 <Deewiant> yep
13:24:55 <AnMaster> so you need to keep some special instruction stack for each char to get loading right
13:25:01 <Deewiant> yep
13:25:19 <AnMaster> also, is it possible to do load PRNT, then QUUX then unload PRNT
13:25:24 <AnMaster> that is unload out of order
13:25:35 <AnMaster> and what should happen in such cases
13:27:03 <Deewiant> just what you expect
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:20 <AnMaster> yep
13:27:22 <Deewiant> then after that DE are bound to QUUX and ABC to PRNT
13:27:39 <Deewiant> and then if you unload QUUX
13:27:47 <Deewiant> DE are bound to PRNT
13:27:49 <AnMaster> err
13:27:51 <AnMaster> what?
13:27:55 <Deewiant> :-P
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:28:46 <AnMaster> err
13:28:48 <Deewiant> okay
13:28:53 <Deewiant> PRNT defines A, B, and C
13:28:55 <AnMaster> yep
13:29:00 <Deewiant> QUUX defines A, B, C, D, and E
13:29:05 <Deewiant> you load PRNT
13:29:12 <Deewiant> A, B, C are bound to PRNT's funcs
13:29:18 <Deewiant> you load QUUX
13:29:19 <AnMaster> so far I'm with you
13:29:24 <Deewiant> ABCDE are bound to QUUX's funcs
13:29:28 <AnMaster> yep
13:29:30 <AnMaster> that I got
13:29:31 <Deewiant> unload PRNT
13:29:36 <Deewiant> so, unload ABC
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:07 <AnMaster> yep
13:30:07 <Deewiant> i.e.
13:30:10 <Deewiant> A has a stack
13:30:15 <AnMaster> aye
13:30:17 <Deewiant> [PRNT, QUUX]
13:30:24 <Deewiant> with the top on the right
13:30:29 <Deewiant> so you unload PRNT
13:30:30 <AnMaster> yep
13:30:33 <Deewiant> you pop one off the stack
13:30:37 <Deewiant> you're left with [PRNT]
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:31:43 <Deewiant> following the stack of A:
13:31:44 <Deewiant> []
13:31:48 <Deewiant> load PRNT: [PRNT]
13:31:52 <Deewiant> load QUUX: [PRNT, QUUX]
13:31:56 <Deewiant> unload PRNT: [PRNT]
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:19 <Deewiant> I am 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:20 <Deewiant> which defines A
13:33:28 <Deewiant> so back at load QUUX: [PRNT, QUUX]
13:33:32 <Deewiant> unload FOOB: [PRNT]
13:33:39 <AnMaster> Deewiant, sorry bbl, phone
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:34 <Deewiant> sure you can
13:45:43 <AnMaster> it should reflect then shouldn't it?
13:45:58 <Deewiant> nope
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:01 <AnMaster> Deewiant, nah :/
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:32 <Deewiant> what's the 'right way'?
14:17:38 <Deewiant> I'd love to know :-P
14:17:40 <AnMaster> Deewiant, using terminfo
14:17:46 <Deewiant> yeah, that's what I tried
14:17:51 <AnMaster> I will research how tput does it
14:17:58 -!- timotiis has joined.
14:19:21 <AnMaster> it's a part of ncurces
14:19:29 <AnMaster> err spelling
14:20:43 <AnMaster> Deewiant, if you want I'll wgetpaste tput's source
14:20:53 <Deewiant> nah, can't be bothered now
14:20:55 <AnMaster> http://rafb.net/p/v2UBD448.html
14:20:56 <AnMaster> there
14:39:05 -!- whice has joined.
14:39:24 <whice> hi all
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:03 <AnMaster> Deewiant:
16:26:05 <AnMaster> BAD: 0y pushes wrong stack size
16:26:09 <AnMaster> what exactly does that mean
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:21 <Deewiant> which would be incorrect
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:04 <AnMaster> hm
16:29:18 * AnMaster does pass fspace around a lot, but that could be fixed
16:29:26 <AnMaster> yes I'll make it a global
16:29:29 <AnMaster> nice idea
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:18 <Deewiant> aye
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:32:41 * AnMaster sighs
16:32:49 <AnMaster> messes up my clean interface
16:33:14 <AnMaster> another thing,
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:29 <AnMaster> or relative to (0,0)?
16:33:38 <Deewiant> I'm not sure...
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:51 <AnMaster> and does mycology test that
16:33:55 <AnMaster> Deewiant, yes of course
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:10 <Deewiant> probably not
16:34:14 * AnMaster wonders
16:34:24 <Deewiant> just check the spec yourself :-P
16:34:48 <AnMaster> I looked at them
16:34:50 <AnMaster> That the time is 00 : 08 : 1128682830
16:34:59 <Deewiant> 'woops'
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:35:10 <AnMaster> :P
16:35:27 <AnMaster> it's still odd
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:14 <AnMaster> ?
16:37:23 <AnMaster> I push one for each of those
16:37:27 <Deewiant> then beats me
16:37:36 <Deewiant> ah, no, obvious?
16:37:40 <AnMaster> err?
16:37:46 <Deewiant> or no
16:37:48 <Deewiant> for the date it might have been
16:37:54 <AnMaster> That the year is 1900
16:38:03 <Deewiant> yeah, that makes sense
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:38:41 <AnMaster> Deewiant, I'm not that mad
16:38:45 <AnMaster> I just ask the author
16:39:00 <Deewiant> I don't care why it does that
16:39:09 <Deewiant> you give it incorrect values and it produces incorrect output :-P
16:40:48 <Deewiant> \f1+:*/:f1+:*%\f1+:*/
16:40:53 <Deewiant> looks like the code that calculates it
16:43:27 <AnMaster> mhm
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
16:59:25 <AnMaster> That the month is -253
16:59:25 <AnMaster> That the year is 109
16:59:26 <AnMaster> wtf
17:02:33 <AnMaster> ah better
17:02:59 <AnMaster> Deewiant, a bug in mycology:
17:03:01 <AnMaster> That the environment variables are:
17:03:01 <AnMaster> ÿÿ´
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:03:41 <AnMaster> err wait
17:03:46 <AnMaster> wtf
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:09 <AnMaster> s/=/?/
17:06:16 <Deewiant> not specified, I don't think
17:06:39 <AnMaster> ccbi does UTC heh
17:06:44 <AnMaster> easiest indeed
17:06:45 <Deewiant> yep
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:06 <Deewiant> TIME I think
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:05 <AnMaster> that looks wrong
17:14:08 <AnMaster> hehe
17:14:12 <Deewiant> indeed it does :-P
17:14:12 * AnMaster changes order
17:14:25 <Deewiant> ./cfunge08 isn't supposed to be there btw
17:14:38 <AnMaster> oh?
17:14:57 <Deewiant> only mycology.b98
17:15:20 <AnMaster> That the command-line arguments were: [ null "./cfunge08" "/home/arvid/bashfunge/trunk/mycology/mycology.b98" null ]
17:15:23 <AnMaster> slightly saner
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:40 <AnMaster> Deewiant, no ending null?
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:16:56 <AnMaster> is from ccbi
17:17:07 <Deewiant> only with env -i
17:17:17 <Deewiant> and I'm not going to figure out why
17:17:19 <AnMaster> Deewiant, ?
17:17:31 <AnMaster> weird
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:23 <Deewiant> how's that
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:40 <AnMaster> and
17:18:49 <AnMaster> int main(int argc, char *argv[], char*envp[])
17:18:55 <Deewiant> uh, no
17:18:56 <AnMaster> not sure of name for the latter
17:18:58 <Deewiant> the latter is only posix
17:19:05 <Deewiant> if that
17:19:11 <Deewiant> I don't know what it is but it's not standard C :-P
17:19:16 <AnMaster> ah
17:19:19 <AnMaster> well
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:19:54 <Deewiant> D is fine, it's not that
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:24 * AnMaster sighs
17:20:45 <AnMaster> well popping and pushing 0gnirts are harder then
17:20:49 <AnMaster> it's really easy in C
17:20:58 <Deewiant> not really, no
17:21:03 <Deewiant> or, well
17:21:06 <Deewiant> harder, yes
17:21:08 <Deewiant> but not hard :-P
17:21:15 <AnMaster> for (ssize_t i = len; i >= 0; i--)
17:21:16 <AnMaster> StackPush(str[i], stack);
17:21:22 <AnMaster> that is my StackPushString
17:21:52 <Deewiant> void pushStringz(char[] s) {
17:21:52 <Deewiant> ip.stack.push(0);
17:21:52 <Deewiant> pushString(s);
17:21:52 <Deewiant> }
17:21:52 <Deewiant> void pushStringz(char* s) {
17:21:54 <Deewiant> if (s) {
17:21:57 <Deewiant> while (*s++){}
17:21:59 <Deewiant> while (*s)
17:22:02 <Deewiant> ip.stack.push(cast(cell)*s--);
17:22:04 <Deewiant> } else
17:22:07 <Deewiant> ip.stack.push(0);
17:22:09 <Deewiant> }
17:22:13 <Deewiant> AnMaster: you're missing the calculation of len, which is a call to strlen
17:22:13 <AnMaster> hum?
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:22:33 <Deewiant> AnMaster: ah
17:22:39 <AnMaster> one go*
17:23:15 <AnMaster> Deewiant, and allows potential for cashing string length in case I push the same several times or such
17:23:18 <AnMaster> ;P
17:23:32 <Deewiant> I only use pushStringz with fingerprints, though
17:23:41 <Deewiant> nowhere in the normal code
17:23:49 <AnMaster> mhm
17:23:58 <AnMaster> my pop string is more complex
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:02 <Deewiant> CORD_ec? ew
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:27 <AnMaster> Deewiant, hahaha
17:25:42 <AnMaster> (/* Extensible cords are strings that may be destructively appended to. */
17:25:43 <AnMaster> err
17:25:52 <AnMaster> the ( was mispaste
17:25:52 <Deewiant> right
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:07 <AnMaster> from cord.h
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:51 <Deewiant> yeah
17:26:56 <Deewiant> just wondering why it's called cord and not just string
17:27:03 <AnMaster> because it isn't a string
17:27:04 <Deewiant> since, after all, "cords are [...] strings" :-P
17:27:07 <AnMaster> it's faster in some cases
17:27:22 <Deewiant> they look like strings to me
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:02 <AnMaster> nop
17:28:22 <AnMaster> typedef struct CORD_ec_struct {
17:28:22 <AnMaster> CORD ec_cord;
17:28:22 <AnMaster> char * ec_bufptr;
17:28:22 <AnMaster> char ec_buf[CORD_BUFSZ+1];
17:28:22 <AnMaster> } CORD_ec[1];
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:07 <Deewiant> that's all I need to know :-P
17:29:09 <AnMaster> yep
17:29:14 <AnMaster> and uses boehm-gc
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:32:19 <AnMaster> real 0m1.602s
17:32:21 <AnMaster> better
17:32:50 <Deewiant> odd that it's that slow
17:35:10 <Deewiant> how about without fingerprints? :-)
17:35:24 <AnMaster> replace all ( with r?
17:35:33 <AnMaster> won't it fail then due to no popping?
17:36:21 <Deewiant> no, I mean use ccbi -P
17:36:26 <Deewiant> or ccbi --disable-fprints, same thing
17:36:52 <AnMaster> real 0m1.110s
17:36:53 <AnMaster> then
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:06 <AnMaster> why? I'm busy
17:39:16 <AnMaster> I want to win over you
17:39:17 <AnMaster> so no
17:39:19 <Deewiant> :-D
17:39:20 <AnMaster> not yet
17:39:23 <Deewiant> you've already won
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:40:08 <AnMaster> heh I'll see
17:41:03 <Deewiant> thing is that there's nothing obviously slow that I can find
17:41:19 <AnMaster> hm
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:05 <AnMaster> <evil grin>
17:42:16 <AnMaster> profiled to match mycology
17:42:17 <AnMaster> ;D
17:42:20 <Deewiant> :-P
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:42:55 <Deewiant> hah, k :-D
17:43:06 <Deewiant> none of those extra-optimized k ones are called in mycology
17:43:12 <Deewiant> so it's actually a slowdown
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:43:36 <Deewiant> AnMaster: I see
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:29 <Deewiant> yeah, that helps
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:44:53 <AnMaster> about 1000 more
17:44:54 <AnMaster> or so
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:45:57 <Deewiant> I have no control over that
17:46:07 <AnMaster> heh, your problem
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:47:43 <AnMaster> with any order
17:47:45 <Deewiant> yep, that helps
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:20 <Deewiant> meh, overoptimization
17:48:34 <AnMaster> like __attribute__((warn_unused_result))
17:48:35 <AnMaster> :P
17:48:41 <AnMaster> to ensure correct code
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:12 <AnMaster> as well as give good warnings
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:16 <AnMaster> hehehe
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:50:32 <AnMaster> :P:P
17:50:56 <Deewiant> I honestly don't care
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:12 <Deewiant> AnMaster: that was GDC
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:51:49 <AnMaster> weird
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:52:43 <AnMaster> I use it for correct code
17:52:47 <Deewiant> it doesn't matter
17:52:48 <AnMaster> warn about unused results
17:52:50 <Deewiant> just like const
17:52:51 <AnMaster> that kind of stuff
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:21 <AnMaster> correctness*
17:53:21 <Deewiant> but my point is
17:53:26 <Deewiant> you use it for correctness
17:53:30 <AnMaster> no idea if gcc optimize on it
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:53:56 <Deewiant> yep
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:34 <AnMaster> like say:
17:57:40 <Deewiant> void x(out int x)
17:57:42 <AnMaster> void changemyparameter(char * foo);
17:57:48 <AnMaster> so it opterates on the thing in place
17:57:52 <AnMaster> operates*
17:58:31 <Deewiant> like said above, 'out' exists
17:59:00 <AnMaster> out and in? or just out?
17:59:53 <Deewiant> out, in, and inout
18:00:12 -!- jix has joined.
18:00:37 <AnMaster> ah
18:02:19 -!- jix has quit (Client Quit).
18:02:49 -!- jix has joined.
18:03:47 <AnMaster> Deewiant, real 0m0.374s
18:03:48 <AnMaster> :D
18:04:14 -!- jix has quit (Client Quit).
18:04:14 * AnMaster changes back to debug version to work on fingerprints
18:04:50 -!- jix has joined.
18:12:47 <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:00 <AnMaster> or maybe rather mycologys
18:35:04 <AnMaster> consider the stack
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:22 <Deewiant> I think
18:35:26 <AnMaster> Deewiant, exactly
18:35:33 <AnMaster> and mycology fails to handle that
18:35:43 <Deewiant> is that ambiguous, though
18:35:47 <Deewiant> it is
18:35:50 <Deewiant> because you can't know
18:35:59 <AnMaster> indeed
18:36:06 <Deewiant> so complain at the spec
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:13 <AnMaster> hm interesting
18:37:14 <Deewiant> never ambiguous
18:37:19 <Deewiant> and then you can have nulls in strings
18:37:20 <AnMaster> not backwards compatible
18:37:23 <AnMaster> Deewiant, indeed
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:00 <AnMaster> both push 2 according to gdb
18:39:01 <AnMaster> :/
18:39:12 <Deewiant> then y fails
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:37 * AnMaster sighs
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:04 <AnMaster> heh
18:41:40 <Deewiant> huh?
18:41:47 <Deewiant> oh, right
18:41:51 <AnMaster> That the stack sizes are [ 57 ] from top to bottom
18:41:52 <AnMaster> sure
18:41:58 <Deewiant> should be [ 0 ]
18:41:58 <AnMaster> (though not correct either)
18:42:01 <AnMaster> indeed
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:34 <AnMaster> TERM=t
18:47:40 <AnMaster> on env -i TERM=t
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:02 <AnMaster> TERM=t
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:49:15 <AnMaster> and so on
18:49:42 <Deewiant> doesn't do that with mi
18:49:44 <Deewiant> err
18:49:45 <Deewiant> me
18:49:58 <Deewiant> env -i ccbi mycology.b98
18:50:01 <Deewiant> That the environment variables are:
18:50:03 <Deewiant> and nothing
18:50:27 <AnMaster> yes
18:50:29 <AnMaster> but try setting one
18:50:35 <AnMaster> env -i TERM=t ccbi mycology.b98
18:50:38 <AnMaster> like that
18:50:38 <Deewiant> it goes through extern char **environ for the environment variables
18:50:40 <AnMaster> see what you get
18:50:46 <AnMaster> Deewiant, I use **environ too
18:51:20 <Deewiant> AnMaster: I don't get that
18:51:22 <Deewiant> only TERM=t
18:51:26 <AnMaster> Deewiant, weird
18:51:28 <AnMaster> very weird
18:51:38 <AnMaster> env -i TERM=t ./ccbi mycology.b98
18:51:41 <AnMaster> is the exact line I used
18:51:54 <AnMaster> as it both are in current dir
18:52:22 <Deewiant> using the exact same line, only TERM=t
18:52:35 <AnMaster> hm?
18:52:59 <Deewiant> env -i TERM=t ./ccbi mycology.b98
18:53:04 <Deewiant> TERM=t, nothing else
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:12 <AnMaster> _=./cfunge08
18:54:14 <AnMaster> with at _ there
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:06 <Deewiant> neither does mine, here :-P
18:55:17 <AnMaster> Deewiant, your older ones does too
18:55:35 <Deewiant> your machine is weird :-P
18:55:53 <AnMaster> something is weird
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:58:18 <AnMaster> nor do I in another xterm
18:58:21 <AnMaster> wtf
18:58:23 <Deewiant> :-D
18:58:30 <AnMaster> that's crazy
18:59:54 <AnMaster> actually I do get it in another xterm, in some
18:59:54 <AnMaster> wtf
19:00:17 <AnMaster> also I didn't get it before
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:01:45 <AnMaster> I peek and then push
19:01:49 <AnMaster> not pop and push twice
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:12 <Deewiant> hah
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:07 <AnMaster> Deewiant, right?
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:04:55 <AnMaster> :D
19:05:03 <AnMaster> Deewiant, err how?
19:05:05 <Deewiant> you're an optimization freak
19:05:09 <Deewiant> AnMaster: I don't know
19:05:15 <AnMaster> how would it matter
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:05:45 <AnMaster> err whatever
19:06:02 <Deewiant> I don't know, like I said
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:06:26 <Deewiant> so, doesn't matter
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:07:26 <Deewiant> yes, that's what I do as well
19:09:44 <AnMaster> ah this should be faster unless stack actually is empty:
19:09:46 <AnMaster> if (stack->top == 1)
19:09:46 <AnMaster> StackPush(0, stack);
19:10:01 <AnMaster> still not as good as just peek and push but
19:10:27 <Deewiant> you optimize too much :-P
19:10:46 <AnMaster> nah
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:14 <AnMaster> yep
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:33 <Deewiant> restrict :-P
19:14:43 <AnMaster> yes because I had to beat you
19:14:47 <AnMaster> :P
19:14:55 <Deewiant> you optimize too much, like said
19:14:59 <Deewiant> it really doesn't matter :-P
19:15:04 <AnMaster> Deewiant, not really, look at memcpy
19:15:09 <AnMaster> it uses restrict
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:24:42 <Deformative> o/
19:25:35 <AnMaster> Deewiant, hehehe :D
19:26:50 <Deewiant> AnMaster: where do I get libcord
19:27:18 <Deewiant> doesn't come with latest stable boehm-gc
19:28:01 <AnMaster> Deewiant, uh? 7.x?
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:28:48 <AnMaster> just not the library
19:28:57 <AnMaster> a bit confusing that
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:29:57 <AnMaster> Deewiant, I avoid them mostly
19:30:02 <AnMaster> this is a special case though
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:43 <AnMaster> not a 1.x one at least
19:30:45 <Deewiant> sure, 0.17 :-)
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:31 <AnMaster> not 100% sure
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:06 <AnMaster> Deewiant, 1.1 is great
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:32:35 <AnMaster> Deewiant, two things
19:32:39 <AnMaster> ccmake
19:32:47 <AnMaster> change build type to RELEASE
19:32:55 <AnMaster> that will get optimzing
19:33:01 <AnMaster> the second (if on 32-bit)
19:33:01 <Deewiant> how
19:33:07 <AnMaster> Deewiant, how what?
19:33:12 <Deewiant> do I change it to RELEASE
19:33:19 <AnMaster> ccmake .
19:33:28 <AnMaster> use arrow keys to select CMAKE_BUILD_TYPE
19:33:32 <AnMaster> pres enter to edit option
19:33:33 <Deewiant> bah, GUIs...
19:33:38 <AnMaster> make sure it says RELEASE
19:33:49 <AnMaster> Deewiant, you can do it with cmake, but I don't remember how!
19:34:04 <AnMaster> ccmake is ncurses anyway
19:34:28 <AnMaster> Deewiant, ok, second thing (if on 32-bit), open src/global.h
19:34:43 <Deewiant> aye, fast32_t
19:34:55 <AnMaster> and change FUNGEDATATYPE and FUNGEVECTORTYPE indeed
19:35:25 <Deewiant> alright, now we're talking
19:35:31 <AnMaster> Deewiant, better speed now?
19:35:39 <AnMaster> still got some issues with y
19:35:42 <AnMaster> working on those
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:11 <AnMaster> hehehe
19:36:39 -!- RedDak has quit (Read error: 110 (Connection timed out)).
19:36:51 <Deewiant> with output, 0.10 and 0.14
19:36:56 -!- Dagide has joined.
19:36:58 <Deewiant> i.e. not piped to devnull
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:37:53 <AnMaster> hehe
19:38:01 <AnMaster> Deewiant, I will add fingerprints
19:38:13 <AnMaster> and those may be slower
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:40 <AnMaster> and such
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:34 <AnMaster> Deewiant, I use stdint!
19:39:40 <AnMaster> it's more C
19:39:43 <AnMaster> iirc
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:07 <Deewiant> AnMaster: both are C99
19:40:35 <AnMaster> aha
19:40:37 <Deewiant> what you want is PRIdFAST64 instead of '%ld'
19:40:44 <Deewiant> and PRIdFAST32 for fast32_t
19:40:45 <AnMaster> I see forgot that
19:40:45 <Deewiant> I think
19:40:54 <Deewiant> or didn't know ;-)
19:40:57 <AnMaster> Deewiant, well fast32_t is not really supported
19:41:06 <Deewiant> alright, then 64, whatever
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:36 <AnMaster> interesting
19:41:42 <Deewiant> or more like 3 times
19:41:43 <Deewiant> actually
19:41:48 <Deewiant> since 0.39 would be 3 times
19:41:50 <AnMaster> Deewiant, about as fast as it gets on my cpu when mine is at it's best
19:41:56 <Deewiant> :-)
19:41:59 <AnMaster> :/
19:42:05 <AnMaster> your cpu is faster it seems
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:25 <AnMaster> stuff like that
19:42:33 <AnMaster> hash library got a few too
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:07 <Deformative> language
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:43:35 <Deewiant> AnMaster: alright
19:43:38 <Deewiant> heh
19:43:47 <AnMaster> and means boehm-gc too
19:43:56 <AnMaster> Deformative, tell us!
19:44:20 <Deformative> Continuation based, no return values.
19:44:22 <Deformative> Functional.
19:44:41 <Deewiant> ew, no return values
19:44:47 <Deformative> I will explain more later, I kinda wanna take a nap,
19:44:59 <AnMaster> Deformative, interesting
19:45:11 <AnMaster> Deewiant, oh and I found a bug in gdb today
19:45:12 <AnMaster> :)
19:45:17 <Deformative> I managed to do the factorial sequence.
19:45:23 <AnMaster> it can't print the extern **environ
19:45:28 <AnMaster> it just shows 0x0 for it
19:45:31 <AnMaster> for unknown reason
19:46:08 <Deewiant> I don't use debuggers so I can't help you with that
19:46:34 <Deformative> AnMaster: It is quite a bit of fun.
19:46:55 <Deformative> Should theororetically be far faster too.
19:47:11 <Deewiant> Deformative: I want to see a spec
19:47:12 <AnMaster> Deewiant, how do you fix bugs then?
19:47:13 <Deformative> Forth might be faster.
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:05 <Deformative> Maybe publish it.
19:48:48 <AnMaster> Deewiant, heh
19:48:55 <Deformative> It is really weird at first, but the more you use it, it gets easier.
19:49:02 <Deformative> And knowing forth helps a lot.
19:51:22 <Deewiant> I really should learn some factor
19:51:28 <Deformative> Nah,.
19:51:34 <Deformative> Factor is nothing, learn forth.
19:51:36 <Deformative> Forth is real.
19:51:41 <Deewiant> heh
19:51:52 <Deewiant> well, to be honest, any concatenative language would be fine
19:52:06 <Deformative> Forth, the origional.
19:52:31 <Deewiant> on my first try with Forth I got lost somewhere around loops and recursion
19:52:41 <Deewiant> and the alternative stack
19:53:06 <Deewiant> need to try again at some point
19:53:10 <Deformative> Ah.
19:53:17 <Deformative> I don't remember forth that much.
19:53:22 <Deewiant> :-D
19:53:22 <Deformative> But I did finish the book, I remember that much.
19:53:55 <Deewiant> Joy is nice too, I hear
19:54:06 <Deformative> Yeah.
19:54:11 <Deformative> But again.
19:54:13 <Deformative> It is nothing.
19:54:19 <Deewiant> :-)
19:54:20 <AnMaster> <Deewiant> and the alternative stack
19:54:26 <AnMaster> well after befunge that's NOTHING
19:54:26 <AnMaster> :P
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:54:47 <Deewiant> forth is :-P
19:54:52 <Deformative> Factor and joy have nothing,
19:55:09 <Deformative> Forth is rather beautiful.
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:56:54 <AnMaster> Deformative, colored stack!?
19:56:57 <AnMaster> wtf is that
19:57:04 <GregorR> (Yay libffi)
19:57:15 <Deformative> AnMaster: Color as part of the syntax
19:57:32 <Deformative> Red does one thing blue another.
19:57:51 <AnMaster> Deformative, err, then you load it as an image?
19:57:57 <Deformative> No.
19:58:00 <AnMaster> how then?
19:58:16 <AnMaster> latex code using colors?
19:58:28 <Deformative> The editor puts apropriat char in plazced.'
19:58:40 <Deformative> Wow, soprry trying to type with one hand.
19:58:42 <AnMaster> you mean ANSI escape codes?
19:58:45 <Deformative> Cheetos.
19:58:55 <Deformative> It can be implemented like that.
19:58:59 <Deformative> I do not know how colorforth does it.
19:59:04 <AnMaster> that's messy :/
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:24 <AnMaster> as in black and white
19:59:28 <Deformative> I am sure there are more.
19:59:38 <Deformative> I like it because it results in less characters.
19:59:42 <Deformative> Less characters = better
19:59:49 <AnMaster> but there are downsides too
19:59:52 <Deformative> Easy to read too.
19:59:58 <Deformative> Unless you are colorblind.
20:00:00 <AnMaster> like impossible to syntax highlight automatically
20:00:15 <Deformative> Why would you need syntax highlighting?
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:13:40 <AnMaster> :(
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:41 <Deewiant> which is global
20:16:46 <AnMaster> err
20:16:53 <AnMaster> cbreak
20:16:53 <AnMaster> Enter cell value to break on: j
20:16:53 <AnMaster> 'j' is invalid.
20:17:01 <AnMaster> did I misunderstand you?
20:17:02 <Deewiant> j isn't a value
20:17:03 <Deewiant> you need a number
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:44 * AnMaster sighs
20:17:48 <Deewiant> :-)
20:17:58 <AnMaster> Breaking on every cell with value 106 (0x6a), character 'j'.
20:17:59 <AnMaster> lol
20:18:02 <AnMaster> the other way you did
20:18:08 <Deewiant> well because that's trivial
20:18:10 <Deewiant> that's just cast(char)
20:18:48 * ais523_non-admin is worried that they can translate 0x6a to 'j' in their head
20:19:10 <Deewiant> ais523_non-admin: what's with the non-adminness
20:19:24 <ais523_non-admin> Deewiant: it's my Wikipedia alternate account
20:19:30 <ais523_non-admin> for use when I'm at a public computer
20:19:37 <Deewiant> ah
20:19:37 <ais523_non-admin> which I don't want to know any of my super-secure passwords
20:19:48 <Deewiant> I'd pick a shorter nick :-)
20:19:53 <ais523_non-admin> this is an unregistered nick
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:33 <Deewiant> it's still long
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:25 <GregorR> WTF?
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:22:46 <ais523_non-admin> s/restruction/restriction/
20:22:57 <ais523_non-admin> it's a compiler for an embedded system that's based on gcc
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:08 <AnMaster> :/
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:23 <ais523_non-admin> (I can recompile gcc, just not their version)
20:24:39 <Deewiant> AnMaster: it tests wrapping with # and x, I can't expect that you do j differently :-P
20:24:57 <AnMaster> Deewiant, hah
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:27:46 <AnMaster> but I guess you are right
20:28:04 <Deewiant> I'd argue it's more elegant, because that's essentially what x is
20:28:07 <Deewiant> er, what j is
20:28:19 <Deewiant> it's the simplest solution
20:28:54 -!- Dagide has quit (Remote closed the connection).
20:28:56 <AnMaster> hrrm
20:28:57 <Deewiant> given that you have a working x of course :-P
20:29:39 <AnMaster> yes i do
20:29:52 <Deewiant> are you /sure/? ;-)
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:04 <AnMaster> and hard to avoid that
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:25 <AnMaster> ah
20:30:37 <AnMaster> it doesn't test wrapping x twice in one instruction either does it?
20:30:45 <Deewiant> no, probably not
20:30:45 <AnMaster> as in a VERRRY long jump
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:22 <AnMaster> same algorithm
20:31:31 <AnMaster> err wrapping not copying
20:31:34 * AnMaster is tired
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:11 <AnMaster> ais523_non-admin, err?
20:32:13 <ais523_non-admin> at least, that's how I understand it
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:06 <AnMaster> hrm
20:33:32 <Deewiant> hmm, with x that's probably right
20:34:03 <ais523_non-admin> of course, with j you can wrap round more than once
20:34:13 <ais523_non-admin> because the delta is small, but the number of steps is large
20:34:15 <AnMaster> yes with j it's an issue
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:34:41 <AnMaster> wtf
20:34:43 <Deewiant> :-P
20:35:11 <AnMaster> oh wait
20:35:21 <AnMaster> you actually move with a while loop :(
20:35:27 <AnMaster> that's ineffective
20:35:37 <Deewiant> ?
20:35:42 <AnMaster> while (n--)
20:35:42 <AnMaster> ip.move();
20:35:46 <AnMaster> your j code
20:35:48 <Deewiant> in j, yes
20:35:56 <Deewiant> doing what I said above would be faster :-)
20:36:01 <AnMaster> hm true
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:31 <Deewiant> AnMaster: so no. :-)
20:37:49 <AnMaster> you could interpreter that sentence as it should only jump over spaces but not other instructions
20:37:50 <AnMaster> ;)
20:38:03 <Deewiant> hence the example which clarifies it
20:38:07 <AnMaster> yeah
20:38:07 <AnMaster> :/
20:38:36 -!- timotiis_ has joined.
20:38:53 <AnMaster> Deewiant, you won't need to same delta even I think
20:38:56 <AnMaster> not sure yet
20:39:01 <Deewiant> s/same/save/
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:12 <AnMaster> ip->delta.y *= jumps;
20:39:12 <AnMaster> ip->delta.x *= jumps;
20:39:13 <AnMaster> right?
20:39:21 <AnMaster> then you could get old again using /
20:39:23 <AnMaster> :D
20:39:29 <AnMaster> (probably slower though)
20:39:32 <Deewiant> well, sure, but the / slows it down :-P
20:39:33 <ais523_non-admin> AnMaster: as long as there wasn't integer overflow
20:39:42 <AnMaster> hah true
20:39:42 <Deewiant> and that
20:39:54 <Deewiant> bloody corner cases :-P
20:40:22 <Deewiant> hmm, this is the culmination of beautiful code
20:40:24 <Deewiant> void noOperation() {}
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:40:52 <AnMaster> as srandom
20:40:53 <AnMaster> I mean
20:41:06 <Deewiant> guess not
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:22 <AnMaster> hahaha
20:41:31 <AnMaster> you know, some languages complains about such
20:41:33 <AnMaster> bash is one
20:41:39 <Deewiant> screw bash, then
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:42:09 <Deewiant> no, probably not
20:42:25 <AnMaster> screw mersenne twister, then
20:42:30 <AnMaster> (whatever it is)
20:42:32 <Deewiant> heh
20:42:40 <AnMaster> wtf is a "mersenne twister"
20:43:03 <Deewiant> just google it
20:50:06 -!- timotiis has quit (Read error: 113 (No route to host)).
20:51:19 <ais523_non-admin> AnMaster: it's a randomisation technique
20:51:24 <ais523_non-admin> pseudo-randomisation, that is
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:03 <AnMaster> what about that one
20:53:05 <AnMaster> is it a good idea
20:53:06 <AnMaster> ?
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:53:29 <Deewiant> why not just usec directly
20:53:33 <ais523_non-admin> AnMaster: adding is likely better than taking the modulus
20:53:45 <ais523_non-admin> or using usec directly will perform much the same
20:54:02 <ais523_non-admin> (note that x % 0 = SIGFPE on many systems)
20:54:11 <AnMaster> ais523_non-admin, ok, however if you run them exactly one second after each other you get issues
20:54:24 <ais523_non-admin> AnMaster: is anyone that accurate?
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:54:55 <AnMaster> Deewiant, hm
20:55:09 <Deewiant> cryptographically secure random seed right there
20:55:14 <AnMaster> Deewiant, hm true
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:55:22 <AnMaster> but very short supply of it
20:55:28 <AnMaster> ais523_non-admin, yes exactly
20:55:36 <AnMaster> 4 bytes?
20:55:41 <AnMaster> would that be enough
20:55:41 <Deewiant> whatever srandom takes
20:55:46 <Deewiant> sure
20:55:56 <AnMaster> Deewiant, unsigned int
20:56:01 <AnMaster> depends on platform then
20:56:11 <Deewiant> so then read sizeof(unsigned)
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:56:31 <AnMaster> opening a stream I mean
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:33 <AnMaster> Deewiant, hahaha
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:57:43 <Deewiant> AnMaster: so I wouldn't worry
20:58:06 <Deewiant> AnMaster: yes, I do, but I haven't bothered to do it like that
20:58:24 * AnMaster prefers his switch case
20:58:26 <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 <ais523_non-admin> Deewiant: weak linking?
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:00:49 <AnMaster> :D
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:07 <AnMaster> of course profiling info too
21:01:08 <Deewiant> profile-guided optimization as well
21:01:11 <Deewiant> and whatever
21:01:22 <AnMaster> Deewiant, can't you do profiling with ccbi?
21:01:27 <AnMaster> err D I mean
21:01:30 <Deewiant> sure
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:15 <Deewiant> can't optimize that much
21:02:32 <ais523_non-admin> gcc uses profiling data for branch predicition IIRC
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:30 <AnMaster> indeed
21:03:34 <AnMaster> that's what I'm doing
21:03:42 <AnMaster> when speed testing against ccbi
21:03:49 <ais523_non-admin> it might depend on the program you're running as a test
21:04:00 <Deewiant> and it does
21:04:02 <AnMaster> ais523_non-admin, I use same that I speed test on
21:04:03 <AnMaster> :D
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:15 <AnMaster> ais523_non-admin, exactly
21:04:16 <Deewiant> but sucks for everything else :-P
21:04:24 <AnMaster> Deewiant, yes right :D
21:04:42 <AnMaster> but well I can ultra-tune it for anything
21:04:50 <AnMaster> just rerun with profiling
21:04:52 <AnMaster> to get that
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:25 <AnMaster> just normal -O
21:05:32 <AnMaster> you get something average
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:40 <AnMaster> ais523_non-admin, oh?
21:05:46 <Deewiant> ais523_non-admin: you're probably right
21:05:48 <ais523_non-admin> because some of your interp will be program-independent
21:05:54 <Deewiant> ais523_non-admin: but don't tell him that! ;-)
21:05:55 <AnMaster> ais523_non-admin, indeed
21:06:00 <AnMaster> that's true
21:06:04 <AnMaster> anyway the source is GPL3
21:06:14 <AnMaster> you can compile it with any flags you want
21:06:19 <AnMaster> it's your choice
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:03 <ais523_non-admin> AnMaster: neither do I
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:33 <AnMaster> so :P
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:07:52 <ais523_non-admin> (one is written for bash, the other for cmd.exe)
21:08:06 <ais523_non-admin> the main autoconf script is for the POSIX build
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:08:19 <AnMaster> I think boehm-gc does that
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:10:13 <AnMaster> it overwrites instead
21:11:07 <AnMaster> Deewiant, anyway even with -ggdb -O0 my interpreter is slightly faster than your with -O<whatever you used>
21:11:26 <AnMaster> D isn't good for speed is it?
21:11:29 <AnMaster> ;P
21:11:30 <Deewiant> AnMaster: yes, highly-optimized C beats lowly-optimized D.
21:11:36 <Deewiant> this is not news. :-P
21:11:40 * ais523_non-admin was under the impression that -g doesn't slow down a program, only inflates its size
21:11:44 <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:11:55 <AnMaster> not fully however
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:15 <ais523_non-admin> yes
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:10 <AnMaster> Deewiant, a lie
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:27 <AnMaster> and larger
21:13:31 <Deewiant> yep
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:45 <ais523_non-admin> AnMaster: and nonportable
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:07 <AnMaster> but not very portable still
21:14:24 <Deewiant> I'd argue .NET is more portable than Posix-only C :-P
21:14:51 <ais523_non-admin> Deewiant: most modern OSs are better at POSIX-C than at .NET
21:14:57 <AnMaster> Deewiant, no because mono doesn't work on all POSIX
21:15:05 <ais523_non-admin> and I even have a sort-of-POSIX implementation for DOS
21:15:06 <AnMaster> and even windows can do some POSIX I bet
21:15:18 <ais523_non-admin> AnMaster: Windows is actually POSIX-certified
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:27 <Deewiant> yes, and Linux isn't :-)
21:15:32 <ais523_non-admin> but you have to download all sorts of weird expansions from Microsoft to get the full effect
21:15:42 <AnMaster> ais523_non-admin, I see
21:16:03 * ais523_non-admin likes the definition of fork() on DJGPP (my POSIX-like compiler/environment for DOS)
21:16:20 <ais523_non-admin> it amounts to pid_t fork() {errno=ENOMEM; return -1;}
21:17:10 <AnMaster> Deewiant, if you want a cfunge with a fixed j wrapping, run bzr pull
21:17:27 <AnMaster> ais523_non-admin, -_-
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:17:53 <AnMaster> wow
21:18:27 <AnMaster> I'll always been thinking that DJGPP = cygwin gone insane
21:19:30 <Deewiant> DJGPP predates cygwin, no?
21:19:38 <AnMaster> maybe it does
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:20:53 <ais523_non-admin> AnMaster: no I didn't
21:20:59 <ais523_non-admin> AnMaster: what did you imply that from?
21:21:22 <ais523_non-admin> AnMaster: it does handle system() and exec() OK
21:21:40 <AnMaster> ais523_non-admin, err exec would replace current process
21:21:46 <AnMaster> and system would lock it up
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:05 <AnMaster> aha
21:22:11 <ais523_non-admin> I had a tendency to get sh-sick when using Windows...
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:11 <AnMaster> and trapping SIGCHILD
21:23:17 <ais523_non-admin> AnMaster: I know
21:23:29 <AnMaster> those would not work under DJGPP
21:23:31 <ais523_non-admin> BTW, what's the difference between fork and vfork?
21:23:47 <AnMaster> ais523_non-admin, see man pages, but on linux, basically none iirc
21:23:54 <AnMaster> it may matter on some *nix
21:24:05 <AnMaster> where vfork is faster
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:25:36 <AnMaster> Deewiant, heh
21:25:45 <AnMaster> $ ps aux | wc -l
21:25:46 <AnMaster> 156
21:25:50 <AnMaster> my linux runs fine
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:12 <AnMaster> with different threads
21:26:14 <AnMaster> heheh
21:26:42 <AnMaster> Deewiant, windows wouldn't handle 156 processes would it?
21:26:43 <Deewiant> yes, it's ridiculous
21:26:45 <ais523_non-admin> AnMaster: I have 119 by that ps count
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:06 <AnMaster> Deewiant, weird isn't it?
21:30:22 <Deewiant> ?
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:30:41 <AnMaster> information hiding++
21:30:42 <AnMaster> :)
21:31:13 <AnMaster> $ ps aux | wc -l
21:31:14 <AnMaster> 4
21:31:16 <AnMaster> su -
21:31:20 <AnMaster> $ ps aux | wc -l
21:31:20 <AnMaster> 182
21:31:28 * AnMaster nods, on his freebsd server
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?
21:59:54 <AnMaster> indeed
21:59:57 <AnMaster> with the right sysctl
22:00:01 <AnMaster> ais523_non-admin, as for $ and #
22:00:06 <AnMaster> it depends on the PS1 I set
22:00:09 <AnMaster> in my .bashrc
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:05:23 <AnMaster> :)
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:44:26 <AnMaster> ais523_non-admin, huh?
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:14 <AnMaster> even on single cpu
22:46:24 <AnMaster> programs could end before they got read and so on
22:46:40 <ais523_non-admin> that would just make programming it all the more interesting
22:46:51 <AnMaster> it wouldn't work
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").
2008-03-13
00:04:12 -!- olsner has quit ("Leaving").
00:10:46 <oklokok> MRyaaaaaaaaaaaaaaaaaaa
00:10:53 <oklokok> that is alll
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:14:46 <pikhq> >:D
00:15:09 <oerjan> shall i dare to ask what G is?
00:15:20 <oerjan> indeed i shall.
00:15:23 <oerjan> what is G?
00:15:30 <pikhq> Graham's number.
00:15:38 <oerjan> oops
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:21:36 <oklokok> *operator
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:15 <oklokok> / grasp
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:08 <pikhq> Bastard.
00:23:12 <oklokok> yeah, hasn't everyone
00:23:13 <oklokok> :D
00:23:50 <pikhq> Not I.
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:12 <oklokok> i'm your age
00:24:15 <pikhq> Ah.
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:05 <oklokok> hmm
00:25:15 <pikhq> I'm only a *moderate* genius at math. ;p
00:25:30 <oklokok> heh
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:26:44 <oklokok> what does that mean?
00:26:49 <pikhq> Tetration.
00:26:51 <oklokok> lambda x : e?
00:26:54 <oklokok> oh.
00:27:04 <pikhq> Or e\uparrow\uparrow x.
00:27:07 * pikhq is a LaTeX junky.
00:28:33 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
00:29:09 -!- Judofyr has joined.
00:29:16 <oklokok> what's x^x?
00:29:18 <oklokok> umm
00:29:21 <oklokok> D(x^x)
00:29:55 <oklokok> well, x^f(x) really, then just extend that
00:30:07 <oklokok> oh, right
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:21 <oklokok> umm
00:31:22 <oklokok> what
00:31:28 <oklokok> e up up x?
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:31:58 <oklokok> yeah
00:32:02 <pikhq> Ah.
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:06 <oklokok> ah.
00:35:19 <oklokok> that's a matter of definition then, lessee
00:35:40 <oklokok> hmm
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:17 <oklokok> :P
00:36:38 <pikhq> e upup x.
00:36:49 <pikhq> What part of that says it's *not* defined on the reals?
00:37:01 <oklokok> what't e upup 0.5?
00:37:03 <oklokok> *what's
00:37:17 <pikhq> e^{1/4}.
00:37:27 <pikhq> I think.
00:37:48 <pikhq> Nope.
00:37:52 <oklokok> i doubt that
00:37:56 <pikhq> It's not.
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:46 <oklokok> well
00:39:49 <pikhq> You're confusing e^^x and hyper(e, x, x). ;P
00:40:06 <oklokok> i am not
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:40:58 <oklokok> what is e^^0.5?
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:41 <oklokok> hmm
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:43:52 <pikhq> Yes.
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:15 <oklokok> that doesn't help at all
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:45:59 <pikhq> Blargh.
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:26 <oklokok> thought so
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:47:54 <oklokok> super-logarithm solution?
00:48:03 <oklokok> exponentiation uses the other inverse :)
00:48:30 <pikhq> True.
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:49:28 <oklokok> eh
00:49:32 <oklokok> e^^x
00:49:51 <oerjan> hm...
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:32 <oklokok> :)
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:12 <oklokok> hmm
00:55:25 <oklokok> is there a nice way to compute w?
00:55:33 <pikhq> Taylor series.
00:55:39 <oklokok> myah
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:31 <oerjan> aye
00:56:58 -!- Corun has joined.
00:57:51 -!- pikhq has set topic: - From Brainfuck to extending tetration to the reals..
01:00:24 -!- oerjan has quit ("Good night").
01:00:30 <oklokok> nightie
01:00:31 <oklokok> s
01:21:34 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
01:21:58 -!- Judofyr has joined.
01:33:01 -!- sebbu has quit ("@+").
01:38:16 -!- calamari has joined.
01:39:15 <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:39:19 <calamari> on->of
01:39:40 <pikhq> calamari: 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:26 <calamari> undefined of course
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:26 <pikhq> Of course.
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:41 <calamari> thus newlib
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:17 <pikhq> Yeah.
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:44:48 <pikhq> A royal pain. . .
01:44:49 <calamari> yep
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:16 <calamari> it'd be a new backend
01:45:30 <calamari> and assembler
01:45:36 <pikhq> Well, yeah.
01:45:55 <pikhq> I'm mostly saying 'Thank god GCC has all the frontends go to the same language.'
01:46:06 <calamari> yeah
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:07:50 <calamari> ARM, so gcc is ready to go
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:41:39 <Sgeo> Oh hi all
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:14 <Deformative> You have access to extra space.
02:44:29 <pikhq> Sorting algorithm. Lower bound is O(n log n).
02:44:41 <Deformative> It is _not_ sorting.
02:44:49 <pikhq> 'Some locations are duplicated'
02:44:53 <pikhq> Whaddya know. It's not.
02:45:12 <Deformative> some are no longer used
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:42 <Deformative> Less fun.
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:24 <Deformative> Huh?
02:47:30 <Deformative> Reread that.
02:47:38 <pikhq> So, a more *useful* question is "How can I efficiently move things around like this: ..."
02:47:55 <Deformative> I need the least number of movements.
02:48:06 <pikhq> Why do you need that?
02:48:20 <Deformative> Because it stays in the same block...
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:37 <Deformative> Yeah it is.
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:50:54 <pikhq> ;)
02:51:03 <pikhq> Oh.
02:51:07 <pikhq> You're doing it wrong.
02:51:08 <pikhq> ;)
02:51:18 <Deformative> Or you are understanding me 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:53:48 <Deformative> Does that make sense?
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:56:09 <Deformative> Yes.
02:57:14 <pikhq> Hmm.
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:44 <Deformative> The compiler should optimize that.
02:58:46 <pikhq> Doing it wrong. . . Use the C calling convention on your system of choice, for crissake.
02:58:56 <Deformative> Dude.
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:06 <Deformative> cherez: Sortof, not exactly.
03:00:13 <Deformative> pikhq: Indeed.
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:25 <Deformative> And therefor the stack does not change.
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:03 <Deformative> My language is purely continuations.
03:01:09 <Deformative> No returning, no stack frame.
03:01:16 <pikhq> Ah.
03:01:21 <pikhq> Well, the C calling convention won't work.
03:01:23 <pikhq> Carry on.
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:35 <Deformative> :D
03:01:39 <Deformative> cherez: Yes
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:23 <pikhq> :p
03:02:28 <Deformative> yes.
03:02:35 <Deformative> But perfect is preferable.
03:02:42 <Deformative> Brute forcing should be possible.
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:25 <pikhq> I *think*.
03:03:34 <pikhq> s/max/min/
03:03:50 -!- Tritonio_ has quit (Remote closed the connection).
03:04:02 <Deformative> No, a b c d ~> a b c d has no movements
03:04:10 <Deformative> The compiler needs to be able to figure that out.
03:04:23 <pikhq> True.
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:52 <Deformative> It should be like O(0)
03:05:54 <cherez> With O(n) temporary storage, I'd think this is probably O(n) or O(n^2).
03:05:59 <Deformative> It is JUST a goto then.
03:06:17 <Deformative> No movement.
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:43 <Deformative> Nothing does happen.
03:06:45 <Deformative> Nothing does happen.
03:06:46 <cherez> No movement?
03:06:52 <pikhq> No jump?
03:06:52 <Deformative> It happens at compile time, not runtime.
03:06:55 <cherez> A jmp is damn well something.
03:06:57 <pikhq> Just 'hlt'?
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:07:43 <Deformative> So yes, O(0)
03:07:51 <Deformative> Remember, the indexes DO NOT CHANGE
03:08:11 <Deformative> indices
03:08:25 <Deformative> It is all compile time.
03:08:35 <Deformative> So the program directly knows what to do.
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:09:36 <Deformative> Heh.
03:09:44 <Deformative> I told you it is a weird problem.
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:02 <Deformative> Least number of movl ?
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:29 <Deformative> Eh, and here is where I am stuck.
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:26 <Deformative> cherez: See where I am trying to go?
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:02 <cherez> An algorithm is easy.
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:25:22 <Deformative> Hmm...
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:30:42 <cherez> O(((n^2)^n)^2)
03:30:52 <pikhq> Jebus.
03:31:06 <Deformative> Oh well.
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:33:14 <cherez> The search is O(v^2)
03:34:33 -!- adu has joined.
03:35:25 <Deformative> Well, I have exams tomorrow, so I should sleep.
03:35:44 <Deformative> I'll be back tomorrow or such.
03:35:57 <adu> hi
04:31:19 -!- andydude has joined.
04:31:41 -!- adu has quit (Connection timed out).
04:32:17 -!- andydude has changed nick to adu.
05:06:01 -!- Sgeo has quit (Remote closed the connection).
05:21:09 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
05:55:24 -!- adu has quit (Remote closed the connection).
05:57:29 -!- adu has joined.
06:08:06 -!- calamari has quit ("Leaving").
06:34:30 -!- adu has quit (Remote closed the connection).
07:15:32 -!- Judofyr has joined.
07:37:15 -!- Judofyr has quit.
07:38:24 -!- BMeph has quit ("calls it a night").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:31:32 -!- oerjan has joined.
11:55:53 <AnMaster> err, wtf, looks like *code* memory is corrupted, anyway the output makes no sense
12:09:49 <AnMaster> Deewiant, there?
12:09:51 <AnMaster> BAD: the top of the stack after y isn't equal to what 1y pushes
12:09:55 <AnMaster> wtf does that one mean
12:10:00 <Deewiant> isn't it obvious
12:10:01 <Deewiant> it does y
12:10:03 <Deewiant> and then it does 1y
12:10:10 <Deewiant> and it expects the top 2 elements of the stack to be the same
12:11:59 <AnMaster> hm
12:12:23 <AnMaster> I'm trying to fix my y and I end up with heap or stack corruption :/
12:12:32 * AnMaster fixed that part at least
12:12:33 <Deewiant> isn't it fun to program in C ;-)
12:13:01 <AnMaster> aha got it
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:22 <AnMaster> yay for valgrind :D
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:52 <AnMaster> or rather
12:15:55 <Deewiant> yay for not having array bounds checks ;-)
12:15:56 <AnMaster> of by a lot
12:16:06 <AnMaster> basically unsigned int
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:28 <AnMaster> $1 = 18446744073709551610
12:16:29 <AnMaster> :D
12:16:34 <AnMaster> Deewiant, indeed I know
12:16:38 <AnMaster> still I'm slightly faster
12:16:41 <Deewiant> fortunately, I don't have to try very hard ;-)
12:16:43 <AnMaster> my y is not optimized
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:17:54 <Deewiant> even though it's just {}
12:18:29 <AnMaster> yes, and that's just silly
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:51 <AnMaster> PaX just does NX and such
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:19:10 <AnMaster> -fstack-protector-all
12:19:15 <AnMaster> likely slows things down
12:19:22 <Deewiant> something like that, anyway
12:19:59 <AnMaster> real 0m0.610s <-- debug build
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:22:46 <Deewiant> hrmh
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:16 <Deewiant> might be CCBI then
12:23:17 <Deewiant> lessee
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:24:38 <AnMaster> Deewiant, good question
12:24:42 <AnMaster> so it's a UNDEF?
12:24:49 <Deewiant> I'd say so, yes
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:28 <AnMaster> (if you got room there)
12:25:41 <Deewiant> naw, because that's uncontrollable - would need the user to pass some command line args
12:25:48 <AnMaster> ah true
12:25:51 <Deewiant> and to be frank there's a lot of "possibilities unmentioned in the specification"
12:25:59 <AnMaster> oh yes
12:26:01 <Deewiant> that was more like a roundup of stuff that is likely to crash/infinite loop your interpreter
12:26:14 <AnMaster> aha
12:26:19 <AnMaster> GOOD: y acts as pick instruction if given large enough argument
12:26:20 <AnMaster> yay
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:22 <AnMaster> 0 I think
12:28:30 <AnMaster> because I got no idea what to do there
12:28:35 <Deewiant> yeap
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:16 <AnMaster> err
12:29:22 <AnMaster> you got that messed up in ccbi --help
12:29:29 <Deewiant> yes, I know, I updated that
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:31:34 <AnMaster> \o/
12:31:42 <AnMaster> no fingerprints yet of course
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:30 <AnMaster> GregorR, hm likely
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:38:53 <AnMaster> that line rocks anyway :D
13:39:04 <AnMaster> profile based optimizing
13:41:04 <AnMaster> GregorR, you are right
13:41:18 <GregorR> Of course I am :P
13:41:20 <AnMaster> with int32_t I get faster actually
13:41:30 <AnMaster> $ time ./cfunge08 mycology.b98 > /dev/null
13:41:31 <AnMaster> real 0m0.266s
13:41:31 <AnMaster> user 0m0.074s
13:41:31 <AnMaster> sys 0m0.017s
13:41:38 <AnMaster> GregorR, madly optimized
13:41:44 <AnMaster> for mycology
13:41:45 <AnMaster> :D
13:42:18 <AnMaster> way faster than ccbi
13:42:45 <AnMaster> $ time ./ccbi --disable-fprints mycology.b98 > /dev/null
13:42:45 <AnMaster> real 0m0.513s
13:42:45 <AnMaster> user 0m0.173s
13:42:45 <AnMaster> sys 0m0.005s
13:42:48 <AnMaster> hehe
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:52:50 <AnMaster> GregorR, haheh :D
13:52:53 <AnMaster> haha*
13:56:48 <AnMaster> got it down even more
13:56:59 <AnMaster> real 0m0.132s
13:56:59 <AnMaster> user 0m0.078s
13:56:59 <AnMaster> sys 0m0.021s
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
13:57:12 <AnMaster> is my final command line
13:57:13 <AnMaster> :D
13:57:18 <AnMaster> for gcc
14:08:28 <AnMaster> real 0m0.127s
14:08:38 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
14:08:55 -!- Slereah has joined.
14:14:15 -!- slereah_ has joined.
14:15:47 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
14:26:07 <AnMaster> bbl
14:36:17 * slereah_ received "From Frege to Gödel"
14:36:23 <slereah_> 650 pages of logic :o
14:37:27 <slereah_> Heh. Begriffsschrift is funny looking.
14:38:48 <slereah_> Ah yes, "Building blocks of logic", by Schönfinkel.
14:38:48 <slereah_> Full of combinators :D
14:48:57 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
14:49:09 -!- slereah_ has joined.
14:59:55 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
15:01:57 -!- slereah_ has joined.
15:20:12 -!- sekhmet has quit (Remote closed the connection).
15:24:53 <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:23:50 <AnMaster> Deewiant, ok possible
16:25:57 * AnMaster fixes
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:01 <AnMaster> and so on
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:34:39 <Deewiant> it's a typo, not a bug
16:34:42 <Deewiant> i.e. it only affects output
16:34:45 <AnMaster> ah
16:34:49 <AnMaster> Deewiant, in what way?
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:16 <AnMaster> err
16:35:18 <AnMaster> there is a > there
16:35:21 <AnMaster> not a <
16:35:26 <Deewiant> right, my bad
16:35:29 -!- slereah_ has joined.
16:35:37 <Deewiant> see how easy it is to make typos? ;-)
16:35:59 <AnMaster> heh
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:36:43 <AnMaster> ah now I see it
16:37:23 <AnMaster> right
16:37:31 <AnMaster> Deewiant, you want to upload a fixed version
16:37:35 <Deewiant> already did
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:37:59 <AnMaster> probably
16:38:00 <Deewiant> heh
16:38:03 <Deewiant> just keep one copy
16:38:08 <AnMaster> well yes
16:40:05 <AnMaster> Deewiant, btw does the standard say if months should be 0-indexed or 1-indexed
16:40:10 <AnMaster> in the y result
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:03 <AnMaster> Deewiant, heh indeed
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:41:42 <AnMaster> isn't that was ccbi does?
16:41:46 <Deewiant> yes
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:42:30 <AnMaster> just FYI ;P
16:43:18 <Deewiant> which is messed up IMO
16:43:18 <Deewiant> because it has a 1-indexed day
16:43:39 <AnMaster> indeed
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:51:37 <AnMaster> as in using 32-bit data types
16:51:43 <AnMaster> but compiling for 64-bit
16:54:57 <pikhq> Bullshit.
16:56:54 <AnMaster> pikhq, what?
16:56:58 <AnMaster> I did profiling :P
16:57:00 <pikhq> ...
16:57:05 <AnMaster> on my app
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:44 <pikhq> Ah.
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:13 <AnMaster> :)
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:00 <AnMaster> just no way
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:39 <AnMaster> pikhq, anyway:
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
16:59:56 <AnMaster> :D
17:00:27 <AnMaster> -ffast-math made it *slower* in fact
17:00:28 <AnMaster> no idea why
17:00:38 <Deewiant> that's just overkill :-P
17:00:46 <AnMaster> Deewiant, the line?
17:00:48 <AnMaster> nah
17:00:53 <pikhq> I'm not talking 'all of Befunge', just "mov %eax, $foo" vs. "mov %rax, $foo".
17:00:53 <pikhq> ;p
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:27 <pikhq> Still: don't.
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:51 <AnMaster> see man page
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:12 <pikhq> True.
17:02:19 <AnMaster> just working on beating Deewiant's CCBI :D
17:02:23 <AnMaster> at speed
17:02:24 <pikhq> -O2 is the most optimization you can do sanely.
17:02:27 <pikhq> Oh.
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:42 <AnMaster> :P:P
17:02:46 <pikhq> Oh.
17:02:50 <pikhq> In that case, just carry on.
17:02:54 <AnMaster> pikhq, heheh
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:00 <AnMaster> haha yes
17:04:11 <AnMaster> pikhq, work 25 hours / day?
17:04:15 <pikhq> Of course!
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:03 <AnMaster> pikhq, aha, I see
17:06:09 <pikhq> The problem being that, by default, and floating point code goes through SSE2, which is faster.
17:06:14 <pikhq> s/and/any/
17:06:41 <AnMaster> aha
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:08:14 <AnMaster> as well as -ffast-math :D
17:08:17 * AnMaster runs
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:44 <AnMaster> anyway I use a old gcc, 4.1.2
17:11:54 <pikhq> gcc (GCC) 4.1.2 (Gentoo 4.1.2 p1.0.2)
17:11:54 <AnMaster> no idea if it makes use of it
17:11:56 <pikhq> So do I.
17:12:00 <AnMaster> pikhq, yep I got it in CFLAGS
17:12:03 <pikhq> Mmkay.
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:07 <AnMaster> only x and y
17:14:12 <AnMaster> probably not worth it
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:16:55 <AnMaster> ip->delta.x *= -1;
17:16:55 <AnMaster> ip->delta.y *= -1;
17:17:06 <AnMaster> or
17:17:12 <AnMaster> ip->position.x += ip->delta.x * steps;
17:17:12 <AnMaster> ip->position.y += ip->delta.y * steps;
17:18:16 <AnMaster> real 0m0.097s
17:18:17 <AnMaster> yay!
17:18:23 <pikhq> Hmm.
17:18:23 <AnMaster> slightly less than 0.1 second
17:18:27 <AnMaster> \o/\o/
17:18:28 <pikhq> Spiffy.
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:03 <pikhq> Mmm.
17:21:30 <AnMaster> still "very fast" with 64-bit
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:04 <AnMaster> pikhq, probably
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:22:43 <AnMaster> indeed :(
17:22:54 <AnMaster> with 64-bit data types:
17:22:55 <AnMaster> real 0m0.159s
17:23:02 <AnMaster> still fast I'd say
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:11 <pikhq> 256KB L2 cache.
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:33 <AnMaster> Deewiant, hm
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:12 <AnMaster> :)
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:25:35 <AnMaster> bbl food
17:29:38 <Deewiant> you do realize there are frontends to gprof :-)
17:32:22 <AnMaster> Deewiant, tried kprof
17:32:35 <AnMaster> know any good frontend?
17:32:42 <Deewiant> no, haven't used gprof much
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:30 <AnMaster> Deewiant, currently yes
17:49:40 <AnMaster> of course file IO would make it slower
17:49:49 <AnMaster> and so on
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:03 <AnMaster> ah ok
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:54:10 <Deewiant> don't know
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:57:56 <AnMaster> you said that before
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:21 <AnMaster> hm
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:33 <Deewiant> yep
17:59:43 <AnMaster> the one with the advertisement rule?
17:59:49 * AnMaster changes the comment
17:59:55 <Deewiant> no, that was the 4-clause one
17:59:58 <AnMaster> ah
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:45 <Deewiant> how's 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:02:36 <Deewiant> s/src/open src/
18:02:45 <AnMaster> heh ok no
18:03:59 <Deewiant> google finds some stuff
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:20 <Deewiant> to the files in hsql.jar:
18:04:21 <AnMaster> Deewiant, just rewrote comment locally anyway before you mentioned it her
18:04:22 <Deewiant> and such
18:04:33 <AnMaster> it's shorter now
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:06:08 <AnMaster> ok good idea
18:09:55 -!- slereah_ has joined.
18:09:55 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
18:14:20 <AnMaster> Deewiant, pushed change. Hope you are now happy
18:15:22 <Deewiant> yeh, looks good to me :-)
18:16:18 <AnMaster> Contents of section .data:
18:16:18 <AnMaster> 606128 00000000 00000000 00000000 00000000 ................
18:16:18 <AnMaster> 606138 305e6000 00000000 0^`.....
18:16:21 * AnMaster wonders what that is
18:16:36 <AnMaster> almost all is .rodata
18:16:45 <Deewiant> heh
18:16:54 <AnMaster> I guess some static variables
18:17:13 <pikhq> Yeah.
18:17:16 <pikhq> And string constants.
18:17:26 <AnMaster> pikhq, nop they are .rodata
18:17:29 <pikhq> s/constant/literal/
18:17:34 <AnMaster> so are literals
18:17:41 <pikhq> Hmm.
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:19:48 <AnMaster> heh
18:27:05 <oklopol> does anyone compile befunge
18:27:05 <oklopol> ?
18:27:11 <oklopol> or anything
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:28:58 <oklopol> *so
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:36 <lament> jti
18:34:38 <lament> jit
18:34:42 <lament> somewhere
18:34:44 <AnMaster> hm
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:43 <AnMaster> hm
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:35:58 <oklopol> *written
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:07 <lament> that's JIT
18:36:16 <AnMaster> lament, yep
18:36:19 <AnMaster> sounds nice
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:32 <lament> but, lazy
18:36:35 <Deewiant> that appears to be the only reference to betty, though :-/
18:36:43 <Deewiant> that Google can find, anyway
18:36:43 <AnMaster> oklopol, yes in befunge I would
18:37:24 <oklopol> i see
18:37:29 -!- faxathisia has joined.
18:37:50 <AnMaster> http://quadium.net/funge/tbc/
18:37:52 <AnMaster> there is that I find
18:38:07 <Deewiant> doesn't count
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:02 <ehird> AnMaster: no
18:39:08 <AnMaster> no?
18:39:11 <lament> AnMaster: interpreter is a main loop that looks at individual instructions
18:39:16 <AnMaster> lament, aye
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:27 <AnMaster> like ccbi and cfunge does it
18:39:37 <AnMaster> lament, sounds weird
18:39:41 <lament> not really
18:39:43 <ehird> AnMaster: not weird
18:39:49 <AnMaster> hm
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:11 <ehird> so, maybe weird
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:25 <AnMaster> try one in VHDL
18:40:26 <AnMaster> or whatever
18:40:28 <AnMaster> :D
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:37 <AnMaster> ehird, no idea that they were
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:40:56 <AnMaster> slow?
18:40:58 <AnMaster> :P
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:31 <Deewiant> :-)
18:41:35 <ehird> hmm
18:41:38 <ehird> StringThreadedCode
18:41:56 <ehird> that sounds AWFUL
18:41:56 <ehird> :D
18:41:56 <lament> ehird: http://shootout.alioth.debian.org/gp4sandbox/benchmark.php?test=all&lang=bigforth&lang2=gcc
18:41:58 <ehird> oh my god
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:01 <ehird> :D
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:29 <lament> ehird: uhhhhh?
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:42 <ehird> yes
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:50 <ehird> are blazing
18:42:53 <lament> so for benchmarks
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:13 <lament> i don't understand
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:38 <ehird> lament: Yep.
18:43:44 <lament> you're ntus
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:12 <ehird> :p
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:05 <ehird> also
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:48:41 <AnMaster> as in
18:48:45 <AnMaster> coded in VHDL
18:48:49 <AnMaster> or something like that
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:15 <AnMaster> to 1d?
18:49:18 <ehird> 1-d
18:49:24 <AnMaster> ehird, why?
18:49:39 <AnMaster> it could represent memory as 2D
18:49:43 <AnMaster> not impossible
18:49:50 <AnMaster> for befunge93 at least
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:27 <AnMaster> those are painful
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:10 <AnMaster> CCBI certainly does
18:54:31 <ehird> Deewiant: nc
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:17 <Deewiant> and IMAP
18:55:19 <Deewiant> and possibly others
18:55:22 <AnMaster> it is just that a gc is so much easier
18:55:27 <AnMaster> Deewiant, what is IMAP one?
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:56:50 <AnMaster> :P
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:57:55 <Deewiant> TRDS is definitely extensive
18:58:00 <AnMaster> yes
18:58:01 <Deewiant> the rest, I don't think so
18:58:03 <AnMaster> and IMAP would be too
18:58:04 <Deewiant> can't recall anyway
18:58:10 <Deewiant> not IMO
18:58:14 <AnMaster> as I use a switch case
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:58:57 <AnMaster> ehird, lots
18:58:59 <AnMaster> almost all
18:59:04 <Deewiant> ehird: all that I know of except WIND and SGNL
18:59:11 <AnMaster> Deewiant, and FNGR
18:59:11 <ehird> Deewiant: what does TURT use?
18:59:12 <Deewiant> and TERM on non-Windows, unfortunately
18:59:12 <ehird> :)
18:59:14 <AnMaster> or whatever it was
18:59:22 <Deewiant> AnMaster: FNGR?
18:59:28 <Deewiant> ehird: outputs an SVG file
18:59:28 <AnMaster> Deewiant, RC/Funge crap
18:59:34 <Deewiant> AnMaster: oh yeah, that one
18:59:36 <AnMaster> Deewiant, you said it in your readme
18:59:42 <ehird> Deewiant: oh sheesh
18:59:43 <ehird> that sucks
18:59:43 <ehird> :D
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
18:59:58 <AnMaster> I don't plan to do TURT
18:59:58 <Deewiant> ehird: it's up to you
19:00:06 <ehird> Deewiant: mine will do SDL, SVG, PNG, ... :D
19:00:10 <Deewiant> :-P
19:00:10 <ehird> configurable!
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:43 <AnMaster> you need some variant
19:00:45 <ehird> totallyfreakingawesomebefunge98 --fprint=TURT,--sdl
19:00:52 <ehird> AnMaster: ehm, why would i need to
19:00:54 <AnMaster> ah that would work
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:14 <AnMaster> ehird, eww
19:01:17 <ehird> parses the options
19:01:22 <ehird> and sends them off to NAME finger print
19:01:22 <AnMaster> you can't use getopt then :(
19:01:27 <ehird> AnMaster: thank god
19:01:30 <AnMaster> ehird, getoptlong is evil
19:01:33 <ehird> yes
19:01:34 <AnMaster> it is GNU only
19:01:36 <ehird> so is getopt
19:01:38 <ehird> and
19:01:41 <ehird> AnMaster: that's ridiculous
19:01:42 <AnMaster> ehird, I use getopt :)
19:01:45 <ehird> bsds implement it nowadays
19:01:47 <lament> gnu is evil!!!
19:01:56 <AnMaster> lament, hah not sure about that
19:02:03 <AnMaster> ehird, what language will you code yours in?
19:02:10 <faxathisia> I want Aquarius :(
19:02:11 <Deewiant> ehird: malbolge? :-)
19:02:15 <ehird> AnMaster: writing one in python with numpy for fungespace at first
19:02:17 <ehird> then, C.
19:02:21 <ehird> micro-optimized, of course.
19:02:25 <AnMaster> ehird, haha
19:02:27 <AnMaster> ehird, C99?
19:02:28 <Deewiant> you're all insane :-)
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:36 <ehird> I mean, C89. :)
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:02:52 <AnMaster> :P
19:02:56 <AnMaster> C99 feature
19:02:59 <AnMaster> :P:P:P
19:03:02 <ehird> AnMaster: __asm__ represent
19:03:07 <AnMaster> ehird, not portable
19:03:11 <Deewiant> ehird: how about fortran-77
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:03:43 <AnMaster> NIH?
19:03:47 <ehird> Not INvented Here
19:03:56 <AnMaster> -_-
19:04:33 <AnMaster> Deewiant, anyway I'm wondering about a 128 bit integer mode, iirc there is some __int128 type of gcc?
19:04:39 <AnMaster> would be slow of course
19:04:43 <AnMaster> but just as an alternative
19:04:53 <Deewiant> beats me, and go ahead
19:05:01 <ehird> hmm
19:05:06 <ehird> does the spec permit bignums?
19:05:07 <ehird> :D
19:05:11 <AnMaster> ehird, they do
19:05:13 <Deewiant> not very well
19:05:16 <ehird> Deewiant: damn
19:05:20 <AnMaster> ehird, as long as you can say how many bytes it is
19:05:20 <Deewiant> there are some grey areas
19:05:22 <ehird> so like all programs would break?
19:05:26 <ehird> AnMaster: -1
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:44 <ehird> no, wait
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:51 <AnMaster> ehird, for funge08 standard
19:05:52 <ehird> so you can say infinity
19:05:52 <ehird> :D
19:05:53 <AnMaster> or maybe 09
19:05:55 <AnMaster> I'll see
19:06:12 <AnMaster> ehird, hah
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:07:14 <AnMaster> by mine
19:07:18 <AnMaster> just so you know
19:07:22 <AnMaster> and don't try to use the same
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:10 <AnMaster> Deewiant, ouch
19:08:24 <AnMaster> Deewiant, we really need a new register
19:08:28 <AnMaster> maybe you want to host it?
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:44 <AnMaster> Deewiant, SCKE?
19:08:44 <ehird> :|
19:08:48 <Deewiant> AnMaster: another fingerprint
19:08:49 <AnMaster> ehird, it wasn't
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 <ehird> so HAH
19:09:21 <AnMaster> ehird, anyway mine is released
19:09:31 <ehird> bah
19:09:31 <ehird> ;)
19:09:31 <AnMaster> ehird, and CFUN is my handprint
19:09:36 <ehird> tough. :p
19:09:41 <AnMaster> for you yes
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:21 <AnMaster> ehird, well they are indeed
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:41 <AnMaster> ehird, I don't
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:52 <AnMaster> as well
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:00 <AnMaster> Deewiant, indeed
19:11:03 <AnMaster> ehird, 404
19:11:07 <ehird> AnMaster: 404, gosh really
19:11:09 <ehird> that was an example URIprint
19:11:10 <ehird> duh
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:11:38 <ehird> :)
19:12:00 <AnMaster> bbl food
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:43 <ehird> :)
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:21 <Deewiant> agreed
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:08 <AnMaster> thanks
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:20 <ehird> - releases ext
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:55 <Deewiant> that's what I was thinking
19:15:57 <ehird> both of those will basically never happen
19:15:58 <ehird> ever
19:15:58 <ehird> :)
19:16:02 <Deewiant> because, in 99% of cases, they will be URLs.
19:16:05 <ehird> Deewiant: yes.
19:16:08 <ehird> but even so
19:16:13 <ehird> the likelyhood of the above
19:16:18 <ehird> is ..
19:16:19 <ehird> yeah.
19:16:24 <Deewiant> :-)
19:16:37 <ehird> ccbi.d:319: Error: cannot implicitly convert expression ((helpRegex.test)(s)) of type int to bool
19:16:38 <ehird> whut
19:16:38 <ehird> :D
19:16:53 <Deewiant> old compiler, old tango?
19:16:59 <ehird> Deewiant: 4.1
19:17:02 <ehird> and dsss'd tango
19:17:07 <ehird> lunix, x86
19:17:17 <Deewiant> 4.1 doesn't mean anything, which version of GDC is it :-)
19:17:29 <Deewiant> and is that all it says?
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:51 <ehird> so.
19:17:54 <ehird> and yeah
19:17:55 <Deewiant> I'll have a look see
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:25 <ehird> :)
19:18:27 <AnMaster> ehird, no it isn't
19:18:50 <ehird> AnMaster: because denying something i said on irc will cause the befunge police to come and get me? :)
19:18:57 <AnMaster> ehird, nop
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:03 <AnMaster> just because I released first
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:19:57 <AnMaster> ehird, I did
19:20:00 <AnMaster> you weren't here
19:20:12 <ehird> well then, now i am
19:20:20 <AnMaster> and now it's too late
19:20:20 <ehird> also, sorry for not being present 100% of the time
19:20:24 <ehird> and no it isn't
19:20:32 <ehird> it takes about 10 keypresses to tap over a string literal.
19:20:40 <AnMaster> it does for you
19:20:44 <AnMaster> but release is made
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:21:53 <ehird> to trolling
19:21:54 <ehird> :)
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:15 <AnMaster> as well
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:10 <AnMaster> Deewiant, who? ais?
19:27:25 <ehird> Deewiant: I do not see why I would mention it when the question of usage was not asked.
19:27:42 <Deewiant> AnMaster: anybody :-P
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:35 <AnMaster> and no one else complained
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:28:58 <ehird> exactly
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:04 <AnMaster> that is as good?
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:45 <AnMaster> same for me
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:36:36 <AnMaster> ehird, see what Deewiant said
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:29 <AnMaster> Deewiant, create idea!
19:38:31 <AnMaster> greate*
19:38:32 <AnMaster> great*
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:38:47 <ehird> e
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:02 <AnMaster> as standard modes
19:41:08 <AnMaster> I already got some code in place for it
19:41:13 <AnMaster> just not functional yet
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:28 <ehird> handprint
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:11 <Deewiant> it's obvious he doesn't care
19:42:33 <Deformative> Hi all.
19:42:45 <Deewiant> Deformative: got a spec written yet?
19:43:03 <Deformative> I have it started.
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:43:57 <AnMaster> yes it would
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:44:18 <AnMaster> mine*
19:45:04 <AnMaster> bbl implementing fingerprints
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:54:57 <Deformative> Heh.
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> CHALLENGE
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:41 <ehird> :D
20:15:54 <ehird> impossible i think
20:17:16 <Deformative> ehird: Did you see the challenge from yesterday?
20:19:48 <ehird> Deformative: No,
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:21 <ehird> Deewiant: haha
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:21:09 <Deformative> ehird: Want me to post it?
20:26:25 -!- slereah__ has joined.
20:28:21 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
20:35:03 <ehird> Deformative: k.
20:35:15 <slereah__> http://members.iif.hu/visontay/ponticulus/images/szovegek/begriffsschrift.jpg
20:35:16 <slereah__> Heh.
20:35:34 <slereah__> For some reason, this notation was never used again, as far as I know!
20:39:25 <ehird> hmmmm
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:38 <ehird> :D
20:39:57 <AnMaster> <Deewiant> it'll probably work in most cases
20:39:57 <AnMaster> <Deewiant> and crash the program in others ;-)
20:39:58 <AnMaster> indeed
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:40:51 <AnMaster> it will unmap it on free
20:41:09 <ehird> hmm, that IS one thing the world needs...
20:41:18 <ehird> symntax for template sin c commands
20:41:18 <AnMaster> ehird, what?
20:41:19 <ehird> err
20:41:19 <ehird> comments
20:41:20 <ehird> like
20:41:25 <AnMaster> / foo
20:41:28 <AnMaster> //foo
20:41:30 <AnMaster> I mean
20:41:30 <AnMaster> yes
20:41:31 <ehird> /*$ foo */
20:41:36 <AnMaster> ehird, err what?
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:00 <AnMaster> it's a C++ feature
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:15 <AnMaster> err
20:42:25 <AnMaster> ehird, see: #define
20:42:30 <ehird> AnMaster: haahahahahaha
20:42:34 <ehird> I mean for interpolating from EXTERNAL sources.
20:42:38 <AnMaster> hm
20:42:40 <ehird> Like the underload compiler does its compiler
20:42:42 <ehird> *compiling
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 <AnMaster> yes?
20:42:59 <ehird> Then, it would do something like:
20:43:05 <Deewiant> launch the missiles
20:43:08 <Deewiant> and blimps fall from the sky
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:29 <AnMaster> we
20:43:30 <AnMaster> w/e
20:43:31 <AnMaster> *
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:22 <ehird> let's say
20:44:31 <ehird> textOfPrelude = "void foo() { /*$ blimps */ }"
20:44:31 <AnMaster> ehird, you replace text at a marker?
20:44:34 <ehird> and
20:44:38 <ehird> compiledCode = "foobar"
20:44:40 <ehird> that would return
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:44:57 <AnMaster> mhm
20:45:03 <AnMaster> ehird, interesting
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:43 <ehird> try it
20:45:48 <AnMaster> ehird, yes I know it does
20:45:53 <ehird> it could do something similar for interpolation stuff
20:46:00 <ehird> the only problem is, /*$ ... */ is ugly
20:46:00 <ehird> :)
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:36 <ehird> Deewiant: heh
20:46:44 <AnMaster> Deewiant, hah
20:46:44 <ehird> hmm
20:46:46 <ehird> /*< blimps >*/
20:46:49 <ehird> is highlighted differently by gcc
20:47:02 <Deewiant> gcc? O_o
20:47:02 <AnMaster> by gcc?
20:47:06 <ehird> errr
20:47:07 <ehird> emacs
20:47:08 <ehird> XDDD
20:47:10 <faxathisia> lol
20:47:11 <faxathisia> what's this for?
20:47:12 <AnMaster> ehird, hah :D
20:47:16 <ehird> faxathisia: the underload compiler
20:47:21 <faxathisia> same author..
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:37 <ehird> :)
20:47:40 <ehird> AnMaster: I have no goddamn idea
20:47:44 <faxathisia> ok cool
20:47:44 <ehird> but it works out nicely
20:47:46 <ehird> hmm
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 <AnMaster> you risk a collision
20:47:57 <ehird> and let the templating language do the numbering
20:47:58 <ehird> Like thus:
20:48:26 <faxathisia> 7
20:48:35 <ehird> /*< foreach blimps blimp >*/ case /*< blimp.num >*/: /*< blimp.code >*/ break;
20:48:36 <ehird> :D
20:48:37 <Deewiant> 6
20:48:37 <ehird> err
20:48:40 <ehird> and an endforeach
20:48:41 <ehird> heh
20:48:57 <faxathisia> why is it inside comments o_o
20:49:04 <ehird> faxathisia: so it stays valid c.
20:49:05 <ehird> duh.
20:49:05 <ehird> :)
20:49:09 <ehird> well my example isn't valid
20:49:09 <ehird> hehe
20:49:10 <ehird> but still
20:49:10 <faxathisia> doesn't look like valid C
20:49:14 <ehird> it SCANS as valid c
20:49:18 <faxathisia> heh
20:49:22 <ehird> and editors highlight it OK
20:49:23 <faxathisia> I see
20:49:27 <faxathisia> Yeah cool
20:49:28 <ehird> also indent it ok
20:49:32 <faxathisia> It's a good idea
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:43 <ehird> :)
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:05 <ehird> embeddedness
20:51:07 <ehird> /*< foreach blimps as blimp: 'case $blimp.num: $blimp.code break;\n' >*/
20:51:08 <ehird> haha
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:04 <AnMaster> using emacs-23-pre
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:53:35 <AnMaster> ehird, one line comments
20:53:39 <AnMaster> for doxygen
20:53:46 <AnMaster> I've seen it in structs
20:53:47 <AnMaster> like
20:53:57 <AnMaster> /*< blah blah */
20:54:23 <ehird> /*< for i=0,blimpc do out("case ", i, ":\n", blimps[i], "\nbreak;") end >*/
20:54:25 <ehird> hee
20:55:14 <AnMaster> ehird, anyway (real world example):
20:55:16 <AnMaster> typedef struct {
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:55:47 <ehird> AnMaster: nuh uh
20:55:50 <ehird> /**<
20:55:52 <ehird> not /*<
20:56:03 <AnMaster> ehird, yes, but I think I've seen /*< too
20:56:07 <AnMaster> not sure though
20:56:15 <AnMaster> and emacs highlights /** the same way as /*<
20:57:55 <AnMaster> Deewiant, there?
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?
20:59:58 <Deewiant> all specified in the spec
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:10 <pikhq> Hmm.
21:31:23 <pikhq> Looks like you guys are re-inventing Objective C. :p
21:42:06 <ehird> pikhq: Eh?
21:43:35 <pikhq> Objective C is implemented as a fairly thin templating system over C. ;)
21:43:46 <ehird> pikhq: Heh.
21:43:53 <ehird> CFront!
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:44:54 <ehird> :p
21:44:58 <faxathisia> what more is a compiler?
21:45:03 <pikhq> Touche.
21:45:36 <pikhq> Objective C is, interestingly, a strict superset of C. . .
21:45:43 <ehird> pikhq: Not interestingly -- sanely.
21:45:47 <pikhq> True.
21:45:52 <ehird> Objective-C is really well designed like that.
21:45:58 <pikhq> Unlike C++.
21:46:01 <ehird> Bingo.
21:46:15 <faxathisia> higher order C
21:46:27 <ehird> faxathisia: hee
21:46:39 <faxathisia> int lambda (int x) { return ++x; }
21:46:42 <ehird> I'm actually working on a little language which is the marriage of C and functional stuff
21:46:44 <ehird> be very afraid
21:46:58 <ehird> faxathisia: in mine that's: (x) => { return ++x; }
21:46:59 <ehird> for now
21:47:03 -!- oerjan has joined.
21:47:18 <ehird> :)
21:47:28 <ehird> or
21:47:29 <ehird> typed:
21:47:33 <faxathisia> does it compile to ML or something? :P
21:47:38 <ehird> int (int x) => { return ++x; }
21:47:46 <ehird> faxathisia: naww
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:43 <ehird> So:
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:17 <faxathisia> -frnested-functions is needed though
21:49:19 <ehird> but it seems good
21:49:26 <pikhq> faxathisia: Or -std=gnu99.
21:49:28 <oerjan> yeah, really first class closures requires GC
21:49:33 <ehird> oerjan: yes
21:49:41 <ehird> oh, also..
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:25 <faxathisia> void = False, unit = True
21:50:49 <ehird> data LL<a> { nil, cons(a, LL<a>) }
21:50:50 <ehird> hmmm
21:50:55 <ehird> that raises problems with generic types
21:51:00 <ehird> But I don't want to use 'a
21:51:01 <ehird> that's ugly
21:51:02 <faxathisia> :S
21:51:04 * oerjan considers that Haskell could have used Void instead of () for things like IO () if Void had been thought of at the time
21:51:08 <faxathisia> what is <..>?
21:51:21 <ehird> faxathisia: that's the new syntax for parametized types
21:51:24 <faxathisia> :S
21:51:26 <ehird> data LL a = Nil | Cons a (LL a)
21:51:29 <ehird> translated to haskell
21:51:29 <faxathisia> can't you do bettec?
21:51:33 <faxathisia> than C++
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:36 <ehird> that would work
21:52:37 <ehird> but..
21:52:47 <ehird> hmm
21:52:51 <ehird> data list_t<T> { nil, cons(a, list_t<T>) }
21:52:54 <ehird> err
21:52:55 <ehird> data list_t<T> { nil, cons(T, list_t<T>) }
21:53:00 <ehird> that would produce
21:53:06 <ehird> list_t nil
21:53:06 <ehird> and
21:53:12 <ehird> err wait
21:53:13 <ehird> list_t<T> nil
21:53:14 <ehird> and
21:53:21 <ehird> list_t<T> cons(T, list_t<T>)
21:53:23 <ehird> so, just right
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:49 <ehird> I considered:
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:14 <faxathisia> I did not like D either
21:55:33 <ehird> faxathisia: Yes.
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:31 <pikhq> ;)
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:57:53 <faxathisia> cwcrntcc
21:58:02 <faxathisia> from <stdcont.h> :P
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:34 <ehird> OCaml doesn't! :P
21:58:40 <faxathisia> :o
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:01 <ehird> and meta-data
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:00:55 <ehird> it goes:
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:34 <ehird> so in full
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:18 <faxathisia> plz call it cwcrntcc
22:03:24 <ehird> callcc :: ((a -> ()) -> a) -> a
22:03:28 <ehird> which is far less easy to understand
22:03:31 <ehird> faxathisia: no
22:03:35 <ehird> it's C-style but not C-ugly
22:03:35 <ehird> :)
22:03:36 <faxathisia> :(((
22:03:47 <ehird> faxathisia: this will have support for declarative programming
22:03:48 <ehird> if that helps
22:03:56 <faxathisia> afk
22:21:23 * oerjan finds himself browsing the logs at 1 page per second
22:24:43 -!- Quendus has quit (Remote closed the connection).
22:26:26 -!- Quendus has joined.
22:26:55 <ehird> redrawerredrawers is a word
22:26:56 <ehird> that's great
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:39:37 <ehird> qwerty ofc
22:39:49 <oklokok> it's in a word list? :D
22:39:52 <oklokok> what word list?
22:40:10 <Deformative> Lol.
22:40:17 <Deformative> I think I just solved my problem.
22:40:21 <Deformative> Without brute force.
22:41:15 <ehird> oklokok: dunno
22:41:17 <ehird> Moby something
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:42:05 <oklokok> wwwhat problem
22:43:07 <Deformative> oklokok: The one from yesterday.
22:43:12 <Deformative> http://deformative.hosting.arsfides.com/upload/files/1/np.txt
22:43:58 <Deformative> Hmm, never mind.
22:44:05 <Deformative> I still need to implement swapping.
22:45:36 <oklokok> definitely not np
22:45:40 <oklokok> i'm thinking O(n)
22:46:02 <oklokok> ah
22:46:15 <Deformative> Yeah, make sure you read the whole thing.
22:46:16 <oklokok> actually the trivial solution is O(n^2)
22:46:49 <Deformative> ...
22:46:52 <Deformative> Totally not.
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:47:29 <oklokok> rrright=
22:47:30 <oklokok> =
22:47:33 <oklokok> ..?
22:47:37 <faxathisia> isn't this the edit distance problem?
22:47:41 <Deformative> No.
22:48:00 <Deformative> Yours fails on [a, b] to [b, a] even
22:48:02 <Deformative> :P
22:48:35 <Deformative> And that would _not_ make optimal solutions.
22:48:39 <Deformative> Read the whole file.
22:48:41 <oklokok> oh, minimum space?
22:48:44 <oklokok> didn't know that
22:48:47 <oklokok> ...file?
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 <Deformative> oklokok: No minimum space.
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:13 <Deformative> Minimum mov
22:49:24 <oklokok> Deformative: minimum space as in O(1) spae
22:49:26 <oklokok> *space
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:50:39 <oklokok> wait a mo
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:43 <ehird> abcdef -> acefdb
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:51:52 <oklokok> *permutator creator
22:52:07 <ehird> it makes most text look like line noise but *kind of* resembles the original text
22:52:38 <oklokok> hmm
22:52:41 <oklokok> s/?/
22:52:47 <ehird> ?
22:52:54 <oklokok> ehird: in my sentence
22:53:48 <ehird> oh
22:53:56 <oklokok> Deformative: or is the goal to optimize for each? i'm fairly sure that cannot be done
22:54:01 <oklokok> ah
22:54:16 <oklokok> the actual permutator must be *perfect*
22:55:07 <oklokok> hmm
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:55:59 <Deformative> I will try to explain.
22:56:04 <oerjan> my intuition says it's O(n)
22:56:10 <Deformative> Try not to have preconceived notions.
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:10 <Deformative> oklokok: Least movl
22:57:15 <Deformative> Yes.
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:29 <oklokok> so it's perfect?
22:57:45 <oklokok> ah
22:57:46 <Deformative> Swap is NOT single.
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:24 <Deformative> oklokok: I am starting to agree.
23:00:32 <Deformative> Because my program is almost done.
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:34 <Deformative> oerjan: You never move the letters.
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:06 <slereah__> Old timey Iota :D
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:02:49 <Deformative> And that would move to the temp space.
23:02:58 <faxathisia> cool slereah
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:03:59 <faxathisia> haha
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:04:54 <Deformative> Confusing, but not that complicated.
23:04:55 <Deformative> Heh.
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:29 <oklokok> or do they...
23:07:33 <oklokok> actually not, of course not
23:07:34 <oklokok> lol :P
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:08:37 <oklokok> yeah, think about tht
23:08:39 <oklokok> *that
23:08:43 <oklokok> i'll get some coffee
23:08:44 <oklokok> ->
23:08:49 <faxathisia> what's second order programming?
23:09:04 <faxathisia> lisp macros?
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:14 <adu> hi all
23:10:20 <faxathisia> hi
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:14 <faxathisia> what's that?
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:12:48 <faxathisia> oklokok: What in n-order code?
23:12:59 <oklokok> :D
23:13:00 <oklokok> like
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:13:58 <oklokok> that's first order
23:14:05 <faxathisia> ah yes sure
23:14:07 <oklokok> if you write a program that writes a program to solve T
23:14:11 <oklokok> that's second order
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:22 <oklokok> :D
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:08 <oklokok> using magic or soemthing
23:16:14 <oerjan> adu: wikipedia?
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:17:27 <faxathisia> I think it's very similar to that
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:15 <oklokok> adu: why not?
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:52 <oklokok> like... arrays?
23:19:58 <ehird> adu: CCBI uses a hash table.
23:19:58 <ehird> IIRC.
23:20:01 <adu> because (1, 0) == (1, 0, 0)
23:20:12 <oklokok> adu, just omit zeroes in the end
23:20:12 <oklokok> duh
23:20:20 <oklokok> also, funge uses a fixed dimensino
23:20:23 <oklokok> *dimension
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:32 <ehird> sheehs
23:21:32 <ehird> :)
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:14 <ehird> Well, N>0 funge
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:08 <ehird> hmm
23:23:12 <ehird> maybe I should use a Judy Array
23:23:12 <ehird> :D
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:24 <ehird> ??? :D
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:15 <adu> ok
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:38 <oklokok> faxathisia: not in reals!
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:28:17 <oklokok> ?
23:28:44 <oklokok> oh
23:28:47 <oklokok> "<="
23:28:53 <oklokok> i'm a bit dyslexic
23:29:00 <faxathisia> http://www.mathreference.com/top-ban,rn.html
23:29:18 <oerjan> faxathisia: basis theorem perhaps?
23:29:47 <faxathisia> hm I don't know that
23:30:00 <oerjan> although i may have made up that name on the spot
23:30:04 <faxathisia> hehe
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:25 <ehird> adu: oh, okay
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:12 <adu> lolol
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:48 <oklokok> adu: because i hate java
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:22 <AnMaster> eh no
23:37:25 <AnMaster> depends on version
23:37:29 <AnMaster> 98 allows much more
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:14 <AnMaster> from 98 standard
23:38:24 <oklokok> is D open source?
23:38:36 <ehird> oklogdc tes
23:38:39 <ehird> and the spec is free
23:38:48 <ehird> and so is dmd/s frontend
23:38:50 <oklokok> oklogdc tes?
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 <AnMaster> so yes
23:38:53 <ehird> but the backend contains e.g. code form other sources
23:38:56 <ehird> so it cannot
23:39:03 <ehird> oklokok: 'gdc yes'
23:39:11 <oklokok> ah yeah
23:39:14 <ehird> AnMaster: yep - that's gdc
23:39:19 <AnMaster> ehird, indeed
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:40:28 <AnMaster> that doesn't exist
23:40:38 <AnMaster> 0-2,147,483,647
23:40:41 <AnMaster> in source files
23:41:15 <adu> I think we should reimplement all UNIX in D or Factor or Haskell
23:41:23 <ehird> adu: haskell
23:41:25 <ehird> typesafe unix!
23:41:39 <ehird> you don't have to do any command line checking -- you know the file you get will be correct
23:41:40 <ehird> :D
23:41:50 <adu> lol
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:23 <ehird> all bets, off.
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:02 <faxathisia> proof that haskell is rubbish!
23:44:03 <faxathisia> :P
23:44:05 <oklokok> perhaps you should see oklobot
23:44:16 <AnMaster> don't have time
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:40 <oklokok> ...
23:44:41 <AnMaster> maybe
23:44:51 <faxathisia> lambdabot is probably the most useful bot in existence
23:44:59 <ehird> AnMaster: its Cale's fault
23:45:00 <faxathisia> maybe other than XDCC ones....
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:02 <ehird> :)
23:45:07 <AnMaster> no idea why
23:45:11 <oklokok> whut
23:45:13 <oklokok> :o
23:45:16 <ehird> AnMaster: Cale.
23:45:23 <AnMaster> ehird, who/what is cale?
23:45:24 <ehird> He also breaks random things. :)
23:45:36 <ehird> AnMaster: the nick 'lambdabot' on freenode host
23:45:42 <AnMaster> ehird, yep
23:45:43 <AnMaster> that one
23:46:15 <ehird> AnMaster: yea. blame cale
23:46:22 <oerjan> yeah lambdabot does crash :(
23:46:24 <AnMaster> and who is cale
23:46:24 -!- adu has quit ("Computer went to sleep").
23:46:35 <ehird> AnMaster: THE NICK LAMBDABOT ON FREENODE'S HOST
23:46:36 <faxathisia> it does .. very often
23:46:38 <AnMaster> ah
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:46:51 <AnMaster> ?????
23:47:03 <ehird> AnMaster: The bot crashes because of the guy who runs the instance that goes on freenode
23:47:04 <ehird> damnit
23:47:07 <AnMaster> aha!
23:47:13 <AnMaster> thanks for making that clear
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
2008-03-14
00:00:00 -!- BMeph has joined.
00:01:13 <AnMaster> ehird, yay cfunge just got it's first fingerprint!
00:01:22 <AnMaster> working
00:03:24 -!- olsner has quit ("Leaving").
00:09:32 <ehird> AnMaster: cfunge is mine
00:09:35 <ehird> :/
00:11:24 <lament> are you both writing befunge compilers?
00:13:02 <ehird> lament: not compilers
00:13:04 <ehird> interpreters
00:13:04 * oklokok is writing a befunge compiler, at least :P
00:13:08 <ehird> befunge-98 interpreters
00:13:14 <lament> oh
00:13:21 <ehird> because we decided that one conforming interpreter was just not good enough
00:13:25 <ehird> undersaturated market
00:13:25 <ehird> :)
00:13:32 <lament> oklokok: in what language, to what language?
00:13:37 <oklokok> python, to python
00:13:44 <lament> threaded?
00:13:48 <lament> or jit
00:13:50 <ehird> AnMaster: i'll pay you moneys if you rename your interp
00:13:51 <ehird> actually
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:13:59 <ehird> :D
00:14:08 <ehird> i'll let you have CFNG
00:14:09 <ehird> haha
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:19 <oklokok> *funge
00:14:25 <lament> no
00:14:33 <oklokok> ah
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:33 <oklokok> umm
00:15:34 <lament> oh, so you're ignoring self-modifying code?
00:15:38 <oklokok> there will be no stack
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:22 <ehird> lament: yes
00:16:24 <ehird> BestFriends.js
00:16:26 <oklokok> that's ver very different, though
00:16:28 <oklokok> *very
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:48 <lament> oklokok: true
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:19 <lament> err...
00:17:22 <lament> easier to compile, certainly :)
00:17:40 <ehird> oklokok: so wait
00:17:41 <ehird> 55+
00:17:43 <oklokok> i haven't done a lot of befunge, just generally don't see many uses for self-modifications
00:17:44 <ehird> compiles to 5+5?
00:17:49 <ehird> i.e. you do total stack removal
00:17:50 <oklokok> ehird: sure
00:17:52 <ehird> if so, that's cool
00:17:53 <oklokok> well
00:17:56 <oklokok> not entirely
00:17:58 <ehird> oklokok: befunge-93? if so that's not TC :(
00:18:06 <oklokok> but where it's possible.
00:18:10 <AnMaster> <ehird> AnMaster: i'll pay you moneys if you rename your interp
00:18:11 <AnMaster> nop
00:18:13 <AnMaster> I won't
00:18:25 <oklokok> ehird: sure is, you can do "p"
00:18:25 <AnMaster> I was first to release
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:34 <AnMaster> ehird, :)
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:38 <ehird> :)
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:19:53 <AnMaster> ehird, hehe, but it is indeed
00:20:30 <ehird> Befunge-93 is NOT tc
00:20:40 <ehird> ``
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:41 <ehird> ''
00:20:42 <oerjan> MUNUS SIGSIGGA TAR BALLA YE...
00:20:56 <ehird> oerjan: E J F
00:21:05 <ehird> ESS CEE PEE
00:21:19 <oklokok> ehird: anyway, even with the limitation that the stack cannot grow, it is tc with an infinite grid.
00:21:24 * oerjan does not understand
00:21:36 <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:32 <lament> indeed
00:22:37 <ehird> lament: Befunge-93 specifies 80x24.
00:22:49 <lament> oklokok: ehird has you beat :)
00:22:56 <oklokok> hehe :P
00:22:56 <lament> ehird: indeed. :)
00:23:04 <oklokok> thanks, ehird!
00:24:08 <ehird> oklokok: I decided to do something like yours
00:24:08 <ehird> :D
00:24:18 <ehird> using a dict and lambdas for the instruction table
00:24:18 <ehird> :D
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:24:46 <ehird> [TOP, ...]
00:26:23 <oklokok> ehird: cool, i was thinking our tradition of stealing each others' ideas was over :P
00:26:29 <ehird> oklokok: no way!
00:26:30 <ehird> :D
00:26:30 <oklokok> i was pretty sad
00:26:36 <ehird> just like the good ol' days
00:26:39 <oklokok> yay!
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:28 <ehird> :P
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:26 <oklokok> sure
00:28:30 <ehird> the stack element of this number:
00:28:33 <oklokok> mmmmmyeah
00:28:33 <ehird> [top, top-1, ...]
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:52 <oklokok> well, that part i guessed
00:28:54 <ehird> which, when evaluated, give you the top and second-top expressions relatively
00:29:04 <ehird> oklokok: so in:
00:29:08 <ehird> "122+-"
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:29:51 <ehird> heh
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:30:52 <ehird> goddarn
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:31:26 <faxathisia> unicorns
00:32:06 <ehird> unicron
00:32:09 <ehird> universal cron
00:32:40 <ehird> AnMaster: Challenge. If you cannot give my C-funge interpreter a good name, you must change yours.
00:33:13 <oklokok> cefunge
00:33:29 <oklokok> seafunge
00:33:38 <oklokok> fudgerbudger
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:38 <ehird> lament: hahah
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:11 <lament> ehird: r5rwhat?
00:36:15 <AnMaster> ehird, but I know two good handprints: R2D2 and C3PO
00:36:16 * AnMaster runs
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:28 <ehird> expanded out:
00:36:34 <lament> besides, r6rs > r5rs
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:16 <AnMaster> for nfunge
00:37:17 <AnMaster> ?
00:37:21 <oklokok> AnMaster: call yours "an funge"
00:37:27 <AnMaster> oklokok, nop
00:37:37 <AnMaster> ehird can call his ehfunge
00:37:37 <AnMaster> ?
00:37:40 <oklokok> that would be a fun inside joke on a channel
00:37:41 <lament> ehird: yermom
00:37:43 <AnMaster> anyway NFUN sounds cool
00:37:50 <faxathisia> why not just all use tha same name?
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:37:55 <AnMaster> lament, yay! yermomafunge!
00:37:58 <AnMaster> that's a good one
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 * AnMaster runs
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:38:41 <AnMaster> ehird, hm I'm thinking of it
00:38:59 <oklokok> AnFunge imo
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:39:48 <oklokok> CFunGe
00:40:28 <oerjan> CfungE
00:40:34 <oerjan> (the E is for ehird)
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:42:36 <oklokok> i'll call mine Oklonge
00:43:17 <AnMaster> ehird, anyway I already registered this on freshmeat, so hard to change
00:43:18 <AnMaster> did that a few hours ago
00:43:46 * oklokok is trying to incorporate "your mother", "long kok" and "coming from" in the same pun
00:43:49 <ehird> AnMaster: not hard to reregister
00:43:49 <ehird> heh
00:44:03 <oklokok> too hard
00:44:09 <slereah__> My long kok is coming from your mother.
00:44:21 <oerjan> Oklounge
00:44:22 <oklokok> oh, right, so obvious!
00:44:41 <oklokok> onge
00:44:41 <oklokok> ofunge
00:44:46 <oerjan> but it could be Ok-lounge
00:44:56 <slereah__> *Bk-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:54 <ehird> hmm
00:48:59 <ehird> what is the befunge terminology for a word?
00:49:06 <AnMaster> ehird, a cell?
00:49:31 <oklokok> the b word
00:52:58 <AnMaster> ehird, also, sf.net project request
00:53:17 <ehird> AnMaster: don't use sourceforge.
00:53:23 <AnMaster> ehird, why not?
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:51 <faxathisia> sourceforge kind of sucks
00:53:52 <AnMaster> ehird, it is the largest one still
00:54:00 <faxathisia> but it's free webspace isn't it?
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:17 <AnMaster> and a good mirror system
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:44 <AnMaster> as I prefer bzr
00:55:45 <ehird> pretty good
00:55:48 <ehird> not perfect, but.
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:06 <ehird> sheehs
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:57:41 <ehird> eek
00:57:42 <ehird> dmoz
00:57:42 <ehird> :D
00:57:47 <ehird> the dead internet
00:57:57 <pikhq> It still lives.
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
00:59:59 * Slereah goes to der esowiki
01:00:01 <ehird> what is dmoz
01:00:01 <ehird> lawl
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:10 <AnMaster> ehird, I know what dmoz is
01:00:20 <pikhq> Then why did you ask?
01:00:33 <faxathisia> lol
01:00:43 <Slereah> What was added to the fantasmesoteric wiki?
01:00:44 <AnMaster> err wait
01:00:46 <AnMaster> I'm tired
01:00:47 <ehird> pikhq: So he can retroactively claim he knows after being told.
01:00:51 <pikhq> ehird: LMAO
01:00:55 <faxathisia> hahaha
01:00:57 <AnMaster> ehird, right! :D
01:01:01 <AnMaster> I'm just tired
01:01:09 <AnMaster> I had a faint memory of DMoz
01:01:19 <AnMaster> didn't remember what it was exactly
01:07:39 <oklokok> i didn't know about dmoz OR freshmeat
01:07:44 <pikhq> oklokok: Mutant.
01:07:58 <oklokok> :P
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:11 <faxathisia> never downloaded from it?
01:10:19 <oklokok> dunno, perhaps i did
01:10:24 <oklokok> just don't remember
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:18:25 <Slereah> Are Haskell's book good?
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:25 <faxathisia> I just bought Sets for Mathematics
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:33:14 <oklokok> more coffees ->
01:33:24 <AnMaster> night
01:33:36 <oklokok> nnnight?
01:33:39 <oklokok> ->
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:38:59 <oklokok> GregorRL(1)
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:39:57 <oklokok> (llled.)
01:41:06 -!- oklokok has changed nick to oklo.
01:41:37 <GregorR-L> Hahaha
01:41:57 <GregorR-L> Better than my previous GregorRead-Write (GregorR-W)
01:43:33 <ehird> GregorReally-Awesome
01:44:17 <slereah_> Price: US$ 122.48
01:44:21 <slereah_> Aaaaaaaaaaaaaaaaaaaah
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:24 <oklo> *it
01:46:32 <slereah_> Well, I guess it's good too.
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:11 <oklo> :D
01:47:45 <oklo> i feel so small and cute with this nick <3
01:47:51 <ehird> coool
01:47:53 <ehird> I want a small nick
01:47:56 <oklo> :d
01:48:05 <ehird> err
01:48:07 <ehird> I meant dick
01:48:08 <ehird> obviously
01:48:33 <slereah_> The only day...
01:48:33 <slereah_> ...SO FAR
01:48:34 <oklo> obviously.
01:48:52 <slereah_> Well, oklo has one.
01:48:53 <ehird> oklo: draw a penis on your penis
01:48:57 <slereah_> And it is adorable
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:22 <ehird> on
01:49:23 <ehird> no
01:49:25 <ehird> the ascii penis smiley
01:49:27 <ehird> on your penis
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:07 <ehird> quote #5
01:50:07 <ehird> :D
01:50:12 <oklo> :P
01:50:19 <slereah_> What are #0 through #4 !
01:50:21 <oklo> what are the first?
01:50:26 <ehird> oklo: what is the Big-O complexity of your penis?
01:50:27 <oklo> what's #4+3i
01:50:47 <oklo> hmm
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:50:55 <ehird> :D
01:51:19 <slereah_> And boy, were they right!
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:52:48 <slereah_> So I guess.
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:53:58 <oklo> :P
01:54:01 <ehird> slereah_: heh
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 <oklo> heh
01:56:31 <slereah_> Problem with those books is, they're all referencing each others.
01:56:44 <slereah_> That's how I got here.
01:56:55 <slereah_> I tried to read the Principia Mathematica, and bam
01:56:59 <slereah_> The machine was on!
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:13 <oklo> yeah :D
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
01:59:45 <slereah_> What, x={x}?
01:59:54 <ehird> Yes
02:00:05 <slereah_> I have a shameful picture.
02:00:06 <slereah_> http://membres.lycos.fr/bewulf/Divers2/Set.jpg
02:00:08 <slereah_> :(
02:01:41 <ehird> I love you
02:03:26 <pikhq> 'Recursion: see recursion.'
02:03:27 <ehird> Oh crap....
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:03:48 <oklo> :)
02:03:49 <ehird> :-(
02:04:05 <slereah_> "And by recursive, I of course mean defined by recursion."
02:04:05 <pikhq> Grr.
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:02 <ehird> pikhq: Oh.
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:10 <oklo> *nick
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:23 <ehird> :(
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:05:52 <pikhq> As is that code.
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:34 <ehird> Bahh
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:05 <oklo> :D
02:08:16 <ehird> well yeah, so his code sux
02:08:17 <ehird> :P
02:08:30 <ehird> hmm
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 <oklo> dunno
02:10:28 <ehird> oklo: exactly so a hashtable isn't nice
02:10:35 <ehird> yeah
02:10:37 <ehird> its hard
02:10:37 <ehird> :(
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:18 <ehird> i.e. fungespace
02:11:23 <oklo> prolly
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:35 <ehird> for 2,3,4d
02:11:45 <oklo> yyyeah?
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:05 <AnMaster> just don't claim I made it :)
02:12:17 <oklo> AnMaster: you *should* name your software like that
02:12:30 <ehird> EgoBot, Anfunge.
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:43 <ehird> LioFunge
02:12:44 <ehird> :|
02:12:53 <AnMaster> oklo, comment taken on board, and will be thrown over as soon as we leave harbour
02:12:56 <AnMaster> ;P
02:13:24 <slereah_> Is there anything up on ESO?
02:13:25 <oklo> AnMaster: funny, but mean!
02:13:25 <AnMaster> oklo, look is it gcc or rmsc?
02:13:25 <AnMaster> :P
02:13:32 <AnMaster> oklo, what? my Discworld quote?
02:13:56 <ehird> slereah_: Not yet
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:14:56 <AnMaster> just FYI
02:15:11 <slereah_> I used to be a fan.
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:16 <ehird> also FSFmacs
02:16:22 <AnMaster> ehird, what about sxemacs?
02:16:26 <ehird> oklo: no for N dimensions
02:16:28 <AnMaster> or µemacs
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:56 * AnMaster think it is crazy
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:11 <AnMaster> ;)
02:17:18 * AnMaster use gnu emacs
02:17:35 <ehird> uemacs is nice
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:18:54 <oklo> hmm
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:09 <AnMaster> infinite ones I mean
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:53 <oklo> *a
02:19:59 <AnMaster> ehird, no idea, what about nfunge?
02:20:04 <AnMaster> nofunge?
02:20:17 <AnMaster> <infinite symbol here>funge?
02:20:25 <ehird> noes
02:20:31 <AnMaster> aleph-zero-funge?
02:20:44 <oklo> ehird: {x,y:...} and {x:{y:...}} are both good
02:20:58 <ehird> noes
02:21:01 <slereah_> Why only aleph zero!
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:05 <oklo> :P
02:21:16 <oklo> AnMaster: so the first one
02:21:23 <AnMaster> slereah_, aleph-aleph-aleph-0?
02:21:27 <AnMaster> that would be interesting
02:21:32 <slereah_> Aleph 1 is enough!
02:21:50 <ehird> awwwwww come onn
02:22:07 <AnMaster> oklo, indeed
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:08 <ehird> F_word is int32_t
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:16 <ehird> hmm wait
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:20 <ehird> heh
02:23:21 <ehird> :D
02:23:23 <oklo> just direct addressing
02:23:26 <ehird> oklo: meh
02:23:45 <ehird> hmm
02:23:50 <ehird> shoudl I implement my own hash table?
02:23:52 <ehird> I :D
02:23:54 <ehird> *:D
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:18 <ehird> AnMaster: hahah
02:24:19 <ehird> what fun
02:24:25 <ehird> F_vector_of_dimensions
02:24:26 <AnMaster> ehird, my idea? yes
02:24:51 <oklo> lol, my code has been one line away from ready for like 2 hours
02:24:52 <oklo> :D
02:24:54 <AnMaster> ehird, however, note that mycology only runs in funges with vectors of size 2
02:24:55 * oklo puts
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:25:46 <AnMaster> ehird, ?
02:25:49 <ehird> to get befunge
02:25:50 <AnMaster> ah good idea
02:25:54 <ehird> -N 1 is unefunge
02:25:57 <ehird> -N 3 trefunge
02:26:01 <AnMaster> ehird, -N -1 ?
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:26:23 <ehird> :-)
02:26:28 <AnMaster> ehird, -N sqrt(-1)
02:26:29 <AnMaster> :D
02:26:43 <ehird> AnMaster: ditto
02:26:43 <AnMaster> that's headachefunge
02:26:44 <ehird> ;)
02:27:03 <ehird> -N integer>1
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:18 <AnMaster> Slereah, I know :D
02:27:39 <oklo> hmm...
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:25 <AnMaster> to increment Z
02:28:30 <AnMaster> apart from that I don't know
02:28:32 <ehird> AnMaster: is that standard?
02:28:36 <AnMaster> ehird, think so
02:28:42 <AnMaster> not 100% sure
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 <AnMaster> err
02:29:00 <ehird> AnMaster: wait, ^Z^Z is always invalid right?
02:29:02 <ehird> oh wait no
02:29:04 <AnMaster> not that section
02:29:07 <ehird> it just means that that dimension is empty
02:29:07 <ehird> damn
02:29:19 <ehird> I thought: ^Z incrs Z, ^Z^Z incrs <one up form Z>
02:29:20 <ehird> etc
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:29:46 <AnMaster> so no infinite
02:29:59 <ehird> of course
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:18 <AnMaster> like that opengl thing does
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:31 <oklo> ...
02:30:32 <oklo> Z
02:30:33 <AnMaster> ehird, all from space to ~ are in use
02:30:34 <oklo> in befunge
02:30:56 <AnMaster> ehird, a sec for some info
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:05 <ehird> kind of
02:31:06 <ehird> like
02:31:13 <ehird> (char)1(char)
02:31:19 <ehird> means (4d's Z)
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:40 <ehird> (char)2(char)
02:31:42 <ehird> will be 5d
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:28 <ehird> hm
02:32:29 <ehird> 11
02:32:30 <ehird> vertical tab
02:32:39 <ehird> maybe?
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:32:58 <AnMaster> it is a working way
02:33:32 <ehird> eh
02:33:35 <ehird> I don't like that idea
02:33:38 <ehird> it's impure somehow
02:33:56 <AnMaster> hm ok
02:34:02 <AnMaster> so vertical tab could work
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:34:51 <AnMaster> ?
02:35:21 <AnMaster> because it may be hard to know how large the number would be
02:35:23 <AnMaster> if infinite
02:35:27 <AnMaster> or say
02:36:19 <AnMaster> Graham's Number
02:36:21 <AnMaster> :D
02:36:31 <ehird> AnMaster: just do
02:36:36 <ehird> vertical tab NUMBER veritacal tab
02:36:43 <AnMaster> ehird, ok could work
02:36:56 <AnMaster> ehird, how do you do vertical tab in emacs?
02:37:03 <AnMaster> or form feed for that matter
02:37:04 <ehird> AnMaster: hm \1 is start of heading
02:37:09 <ehird> maybe something like:
02:37:13 <ehird> at start of file:
02:37:21 <ehird> \1DIMENSIONS\n
02:37:21 <AnMaster> \1 is valid befunge code
02:37:28 <ehird> AnMaster: eh what
02:37:29 <ehird> :|
02:37:32 <ehird> I mean the ascii char 1
02:37:34 <AnMaster> ah ok
02:37:38 <AnMaster> right
02:37:39 <ehird> \1 DIMENSIONS \n
02:37:40 <ehird> so like
02:37:50 <AnMaster> ehird, wtf is the ascii char \1 btw?
02:37:50 <ehird> '\1', '6', '\n'
02:37:57 <ehird> AnMaster: http://www.asciitable.com/
02:37:58 <ehird> SOH
02:38:03 <AnMaster> SOH being?
02:38:08 <ehird> Start of Heading
02:38:08 <ehird> goddamn
02:38:12 <ehird> AnMaster: the byte value of the char!!
02:38:13 <AnMaster> and what is that *used* for
02:38:14 <AnMaster> ?
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:27 <AnMaster> ehird, just wondering
02:38:28 <ehird> and use it for headers
02:38:28 <ehird> SO
02:38:31 <ehird> at start of the file:
02:38:33 <ehird> \1 DIMENSIONS \n
02:38:38 <ehird> and then later on
02:38:42 <ehird> \1 INCR \n
02:38:47 <ehird> when INCR=1
02:38:54 <ehird> it's an error
02:38:56 <ehird> same with INCR=2
02:38:58 <ehird> those make no sense :)
02:38:59 <ehird> BUT
02:39:06 <ehird> '\1', '3', '\n'
02:39:09 <ehird> is also an error.
02:39:11 <ehird> because there is ^Z
02:39:13 <ehird> AND FINALLY
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:17 <ehird> '\1', '4', '\n'
02:39:18 <AnMaster> from wikipedia
02:39:23 <ehird> increments the d-4
02:39:27 <ehird> (d-3 is Z, etc)
02:39:31 <ehird> so, at start of file
02:39:37 <ehird> \1, D, \n specifies the dimensions
02:39:38 <AnMaster> ehird, so SOH 4 STX IMO
02:39:47 <ehird> eh
02:39:53 <ehird> I will think about it
02:39:58 <ehird> Maybe actually something lightweight
02:40:01 <ehird> who knows
02:40:04 <ehird> will sleep over it
02:40:05 <AnMaster> ehird, considering that was closed to how it was used :)
02:40:09 <AnMaster> originally
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:41:58 <AnMaster> oklo, what is it?
02:42:18 <oklo> irc is a chat protocol
02:42:23 <AnMaster> no
02:42:25 <AnMaster> I mean
02:42:28 <AnMaster> the parser
02:42:30 <AnMaster> what is it for?
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:00 <AnMaster> interesting
02:43:16 <AnMaster> oklo, very interesting, how will you support p however?
02:43:18 <ehird> bye foir today
02:43:21 <ehird> AnMaster: he won't
02:43:22 <AnMaster> ehird, cya
02:43:25 <AnMaster> ehird, night too
02:43:28 -!- ehird has quit ("Konversation terminated!").
02:43:28 <oklo> ofc i will
02:43:36 <AnMaster> oklo, good for you :)
02:43:44 <AnMaster> oklo, but it must run under NX
02:43:50 <AnMaster> PaX and such
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:01 <AnMaster> oklo, so JIT I assume?
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:23 <AnMaster> for say storing scratch 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:02 <AnMaster> that's a pitty
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:23 <AnMaster> oklo, heh
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:47 <AnMaster> it got a 93-only part
02:46:49 -!- Slereah has joined.
02:47:06 <AnMaster> oklo, and what did "my deewiant's" mean?
02:47:12 <oklo> hehe
02:47:15 <AnMaster> ?
02:47:29 <AnMaster> oklo, just he is damn useful to ask questions
02:47:33 <AnMaster> as he knows befunge well
02:47:35 <oklo> i was gonna write you test suite, then realized it was deewiant's
02:47:46 <oklo> *yoru
02:47:49 <oklo> *your
02:47:51 <AnMaster> oklo, indeed, I can't write that complex code
02:47:55 <AnMaster> in befunge
02:48:04 <oklo> i know
02:48:09 * AnMaster wonders why cfunge now hangs at:
02:48:11 <AnMaster> Testing fingerprint ROMA... loaded.
02:48:13 <AnMaster> :/
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:45 <AnMaster> oklo, I used it some yes
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:17 <oklo> how exactly?
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:42 <oklo> hmm... maybe
02:49:57 <oklo> can you help me get my brain started as to... why?
02:50:06 <AnMaster> say:
02:50:07 <AnMaster> #vt vectors here p
02:50:07 <AnMaster> >< blah
02:50:13 <AnMaster> that would form a mutex
02:50:26 <AnMaster> so you could make the other ip wait for < to be removed
02:50:33 <oklo> ah.
02:50:42 <oklo> okay, i should've seen that
02:50:53 <oklo> hmm...
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:51:55 <AnMaster> and b98 only
02:51:59 <AnMaster> doesn't exist in 93
02:52:07 <oklo> solving impossible problems is the best <3
02:52:21 <AnMaster> oklo, look I could do:
02:52:25 <AnMaster> > >
02:52:26 <AnMaster> err
02:52:30 <AnMaster> > <
02:52:30 <AnMaster> or
02:52:32 <AnMaster> v
02:52:33 <AnMaster> ^
02:52:36 <AnMaster> for mutex
02:52:43 <AnMaster> there are many ways to do it
02:53:16 <AnMaster> oklo, and of course for storing scratch data, p/s is very useful
02:53:21 <AnMaster> err
02:53:24 <AnMaster> p/g
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:53:55 <AnMaster> in 98
02:53:57 <AnMaster> :)
02:54:02 <oklo> hmm
02:54:13 <oklo> wuz that do?
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:16 <AnMaster> :)
02:54:24 <AnMaster> the first time the v won't execute
02:54:27 <oklo> ah
02:54:29 <AnMaster> so you need to reflect once
02:54:33 <oklo> forgot what "'" is
02:54:45 <AnMaster> oklo, hehe, and s is set next char
02:54:51 <AnMaster> ' is *get* next
02:55:00 <AnMaster> oklo, oh and don't forget sudden x
02:55:02 <AnMaster> to jump
02:55:06 <AnMaster> hard to handle
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:23 <oklo> sudden x?
02:55:26 <oklo> hmm
02:55:31 <AnMaster> x = set absolute vector
02:55:38 <AnMaster> as in, set delta to a vector
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:38 <AnMaster> as in how it moves
02:56:40 <oklo> oh
02:56:41 <oklo> fuck.
02:56:45 <AnMaster> delta like in <^v>
02:56:48 <oklo> :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
02:56:49 <AnMaster> that is 98 only of course
02:56:56 <AnMaster> oklo, 93 doesn't have x
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:57:55 <oklo> not hard
02:57:58 <AnMaster> as in "select random of ^v<>"
02:58:00 <AnMaster> with ?
02:58:01 <oklo> ?
02:58:02 <oklo> i know
02:58:07 <oklo> not hard
02:58:13 <AnMaster> oklo, but you can't do longer jumps I think
02:58:19 <AnMaster> in 98 you can
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:35 <AnMaster> one*
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:58:59 <AnMaster> and 05-j
02:59:05 <AnMaster> jump backwards 5 spaces
02:59:09 <AnMaster> much easier than x still
02:59:15 <oklo> yeah
02:59:30 <AnMaster> but still you can't know where the stuff for j comes from
02:59:33 <AnMaster> it could be anywhere
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:30 <oklo> hmm...
03:00:33 <AnMaster> oklo, wraps with j
03:00:37 <AnMaster> http://rafb.net/p/6Trzmm34.html
03:00:46 <oklo> lessee
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:01:38 <AnMaster> jump from ; to next ;
03:01:42 <AnMaster> in current direction
03:02:07 <AnMaster> oklo, can think of some evil using with ; and p to put it there or remove the ;
03:02:11 <AnMaster> would be hard to handle
03:02:28 <AnMaster> oklo, oh I seen programs that copies themself around fungespace btw
03:02:38 <AnMaster> forever
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:22 <oklo> hmm
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:06:36 <AnMaster> oklo, see "troll" programs
03:06:39 <AnMaster> for copy and move
03:08:17 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
03:11:09 <oklo> heh
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:11:54 <oklo> :DD
03:12:01 <AnMaster> oklo, some are befunge93 btw
03:12:02 <oklo> that will be one of my goals for life
03:12:05 <AnMaster> so no way around them
03:12:23 * oklo starts a list
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 <AnMaster> oklo, good luck
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:14:17 <oklo> - fuck a dude
03:14:19 <oklo> :D
03:14:31 <GregorR-L> lol
03:14:32 <AnMaster> oklo, you are female or male?
03:14:33 <GregorR-L> Interesting list.
03:14:37 <AnMaster> and your preference?
03:15:03 <GregorR-L> slash aslpixplz
03:15:07 <oklo> male searching for female
03:15:17 <oklo> age 19, location finland
03:15:19 <oklo> horny for ya
03:15:21 <oklo> uh
03:15:23 <AnMaster> oklo, so why a dude?
03:15:24 <GregorR-L> Hahaha
03:15:25 <AnMaster> :P
03:15:27 <pikhq> LMAO
03:15:27 <slereah_> AnMaster wants some oklolove
03:15:33 <AnMaster> slereah_, I don't
03:15:36 <AnMaster> <oklo> - fuck a dude
03:15:42 <AnMaster> was just wondering about that
03:15:52 <slereah_> Stop your lies
03:15:58 <AnMaster> ;P
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:16:47 <slereah_> Am I on that list?
03:17:12 <oklo> GregorR: sure :D
03:17:30 <oklo> slereah_: yes, - slereah is the next line.
03:17:38 <oklo> "- slereah"
03:17:48 <slereah_> :o
03:17:53 <GregorR-L> Hahahaha
03:18:59 <oklo> "- kill someone"?
03:19:04 <oklo> hmm
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:15 <oklo> AnMaster: no
03:19:18 <slereah_> Become an ABORTIONIST
03:19:25 <slereah_> *SCATHING POLITICAL COMMENT*
03:19:25 <AnMaster> oklo, but one without JIT?
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 <AnMaster> jit*
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:21:46 <AnMaster> each an optimized version :D
03:21:55 <AnMaster> actually larger
03:22:17 <oklo> :)
03:22:20 <oklo> well
03:22:25 <oklo> 256^(80*25)
03:22:31 <oklo> but you were clse
03:22:33 <oklo> *close
03:22:58 <oklo> not much difference between 256^(80*25) and 255*(80*25)
03:23:00 <slereah_> 80*25 = the B grid?
03:23:00 <AnMaster> argh TI83+ says "out of range" on that one
03:23:38 * AnMaster tries maxima
03:23:38 <oklo> i would paste it but it's two pages.
03:23:46 <AnMaster> maxima locks up?
03:23:59 <AnMaster> :/
03:24:21 <AnMaster> bc is faster
03:24:26 <oklo> 4817 digits
03:24:33 <oklo> hmm
03:24:36 <AnMaster> yep
03:24:37 <oklo> that's not that much
03:24:39 <AnMaster> too large
03:24:47 <AnMaster> oklo, what about 32-bit?
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:19 <oklo> oh
03:25:20 <oklo> right
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:25:48 <AnMaster> output looks like that
03:26:05 <AnMaster> nice of bc
03:26:07 <oklo> what output?
03:26:15 <AnMaster> echo "(2^32)^(80*25)" | bc
03:26:17 <AnMaster> that output
03:26:18 <AnMaster> :P
03:26:52 <oklo> i don't know bc, just wrote len(str((256**4)**(80*24))) in python
03:27:03 * AnMaster don't know python
03:27:14 <oklo> >>> len(str((256**4)**(80*25)))
03:27:14 <oklo> 19266
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:27:51 <AnMaster> oklo, I can yes
03:28:00 <oklo> well, if you know *anything* really
03:28:01 <AnMaster> but I don't like python
03:28:16 <oklo> who does, it's just so goddamn nice to use <3
03:28:18 <slereah_> But, python is awesome!
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:06 <AnMaster> oklo, C, bash
03:30:07 <AnMaster> :D
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:30:43 <oklo> what'
03:30:45 <oklo> ...
03:30:53 <oklo> awk ~ bash
03:30:54 <oklo> elaborate.
03:30:58 <AnMaster> awk != bash
03:31:00 <AnMaster> very different
03:31:06 -!- calamari has joined.
03:31:07 <oklo> good, good, continue.
03:31:12 <AnMaster> oklo, got to sleep
03:31:21 <oklo> "go to sleep"?
03:31:26 <AnMaster> oklo, try man bash and man awk
03:31:27 <AnMaster> :P
03:31:30 <oklo> :D
03:31:36 <oklo> i'm on vista now
03:31:43 <AnMaster> get a real OS?
03:31:51 <oklo> omg never!
03:31:53 <oklo> :DDDDDDDDDDD
03:31:59 <slereah_> Get ESOS!
03:32:07 <calamari> hi
03:32:12 <oklo> hi callie
03:32:22 <calamari> callie?
03:32:25 <oklo> yes
03:32:31 <calamari> haha ok
03:32:34 <oklo> :D
03:32:37 <AnMaster> slereah_, ?
03:32:41 <oklo> i'm a bit goofy today, sorry
03:32:48 <AnMaster> slereah_, ESOS?
03:32:49 * oklo is so whacky
03:32:51 <slereah_> The legendary esoteric OS!
03:32:58 <slereah_> That no one will ever write
03:33:03 <AnMaster> slereah_, hah
03:33:10 <AnMaster> slereah_, link for specs?
03:33:12 <oklo> :D
03:33:22 -!- shinku has joined.
03:33:22 <AnMaster> no I won't
03:33:24 <slereah_> What, writing specs?
03:33:26 <oklo> someone do the imaginary pocket thing again!
03:33:28 <slereah_> People won't go that far!
03:33:32 <oklo> that was so much fun
03:33:36 <AnMaster> slereah_, just wondering how far it got
03:33:42 <slereah_> I dunno.
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:42 <AnMaster> tell me about it
03:34:46 <AnMaster> what would it be?
03:34:50 <AnMaster> written in befunge?
03:34:56 <AnMaster> or what would the cool thing be
03:35:06 <oklo> something about kernel being written in brainfuck
03:35:12 <AnMaster> ah riht
03:35:15 <AnMaster> right*
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:35:56 <slereah_> I know AnMaster.
03:36:01 <slereah_> It's pretty much that!
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:36:59 <slereah_> Stop your liiiies
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:37:55 <slereah_> :D
03:38:01 <oklo> from future import __braces__ in case someone hasn't seennit
03:38:09 <AnMaster> slereah_, your mad
03:38:15 <AnMaster> you're*
03:38:18 <AnMaster> or whatever
03:38:32 <oklo> i never use that much shitespace.
03:38:43 <oklo> " && ", wtf is that about
03:38:45 <oklo> :D
03:38:57 <AnMaster> oklo, "from future" lol
03:39:05 <AnMaster> slereah_, that code is 1) unmaintainable 2) unreadable 3) a mess
03:39:06 <oklo> lol
03:39:13 <slereah_> AnMaster: I know :D
03:39:14 <oklo> AnMaster: from __future__ import braces ofc
03:39:19 <slereah_> I also removed all strings.
03:39:27 <slereah_> All characters are represented as integers.
03:39:29 <AnMaster> oklo, oh?
03:39:46 <AnMaster> slereah_, what does it do
03:39:50 <slereah_> Try it!
03:39:52 <oklo> >>> from __future__ import braces
03:39:52 <oklo> SyntaxError: not a chance (<pyshell#4>, line 1)
03:39:54 <oklo> sorry
03:39:58 <AnMaster> oklo, I'm not insane
03:40:20 <AnMaster> oklo, hah. an easter egg
03:40:24 <oklo> kinda.
03:40:39 <slereah_> Some guy had a programming assignment. The restrictino on that assignment were fucking stupid.
03:40:43 <slereah_> So I did this
03:40:46 <AnMaster> oklo, interesting: SyntaxError: future feature makethiswork is not defined
03:40:52 <AnMaster> wtf
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:52 <slereah_> THE FUTURE
03:41:56 <oklo> but i don't know anything, i just use it
03:41:59 <AnMaster> oklo, I see
03:42:17 <AnMaster> oklo, what thinks can you import from it
03:42:30 <slereah_> Flying cars.
03:42:35 <slereah_> Also, anti-gravity
03:43:19 <AnMaster> -_-
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:46:55 <AnMaster> night
03:47:15 <oklo> i'm going to call that "perium" from period / peruneum
03:47:18 <oklo> *perineum
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:27 <oklo> hmm...
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:01 <lament> oklo: lol
05:10:13 <lament> hint: you don't need any gotos
05:10:57 <lament> use CPS!
05:12:18 <oklo> i want to do this with while loops.
05:12:26 <oklo> and breaks <3
05:12:29 <oklo> and continues <3
05:12:41 <oklo> and boolean flags!
05:12:49 <oklo> awesome.
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:45:50 <lament> yeah
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:52:20 <oklo> sleeps ->
05:59:10 * lament proceeds to write a stupid threaded befunge93-scheme compiler
06:13:23 -!- GregorR-L has joined.
06:15:30 -!- GregorR-L has quit (Client Quit).
06:20:17 -!- BlackMeph has joined.
06:23:41 -!- BlackMeph has quit (Client Quit).
06:24:03 -!- BlackMeph has joined.
06:24:47 -!- BlackMeph has quit (Client Quit).
06:28:11 <lament> bah, scheme is annoying, it doesn't have slime
06:31:26 <lament> ...or hashtables
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:34 <calamari> befunge will do that to you
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:11:36 <AnMaster> lament, what did you do?
10:15:48 -!- faxathisia has joined.
11:46:52 -!- jix has joined.
11:57:23 -!- jix has quit (Nick collision from services.).
11:57:33 -!- jix has joined.
12:16:06 <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:13:21 <AnMaster> faxathisia, tetration?
15:13:41 <faxathisia> I have no idea
15:14:03 <faxathisia> pikhq hopefully knows
15:14:21 <faxathisia> (wiki says it's an iterated exponential)
15:14:29 <AnMaster> I see
15:15:05 <oklo> wwwhat
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:35 <AnMaster> :D
15:15:53 <AnMaster> specially compiled though:
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:09 <faxathisia> they should teach math in schools :D
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:04 <faxathisia> looks like Satan to me
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:13 <faxathisia> thue is cool
15:19:18 <AnMaster> oklofix, oh? gave up on compiler for befunge?
15:19:20 <faxathisia> It's just markov model isn't it?
15:19:26 <faxathisia> markov algorithm*
15:19:28 <oklofix> AnMaster: no, but i'm delaying it
15:19:32 <AnMaster> hah ok
15:19:33 <faxathisia> markov algorithm is TC anyway
15:19:39 <faxathisia> and it feels like Thue
15:19:57 <oklofix> AnMaster: http://www.vjn.fi/pb/p423454326.txt
15:20:05 <oklofix> see "Problem"
15:20:14 <AnMaster> oklofix, DNS failure
15:20:17 <oklofix> :o
15:20:27 <AnMaster> oklofix, that is DNS timeout
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:20:53 <faxathisia> hyperturning whatever
15:21:04 <AnMaster> faxathisia, hm? what would it do?
15:21:04 <faxathisia> turing**
15:21:07 <faxathisia> I don't know :S
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:26 <oklofix> i'll repaste
15:21:32 <faxathisia> run some small class of programs not computable on a turing machine
15:21:34 <AnMaster> oklofix, rafb is good
15:21:40 <faxathisia> I don't care what those programs are
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:14 <faxathisia> I don't know
15:22:24 <faxathisia> I guess they are still turing
15:22:35 <oklofix> http://pastebin.ca/942392
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:24 <AnMaster> just to annoy ppl :D
15:23:32 <faxathisia> gopher o_o
15:23:40 <oklofix> AnMaster: did you look?
15:23:47 <AnMaster> faxathisia, just run it to shock ppl on irc :P
15:23:51 <AnMaster> oklofix, looking
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:32 <AnMaster> oklofix, Damnitall?
15:24:38 <AnMaster> ;P
15:24:44 <oklofix> huh?
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:08 <AnMaster> or even damnitall
15:25:16 <oklofix> :D
15:25:17 <AnMaster> ;P
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:12 <oklofix> wwhat?
15:26:17 <AnMaster> er?
15:26:25 <oklofix> i just specified a label cannot start with loop""
15:26:29 <oklofix> *"loop"
15:26:33 <AnMaster> ah right
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:16 <AnMaster> oklofix, heh
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:20 <AnMaster> ?
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:36 <AnMaster> then a do while loop?
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:01 <oklofix> ...a do while loop?
15:29:07 <AnMaster> do {
15:29:08 <oklofix> you cannot do that with that N
15:29:10 <AnMaster> whatever
15:29:17 <AnMaster> } while (random() % 2);
15:29:18 <AnMaster> ?
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:04 <oklofix> in Jumpit
15:31:24 <oklofix> "label" just marks a label, and has the side-effect given by M
15:31:27 <oklofix> that's all about jumpit
15:31:40 <AnMaster> mhm
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:06 <AnMaster> yes right
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:33:45 <oklofix> i tihnk
15:33:46 <oklofix> *think
15:35:03 <oklofix> i need to go now, today is thue-day, i'll prolly tackle that problem next week
15:35:07 <oklofix> and kill it.
15:35:08 -!- jix has quit ("CommandQ").
15:35:09 <oklofix> ->
15:35:41 <faxathisia> I can't figure out how to code this without using streams/lazy-lists :S
15:35:54 <AnMaster> faxathisia, this = ?
15:36:08 <faxathisia> Prolog interpreter in a procedural language
15:36:13 <faxathisia> (scheme)
15:36:17 <faxathisia> (at the moment)
15:36:18 <AnMaster> ok *backs away*
15:36:22 <faxathisia> ?
15:36:35 <AnMaster> prolog and scheme are both over my head :P
15:36:40 <faxathisia> hardly
15:36:50 <AnMaster> bbl
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:41 <AnMaster> wtf?
16:22:48 * AnMaster was optimizing wrapping
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:22 <AnMaster> ie what are you testing
16:25:51 <Deewiant> it puts a " at the eastmost location and westmost location in space, on the same line of course
16:25:56 <Deewiant> and then goes there
16:25:59 <AnMaster> hm
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:26:58 <AnMaster> aha
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:27:41 <Deewiant> v>1> \v v"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:49 <AnMaster> the list of supported ones:
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> // MODU - Modulo Arithmetic
16:35:57 <AnMaster> { .fprint = 0x4d4f4455, .loader = &FingerMODUload, .opcodes = "MRU" },
16:35:57 <AnMaster> // NULL
16:35:57 <AnMaster> { .fprint = 0x4e554c4c, .loader = &FingerNULLload, .opcodes = "ABCDEFGHIJKLMNOPQRSTUVXYZ" },
16:35:58 <AnMaster> like that
16:36:19 <AnMaster> as they are sorted it should be easy to find the right one
16:36:19 <AnMaster> :D
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:37 <AnMaster> when unloading
16:39:38 <Deewiant> I just loop from A-Z and check which ones aren't null :-P
16:39:40 <AnMaster> only used then
16:39:50 <AnMaster> hm?
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:07 <AnMaster> ah right
16:41:10 <Deewiant> and then IP just has 26 stacks
16:41:22 <Deewiant> or something like that.
16:41:31 <AnMaster> Deewiant, yes but I thought fingerprints was local to the IP?
16:41:38 <AnMaster> as in what ones are loaded
16:41:40 <Deewiant> like said, IP has 26 stacks.
16:41:45 <AnMaster> ah right
16:41:46 <AnMaster> :)
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:51:51 <AnMaster> heh
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:55:49 <Sgeo> hi calamari
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:21 <AnMaster> Deewiant, in D?
17:20:23 <Deewiant> yep
17:20:25 <AnMaster> ah
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:24:29 <AnMaster> indeed
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:34:12 <AnMaster> r += (y + mask) ^ mask;
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:53:22 <Deewiant> or no, it is right after all.
17:53:57 <AnMaster> it gives correct result
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:08 <AnMaster> Deewiant, indeed
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:29 <AnMaster> lament, indeed?
18:00:38 -!- ais523 has joined.
18:00:38 <AnMaster> what about that?
18:00:41 <AnMaster> we know that
18:02:37 <lament> from which i conclude
18:02:47 <lament> that i should compile it in a stupid way instead
18:02:54 <AnMaster> err
18:03:07 <Deewiant> forsooth
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:01 <AnMaster> ais523, I checked that
18:10:08 <AnMaster> it is a __builtin__
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:10:38 <AnMaster> good idea
18:15:15 <AnMaster> Deewiant, different code
18:15:38 <Deewiant> how different
18:16:26 <AnMaster> not much
18:16:59 * AnMaster pastebins
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:20:50 <AnMaster> the patented one?
18:21:05 <Deewiant> ye
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:47 <Deewiant> thought so
18:21:55 <Deewiant> wonder why there's an extra mov
18:21:58 <AnMaster> Deewiant, eh both moves exist in both?
18:22:05 <AnMaster> as in first and last move
18:22:15 <Deewiant> doabs: mov sar xor sub mov
18:22:20 <Deewiant> doother: mov sar add xor
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:24:36 <Deewiant> hmm, well whatever
18:25:00 <AnMaster> Deewiant, no clue about that
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:25:17 <AnMaster> I'll try
18:25:53 <AnMaster> Deewiant, it does indeed
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:45 <AnMaster> :)
18:27:57 <AnMaster> Deewiant, I mean, donaive differs from abs then
18:28:51 <Deewiant> well, of course
18:28:55 <AnMaster> oh?
18:28:56 <Deewiant> AnMaster: abs doesn't use 64-bit ints
18:29:02 <AnMaster> Deewiant, aha
18:29:04 <AnMaster> I see
18:29:10 <Deewiant> it's int abs(int)
18:29:15 <AnMaster> labs
18:29:22 <Deewiant> yep, use that one
18:29:32 <Deewiant> and it should look the same again
18:29:49 <AnMaster> they do yes
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:35 <Deewiant> probably
18:30:38 <Deewiant> anyhoo, sauna ->
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:50:26 <faxathisia> haha
19:50:29 <faxathisia> that's horrible
19:53:59 <AnMaster> Deewiant, there? BAD: G gets like g
19:54:05 <AnMaster> how is ORTH get different?
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:56:08 <AnMaster> ah
19:57:06 <Sgeo> noerjan
19:57:09 <Sgeo> (no=hi)
19:57:26 <AnMaster> Cannot test S reliably. If this line begins with "GOOD: ", it worked.
19:57:29 <AnMaster> heh
19:57:36 <AnMaster> Deewiant, so now newline after :)
19:58:21 <oerjan> evenlessgeo
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:32 <AnMaster> even with your algorithms
20:01:55 <AnMaster> if say, delta is as after a ^, then you teleport sidways, so there is no program above or below
20:01:58 <AnMaster> then what should happen?
20:02:04 <Deewiant> infinite loop, of course
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:02:46 <AnMaster> Deewiant, heh ok
20:02:49 <Deewiant> "what did you expect?"
20:02:53 <AnMaster> indeed
20:03:02 <Sgeo> What's this about "GOOD: "? what langyage?
20:03:13 <AnMaster> Sgeo, test suite for befunge98
20:03:18 * AnMaster is writing cfunge
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:53 <AnMaster> Deewiant, err what?
20:03:54 * Sgeo stole some concept from befunge98 for use in PSOX iirc
20:04:03 <AnMaster> different urls?
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 <AnMaster> was weeks ago
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:13 <AnMaster> Deewiant, I see
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:09:52 <AnMaster> what is that about?
20:12:41 <AnMaster> $ time ./cfunge.opt ~/bashfunge/trunk/mycology/mycology.b98 > /dev/null
20:12:41 <AnMaster> real 0m0.096s
20:12:41 <AnMaster> user 0m0.075s
20:12:41 <AnMaster> sys 0m0.016s
20:12:42 <AnMaster> Deewiant, :D
20:12:51 <AnMaster> and that is with extensions
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 <Deewiant> nothing really
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:15:58 <Deewiant> s/h$//
20:16:05 <AnMaster> aha
20:16:13 <Deewiant> but no, it really doesn't matter
20:16:17 <Deewiant> if the rest are GOOD
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:18:56 <AnMaster> the same cell I mean
20:19:01 * AnMaster looks
20:19:13 <AnMaster> both values will work
20:19:23 <AnMaster> Deewiant, is it supposed to be like that?
20:19:25 <Deewiant> you mean 12R 12R?
20:19:44 <Deewiant> or what?
20:19:44 <AnMaster> Deewiant, yep, will return 1 and then 2, both 1 and 2 will however point to the same cell
20:20:11 <Deewiant> doesn't matter I guess
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:14 <AnMaster> Deewiant, indeed
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:31 <AnMaster> Deewiant, exactly
20:21:39 <ehird> ooh
20:21:41 <ehird> what did i miss
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:00 <ehird> meh
20:22:04 <AnMaster> ehird, what?
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:09 <ehird> :D
20:22:13 <ehird> Deewiant: refc=refcount?
20:22:15 <AnMaster> ehird, that's a nice name
20:22:22 <Deewiant> "referenced cells extension"
20:22:36 <AnMaster> ehird, what handprint? FFUN? FUNH?
20:22:48 <ehird> <AnMaster>someone said it was crappyly coded, ehird I think
20:22:50 <ehird> you bet :D
20:22:55 <ehird> AnMaster: FGEH
20:22:57 <ehird> i guess
20:23:01 <AnMaster> ehird, interesting
20:23:08 <ehird> it is pronounced 'fung-ehh'
20:23:10 <Deewiant> or FEH? :-P
20:23:11 <ehird> like 'fungy'
20:23:11 <AnMaster> tell me when it's done
20:23:13 <ehird> but without the ee
20:23:13 <ehird> :p
20:23:45 <AnMaster> ehird, anyway even if it is superior, I can make mine better
20:23:56 <AnMaster> always possible
20:23:59 <ehird> AnMaster: i care so much
20:24:00 <ehird> :|
20:24:05 <ehird> anyhoo, what does REFC do?
20:24:12 <AnMaster> ehird, it does madness
20:24:19 <Deewiant> allows you to reference a pair of cells with one value
20:24:20 <AnMaster> ehird, like pointers to cells
20:24:28 <Deewiant> so essentially what you do is you grow an array which contains pairs
20:24:35 <AnMaster> yep
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:03 <AnMaster> so it's always a memory leak
20:25:07 <ehird> hmm
20:25:09 <ehird> from my todo:
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:19 <ehird> :|
20:25:27 <AnMaster> ehird, good luck :D
20:25:33 <AnMaster> I think you can do it
20:25:37 <Deewiant> bignum-lengthed vectors? aleph-null-funge? :-P
20:25:50 <AnMaster> Deewiant, why not aleph-one?
20:25:51 <ehird> Deewiant: BF_word
20:25:56 <ehird> which is int32_t
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:12 <AnMaster> ehird, so 2^31 -1 dimensions?
20:26:12 <ehird> totally no fair
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:48 <ehird> yes but easier
20:26:48 <ehird> :)
20:26:51 <AnMaster> true
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:11 <ehird> :-)
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:27:44 <AnMaster> ehird, indeed
20:27:51 <AnMaster> ehird, and most in 2D
20:27:58 <ehird> yes
20:27:58 <AnMaster> 1D would be more rare again
20:28:06 <ehird> is unefunge even tc
20:28:07 <ehird> :|
20:28:19 <AnMaster> ehird, it is
20:28:26 <AnMaster> ehird, at least I think it is
20:28:29 <ehird> btw
20:28:33 <ehird> the Hunt the Wumpus-93
20:28:36 <ehird> does that work in 98 interps?
20:28:41 <AnMaster> ehird, yep, works in mine
20:28:44 <ehird> oklopol: I figured out how to do self-modifing code
20:28:46 <AnMaster> very fast
20:28:56 <faxathisia> hi ehird
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 <AnMaster> XD
20:29:09 <ehird> oklopol: Also include a decompiler.
20:29:16 <ehird> oklopol: Then 'p' compiles then MOVs to the codespace
20:29:18 <ehird> 'g' decompiles
20:29:20 <ehird> faxathisia: hai
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:29:48 <ehird> :D
20:30:02 <Deewiant> mine can do that already
20:30:03 <ehird> AnMaster:
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:12 <ehird> AnMaster: so what
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:43 <AnMaster> ehird, well I use bzr 1.1
20:30:46 <ehird> AnMaster: uhh so you compile it to a nop
20:30:46 <AnMaster> and bzr 1.2 is out
20:30:58 <AnMaster> ehird, hm ok
20:31:00 <Deewiant> AnMaster: you can always compile it to reverse at compilation time
20:31:13 <AnMaster> Deewiant, hm true
20:31:17 <AnMaster> ehird, indeed not a nop
20:31:29 <AnMaster> you reverse on errors in befunge
20:31:33 <AnMaster> like unknown instructions
20:31:33 * ehird update&upgrades
20:31:35 <AnMaster> or whatever
20:31:37 <ehird> AnMaster: yeah sure
20:31:39 <ehird> AnMaster: compile it to that.
20:31:42 <AnMaster> ehird, :)
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:52 <AnMaster> :D
20:31:53 <ehird> so, add oklopol's stack elimination
20:31:54 <ehird> and whooosh
20:32:18 <AnMaster> ehird, there are one major incompatiblity between 93 and 98, how to handle multiple spaces in strings
20:32:26 <Deewiant> and how to divide by zero.
20:32:29 <ehird> AnMaster: that thing screws up a bit
20:32:29 <ehird> :)
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:42 <AnMaster> ie, drop duplicate spaces
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:36 <AnMaster> or likely less
20:33:40 <Deewiant> oh noes, teh slowness!!!!oneoneoneeleven1/9
20:33:48 <AnMaster> Deewiant, heheh :)
20:33:53 <ehird> AnMaster: you think wumpus.b is bad?
20:33:57 <ehird> err
20:33:58 <ehird> .bf
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:12 <AnMaster> ehird, I have
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:20 <AnMaster> :P
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:28 <AnMaster> :D
20:34:29 <AnMaster> :D
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:34 <AnMaster> I think that's the url
20:35:37 <AnMaster> it is slow
20:35:38 <AnMaster> very slow
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:35:59 <AnMaster> Deewiant, heh ok
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:51 <ehird> lament: hardly
20:36:54 <AnMaster> Deewiant, but true, ccbi is quite fast too, compared to what bashfunge was
20:37:00 <lament> ehird: really!
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:23 <ehird> for this:
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:27 <ehird> 1 =- stringmode;
20:37:34 <Deewiant> AnMaster: :-D
20:37:40 <AnMaster> Deewiant, also it failed when it got to x, I gave up there
20:37:45 <AnMaster> didn't do much of the rest
20:37:47 <Deewiant> :-P
20:37:50 <lament> ehird: the most annoing for the retarded compiler i'm trying to write, not for a c interpreter
20:37:57 <ehird> lament: oh
20:37:59 <ehird> lament: trivial
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:08 <AnMaster> indeed
20:39:58 <ehird> AnMaster: i might use __asm__ for this
20:39:59 <ehird> :-D
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:03 <ehird> hmm
20:40:03 <AnMaster> :)
20:40:07 <ehird> fungeh kinda sucks for a name
20:40:07 <ehird> :P
20:40:20 <ehird> AnMaster: catch the signal
20:40:21 <ehird> XD
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:36 <ehird> i don't like it
20:40:37 <ehird> so meh
20:40:38 <Deewiant> ehird: just call it "fungy"
20:40:46 <ehird> AnMaster: #ifdef __PPC__
20:40:55 <ehird> Deewiant: #include "fungy/fungespace.h"
20:40:55 <AnMaster> ehird, what about kung-funge?
20:40:56 <ehird> naaaah
20:40:57 * AnMaster runs
20:40:58 <AnMaster> err
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:12 <Deewiant> frungy! frungy! frungy!
20:41:15 <AnMaster> kung-fu?
20:41:19 <AnMaster> something like that?
20:41:39 <AnMaster> so just change the second word to funge?
20:41:46 <Deewiant> "kung fu"
20:41:53 <ehird> oerjan: vertical strnigs too
20:41:57 <AnMaster> oerjan, not only that, but vertical too
20:41:59 <Deewiant> or just 功夫 :-P
20:42:00 <AnMaster> Deewiant, ah yes
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:18 <Deewiant> AnMaster: wikipedia :-)
20:42:20 <ehird> aww
20:42:22 <ehird> /nick 功夫
20:42:23 <ehird> fails
20:42:26 <AnMaster> Deewiant, heh
20:42:30 <oerjan> i consider "line" as the geometric concept here ;)
20:42:30 <Deewiant> ehird: realname works though
20:42:32 <AnMaster> ehird, indeed, see IRC specs
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:03 <AnMaster> ehird, indeed
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:04 <AnMaster> or something like that
20:44:10 <Deewiant> RFC 2812: "No specific character set is specified."
20:44:17 <AnMaster> Deewiant, 2812, bah
20:44:17 <ehird> Deewiant: ignore the irc rfcs
20:44:18 <ehird> seriously
20:44:25 <AnMaster> nobody follows 2812
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:00 <Deewiant> "topology theory"? :-P
20:45:03 <AnMaster> Deewiant, http://tools.ietf.org/html/rfc1459
20:45:04 <ehird> Deewiant: used lightly
20:45:04 <ehird> :D
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:34 <Deewiant> er, 1459
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 <AnMaster> equivalence of two nicknames.
20:45:53 <AnMaster> :)
20:45:53 <AnMaster> (weird yes)
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:46:43 <AnMaster> that's what I've been told
20:47:03 <ehird> AnMaster: correct
20:47:15 <Deewiant> right, didn't know that
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:27 <ehird> :)
20:47:30 <Deewiant> I'm too young
20:47:35 <ehird> Deewiant: ditto
20:47:37 <AnMaster> Deewiant, so am I
20:47:41 <ehird> i think everyone here is
20:47:41 <ehird> :)
20:47:42 <AnMaster> but I like computer trivia
20:47:50 <Deewiant> then why do you know stuff about 7-bit charsets??! :-P
20:47:55 <Deewiant> (and I don't) ;-)
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:27 <AnMaster> hardly noticable
20:49:31 <AnMaster> and I may very well be wrong
20:49:38 <Deewiant> you're probably right
20:49:45 <Deewiant> before it hits the main function:
20:49:51 <Deewiant> gc initialized
20:49:55 <Deewiant> command line arguments parsed
20:50:02 <Deewiant> module constructor run for each fingerprint
20:50:07 <Deewiant> some buffers allocated
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:14 <AnMaster> Sgeo, I think it bans *serv
20:51:15 <ehird> And a queen
20:51:22 <AnMaster> ehird, hehe, I know where UK is
20:51:23 <Sgeo> AnMaster, but only FreeNode does, it seems
20:51:24 <ehird> :D
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:45 <ehird> AnMaster: bingo
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:14 <ehird> Sgeo: Yes, that.
20:52:19 <Deewiant> AnMaster: mostly it's the module constructors which take time.
20:52:44 <AnMaster> Deewiant, hehe
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:25 <ehird> :|
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:38 <AnMaster> ehird, impossible
20:53:42 <Deewiant> AnMaster: also, because of TRDS I need to make a copy of the entire funge-space.
20:53:42 <AnMaster> you can't do it afaik
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:24 <Sgeo> Use assembla!
20:54:27 <AnMaster> ehird, just get last release? :/
20:54:30 <AnMaster> ehird, well a sec
20:54:41 <AnMaster> ehird, maybe the one mirrored by lauchpad works better
20:54:49 * Sgeo hosts PSOX on Assembla
20:54:58 <Sgeo> (VCS is SVN)
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 <ehird> brilliant!
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:26 <ehird> :D
20:56:49 <AnMaster> ehird, well try #launchpad and #ubuntu
20:56:54 <AnMaster> I use gentoo and freebsd :P
20:57:07 <Deewiant> yes, and gentoo provides bzr 0.17 if you recall
20:57:16 <Deewiant> anything newer is unstable
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:03 <Deewiant> memleak mode xD
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:28 <AnMaster> my code is very very much C99
20:58:29 <ehird> far more convenient than free()
20:58:33 <ehird> but yeah.
20:58:37 <ehird> unfortunately, there's the rest of c++
20:58:38 <ehird> :)
20:58:44 <AnMaster> ehird, exactly
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:44 <AnMaster> in my C code
20:59:51 <ehird> basically I think C++'s lifetime&memory stuff is right, but the rest of it is sadly tremendously misguided
20:59:58 <AnMaster> ehird, exactly
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:30 <AnMaster> aha
21:02:45 <AnMaster> Sgeo, PCRE = perl compatible regex
21:02:50 <ehird> AnMaster: no such thing as 'unstable ubuntu'
21:02:51 <ehird> well
21:02:55 <ehird> the bleeding edge distro
21:02:56 <ehird> :
21:02:57 <AnMaster> ehird, oh yes there is
21:02:57 <ehird> :)
21:02:58 <Sgeo> http://docs.python.org/lib/re-syntax.html
21:02:59 <Deewiant> AnMaster: sure it makes sense
21:03:02 <AnMaster> ehird, all is
21:03:10 <AnMaster> Deewiant, the ?: bit doesn't?
21:03:13 <Sgeo> (?:...)
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:51 <Deewiant> that is exactly a perl regex
21:03:55 <ehird> fungy is a kinda sucky name
21:03:55 <ehird> :p
21:03:56 <AnMaster> hm
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:29 <AnMaster> ok
21:04:39 <AnMaster> Sgeo, I suggest C
21:04:44 <AnMaster> or objc maybe
21:04:49 <Deewiant> C(?:[+]{2}|#)?
21:04:50 <Sgeo> Why C as opposed to C++?
21:04:56 <AnMaster> Deewiant, not #
21:04:56 <ehird> AnMaster: please don't tell Sgeo to learn C/C++
21:05:01 <AnMaster> ehird, why?
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:18 <AnMaster> ehird, err what?
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:37 <AnMaster> :)
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:06:57 <AnMaster> heh, it doesn't?
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:07 <AnMaster> like say tetex
21:08:12 <AnMaster> or pdftex
21:08:15 <ehird> AnMaster: Well TexLive and XeTeX and all are written in C (iirc) in a modern fashion
21:08:16 <ehird> So no.
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:08:54 <AnMaster> (hehehe)
21:08:55 <ehird> Plus UNICODE
21:08:57 <ehird> UNICOOOODE
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:00 <AnMaster> mhm
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:24 <Deewiant> heads will roll
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:23 * AnMaster watches with interest
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:13 <ehird> :|
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:36 <ehird> :|
21:13:38 <AnMaster> Deewiant, and also, -fwhole-program?
21:13:48 <AnMaster> for use with -combine
21:14:18 <AnMaster> ehird, I think Sgeo want you to give some specific examples
21:14:24 <lament> where's sgeo's code?
21:14:26 <AnMaster> like "like x"
21:14:32 <AnMaster> lament, I wonder that too
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:47 <AnMaster> ehird, wtf is that
21:15:49 <lament> what the fuck is that
21:15:51 <AnMaster> I don't know python
21:15:52 <ehird> AnMaster: StringTemplate
21:15:54 <ehird> and that's not python
21:15:55 <ehird> :D
21:16:00 <AnMaster> ehird, what is it then?
21:16:04 <ehird> AnMaster: stringtemplate
21:16:10 <AnMaster> ehird, and, what is that?
21:16:18 <ehird> AnMaster cannot use google
21:16:20 <ehird> it shoots him
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:16:48 * AnMaster runs
21:17:39 <AnMaster> ehird, ok found it
21:17:40 <AnMaster> hm
21:17:50 <AnMaster> Sgeo, <ehird> $blimps:{b|case $b.id$:$\n$ $b.code$$\n$ break\;};seperator="\n"}$ <-- epic
21:17:56 <AnMaster> that was one I think
21:18:07 <ehird> dude
21:18:09 <ehird> that is unrelated to sgeo
21:18:15 <ehird> :|
21:18:15 <AnMaster> ah ok
21:18:19 <ehird> why is everyone trying to link it to sgeo
21:18:20 <ehird> hehe
21:18:38 <AnMaster> ehird, you said his code was horrible, we asked for example, you posted that
21:18:39 <AnMaster> that is why
21:18:52 <oklokok> AnMaster: what country do you live int?
21:18:53 <oklokok> *in
21:18:58 <AnMaster> oklokok, Sweden, why?
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:26 <AnMaster> oklokok, oh yes dns was down
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:23:59 <AnMaster> ah
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 <ehird> a hash table?
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:05 <ehird> :(
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:28 <AnMaster> ehird, err what?
21:30:43 <AnMaster> ehird, you got 64-bit? I can send you a static binary if you do
21:31:35 <ehird> AnMaster: 32-bit
21:31:39 <AnMaster> damn :/
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:31:56 <ehird> ok
21:31:58 <ehird> every gc,
21:32:06 <ehird> you go through every page on the internet
21:32:15 <AnMaster> ??
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:32:24 <ehird> XD XD XD XD XD
21:33:06 <AnMaster> oh a garbage collector for internet?
21:33:36 <oklokok> ehird: sounds awesome
21:34:18 <ehird> AnMaster: for a short url service
21:34:24 <ehird> :-D
21:34:31 <AnMaster> ehird, not doable however
21:34:33 <AnMaster> in reality
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:38:59 <ehird> hmm
21:39:01 <ehird> cherokee seems OK
21:39:36 <AnMaster> ehird, lighttpd :)
21:39:45 <ehird> AnMaster: sucks
21:39:48 <ehird> the config gets all sprawling
21:39:53 <AnMaster> hm
21:39:56 <ehird> and its fastcgi 'lets try and spawn it myself' sucks
21:39:59 <ehird> because itnever works
21:39:59 <AnMaster> ehird, thttpd?
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:37 <ehird> Hmm
21:40:40 <ehird> no
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:48 <ehird> i think
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:11 <AnMaster> no problems whatsoever
21:41:19 <ehird> hmmmm
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:39 <AnMaster> err
21:41:41 <AnMaster> fcgi
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:43:47 <ehird> check it out
21:45:01 <AnMaster> ok, but I don't care much
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:45:46 <AnMaster> ok
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
21:55:40 <AnMaster> 64-bit is -march=k8
22:00:15 <AnMaster> ehird, does it work for you?
22:00:32 <AnMaster> of course you would get best result optimizing for your arch
22:05:19 <ehird> AnMaster: works
22:05:26 <ehird> $ uname -a
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:05:29 <ehird> :P
22:05:46 <AnMaster> ehird, ?
22:05:52 <AnMaster> that doesn't say much
22:06:24 <AnMaster> ehird, grep -E '(vendor|model|flags)' /proc/cpuinfo
22:06:25 <AnMaster> :P
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 : 12
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:30 <ehird> and yes
22:08:31 <AnMaster> ehird, of course I recommend building and profiling your own
22:08:33 <ehird> i know this box suxx0r
22:08:37 <ehird> its the crap one
22:08:37 <ehird> :)
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:10:06 <AnMaster> :/
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:38 <ehird> AnMaster: no? ;)
22:22:45 <AnMaster> err? was busy
22:22:54 <AnMaster> ehird, no I can't think of one
22:23:07 * AnMaster never really cared about qdbs
22:24:11 <ehird> i mgiht call it 'busy'
22:24:13 <ehird> :)
22:24:34 <Sgeo> How do I make my code readable?
22:24:51 <AnMaster> Sgeo, ask ehird
22:24:53 <AnMaster> he knows
22:24:59 <Sgeo> ehird?
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:43:32 <Sgeo> hehe
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:46 <AnMaster> interesting
22:45:48 * Slereah gives ehird a rat's ass.
22:45:58 <Slereah> You can do whatever you want with it.
22:46:01 <Slereah> No questions asked.
22:46:19 <ehird> oklokok: /oklopol maybe i guess#
22:46:20 <ehird> :P
22:46:22 <ehird> Slereah: heh
22:46:25 * AnMaster notes it shaves another 0.08 seconds off runtime for mycology without breaking stuff
22:46:28 <AnMaster> Deewiant, ^
22:46:31 <AnMaster> \o/
22:46:32 <AnMaster> :P:P
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:01 <ehird> beyond admins
22:55:46 <ehird> oerjan: i mean, what can you display about a quote submitter
22:55:49 <ehird> number of quotes
22:55:51 <ehird> that's about it
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:00:45 * oerjan was busy in #haskell
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:02:04 <ehird> :)
23:08:11 <ehird> oerjan: start caring! ;)
23:08:41 * oerjan thiddles his fumbs
23:08:54 <ehird> NAOO
23:09:00 <ehird> Slereah: okay, you then :P
23:09:13 <Slereah> D:
23:10:16 <AnMaster> Slereah, D: ? it's a variant of D?
23:10:19 * AnMaster run
23:10:20 <AnMaster> runs*
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:12:56 <ehird> <_<
23:13:34 <faxathisia> :S
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:08 <ehird> hm wait
23:14:11 <ehird> when user contributing
23:14:13 <ehird> i meant:
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:15 <ehird> user accounts
23:14:21 <ehird> log in and submit
23:14:27 <Slereah> Nah.
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:38 <ehird> oh
23:14:40 <ehird> and a last of tags
23:14:45 <ehird> and maybe a note fiel
23:14:45 <ehird> d
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:01 <Sgeo> WHY?
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:31 <faxathisia> python?????
23:15:39 -!- ais523 has joined.
23:15:44 <Sgeo> It can't be a hybrid site
23:15:45 <Sgeo> ?
23:15:47 <Sgeo> Hi ais523
23:15:55 <ais523> Hi Sgeo
23:16:02 <ehird> Sgeo: i don't want it to be :P
23:16:04 <ehird> ais523: hey there
23:16:08 <ehird> faxathisia: convenient.
23:16:12 <ais523> Hi ehird, as well
23:16:24 <AnMaster> ehird, if it's python you can get Sgeo to help
23:16:25 <AnMaster> :D
23:16:27 * AnMaster runs
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:32 <ehird> AnMaster: hee
23:16:36 <faxathisia> spot the bug http://rafb.net/p/aLPQ0C26.txt :(
23:16:40 <ais523> qdb?
23:16:50 <ehird> ais523: quote data base
23:16:55 <AnMaster> ehird, write it in befunge
23:17:01 <AnMaster> with SOCK extension
23:17:04 <ehird> since #esoteric is far too nsfw to keep off the web a lot of the time
23:17:04 <ehird> :P
23:17:06 <faxathisia> use PSOX
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:53 <ehird> hmm
23:17:59 <ehird> rash just has a text field :)
23:17:59 <AnMaster> the second would be sqlite interface
23:18:02 <AnMaster> or some other databse
23:18:02 <ehird> hmm
23:18:05 <AnMaster> database*
23:18:05 <ehird> will tags on quotes really be useful?
23:18:08 <ehird> i doubt it
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:18:33 <faxathisia> ehird look at my horrible code
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:19:52 <ehird> truly :)
23:20:15 <ehird> well
23:20:16 <ehird> not really
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:30 <ehird> :D
23:20:46 <ais523> ehird: the sort of thing that confuses pastebin.ca's syntax higlighting
23:21:07 <ehird> yes
23:21:08 <faxathisia> never seen a good perl syntax hilighter
23:21:08 <ehird> hmm
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:23 <ehird> good/bad?
23:21:35 <ehird> seems kinda overcomplicated to me
23:21:38 <AnMaster> ais523, what are these tires?
23:21:41 <ehird> but maybe it makes stuff more balanced
23:21:49 <AnMaster> ais523, I mean, tiers
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:07 <AnMaster> hm
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:42 <AnMaster> ah
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:03 <AnMaster> what about tier 4?
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:34 <ehird> hm
23:23:36 <ais523> (by special-casing p)
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:25 <ehird> hmm
23:24:28 <ehird> possibly last qdb question:
23:24:30 <ehird> do we need approval?
23:24:31 <ehird> or..
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:27 <AnMaster> no?
23:25:31 <AnMaster> -_-
23:25:35 -!- Corun has quit ("Leaving").
23:26:04 <ehird> ais523: approval as in 'admin approves all quotes'
23:26:06 <ehird> every site has it
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:29:28 <ehird> very simple
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:32:37 <ais523> (and I meant \ not /)
23:34:14 <ehird> whee
23:34:15 <ehird> all the models are done
23:34:17 <ehird> for the qdb
23:34:20 <ehird> apart from reports, which can come later
23:34:43 <AnMaster> ais523, hm
23:41:26 -!- algol has joined.
23:42:02 -!- algol has quit (Client Quit).
23:42:11 <ehird> you know
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:24 <ehird> :D
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:53 <ehird> hehe
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:00 <ehird> so hah
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:53:53 <lament> that's fine
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:56:38 <ais523> and likewise, 0^0 = 1
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
2008-03-15
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:33 <ehird> dibbsss
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:28 <ehird> cool
00:02:40 <ehird> include landarins J
00:02:43 <ehird> :D
00:03:42 <ais523> ehird: what's that?
00:04:51 <ehird> ais523: hard to explakin
00:05:00 <ehird> c/cc on steroids
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:20 <ais523> ehird: not exactly
00:07:25 <ais523> but there are various ways to simulate them
00:07:30 <ehird> :/
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:22:13 <ehird> So I will.
00:23:06 <ehird> ais523: Hmm
00:23:09 <ehird> What about one with no [...]?
00:23:18 <ehird> The only way to get a quotation is 'dei'
00:23:21 <ehird> (de-i)
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:45 <ehird> foo dei => [foo]
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:24:54 <ehird> so like
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:25:30 <oerjan> dup a dei doo dah
00:26:04 <Deformative> Whatcha talking about?
00:26:18 <Deformative> Factor?
00:26:23 <ehird> Deformative: no
00:26:35 <Deformative> Then what?
00:26:43 <ehird> this
00:27:28 * Deformative is waiting.
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:36 <ehird> so:
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:13 <ehird> cooooooooooool :D
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:31:20 <Deformative> Heh.
00:33:06 <ehird> ais523: dips rewrite rule is simple :D
00:33:07 <ehird> [X] Y dip => X Y
00:33:21 <ais523> ehird: eys
00:33:24 <ais523> s/eys/yes/
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:35:56 <ehird> and no, ais523
00:35:57 <ehird> it's ... TOP
00:36:00 <ehird> err
00:36:00 <ehird> wait
00:36:02 <ehird> you're right
00:36:22 <ehird> X [Y] dip => Y X
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:43 <ehird> x
00:37:43 <ehird> :D
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:11 <ehird> err wait
00:38:13 <ehird> i need compose
00:38:17 <ehird> ais523: btw
00:38:21 <ehird> [X] dei => http://en.wikipedia.org/wiki/Special:Search?go=Go&search=X
00:38:24 <ehird> err.
00:38:25 <ehird> well
00:38:25 <ehird> :D
00:38:29 <ehird> [X] dei => [ [X] ]
00:38:34 <ehird> but
00:38:36 <ehird> you can't do that literally
00:38:36 <ehird> so.
00:38:50 <ehird> so i need a special 'curry;
00:38:55 <ais523> are you implementing wrap?
00:39:01 <ehird> ais523: guess so
00:39:01 <ehird> heh
00:39:31 <ehird> ais523: http://pastebin.ca/943115
00:39:32 <ehird> new spec
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:03 <ehird> ais523: haha, why
00:40:03 <ehird> :P
00:40:08 <ehird> hmm
00:40:09 <ehird> true i guess..
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:40 <ehird> ais523: wait
00:41:42 <ehird> what would that do
00:41:42 <ehird> :|
00:41:50 <ehird> hm
00:41:51 <ehird> [X] sii => [X] X
00:41:54 <ais523> it's :^ in Underlambda/Underload
00:42:01 <ais523> so [X] sii => [X] X
00:42:05 <ais523> heh, snap
00:42:11 <ehird> ais523: maybe I should do Y
00:42:11 <ehird> :D
00:42:15 <ehird> wait, impossible
00:42:16 <ehird> xD
00:42:52 <ehird> ais523: dup drop dei => [drop]
00:42:53 <ehird> useful
00:43:10 <ais523> ehird: all reversible combinators can be deid easily
00:43:31 <ehird> ais523: yeah
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:05 <ehird> wait, no
00:45:08 <ehird> you'd need another dip
00:45:09 <ehird> arrgh
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:24 <ehird> i don;t
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:46:59 <ehird> o
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:41 <ais523> e.g. (:^):^
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:00:07 <ehird> :)
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:24 <ehird> ais523: woo
01:04:24 <ehird> :D
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:46 <ehird> :P
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:12 <ais523> otherwise, no
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.
02:57:34 <oklokok> binary search?
02:57:41 <oklokok> dunno
02:57:50 <oklokok> lotsa ways
02:57:53 <faxathisia> probably just iterate newtons methods
02:57:57 <faxathisia> -s
03:02:46 -!- Corun has joined.
03:04:19 -!- calamari has joined.
03:19:13 -!- Tritonio_ has quit (Remote closed the connection).
03:51:27 -!- Corun has quit (Read error: 110 (Connection timed out)).
05:01:11 * oklokok made his first thue program!
05:01:15 <oklokok> ski interp
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:11:52 <oklokok> :D
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");
10:35:38 <AnMaster> real 0m0.085s
11:00:24 -!- sebbu2 has joined.
11:08:12 -!- sebbu has quit (Read error: 110 (Connection timed out)).
11:08:12 -!- sebbu2 has changed nick to sebbu.
11:14:13 <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:14:35 <AnMaster> ah I see
11:14:44 * AnMaster is wrestling with cmake atm
11:15:36 <AnMaster> ah that's fixed
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:18:19 <AnMaster> wtf *looks again*
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:42:54 * AnMaster debugs
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:02 * AnMaster wonders wtf
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:21 <AnMaster> wtf
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:49:43 <AnMaster> w t f
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:50:54 <AnMaster> and I run on same computer
12:51:20 <ais523> OK, that makes it substantiatlly harder to get things wrong
12:51:27 <AnMaster> ais523, indeed
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:35 <AnMaster> thing you boot into
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:53:09 <AnMaster> but that was it
12:53:15 <AnMaster> no invalid reads or such
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:55:59 * AnMaster checks one thing
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:20 <AnMaster> that one breaks it
12:57:27 <ais523> what type is FUNGEDATATYPE?
12:57:45 <AnMaster> ais523, int_fast64_t, depending on compile time options
12:57:54 <AnMaster> the normal line is:
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:58:50 <AnMaster> ais523, heheh :)
12:58:54 <AnMaster> 128-bit anyone?
12:59:05 <AnMaster> actually gcc got __int128_t if you want to try
12:59:09 <AnMaster> horribly slow here
12:59:29 <AnMaster> ais523, anyway it can be set to use int32_t or int_fast64_t
12:59:30 <AnMaster> :)
12:59:34 <AnMaster> cfunge that is
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:00:30 <AnMaster> copied wrong one first
13:03:28 <AnMaster> ok... this doesn't make any sese
13:03:31 <AnMaster> sense*
13:03:57 <ais523> what data type is curTime.tm_hour?
13:03:58 <AnMaster> 11 * 256 * 256 = 720896
13:04:03 <AnMaster> ais523, int, so 32-bit
13:04:07 <ais523> is it possibly overflowing before you cast it to FUNGEDATATYPE?
13:04:10 <AnMaster> 668196 < 720896
13:04:17 <AnMaster> 2^32 > 720896
13:04:19 <ais523> no, can't be in this case
13:04:23 <AnMaster> should not overflow?
13:04:37 * ais523 has been working on a 16-bit embedded system, and as a result is somewhat jumpy about overflows
13:05:07 <AnMaster> ais523, well man gmtime says it's int
13:05:17 * AnMaster checks header file
13:05:37 <AnMaster> header file agrees
13:05:46 <ais523> so it's not an overflow, at least not there...
13:05:56 <ais523> what's 668196 in hex?
13:06:16 <ais523> ~$ printf %x\\n $((668196))
13:06:16 <ais523> a3224
13:06:18 <AnMaster> $ echo $(( 0x668196 ))
13:06:18 <AnMaster> 6717846
13:06:18 <AnMaster> ?
13:06:29 <ais523> AnMaster: you converted in the wrong direction
13:06:35 <AnMaster> ah right
13:06:36 <AnMaster> true
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:01 <AnMaster> in my stack dump routine
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:09:43 * AnMaster can't think of how atm
13:10:04 <ais523> hour = 668196 / 65536
13:10:13 <ais523> minute = (668196 / 256) % 256
13:10:21 <ais523> second = (668196) % 356
13:10:35 <AnMaster> % 356?
13:10:36 <ais523> s/356/256/
13:10:50 <AnMaster> 10:50:36
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:11:43 <AnMaster> ais523, hard to check :/
13:12:02 <ais523> agreed
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:24 <AnMaster> I use binary from Deewiant
13:12:43 <ais523> so checking will be hard, then
13:12:49 <AnMaster> ais523, yep
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:25 <AnMaster> or rather
13:13:32 <AnMaster> hard code the value of 10:50:36
13:14:18 <AnMaster> ais523, now it correctly says:
13:14:20 <AnMaster> That the time is 13 : 14 : 05
13:14:43 <AnMaster> local time hm
13:14:56 * AnMaster changes to UTC
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:07 <AnMaster> hm
13:27:21 <AnMaster> ais523, year of the pig?
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:05 <AnMaster> all in one
13:29:34 <AnMaster> $ ddate
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:56:57 <AnMaster> ais523, indeed
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:23:59 <AnMaster> ah what was the issue?
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:24:31 <AnMaster> ah
16:25:17 <Deewiant> and subr, what about it
16:25:38 <Deewiant> the call stack is initialized to 8, yes. but it can grow.
16:25:43 <AnMaster> ah right
16:25:44 <Deewiant> (first two lines of push)
16:25:59 <AnMaster> Deewiant, why not create a normal temp stack?
16:26:13 <Deewiant> 'normal'?
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:26:48 <Deewiant> I think they might nowadays
16:27:12 * AnMaster points to his stack struct
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:40 <Deewiant> but it's different
16:27:51 <Deewiant> 'cause this one doesn't pop zero when it's empty, for instance.
16:28:00 <AnMaster> hm true
16:28:04 <Deewiant> I don't know, I can't remember what the fingerprint does.
16:28:17 <AnMaster> Deewiant, RC/Funge subroutine
16:28:26 <Deewiant> call, jump, ret.
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:03 <Deewiant> yeah.
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:30:54 <Deewiant> look at what's happening
16:30:58 <Deewiant> in call(), it pops n
16:31:09 <Deewiant> and then it moves n cells from IP's stack to the callstack
16:31:17 <Deewiant> in ret, it puts them back
16:31:28 <Deewiant> or wait, what?
16:32:03 <Deewiant> it pops n, then it puts the ret address, then it puts them back again.
16:32:15 <Deewiant> I guess you're right.
16:32:31 <Deewiant> so it's just an optimization to avoid needless heap activity.
16:32:39 <AnMaster> huh, auto is a C keyword!?
16:32:44 * AnMaster wonders what it does in C
16:32:53 <Deewiant> nothing
16:33:04 <AnMaster> what is it for then?
16:33:07 <Deewiant> AnMaster: you know 'register'?
16:33:13 <AnMaster> yes
16:33:17 <Deewiant> auto is basically the opposite
16:33:20 <Deewiant> i.e. let the compiler decide
16:33:25 <Deewiant> but auto is also the default for all variables
16:33:31 <Deewiant> so it's unnecessary
16:33:45 <AnMaster> err that's volatile?
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:56 <Deewiant> err
16:33:59 <AnMaster> auto would be default middle value
16:34:01 <Deewiant> I'm using the term 'opposite' loosely
16:34:04 <AnMaster> ie, let compiler decide
16:34:09 <Deewiant> register -> put it in register
16:34:12 <AnMaster> yep
16:34:13 <Deewiant> auto -> let compiler decide
16:34:21 <Deewiant> volatile -> always read the value from wherever it came from
16:34:27 <AnMaster> indeed
16:34:36 <AnMaster> therefore register is opposite of volatile
16:34:38 <AnMaster> ;P
16:34:52 <Deewiant> I'd disagree
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:35:16 <AnMaster> well strictly speaking indeed
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:39:32 <SimonRC> i,e, stack 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:40:12 <SimonRC> when it blatently doesn't
16:41:54 <AnMaster> #\884***+1#<;#_ -! #_ bb*01- x>".dedaol">:#_,#>:#_,#>:#_,#>:#_,#>:#_,#>:#_,#>:#_,#>:#_$a,Testing fingerprint SUBR... loaded.
16:41:54 <AnMaster> 0655**- \ ef* - x5xtxxxxxxxxxxxxxxxxxxxxxxxxxx
16:42:03 * AnMaster sighs at infinite loop
16:42:25 <SimonRC> ah, usefunge
16:42:27 <SimonRC> *une
16:42:30 <AnMaster> no
16:42:35 <AnMaster> just debug output
16:42:41 <AnMaster> from my befunge interpreter
16:42:46 <SimonRC> ok
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:44:55 <SimonRC> ok
16:47:20 <AnMaster> Deewiant, help, what could cause that error on SUBR loading? :(
16:47:24 <AnMaster> it makes no sense
16:47:29 <Deewiant> dunno
16:47:33 <AnMaster> >0" tnirpregnif gnitseT">:#,_00p410p310p210p110p>:;^p1p00:+1g00:;# _ " ...",,,, 41g:!#^_>31g:!#^_>21g:!#^_>11g 00g #^(22p33pv>".dedaol">:#,_$a, 0655**- \ ef* - x
16:47:34 <Deewiant> do you get to (15, 725)
16:47:39 <AnMaster> it fails at the x at the end
16:47:45 <AnMaster> somehow it pops 0,0
16:47:50 <Deewiant> so something is messed up
16:47:53 <AnMaster> so ip end up not moving
16:48:01 <Deewiant> because that's the standard fingerprint loading routine
16:48:03 <Deewiant> used for every fingerprint
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:27 <Deewiant> in this case it should be 725
16:48:41 <AnMaster> Testing fingerprint SUBR... loaded.
16:48:41 <AnMaster> Testing fingerprint SUBR... loaded.
16:48:42 <AnMaster> huh
16:49:26 <AnMaster> Deewiant, that is odd eh?
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:49:55 <AnMaster> yes
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:02 <Deewiant> where is it at
16:51:18 <AnMaster> err?
16:51:28 <Deewiant> 2008-03-15 17:41:54 ( AnMaster) 0655**- \ ef* - x5xtxxxxxxxxxxxxxxxxxxxxxxxxxx
16:51:31 <Deewiant> x5xtx
16:51:35 <AnMaster> good question a sec
16:51:36 <Deewiant> what's the 5
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:25 <Deewiant> x=15 y=0? fail :-P
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
16:57:20 <AnMaster> (gdb) print ip->delta
16:57:20 <AnMaster> $1 = {x = -150, y = -210}
16:57:23 <AnMaster> yes indeed
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:20 <AnMaster> Deewiant, yes that was it ^
17:02:25 <Deewiant> J? I thought that died before getting to J
17:02:35 <AnMaster> Deewiant, nop
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:02:59 <AnMaster> SimonRC, sub routinesa
17:03:03 <AnMaster> routines*
17:03:14 <SimonRC> I thought '98 already did those
17:03:18 <AnMaster> err no?
17:03:25 <SimonRC> oh
17:07:01 <AnMaster> Deewiant, pull to get my SUBR, not yet optimal
17:07:10 <AnMaster> (in sense of speed I mean)
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:20 <SimonRC> hmm, odd indeed
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:11:27 <AnMaster> indeed
17:12:06 * SimonRC considers a C->Befunge compiler
17:13:30 <SimonRC> actually a Forth might work quite well
17:14:15 <AnMaster> SimonRC, err what?
17:14:20 <AnMaster> C->forth?
17:14:24 <AnMaster> sure, but why?
17:14:32 <AnMaster> oh wait, C->befunge would be nice
17:14:47 <AnMaster> because then I could run cfunge under cfunge
17:14:53 <SimonRC> heh
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:15:41 <AnMaster> and CCBI is in D
17:15:46 <AnMaster> so a pain to compile
17:15:50 <SimonRC> what about fbbi?
17:15:58 <AnMaster> SimonRC, not conformant iirc
17:16:53 <AnMaster> SimonRC, http://users.tkk.fi/~mniemenm/befunge/mycology-comparison.html
17:17:04 <AnMaster> see chart at end
17:17:28 <AnMaster> Deewiant, btw for mycology fix of date, you didn't update webpage it seems?
17:17:33 <AnMaster> ie, no changelog entry
17:23:36 <Deewiant> only on the main page
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:25:53 <Sgeo> zzzz
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:49 <AnMaster> ais523, what is splinter?
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:21 <ais523> nothing
17:44:23 <ais523> it was just for fun
17:44:29 <AnMaster> link to it?
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:35 <AnMaster> ie, passing around ip pointer
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:01 <AnMaster> and easy to fix
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:09 <oklokok> splinter is cute
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:25 * AnMaster wonders why
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:18 <AnMaster> hrm
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
17:59:39 <AnMaster> ais523, true
18:13:52 -!- Corun has joined.
18:29:08 -!- oklokok has quit (Read error: 113 (No route to host)).
18:31:55 -!- oklofok has joined.
18:34:55 -!- shinku has joined.
18:52:42 -!- shinku has quit.
18:58:11 -!- sebbu2 has joined.
19:02:04 <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:30 <AnMaster> a double linked list
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:04:26 <AnMaster> as you need to insert
19:06:34 <AnMaster> Deewiant, what file is IP *list* in?
19:06:36 <Deewiant> it's O(1) + memory allocation costs
19:06:39 <Deewiant> IP.d
19:06:42 <Deewiant> it's a global at the top
19:06:47 <AnMaster> ah
19:06:53 <Deewiant> IP[] ips;
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:07:49 <Deewiant> of the new array
19:07:55 <Deewiant> insert new IP at position i
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:17 <AnMaster> :/
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:09 <AnMaster> Deewiant, err what?
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:21 <Deewiant> which is O(n) anyway.
19:09:50 <AnMaster> err? *thinks* O(n/2) == O(n)??
19:09:57 <Deewiant> yep
19:10:04 <AnMaster> then O maths are strange
19:10:05 <Deewiant> O(constant * n) == O(n)
19:10:08 <Deewiant> :-P
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:30 <Deewiant> ah, but O isn't a function
19:10:32 <Deewiant> O is a set
19:10:33 <AnMaster> mathematically speaking I mean
19:10:42 <AnMaster> Deewiant, ok hm
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:18 <AnMaster> UNCHANGING = 0,
19:12:18 <AnMaster> STOPPING,
19:12:18 <AnMaster> QUITTING,
19:12:22 <AnMaster> state hm?
19:12:27 <Deewiant> aye
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:12:50 <Deewiant> STOPPING - hit an @
19:12:55 <Deewiant> QUITTING - hit a q
19:13:01 <Deewiant> UNCHANGING - normal.
19:13:04 <AnMaster> ah
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:05 <Deewiant> because of TRDS.
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:15:13 <Deewiant> I don't think, anyway.
19:18:59 <AnMaster> think what?
19:19:03 <AnMaster> at all? ;P
19:19:05 * AnMaster runs
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:03 <AnMaster> mhm
19:20:09 <AnMaster> I won't do TRDS
19:20:22 <AnMaster> Deewiant, in:
19:20:24 <AnMaster> IP[] ips;
19:20:29 <AnMaster> is that a C style array
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:08 <AnMaster> s/=/?/
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:28 <Deewiant> it's flat, just dynamic
19:21:29 <ehird> ooh
19:21:31 <ehird> what's this about
19:21:31 <AnMaster> ah ok
19:21:38 <ehird> it sounds interestermating
19:21:38 <AnMaster> ehird, ?
19:21:40 <Deewiant> ehird: dynamic arrays in D
19:21:47 <ehird> oh ah
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:03 <ehird> iirc.
19:22:06 <ehird> ;)
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:29 <Deewiant> it doesn't matter, really
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:40 <ehird> &foo->first
19:22:44 <AnMaster> and since D do range checking
19:22:45 <ehird> i think that would work
19:22:45 <ehird> cute
19:22:46 <AnMaster> it makes sense
19:22:49 <AnMaster> Deewiant, ^
19:23:05 <ehird> oh, wait
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:41 * Sgeo sends
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:40 <ehird> if obj = void *
19:25:46 <ehird> then the replacable array ref is obj*
19:25:51 <ehird> thingy
19:25:56 <ehird> AnMaster: yepp
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:21 <AnMaster> or whatever the name is
19:26:25 <ehird> AnMaster: the cool thing about it is that you don't need two pointers
19:26:31 <AnMaster> ehird, indeed
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> typedef struct {
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:26:47 <AnMaster> } fungeStackStack;
19:27:01 <AnMaster> stackStack = cf_realloc(*me, sizeof(fungeStackStack) + ((*me)->size + 1) * sizeof(fungeStack*));
19:27:07 <AnMaster> that is how I grow it
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:28:10 <AnMaster> ehird, hehe, tough luck
19:29:18 <ehird> AnMaster: http://pastebin.ca/943924
19:29:20 <ehird> string_t!
19:29:22 <ehird> :p
19:29:42 <AnMaster> ehird, god, are you doing C99 feature in C89
19:29:43 <AnMaster> -_-
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:48 <AnMaster> :P
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:11 <ehird> :D
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:50 <ehird> etc
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:31:56 <AnMaster> err add space
19:32:00 <ais523> so very very slightly worse than O(n)
19:32:12 <ehird> AnMaster: no, not really
19:32:15 <ehird> but eh.
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:32:59 * ais523 tries to find it
19:33:00 <AnMaster> and therefore likely slower
19:33:22 <AnMaster> ais523, wtf link to that?
19:33:46 <ehird> AnMaster: for dei
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:33:56 <AnMaster> for that
19:34:00 <ehird> ho
19:34:03 <ehird> oh
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:00 <AnMaster> ok
19:35:09 <ehird> ais523: hmm, i need a special value to put at the start of the program
19:35:10 <ehird> maybe []?
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:35:48 <AnMaster> ah ok
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:47 <SimonRC> where is Dei defined?
19:37:51 <ais523> ehird: did you see my proof that Splinter was a PDA that I linked in #esoteric earlier today?
19:38:06 <ehird> SimonRC: this:
19:38:07 <ehird> well
19:38:08 <ehird> in my spec
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:32 <ehird> hehe, indeed.
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:24 <ehird> Okies:
19:39:25 <ais523> www is so 1990s
19:39:27 <ehird> http://pastebin.ca/943935
19:39:29 <ehird> That's minidei
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:38 <ehird> because of [...]
19:41:42 <ehird> can't do that with regexps
19:41:46 <ais523> ehird: learn to write recursive regexps
19:41:50 <ehird> ais523: scared
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 <SimonRC> ping can't see it either
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:15 <SimonRC> yes
19:43:20 <ehird> cperl-mode highlights it as divide+Comment
19:43:25 <ehird> perl-mode too
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:35 <SimonRC> hmm#
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 <SimonRC> nope, can' do
19:48:13 <ais523> ehird: you want to put \[ and \] inside your character class [^ ]
19:48:17 <SimonRC> *can't
19:48:40 <ais523> SimonRC: that's strange, it seems like bits of the internet are inaccessible to you for some reason
19:48:45 <SimonRC> weird
19:48:56 <ehird> ais523: thanks
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:09 <ehird> Sgeo: qmail, eww
19:49:19 <Sgeo> what does it mean?
19:49:26 <SimonRC> where was it?
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:49:48 <ehird> not +
19:50:02 <SimonRC> well, it is just giving the PID of the qmail process that invoked it
19:50:07 <SimonRC> oops
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:20 <ehird> 0
19:50:25 <ehird> veeeery odd
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:04 <SimonRC> weird
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:29 <ehird> a sucky one
19:51:31 <ehird> does that help?
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:40 <SimonRC> ehird: not all
19:52:42 <Sgeo> EVERY part?
19:52:44 <ehird> ais523: okies. why?
19:52:47 <Sgeo> I trust this:
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:35 <ehird> ais523: that;s it
19:54:48 <ehird> $_ = "[] "+<>;
19:54:50 <ehird> i guess that is wrong
19:54:59 <ehird> yep
19:55:02 <ehird> it gets it as ..
19:55:03 <ehird> oh of course
19:55:05 <ehird> + ain't concat
19:55:07 <ehird> . is
19:55:13 * ais523 feels stupid for not noticing that
19:55:57 <ehird> ehird@ehird-desktop:~$ echo 'wrap'|perl minidei.pl
19:55:57 <ehird> [] wrap
19:55:57 <ehird> [[]]
19:56:04 <ehird> hm
19:56:05 <ehird> dup doesn't work
19:56:12 <ehird> oh
19:56:14 <ehird> i didn't implement it
19:56:14 <ehird> XS
19:56:15 <ehird> XD
19:56:35 <SimonRC> oh dear
19:57:05 <ehird> ais523: i think $e is broken
19:57:05 <ehird> :(
19:57:08 <ehird> oh wait
19:57:09 <ehird> of course
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:57:57 <ehird> right?
19:58:06 <ais523> yes
19:58:09 <ehird> and..
19:58:12 <ehird> dei only needs to match on words!!
19:58:18 <ais523> yes
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:58:47 <ehird> :)
19:59:07 <ehird> ehird@ehird-desktop:~$ echo 'dup dei i'|perl minidei.pl
19:59:07 <ehird> [] dup dei i
19:59:07 <ehird> [] [] [dup] i
19:59:07 <ehird> [] [] dup
19:59:07 <ehird> [] [] []
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:44 <SimonRC> ah, ok
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:04 <ehird> :)
20:00:05 <SimonRC> ok
20:00:50 <ehird> ais523: can i use <> multiple times?
20:00:59 <ais523> ehird: yes
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:19 <ehird> ais523: hmm
20:01:23 <ehird> what's the easiest way to just slurp all of stdin?
20:01:27 <ehird> well
20:01:28 <ais523> (that is, one file from the command line, and stdin when they run out)
20:01:30 <ehird> ruby's ARGF
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:49 <SimonRC> blither
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:06:30 <ehird> ais523: :)
20:07:20 <ehird> ais523: hm
20:07:22 <ehird> that's buggy
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:21 <ehird> you said that
20:08:21 <ehird> :)
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:40 <ehird> upgraded it
20:08:44 <ehird> made it do deis in steps
20:08:45 <ehird> and fixed [] etc
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:15 <SimonRC> :-)
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:14 <ehird> *: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:16 <pikhq> ?
20:11:18 <pikhq> ehird: Does it work?
20:11:26 <ehird> pikhq: Sooooooon.
20:11:28 <ehird> <___<
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:08 <ehird> It's crazy
20:12:21 -!- pikhq has set topic: #esoteric - From Brainfuck to extending tetration to the reals. | Logs: http://ircbrowse.com/cdates.html?channel=esoteric | Wiki: http://esolangs.org/wiki/ | The Esoteric File Archive: http://esolangs.org/files/.
20:12:23 <ehird> ais523: Hmm, I'm going to implement your flattener and use it to write an infinite loop
20:12:24 <ehird> :D
20:12:30 <ehird> (:^):^ -> [dup i] dup i
20:12:32 <ehird> hmm
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:09 <ais523> wrap i dei
20:13:09 * pikhq curses at OpenVPN
20:13:15 <ehird> dup dei swap drop dup swap dei i dei swap drop compose dup i
20:13:26 <ehird> hmm
20:13:29 <ehird> that doesn't wooooork
20:13:29 <ehird> :(
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:13:39 <ais523> hmm...
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:57 <SimonRC> Sgeo: Main eXchange
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:36 <SimonRC> um, wow
20:17:40 <SimonRC> a whole url?
20:17:41 <SimonRC> :-)
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:12 <ehird> runs forever
20:21:12 <ehird> :(
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> [dup i] dup i
20:21:39 <ehird> [] [] compose dup i
20:21:39 <ehird> [] [] compose compose dup i
20:21:39 <ehird> ....
20:21:42 <ehird> is how it goes
20:21:44 <SimonRC> Sgeo: dig gmail.com MX
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:23 <ehird> aha
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:15 <ehird> ah
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:04 <ehird> :)
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 <Sgeo> HELO sgeo
20:26:32 <ais523> that looks right to me?
20:26:35 <ais523> what goes wrong?
20:26:41 <ehird> so:
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 <SimonRC> Sgeo: dunno
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:22 <ehird> [] [dup i] dup i
20:27:30 <ehird> [] [dup i] [dup i] i
20:27:33 <ehird> [] [dup i] dup i
20:27:34 <ehird> so yes
20:27:36 <ehird> it should work
20:27:40 <ehird> it is minidei.pl's fault
20:27:48 <ehird> minidei stops at
20:27:49 <ehird> [] http://en.wikipedia.org/wiki/Special:Search?go=Go&search=dup i [i] compose dup i
20:27:54 <ehird> so, i have a bug
20:28:20 <ehird> ais523: Think I got it
20:28:24 <ehird> $q doesn't handle nested
20:28:30 <ehird> Is (?:R) wrong?
20:28:33 <ehird> Does (?R) make a group?
20:28:50 <ehird> waiiiit
20:28:52 <ehird> i [i] compose
20:28:54 <ehird> hehe
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:16 <ehird> :P
20:29:22 <ehird> This is perl, v5.8.8 built for i486-linux-gnu-thread-multi
20:29:22 <ehird> hah
20:29:30 <ais523> ehird: try (??{$q})
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:00 <ehird> darn
20:30:01 <ehird> hehe
20:30:02 <ehird> i will fix
20:30:24 <ehird> now it dies at [] [dup i] dup i
20:30:36 <ehird> but..
20:30:40 <ehird> there's no reason for that to fail
20:30:42 <ehird> other than..
20:30:43 <ehird> $q failing!
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 [i] dup]]]
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:32:26 <ehird> $q is broken.
20:32:38 <ais523> yes
20:33:43 <ehird> ais523: Does (??{x}) make a group?
20:34:30 <ais523> ehird: no
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:43 <ais523> ehird: it works
20:35:46 <ais523> I've done it many times before
20:36:02 <ehird> ais523: ok minidei works now
20:36:03 <ehird> BUTT
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:20 <ehird> maybe I need +?
20:36:24 <ehird> that is '+?'
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:21 <ehird> isn't working
20:38:24 <ais523> not there
20:38:27 <ehird> stops at: [[dup wrap i dei dup]] wrap
20:38:29 <ehird> ais523: and no
20:38:31 <ehird> that's from minidei.pl
20:38:34 <ehird> sans group
20:38:35 <ais523> y $q = qr/(?:\[(??{$q})\]|[^\[\]]+)*/;
20:38:38 <ehird> no, look
20:38:41 <ehird> mine works fine
20:38:43 <ehird> because I fixed $e too
20:38:46 <ais523> oh
20:38:48 <ehird> my $e = qr/$w|($q)/;
20:39:03 <ehird> ais523: aha
20:39:05 <ehird> it's [a b c]
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:22 <ehird> I need:
20:39:24 <ehird> hmm
20:39:24 <ais523> ehird: one of them is meant to be able to match multiple elements
20:39:24 <ehird> well
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:23 <ehird> and *
20:40:42 <ais523> I mean s/\[$w( $w)+\]/[$1] [$2] compose/
20:40:47 <ais523> although that has minor whitespace problems
20:40:49 <ehird> oh
20:40:50 <ehird> good point
20:41:00 <ehird> dup dei swap drop dup] compose compose] wrap
20:41:03 <ehird> not so good point
20:41:05 <ehird> I know a solution though..
20:41:16 <ehird> s/\[$w((?: $w)+)\]/[$1] [$2] compose/ and redo;
20:41:17 <ehird> hmm
20:41:19 <ehird> that doesn't work either
20:41:38 <ehird> ais523: wait...
20:41:49 <ehird> (GROUP)+ is like ((?:GROUP)+)
20:41:50 <ehird> ??
20:41:54 <ais523> maybe not
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:42:53 <ehird> that works
20:42:54 <ehird> :)
20:43:01 <ehird> but is scary
20:43:04 <ais523> WTF?
20:43:10 <ehird> ais523: don't ask me..
20:43:11 <ais523> how did the closing ] get into $2
20:43:15 <ehird> and i don't know.
20:43:22 <ais523> ehird: are you banning ] in $w?
20:43:26 <ehird> yes
20:43:28 <ais523> that's the only explanation
20:43:29 <ehird> oh wait
20:43:31 <ehird> $w has a group
20:43:49 <ehird> hm
20:43:50 <ehird> still no luck
20:43:57 <ais523> ehird: paste what you have so far?
20:44:31 <ehird> yep
20:44:31 <ehird> doing so
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:46:35 <ehird> i guess so
20:47:12 <ehird> ais523: 'nother bug
20:47:14 <ehird> ehird@ehird-desktop:~$ echo '[dei i]' | perl flatten.pl
20:47:14 <ehird> [dei i]
20:47:14 <ehird> [dei] i compose
20:47:46 <ehird> another one
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:30 <ais523> yes
20:50:41 <ais523> and I'm pretty sure it's for the same reason as the square-bracket mismatch is
20:51:09 <ehird> okay
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:29 <ehird> albeit wrongly
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:57:43 <ehird> [i] [] compose
20:58:23 <ehird> [i i i i i i i i i i i]
20:58:23 <ehird> [i] [] compose
20:58:23 <ehird> so
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:00:44 <ehird> new wrap rule
21:04:41 * Sgeo blinks at the existance http://museum/
21:04:46 <Sgeo> *existence of
21:05:28 <ehird> Sgeo: congrats, you discovered firefox's auto search
21:05:31 <ehird> welcome to 2003
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:47 <ehird> Sgeo: yes it is
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:01 <ehird> try this
21:06:03 <ehird> http://gogle/
21:06:06 <ehird> -> google.com
21:06:12 <ais523> Sgeo: I did, I just get 'Unknown host'
21:06:16 <ehird> yes -- gogle
21:06:18 <ehird> not google
21:06:19 <ehird> ergo.
21:06:34 <Sgeo> ehird, I said http://museum/ not anything else
21:06:38 <ehird> ah, wait, no
21:06:43 <ehird> Sgeo: firefox sees http://foo
21:06:47 <ehird> and turns it into http://www.foo.com
21:06:52 <Sgeo> BRB
21:07:23 <tejeez> museum actually points to 195.7.77.17
21:07:37 <Sgeo> back
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:45 <ehird> end of discussion
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:12 <ais523> and will resolve them
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:19 <ehird> hmm
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:34 <ehird> mwahahaha
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:52 <Sgeo> oh
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:12:27 <ehird> *once
21:12:30 <Sgeo> lol
21:13:01 <ehird> there is probably people in here younger than ipv6
21:13:02 <ehird> :p
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:33 <ehird> more than DNF
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:13:58 <ehird> ais523: i know
21:14:04 <ehird> ais523: that means nothing
21:14:08 <AnMaster> Deewiant, there?
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:52 <tejeez> or about.museum
21:14:57 <Deewiant> AnMaster: spawns 4 threads which all start execution at k
21:14:59 <Deewiant> or?
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:15:57 <ais523> ehird: no
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:25 <ehird> hmm
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:16:55 <Deewiant> AnMaster: same difference
21:17:02 <tejeez> i don't know
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:16 <ais523> s/been/mean/
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:45 <ais523> ehird: why?
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:24 <AnMaster> Deewiant, heh ok
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:23 <ehird> :D
21:22:29 <ehird> AnMaster: Stack!(foo) -> Stack<foo>
21:22:30 <ehird> in C++
21:22:31 <ehird> it's generics
21:22:34 <ehird> or teamplates
21:22:36 <AnMaster> oh I see
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:09 <ehird> ais523: Inline::C
21:24:14 <ehird> ais523: it compiles it out from a string
21:24:16 <ehird> very popular..
21:24:20 <ehird> i'm suprised you don't know of it
21:24:23 <ehird> it's very useful
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:22 <ehird> AnMaster: no
21:25:23 <ehird> it's clever
21:25:24 <ehird> http://search.cpan.org/~ingy/Inline-0.44/C/C.pod
21:25:25 <AnMaster> ehird, I can't read perl :(
21:26:07 <ehird> AnMaster: that's documentation
21:26:08 <ehird> :|
21:26:16 <AnMaster> ah
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:42 <AnMaster> so it's still loading
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:26:55 <oklofok> quotelicious :D
21:27:17 <ehird> heh
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:06 <ehird> :|
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:03 <ehird> :-D
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:18 <ehird> Sgeo: just you.
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:39:23 <ehird> boo
21:39:28 <Sgeo> ?
21:43:17 * AnMaster stabs his code
21:43:29 <AnMaster> infinite fork
21:43:33 <AnMaster> for unknown reason
21:44:27 <ais523> AnMaster: within the program, or did you just forkbomb your computer?
21:44:40 <AnMaster> ais523, within the interpreter
21:44:43 <AnMaster> just ttttttttttttttttttttt
21:44:45 <AnMaster> like that
21:44:47 <AnMaster> on mycology
21:44:49 * AnMaster debugs
21:48:00 <ehird> ais523: eso-std.org should use shell scripts.
21:48:08 <ehird> durable! ;)
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:31 <ehird> and yeah
21:51:34 <ais523> oh, you mean it doesn't exist yet?
21:51:36 <ehird> using md5?! :D
21:51:44 <ehird> stores in $GET__sdfs98dfu98su4knjfd
21:52:00 <ehird> usage: $(hash GET foo)
21:52:01 <ehird> :D
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:30 <ehird> ais523: quite
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:14 <ehird> ais523: true
21:53:27 <ehird> i need to write cgi.sh now
21:53:28 <ehird> :D
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:40 <ehird> ais523: indeed
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:44 <ehird> ais523: huh?
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:35 <ehird> oh wait
21:57:35 <ehird> i see
21:57:40 <ehird> ais523: better fix:
21:57:42 <ehird> echo -- "$1"
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:07 <ehird> oh jeez
21:58:37 * ais523 seems to remember a system (was it SunOS?) on which echo was deprecated in favour of printf
21:58:57 <ehird> hah
21:59:18 <ais523> maybe because it's command-line parameter processing was so inconsistent
21:59:22 <ais523> s/it's/its/
22:00:02 <ehird> ais523: case/esac is portable, rihgt?
22:00:06 <ais523> I think so
22:00:12 <ais523> it's in POSIX sh IIRC
22:00:28 <ais523> after all, nobody would use that syntax otherwise ;-)
22:02:14 <ehird> _hash_"$1"_$(md5 "$2")="$3"
22:02:16 <ehird> that's my 'set'
22:02:16 <ehird> :D
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:37 <ehird> paranoia :|
22:02:42 <ehird> i keep thinking about it in terms of rewrites
22:02:51 <AnMaster> Deewiant, XD
22:02:52 <ais523> because if they contain embedded spaces you're going to be in trouble anyway
22:02:57 <Deewiant> AnMaster: :-)
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:05:10 <ehird> coool
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:21 <AnMaster> wwwwwwwwwwwwwwwwwwwwwwwwtf
22:12:29 <ehird> AnMaster: what
22:12:43 <AnMaster> ehird, I'm adding concurrency to cfunge
22:12:46 <AnMaster> I have some problems
22:13:55 <AnMaster> in unrelated parts
22:13:57 <AnMaster> -_-
22:14:33 <ais523> AnMaster: your problem is clearly insufficient setjmp
22:14:48 <AnMaster> ais523, harhar
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:34 <AnMaster> ie, funge-space
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:06 <AnMaster> ais523, current IP = 0
22:17:14 <AnMaster> I checked that
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:23:21 <ehird> how suprising
22:30:21 <ehird> i'm shocked that nobody else is suprised.
22:30:42 <AnMaster> ehird, huh?
22:31:09 * AnMaster was afk
22:34:03 <ehird> AnMaster: :)
22:34:23 <AnMaster> what about it?
22:34:27 * AnMaster lacks context
22:37:30 * AnMaster ponders the irony of having a stack allocated on the heap
22:41:08 <AnMaster> oh found it, I referenced once too many times
22:42:59 -!- oerjan has joined.
22:44:38 <AnMaster> Deewiant, wow, this is pretty
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:45:02 <AnMaster> ;)
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:26 <AnMaster> :)
22:49:49 <AnMaster> cfunge: /home/arvid/src/cfunge08/src/stack.c:89: StackPush: Assertion `stack != ((void *)0)' failed.
22:49:53 * AnMaster looks
22:50:31 <AnMaster> aha
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:06 <AnMaster> about all perl alike
22:53:12 <Slereah> I'm no racist, but all Malbolge programs look alike to me
22:53:16 <AnMaster> I've seen readable perl
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:53:43 <AnMaster> ehird, to it in python
22:53:48 <AnMaster> or C
22:54:02 <AnMaster> ehird, or do it in perl but use Inline::C
22:54:05 * AnMaster runs
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:40 <AnMaster> ehird, that failed?
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:54:52 <AnMaster> ehird, try twisted?
22:55:02 <ehird> AnMaster: Can I say 'please die in a fire' here? :<
22:55:09 <AnMaster> ehird, I never used it
22:55:12 <ehird> twisted for a web app is the most awful idea i've heard of
22:55:12 <ehird> ever
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:56:38 <AnMaster> ehird, ?
22:56:56 <AnMaster> ehird, look try php or python
22:57:07 <AnMaster> or just use an existing software
22:58:06 <ehird> AnMaster: php heh
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:14 <AnMaster> ehird, "PTTH"4(
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:25 <AnMaster> ais523, SOCK does exist
23:00:40 <AnMaster> but why not an HTTP server framework for befunge?
23:01:10 <ais523> why not indeed
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:01:46 <AnMaster> ais523, what do you think?
23:01:58 <ais523> AnMaster: interesting
23:02:02 <AnMaster> ais523, no idea how
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:49 <ehird> if esoteric
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:18:54 <AnMaster> because XHTML is more strict
23:19:04 <ais523> AnMaster: I actually favour XHTML over HTML
23:19:09 <AnMaster> ais523, good
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:11 <ehird> XHTML 1.1, even.
23:20:17 <AnMaster> ais523, how was http://intercal.freeshell.org/ick-0.27/index.htm generated I wonder
23:20:25 <AnMaster> seems familiar
23:20:29 <AnMaster> INFO style?
23:20:29 <ais523> AnMaster: texinfo
23:20:29 <ehird> AnMaster: texinfo
23:20:32 <AnMaster> aha
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:15 <AnMaster> ais523, weird names yes
23:21:17 <ais523> also, there's some custom hacking of the TOC and some of the headings
23:21:21 <AnMaster> ais523, you made C-INTERCAL?
23:21:26 <ais523> no
23:21:30 <ais523> but I'm the current maintainer
23:21:33 <AnMaster> aha
23:21:43 <AnMaster> ais523, what is the weird filenames for
23:21:45 <AnMaster> I mean, why
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:30 <ais523> CLC-INTERCAL is newer
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:43 <AnMaster> :P
23:24:55 <AnMaster> ais523, not here in this channel?
23:25:01 <ais523> not right now
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:19 <AnMaster> mhm?
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:07 <ehird> hah
23:27:35 <ais523> yes
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> BEGIN {
23:29:52 <ehird> use vars(@EXPORT);
23:29:52 <ehird> @EXPORT = qw(quot);
23:29:52 <ehird> }
23:29:57 <ehird> faaar too verbose :D
23:31:02 <ehird> err
23:31:18 <ehird> add a qw in there
23:50:51 -!- sebbu2 has changed nick to sebbu.
2008-03-16
00:30:08 -!- ais523 has quit (""Going home"").
00:35:54 -!- sebbu has quit ("je re").
00:41:28 -!- timotiis has quit (Remote closed the connection).
00:43:39 -!- slereah_ has joined.
00:44:38 -!- sebbu has joined.
00:46:52 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
01:12:51 -!- oerjan has quit ("Good night").
01:25:46 -!- calamari has joined.
01:30:16 -!- BMeph69 has changed nick to BMeph.
01:45:33 -!- Tritonio_ has joined.
01:45:41 -!- Tritonio__ has joined.
01:45:49 -!- Tritonio_ has quit (Read error: 104 (Connection reset by peer)).
01:45:57 -!- Tritonio__ has quit (Read error: 104 (Connection reset by peer)).
01:46:13 -!- Tritonio_ has joined.
02:01:59 -!- RodgerTheGreat has joined.
02:08:12 <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:08:44 <pikhq> Ugh.
02:08:59 <oklofok> Ugh.
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:20 <Deformative> Heh,
02:11:35 <Deformative> I assume coding java and pooing are a single process.
02:12:17 <RodgerTheGreat> cute, very cute
02:12:24 <Deformative> Eh, that doesn't make as much sense as it did in my head.
02:12:32 <Deformative> I apologize.
02:12:39 <oklofok> :D
02:13:01 <oklofok> sometimes i take the comp with me to the toilet.
02:13:13 <oklofok> if you have to ask
02:14:01 <Deformative> Well I was trying to make a simile between eating poo and coding java.
02:17:37 <oklofok> :D
02:17:50 <oklofok> i've made that multiple times
02:18:03 <oklofok> i mean
02:18:04 <oklofok> that simile
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:26 <Deformative> Pointers and such are exactly the same.
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:20:59 <Deformative> At all.
02:22:15 <oklofok> is it esolicious?
02:22:57 <Deformative> What does that mean?
02:24:50 <oklofok> :)
02:25:01 <Deformative> ?
02:25:04 <oklofok> do you considered it esoteric?
02:25:24 <Deformative> Yes.
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:25:51 <Deformative> Heh.
02:30:50 <Deformative> I am trying to decide if I should even implement closures.
02:30:52 <Deformative> They are so slow.
02:31:24 <Deformative> And it isn't that much work to just create a function.
02:31:38 <Deformative> But it makes it even more confusing.
02:34:04 <oklofok> what kinda closures?
02:34:28 <Deformative> There is only one type of closure, no?
02:38:44 <oklofok> umm, closure = function copies surrounding namespace?
02:38:47 <Sgeo> The US Government uses ZoneEdit?
02:39:09 <Deformative> oklofok: Basically.
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:42:34 <Deformative> And that is bad.
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:45:43 <Deformative> It is easily implemented.
02:45:46 <Deformative> But ugly.
02:50:38 <oklofok> anonymous functions are sex
02:50:48 <oklofok> you have them, and people will like you
02:53:10 <Deformative> Heh.
02:53:16 <Deformative> Yeah, I will implement those.
02:53:34 <Deformative> But I think closures are a nono.
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.
02:56:52 <Deformative> Then I will use {} for structures.
02:56:56 <Deformative> And I do not know what for comments.
03:03:34 <oklofok> <> is cute
03:03:56 <oklofok> i use stuff with hyphens
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:10:38 <Deformative> Ever.
03:10:40 <Deformative> Which is nice.
03:11:34 <Deformative> s/if I could/if I was stupid I could
03:13:39 <oklofok> nono
03:13:44 <oklofok> make one indentation comment
03:13:47 <oklofok> 0 and 2 are program!
03:13:59 <Deformative> xD
03:18:13 <Deformative> Maybe ~comments~
03:18:48 <Deformative> Or `comments`
03:18:59 <Deformative> Eh, the ` char is too small.
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:55:58 <lament> heh
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/
04:39:49 <Deformative> I like colorforth.
04:39:57 <Deformative> Could be better though.
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:13 <pikhq> Yeah.
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:23 <Sgeo> sorry
05:10:30 <Sgeo> WTF is that supposed to MEAN?
05:10:41 <pikhq> He's now discussing +0- antipodes. . .
05:10:43 <pikhq> WTF is that?
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:18:54 <RodgerTheGreat> heh
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:20:08 <pikhq> *shudder*
05:24:04 <RodgerTheGreat> knowing my campaigns, a couple random potions are instant, bottled hilarity
05:24:25 <RodgerTheGreat> I was always proud of the "plaid potion".
05:26:24 <pikhq> ... Plaid potion?
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:27:05 <RodgerTheGreat> pikhq: it does what it sounds like
05:27:59 <RodgerTheGreat> ... it turns stuff plaid.
05:52:20 <pikhq> LMAO
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:01:21 <RodgerTheGreat> good times, good times
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:07:52 <pikhq> My God.
06:08:01 <pikhq> Hmm.
06:08:13 <pikhq> Of course, you need a few Decks of Everything.
06:08:27 <pikhq> Erm.
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:12:46 <pikhq> LMAO
06:12:52 <pikhq> BRILLIANT!
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:08 <pikhq> Damn.
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:15:30 <RodgerTheGreat> just me, my notes, and dice.
06:15:37 <RodgerTheGreat> uhm...
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:17:40 <pikhq> LMAO
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:20:44 <pikhq> If I can, sure.
06:21:08 <RodgerTheGreat> what edition do you use?
06:22:02 <pikhq> I'm used to 3rd.
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:22:30 <RodgerTheGreat> the term "fucking brutal" doesn't do it justice
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:23:52 <pikhq> Mmkay.
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:25:53 <pikhq> Holy shit.
06:25:59 <RodgerTheGreat> holy shit indeed
06:26:21 <pikhq> I wanna try that trick with the bag of devouring, though. . .
06:26:25 <pikhq> Hmm.
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:03 <pikhq> O.O
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:27:55 <RodgerTheGreat> (one of my inventions, btw)
06:28:34 <RodgerTheGreat> I think the damage was like 2d10+5+ 1d4 CHA damage if you ate it.
06:28:44 <RodgerTheGreat> but really, improvisation is key here
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:22 <pikhq> Hmm.
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:31:53 <pikhq> Wow.
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:21 <pikhq> Well, of course.
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:35:38 <RodgerTheGreat> The game is just a conduit for storytelling.
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:30 <pikhq> :D
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:00 <pikhq> w00ts.
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:42:53 <pikhq> LMAO
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:45:54 <RodgerTheGreat> I thought CL#24 would be topical
06:45:58 <pikhq> :D
06:47:45 <RodgerTheGreat> have you tried out "Polyp", my new game?
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:09 <RodgerTheGreat> that XKCD was so uncool.
06:48:20 <pikhq> I disagree.
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:40 <RodgerTheGreat> and goddamnit why hasn't Aaron updated yet.
06:50:57 <pikhq> Because he must be executed.
06:51:10 <pikhq> Nice 'weekly' schedule, no?
06:51:25 <RodgerTheGreat> s/weekly/semi-monthly
06:51:35 <pikhq> If we're lucky.
06:53:05 <RodgerTheGreat> I gather you're starting to take my point of view on the matter
06:53:20 <pikhq> Yes.
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:53:56 <pikhq> s/weeks/months/
06:54:08 <RodgerTheGreat> there we go
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:41 <RodgerTheGreat> that one's a classic
06:55:45 <pikhq> Truly.
06:55:53 <pikhq> I'll need to stick that one on my wall or something.
06:56:17 <RodgerTheGreat> based on a true story no less
06:57:46 <pikhq> Wow.
06:57:56 <RodgerTheGreat> I had a fun orientation week.
06:58:39 <pikhq> Heheh.
07:00:22 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
07:03:21 <RodgerTheGreat> anyway, frickin' try Polyp before I go to sleep
07:03:42 <pikhq> Mmkay.
07:05:31 <pikhq> Brilliant.
07:05:48 <RodgerTheGreat> thankoo
07:05:56 <RodgerTheGreat> under 700 lines of code
07:07:31 -!- calamari has quit ("Leaving").
07:13:47 <pikhq> Damn.
07:14:42 <RodgerTheGreat> feel free to download the source and fiddle. It's all WTFPLed
07:34:31 <RodgerTheGreat> I'm out
07:34:41 -!- RodgerTheGreat has quit.
07:47:40 -!- BMeph has quit ("calls it a night").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:14:24 -!- RedDak has joined.
09:37:24 -!- Corun has quit ("This computer has gone to sleep").
10:20:03 -!- RedDak has quit (Read error: 104 (Connection reset by peer)).
10:25:04 -!- RedDak has joined.
11:32:46 -!- marshmallows has joined.
13:14:04 -!- slereah_ has quit (Remote closed the connection).
13:14:31 -!- Slereah has joined.
13:20:56 <AnMaster> what is a "low-order copy"?
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:09:24 <Deewiant> no, probably not
14:10:37 <RodgerTheGreat> howdy
14:10:55 <Deewiant> yo
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:11:36 <AnMaster> heh
14:12:02 <AnMaster> Deewiant, you need to update that chart, try my last version, it got concurrency
14:12:12 <Deewiant> I need to update it anyway
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:12:37 <Deewiant> probably not ;-)
14:12:52 <AnMaster> Deewiant, it's not that bad
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:14:35 <AnMaster> with that script
14:15:20 <AnMaster> Deewiant, anyway what do you think? try adding your own -march and such in CHOSTFLAGS
14:15:34 <Deewiant> I think that's overkill :-)
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:17:55 <AnMaster> real 0m0.066s
14:18:03 <AnMaster> Deewiant, hrrm, looks like loading takes most of the time
14:18:11 <AnMaster> for cfunge at least
14:18:19 <Deewiant> as I thought
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:20 <Deewiant> no, I still think it would be
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:19 <Deewiant> how big?
14:20:28 <AnMaster> real 0m0.188s for ./ccbi --disable-fprints ~/src/cfunge08/mycology/mycology.b98 > /dev/null
14:20:32 <AnMaster> real 0m0.117s
14:20:35 <Deewiant> and keep in mind that CCBI is always doing IO during mycology as well :-)
14:20:36 <AnMaster> with it disabled
14:21:09 <Deewiant> is that the latest CCBI?
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:18 <AnMaster> the way it was implemented
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:00 <AnMaster> real 0m0.179s
14:24:07 <AnMaster> with @ at start
14:24:10 <AnMaster> real 0m0.244s
14:24:13 <AnMaster> without @ at start
14:24:14 -!- timotiis has joined.
14:24:15 <Deewiant> heh
14:24:29 <Deewiant> I don't know, it's about 50% faster for me :-)
14:24:37 <AnMaster> Deewiant, probably CPU?
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:04 <Deewiant> I do do profiling
14:25:07 <AnMaster> oh?
14:25:10 <AnMaster> gcov?
14:25:17 <Deewiant> that took the time for funge-space access down by 30% or so
14:25:21 <Deewiant> here, at least.
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:26:57 * AnMaster runs (it was a joke!)
14:27:21 <Deewiant> of course, what I don't do is profile-guided optimization. :-P
14:27:34 <AnMaster> Deewiant, hehe indeed
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:09 <Deewiant> yep
14:55:23 <AnMaster> so, faster hash library then?
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:57:53 <AnMaster> should help eh?
14:57:58 <Deewiant> :-P
14:58:11 <AnMaster> Deewiant, you don't think so?
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?
14:59:34 <AnMaster> so a JIT wouldn't help much
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:10:42 <AnMaster> Deewiant, mark-and-sweep iirc
15:11:00 <AnMaster> or some variant of that
15:11:41 <AnMaster> yep mark-and-sweep
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:37 <AnMaster> :/
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:31 <AnMaster> Deewiant, calloc, hrrm
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:14:55 <AnMaster> iirc
15:15:03 <AnMaster> Deewiant, ah I see
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:42 <Deewiant> that was a static array
15:15:45 <Deewiant> and yes, it would be.
15:15:46 <AnMaster> nor ones allocated on the stack, right?
15:15:50 <AnMaster> hm
15:15:52 <Deewiant> yes, they would be.
15:15:56 <Deewiant> everything is initialized to something.
15:16:02 <AnMaster> they wouldn't in C I think
15:16:07 <AnMaster> well static array might
15:16:08 <AnMaster> depends
15:16:09 <Deewiant> correct, they wouldn't.
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:11 <Deewiant> dumb luck
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:23:59 <AnMaster> :/
15:24:05 <AnMaster> so not really IO bound
15:24:13 <AnMaster> but hash table lookup bound
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:13:28 * SimonRC curses his net connection
16:18:14 <Deformative> Should I have whitespace separate type and var name the way C does?
16:18:40 <marshmallows> Deformative in what context?
16:18:42 <Deformative> That is the only relevant whitespace in my whole language if I do.
16:18:55 <Deformative> marshmallows: Function definition.
16:18:58 <marshmallows> ?
16:19:06 <marshmallows> what does the language look like
16:19:36 <SimonRC> who are these two people?
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:13 <Deformative> It has the C typing system.
16:20:16 <Deformative> But that's about it.
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:24 <Deewiant> pascal uses :
16:22:29 <Deewiant> var foo : integer;
16:22:31 <Deformative> functionName<..., type arg, type arg> continuation(..., arg, arg)
16:22:33 <marshmallows> okt it does
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:23:46 <Deformative> ?
16:23:53 <marshmallows> ?
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:35 <Deewiant> where's }?
16:32:35 <SimonRC> except the >> I think
16:32:37 <Deformative> Uh.
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:32 <Deformative> Heh, J is fun.
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:35:25 <Deformative> Hm
16:36:32 <SimonRC> maybe Euphoria
16:37:55 <Deformative> So yeah, <> looks somewhat ugly, but I think I will use it.
16:38:15 <Deformative> Cannot decide for the types though.
16:43:06 <SimonRC> Ah, I remember
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:46:19 <Deformative> Hmm, that is function call though.
16:51:39 <AnMaster> hm
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:02 <Deewiant> yep, same here
16:53:11 <Deewiant> all time is basically dominated for hash table + GC
16:53:17 <Deewiant> what do you mean?
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:51 <Deewiant> I think I did, too
16:54:54 <AnMaster> Deewiant, but I mean actual coverage on the befunge program itself
16:54:57 <Deewiant> but not gcov
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:30 <AnMaster> Deewiant, yep
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:56:07 <AnMaster> Deewiant, hm indeed
16:57:12 <Deewiant> AnMaster: have you run the Fungus Befunge IDE?
16:57:20 <AnMaster> Deewiant, err no?
16:57:41 <Deewiant> AnMaster: it has a cool "show path that IP travelled" kind of feature
16:57:47 <AnMaster> nice
16:57:55 <Deewiant> it draws lines on top of the befunge program to show where the IP went
16:58:03 <SimonRC> cool
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:37 <Deewiant> well, not a mess
16:58:47 <Deewiant> the same line is just drawn a bunch of times
16:58:54 <AnMaster> hm
16:58:59 <Deewiant> since it's always entered from the same direction etc.
16:59:07 <Deewiant> SimonRC: I don't think so.
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:32 <AnMaster> Deewiant, closed source?!
17:00:40 <Deewiant> like I say, The only closed-source Befunge interpreter I’ve come across.
17:00:41 <Deewiant> :-)
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:25 <Deewiant> as soon as I can bother :-P
17:03:39 <AnMaster> Deewiant, you used some script to generate that table?
17:03:55 <Deewiant> yes, of course
17:04:11 <AnMaster> in what language?
17:04:15 <Deewiant> haskell
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:04:43 <Deewiant> :-P
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:43 <Deewiant> nope
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:06:44 <AnMaster> or just stdout/stdin?
17:07:05 <Deewiant> doesn't matter really, but ideally text-based
17:07:11 <SimonRC> hmm
17:07:13 <AnMaster> Deewiant, I'd prefer a more compact and easier to parse for a program format
17:07:16 <AnMaster> like say:
17:07:22 <Deewiant> well, of course not literally like that
17:07:25 <Deewiant> but I mean, not binary
17:07:50 <SimonRC> foo bar x y a b f g
17:08:07 <AnMaster> IP=5;MODE=STR;POSX=5;POSY=7;DELTAX ....
17:08:14 <AnMaster> that would allow 3D too
17:08:20 <AnMaster> just add POSZ
17:08:21 <Deewiant> but not greater than 3D
17:08:22 <AnMaster> hm
17:08:27 <AnMaster> Deewiant, ÅÄÖ ;P
17:08:29 <Deewiant> which is why something like pos={5,7} would be better
17:08:35 <AnMaster> Deewiant, yep agreed
17:08:53 <SimonRC> fscanf(sock, "%d %d %d %d %d %d %d %d", &id, &mode, etc etc etc
17:09:11 <SimonRC> but sloooooow
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:12 <AnMaster> I'd suggest not allowing that
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:32 <SimonRC> Deewiant: lol
17:10:37 <Deewiant> it seems like we're rapidly moving towards JSON/sexps ;-)
17:10:45 <AnMaster> s-expressions sure
17:10:45 <SimonRC> yaml?
17:10:50 <AnMaster> s-expressions
17:10:54 <SimonRC> no, XML is the answer
17:10:54 <Deewiant> whatever, but not XML ;-)
17:10:56 <SimonRC> :-)
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:42 <Deewiant> and space is modified
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:11 <SimonRC> :-)
17:12:27 <AnMaster> SimonRC, ERR_TRDS_TOO_STUPID_NOT_SUPPORTED
17:12:30 <AnMaster> :P
17:12:34 <SimonRC> actually TRDS allows IPs to meet their younger selves
17:12:44 <AnMaster> weird name TRDS
17:12:44 <SimonRC> I think
17:12:51 <AnMaster> I don't get what TRDS stands for
17:12:54 <SimonRC> AnMaster: no, very mnuemonic
17:12:55 <Deewiant> AnMaster: TARDIS
17:12:58 <Deewiant> http://en.wikipedia.org/wiki/TARDIS
17:13:18 <AnMaster> Deewiant, ah, never watched that TV series
17:13:44 <SimonRC> you missed out
17:14:54 <SimonRC> where is the TRDS spec?
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:38 <AnMaster> err?
17:25:51 <AnMaster> output looks ok?
17:25:53 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
17:26:00 <Deewiant> AnMaster: "*** Exited normally"
17:26:03 <AnMaster> yet it is marked as bad
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:51 <AnMaster> CCBI shows a warning message
17:26:55 <AnMaster> http://users.tkk.fi/~mniemenm/befunge/mycology-output/sanity/CCBI.txt
17:26:59 <Deewiant> because it can be removed
17:27:03 <Deewiant> by not specifying -w
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:41 <AnMaster> aha
17:28:53 <Deewiant> or not null bytes, but control characters
17:29:23 <Deewiant> and hmm
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:04 <Deewiant> ask BeQunge what happened :-P
17:30:13 <AnMaster> no trace?
17:30:24 <Deewiant> it's an IDE
17:30:37 <AnMaster> ah probably trace then
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:09 <Deewiant> but actually, no
17:31:13 <Deewiant> # < is fatal
17:31:17 <AnMaster> ah ok
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:11 <Deewiant> expected.txt seems to have it
17:32:15 <Deewiant> GOOD: 3k< takes two ticks
17:32:17 * AnMaster checks cfunge
17:32:30 <AnMaster> oh yes it's there
17:32:30 * SimonRC realises something important about befunge...
17:32:34 <AnMaster> SimonRC, yes?
17:32:39 <AnMaster> that it is a bloated language?
17:32:44 <AnMaster> that it's hard to compile?
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:23 <Deewiant> 127 isn't
17:33:24 <SimonRC> In things like C, most stuff is in functions, and your functions look like the builtins
17:33:31 <SimonRC> 127 is a control char
17:33:35 <AnMaster> Deewiant, sure? isn't 127 == ~?
17:33:37 * AnMaster checks
17:33:40 <Deewiant> as SimonRC said
17:33:43 <Deewiant> ~ is 126
17:34:10 <AnMaster> ah yes
17:34:10 <AnMaster> so what control char is 127 then?
17:34:15 <SimonRC> it's called DEL
17:34:19 <Slereah> On my ASCII chart, it's some sort of house shape
17:34:22 <AnMaster> aha
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:09 <AnMaster> than 2,147,483,647.)"
17:35:27 <SimonRC> seems reasonab;e
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:40 <Deewiant> no, it doesn't
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:26 <Deewiant> AnMaster: I have no clue
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:11 <AnMaster> it may mess up columns
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:21 <Deewiant> just do ;#"ö";# <
17:39:28 <AnMaster> err what?
17:39:38 <Deewiant> for reverse
17:39:38 <AnMaster> oh I get it
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:00 <Deewiant> use them
17:40:09 <SimonRC> personally, I would store each unicode code point in one cell
17:40:09 <AnMaster> v
17:40:09 <AnMaster> ö >
17:40:17 <AnMaster> that may not work as expected
17:40:18 <Deewiant> AnMaster: like said, if you think your editor display is correct then you're mistaken.
17:40:26 <AnMaster> Deewiant, heh
17:40:29 <SimonRC> hmm
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:52 <AnMaster> ; is very nice for comments
17:40:57 <Deewiant> AnMaster: if you've got more ;s
17:41:05 <Deewiant> ; astusaddrfasdfasdfa ;#"ö";# < asdfsadfasd a;
17:41:07 <Deewiant> doesn't work any more
17:41:10 <AnMaster> ah true
17:41:20 <AnMaster> Deewiant, I almost only use ; for comments
17:41:35 <SimonRC> waitamo...
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:11 <SimonRC> ok
17:42:24 <Deewiant> AnMaster: probably not explicitly, but it uses it
17:42:34 <AnMaster> brb phone
17:54:04 -!- RedDak has quit ("Killed (NickServ (Comando GHOST usato da DIO))").
17:54:26 -!- RedDak has joined.
18:00:53 <AnMaster> back
18:01:39 <SimonRC> ok
18:02:07 <SimonRC> brb nuclear war
18:02:27 <AnMaster> lol
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:32 <SimonRC> ok
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 <Deewiant> what kind
18:17:57 <AnMaster> Deewiant, 1) I pushed width and breath not absolute max point
18:18:02 <AnMaster> 2) I had a off by one error
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:08 <AnMaster> arrays*
18:20:15 <Deewiant> yeah, I know
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:20:54 <AnMaster> much easier
18:21:02 <AnMaster> position independent code
18:21:16 <Deewiant> like said, I would too
18:21:21 <Deewiant> but I started it out like that and hence it became that
18:21:26 <AnMaster> hm
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:21:54 <Deewiant> yes, it is
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:22:54 <Deewiant> it's not meant for PIC
18:22:58 <Deewiant> it's meant for reusing code
18:23:25 <AnMaster> yeah, but I would prefer a mode for finding such functions that was position independent
18:23:28 <AnMaster> hm
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:24:29 <AnMaster> REGS
18:24:34 <AnMaster> emulate CPU with registers
18:24:34 <AnMaster> XD
18:24:44 <Deewiant> that's REFC
18:25:13 <AnMaster> Deewiant, hm but REFC got a problem: you can't know what it returns
18:25:22 <Deewiant> ?
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:26:38 <AnMaster> hm
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:50 <SimonRC> bah
18:30:54 <AnMaster> that is jump to absolute coordinates
18:31:08 <AnMaster> SimonRC, x sets delta
18:31:13 <SimonRC> yup
18:31:16 <AnMaster> so you got to reset delta after you jump
18:31:18 <AnMaster> but it works well
18:31:21 <AnMaster> as a goto
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:02 <AnMaster> but otherwise x
18:32:14 <AnMaster> avoid depending on fingerprints if you can IMO
18:32:19 <SimonRC> indeed
18:32:36 <Deewiant> there's also j
18:32:43 <AnMaster> well yes
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:52 <AnMaster> Deewiant, indeed
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:07 <AnMaster> ;)
18:34:24 <AnMaster> Deewiant, btw cachegrind looks nice
18:34:43 <AnMaster> part of valgrind
18:34:52 <AnMaster> looks for cache miss situations
18:34:54 <Deewiant> go ahead
18:35:05 <AnMaster> not using it is because it's output is hard to parse
18:35:10 <Deewiant> heh
18:35:11 <AnMaster> maybe when everything else is doen
18:35:13 <AnMaster> done*
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:36:56 <Deewiant> nope
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:26 <Deewiant> yes, I know what it is :-)
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:14 <Deewiant> 0 ticks
18:40:17 <AnMaster> hm
18:40:30 <Deewiant> ;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;$ takes one tick
18:40:38 <Deewiant> assuming the semicolons match
18:40:38 <AnMaster> for $ yes
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:07 <AnMaster> then compile that optimized
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:43:46 <AnMaster> looked? or was?
18:44:05 <Deewiant> looked
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:18 <Deewiant> and a bit of whitespace once
18:44:21 <Deewiant> beats me
18:44:24 <Deewiant> don't remember :-P
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:49 <AnMaster> I'm not going to
18:45:56 <AnMaster> but could be a nice experiment
18:46:12 <Deewiant> can't really be done
18:46:15 <AnMaster> oh?
18:46:18 <Deewiant> since the wrapping function can be arbitrary
18:46:26 <AnMaster> Deewiant, indeed it can
18:46:32 <AnMaster> so have a parser for it
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 <AnMaster> and loaded
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:15 <AnMaster> that could work the same
18:48:24 <Deewiant> yes, there are dlls
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:19 <Deewiant> but still, too much trouble
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:00 <AnMaster> indeed
18:54:09 <AnMaster> windowing routines belongs in X API
18:54:13 <AnMaster> not in system 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:02 <AnMaster> forgot it's name
18:55:30 <AnMaster> libxcb
18:55:33 <AnMaster> that's the one
18:55:51 <Deewiant> yeah, isn't that like a big *Ex for all of X? ;-)
18:57:51 <Deformative> Nope.
18:57:52 <Deformative> X11 sucks.
18:57:57 <Deformative> Regardless of api.
18:58:12 <Deewiant> that's arguable, as well
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
18:59:42 <AnMaster> but POSIX API is great
18:59:45 <AnMaster> X API isn't
18:59:59 <Deformative> ...
19:00:03 <pikhq> The X API is sheer insanity.
19:00:12 <AnMaster> pikhq, agreed
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:50 <Deformative> AnMaster: freedesktop is considering it.
19:00:55 <AnMaster> nice
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:04:19 <Deformative> ...
19:04:28 <Deewiant> and it would still suck.
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:26 <Deformative> Or any IPC for that matter.
19:09:34 <Deformative> I don't know, maybe they could make a lib to handle that or such.
19:09:46 <Deewiant> Hah, 1-bit icon pixmaps
19:10:31 <AnMaster> Deewiant, *.xbm?
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:10:50 <AnMaster> ah
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:31 <AnMaster> today we got alpha of course
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:12:54 * AnMaster doesn't use composite but...
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:17 <AnMaster> Deformative, I see
19:16:27 <AnMaster> but I got a 2-color cusor
19:16:28 <AnMaster> so?
19:16:37 <Deformative> Are you sure?
19:16:38 <AnMaster> I like the standard X11 cursor
19:16:41 <Deformative> Transparent is a color.
19:16:46 <AnMaster> I wouldn't trade it for anything
19:16:46 <Deformative> That is three.
19:17:03 <AnMaster> Deewiant, hm? so the standard cursor is 3-color?
19:17:09 <Deformative> Yes.
19:17:14 <marshmallows> nah
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:17:35 <AnMaster> see*
19:17:43 <Deformative> White outline.
19:17:56 <AnMaster> hm true
19:18:00 <Deformative> marshmallows: Are you sure?
19:18:14 <Deformative> You may be right, now that I think of it.
19:18:16 <Deformative> Hrm.
19:18:24 <marshmallows> not sure
19:18:32 <AnMaster> however, wouldn't the cursor be a rectangular bitmap?
19:18:48 <AnMaster> logically I mena
19:18:50 <AnMaster> mean*
19:18:53 <Deformative> Yar.
19:19:03 <AnMaster> so yes 3 colors then
19:19:07 <marshmallows> It's probably stored interally as such...
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:19:53 <Deformative> Only if you use an extension.
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:25:05 <Deformative> Whatever.
19:26:00 * Deformative needs to go.
19:26:02 <Deformative> o/
19:32:41 * SimonRC reads up
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:33:53 <AnMaster> actually mostly the GOOD ones
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:34:30 <AnMaster> ah ok
19:40:36 <oklofok> o
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:44:14 * SimonRC searches
19:45:08 <Deformative> Don't bother.
19:45:10 <Deformative> It is the suck.
19:45:13 <Deformative> Written in sdl.
19:47:16 -!- RodgerTheGreat has quit.
19:49:11 -!- RodgerTheGreat has joined.
20:11:32 <AnMaster> <Deformative> Written in sdl.
20:11:33 <AnMaster> err
20:11:36 <AnMaster> sdl uses X?
20:11:38 <AnMaster> right?
20:13:47 -!- Sgeo has joined.
20:17:10 <Deformative> Not always.
20:17:26 <Deformative> It has other backends.
20:17:40 <AnMaster> ah right, linux framebuffer
20:17:57 <AnMaster> and wincrap
20:18:35 <Deformative> Yep.
20:19:05 <AnMaster> oh and aalib it seems
20:19:06 <AnMaster> haha
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:21:52 <Deformative> aalib is awesome.
20:25:40 -!- RedDak has quit (Remote closed the connection).
20:30:20 -!- oklofok has quit (Connection timed out).
20:39:06 -!- oklofok has joined.
20:40:19 <AnMaster> UNDEF: H outputs 40 as (28
20:40:19 <AnMaster> wtf
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:01:32 <marshmallows> nothing in std c does this
21:03:15 <AnMaster> gah
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:04:40 <marshmallows> putchar(number & 1 ? '1' : '0'); }
21:04:51 <marshmallows> >> 1 just means divide by two
21:04:56 <AnMaster> hm
21:04:57 <marshmallows> you can do similar for any base
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:21 <AnMaster> right?
21:05:32 <marshmallows> recursion is the loop
21:05:36 <AnMaster> oh right
21:05:44 * AnMaster ponders how to convert to a while loop
21:06:01 <marshmallows> :/
21:06:06 <marshmallows> why on earth would you do that
21:06:07 <AnMaster> or such
21:06:17 <AnMaster> marshmallows, recursion mean function can't be inlined
21:06:22 <marshmallows> O_o
21:06:42 <marshmallows> whatever :)
21:06:42 <AnMaster> prevents optimizing
21:06:59 <AnMaster> marshmallows, look I'm aiming to make the fastest befunge interpreter out
21:07:02 <AnMaster> out there*
21:07:41 <marshmallows> you know what fast code is.. good algorithms
21:07:54 <AnMaster> marshmallows, I know
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:31 <marshmallows> bullshit
21:08:34 <AnMaster> marshmallows, err, it only does that?
21:08:47 <marshmallows> fingerprint are bigger than four chars?
21:08:59 <marshmallows> xFFFF=65535
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:09:22 <AnMaster> ?
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:04 <marshmallows> ok.. I said that..
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:41 <marshmallows> It's false and will limit you severly
21:11:44 <AnMaster> 0101000 leading 0 hm
21:11:49 <marshmallows> (and yes I know C does not define TCO who cares)
21:12:00 <AnMaster> TCO?
21:12:12 <AnMaster> that's for monitors?
21:12:25 * Sgeo finds what looks like an IPv6 propaganda comic
21:12:28 * AnMaster is confused
21:12:37 <AnMaster> Sgeo, heh?
21:12:44 <AnMaster> xkcd map of ipv4?
21:13:01 <Sgeo> "The adventures of Team ARIN"
21:13:02 <Sgeo> http://www.arin.net/education/comic/index.html
21:13:13 <AnMaster> ^_o
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:53 <AnMaster> up to base 36*
21:16:58 <marshmallows> s/number & 1 ? '1' : '0'/number["0123456789ABCDEF"]/...then
21:17:04 <AnMaster> hm
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:19:03 <AnMaster> Sgeo, spare us from this
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:29:07 <SimonRC> pikhq: heh
21:54:22 -!- slereah__ has joined.
21:58:28 -!- Sgeo has quit ("Ex-Chat").
21:58:45 -!- Sgeo has joined.
21:59:43 <pikhq> Of course, we all know the real way is "mov eax, [hex_string + number]".
22:02:15 <SimonRC> heh
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:07:13 <AnMaster> :D
22:08:18 <lament> RodgerTheGreat: i know about timecube, but colorforthray.info is possibly more insane
22:08:32 <AnMaster> lament, what is timecube?
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:09:21 <slereah__> -1x -1 = 1 IS STUPID AND EVIL >:|
22:12:11 <AnMaster> slereah__, err, lets see that can be simplified to -1x = 2, means x = 2/(-1) x =-1
22:12:13 <AnMaster> er
22:12:15 <AnMaster> x = -2
22:12:48 <AnMaster> slereah__, how is it stupid an evil?
22:16:03 -!- slereah_ has joined.
22:16:20 <slereah_> "Read the time cube :o"
22:16:22 <slereah_> Was, I sayng
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:27 <SimonRC> ColorForth is great
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:29:19 <Deformative> ?unlambda
22:30:01 <slereah_> Unlambda!
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:16 <Deformative> Heh\
22:30:33 <Deformative> I am trying to figure out if the language I am designing is "functional" or not.
22:30:50 <slereah_> Is it full of functions?
22:31:00 <Deformative> Well.
22:31:13 <Deformative> Define function.
22:32:43 <SimonRC> are there first-class function-like things?
22:32:58 <pikhq> Is lambda a keyword?
22:33:12 <Deformative> I have lambda expressions.
22:33:22 <Deformative> And I could have closures, but I do not think I will.
22:33:22 <pikhq> Elaborate?
22:33:39 <Deformative> Functions typically need to return a value.
22:33:43 <marshmallows> Deformative: Show me some code in it
22:33:46 <Deformative> And have no side effect.
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:23 <AnMaster> bool bool somefunction(...);
22:34:28 <Deformative> marshmallows: loop<...>loop()
22:34:33 <AnMaster> ie, a language where stuff can return several values
22:34:35 <Deformative> Erm
22:34:37 <AnMaster> using such a syntax
22:34:38 <Deformative> marshmallows: loop<...>loop(...)
22:34:42 <pikhq> AnMaster: My god.
22:34:45 <marshmallows> I mean a larger bit of code
22:34:49 <AnMaster> pikhq, what?
22:34:53 <pikhq> Insane.
22:34:55 <pikhq> Me like.
22:34:56 <marshmallows> did you write nothing about 20 lines yet?
22:35:12 <marshmallows> AnMaster haha I like that
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:35:48 <AnMaster> pikhq, heh? they are what?
22:35:59 <Deformative> marshmallows: Factorial is like 15 lines.
22:36:02 <lament> SimonRC: read it, it's fucked up.
22:36:03 <Deformative> But it is on the old spec.
22:36:05 <pikhq> AnMaster: Ignore, please.
22:36:05 <marshmallows> cool show me that
22:36:06 <Deformative> I have changed it since hten.
22:36:15 <AnMaster> pikhq, no? what?
22:36:55 <oklofok> pikhq: quickly, tell us!
22:37:03 <AnMaster> wonder how assignment syntax from such a function should look
22:37:06 <AnMaster> maybe something like
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:13 <oklofok> well, tuple then
22:38:15 <marshmallows> foo bar = f();
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:41 <Deformative> But same idea.
22:38:44 <AnMaster> where n is unknown
22:38:59 -!- oerjan has joined.
22:39:40 <oklofok> hi oerjie!
22:39:41 <marshmallows> why are there so many ...?
22:39:42 <AnMaster> oklofok, like variable argument count in C, but instead variable return arguments
22:39:54 <oklofok> AnMaster: i know
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:01 <oerjan> hi okly
22:40:12 <oklofok> oerjan: oh, stop :)
22:40:26 <AnMaster> pikhq, oh yes, at least when you do variable both ways
22:40:35 <marshmallows> Deformative: What does ... mean?
22:40:36 <Deformative> marshmallows: Because, there are no return values.
22:40:37 <oerjan> i feel all stoppy
22:40:43 <Deformative> marshmallows: Ignored args.
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:23 <AnMaster> pikhq, oh?
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:43:23 <pikhq> s/rax/eax/
22:43:31 <AnMaster> pikhq, yeah eax
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:33 <pikhq> (IIRC)
22:44:40 <calamari> hi
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:41 <oklofok> rrreally
22:45:46 <oklofok> could you curry return values
22:45:52 <AnMaster> curry?
22:45:54 <AnMaster> not sure
22:46:36 <Deformative> AnMaster: Are you talking about my language or your's?
22:46:42 <AnMaster> Deewiant, mine?
22:46:49 <AnMaster> or rather my wild idea
22:46:58 <Deformative> Why not just return a structure?
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:23 <Deformative> Uh, mkay.
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:06 <AnMaster> oklofok, I'm not sure yet
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:00 <oklopol> i guess, i guess
22:50:07 <oklopol> AnMaster: i know
22:50:10 <Deformative> marshmallows: ?
22:50:13 <oklopol> i'm fairly omniscient
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:51:58 <oklopol> me too
22:52:02 <AnMaster> pikhq, also this should be supported: bool ... int ... somefunction(), that is several sets of varreturns
22:52:03 <AnMaster> :D
22:52:09 <pikhq> AnMaster: Could be even worse, though.
22:52:10 <AnMaster> pikhq, same for varargs
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:40 <oklopol> bool+ int{7,10}
22:52:54 * AnMaster rofls
22:52:54 <pikhq> That it would return different values depending upon the linakge.
22:53:01 <pikhq> s/linakge/linkage/
22:53:02 <AnMaster> pikhq, XD
22:53:07 <AnMaster> very nice
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:25 <AnMaster> hm
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:20 <pikhq> Hmm.
22:55:26 <AnMaster> and what about oklopol's regexes?
22:55:30 <AnMaster> that could be nice
22:55:49 <pikhq> return(0,1,0,0,1)(1,0,1,1,0)(5,6,7,8,9,10);
22:55:49 <pikhq> ?
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:12 <pikhq> Ah.
22:57:39 <AnMaster> pikhq, ie, to an array?
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
22:58:17 <AnMaster> oh and same for arguments :D
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:21 <AnMaster> interesting
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:02:45 * pikhq is in shock
23:02:52 <AnMaster> pikhq, ?
23:02:56 <AnMaster> why?
23:03:00 <pikhq> Window's calling convention does not allow variadic functions.
23:03:09 <AnMaster> pikhq, stdcall is crap yes
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:03:39 <AnMaster> varun?
23:03:46 <AnMaster> varurn even
23:03:49 <pikhq> Maybe.
23:03:50 <AnMaster> lol
23:03:56 <AnMaster> var urn
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:09 <AnMaster> what is that?
23:08:21 <Sgeo> AnMaster, old web browser, from before Mosaic
23:08:29 <AnMaster> Sgeo, ah I forked mosaic btw
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:08:55 <Sgeo> cool
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:39 <marshmallows> .v ? :S
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:40 <marshmallows> does not really work
23:11:45 <marshmallows> http://www.xcf.berkeley.edu/~wei/viola/vw/chessDemo.html
23:11:50 <marshmallows> I guess I miss plugins.
23:11:55 <AnMaster> marshmallows, -_-
23:11:59 <AnMaster> you didn't read anything?
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:15:28 <marshmallows> 3D
23:15:32 <Sgeo> Wha?
23:15:41 <marshmallows> it would have support for 3D
23:16:15 <AnMaster> Sgeo, odd question
23:16:20 <AnMaster> and one I can't answer
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:16:39 <marshmallows> I am answering this question
23:16:44 <Sgeo> oh
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:20:53 <AnMaster> nice
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:21:35 <marshmallows> It's OO
23:21:37 <marshmallows> all hype :P
23:22:14 <AnMaster> Sgeo, it does a lot
23:22:28 <AnMaster> Sgeo, say bank login object
23:22:42 <AnMaster> and simple game object
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:24:22 <AnMaster> marshmallows, ?
23:24:37 <marshmallows> !
23:24:41 <AnMaster> ??
23:25:00 <AnMaster> what doesn't give proof?
23:25:55 <marshmallows> objects
23:26:52 <AnMaster> marshmallows, true but other security features exist I assume
23:26:57 <AnMaster> or didn't but should
23:26:57 * Sgeo wonders if there are people who fans of ViolaWWW
23:27:01 <Sgeo> I mean, today
23:27:07 <AnMaster> Sgeo, I didn't fan mosaic
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:53 <Sgeo> Active Worlds
23:28:58 <Sgeo> http://www.livinginternet.com/w/wi_browse.htm
23:29:02 <Sgeo> **facepalm**
23:29:56 <AnMaster> Sgeo, btw I also forked original gopher client
23:29:58 <AnMaster> :P
23:32:47 * Sgeo just wants to download VioletWWW right now
2008-03-17
00:28:56 <AnMaster> pikhq, there?
00:29:25 <pikhq> Nope.
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:14 <Deformative> define == global variable.
00:34:21 <Deformative> I am thinking of only allowing const globals.
00:38:21 <lament> are you writing a scheme?
00:38:45 <Deformative> No.
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:41:56 <marshmallows> yeah you use set!
00:42:20 <Deformative> But it can be.
00:42:28 <marshmallows> no I don't think so
00:42:34 <Deformative> Without define there is no room for side effects anywhere.
00:42:37 <marshmallows> it's probably not R5RS COMPLIANT
00:42:58 <marshmallows> (let ((x '())) (set! x 3) ....)
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:46:11 <lament> *means
00:47:17 <Deformative> Equivalent to doing nothing.
00:47:29 <Deformative> Defining alters the environment.
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:19 <Deformative> lament: In my language.
00:48:31 <marshmallows> apparently non-termination can be considered an effect
00:48:50 <Deformative> Eh, let me rephrase.
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:50:21 <AnMaster> Sgeo, ?
00:51:31 <pikhq> So, Rec is now or later?
00:51:31 <pikhq> :p
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:35 <oerjan> codata?
00:52:43 <SimonRC> no
00:52:45 <oerjan> (which is what this Rec should be)
00:52:51 <marshmallows> general recursion
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:04 <marshmallows> eliminators
00:53:08 <marshmallows> folds
00:53:19 <lament> wait, that's not true is it
00:53:19 <SimonRC> e.g. those ^^
00:53:50 <lament> yeah, it's true
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> 1:=> (foo)
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:54:45 <oerjan> oh?
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:56:56 <SimonRC> zzzzzzzzzzzz
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:24 <SimonRC> oerjan: yup
00:57:24 <marshmallows> lamet use let instead of begin
00:57:25 <SimonRC> zzzzzzzzzzzz
00:57:36 <lament> sorry?
00:57:52 <marshmallows> maybe that's wrong too
00:57:58 <lament> no, it doesn't matter what you use
00:58:00 <lament> i quote r5rs
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:07:34 <lament> ohh
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:21 <lament> and work like set!
01:08:40 <lament> > (begin (define x 1) (display x) (define x 2) (display x))
01:08:41 <lament> 12
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:24:08 <Deformative> lament: Heh.
01:43:50 * Sgeo is bored
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:03:59 <bsmntbombdood> haha, party
02:07:39 -!- sebbu has quit ("@+").
02:37:13 -!- Corun has joined.
02:38:18 <RodgerTheGreat> I feel like doing a random comic. Ideas, anyone?
02:38:55 <oerjan> frogs
02:39:11 <oerjan> dragons
02:39:12 <RodgerTheGreat> ok
02:39:17 <slereah_> Hot dogs.
02:39:17 <slereah_> Umbrellas.
02:39:31 <oerjan> and a haunted castle
02:39:40 <slereah_> Skis.
02:39:40 <slereah_> Party hats.
02:39:40 <slereah_> Chimney sweeps.
02:39:45 <RodgerTheGreat> hm. I'm pondering here
02:39:52 <slereah_> Emmanuel Kant.
02:39:55 <RodgerTheGreat> slereah_: quality over quantity, dude
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:40:55 <RodgerTheGreat> thought provoking, original and interesting.
02:41:16 <RodgerTheGreat> something that sparks my interest and that I can build from.
02:41:29 <oerjan> Mad Science!
02:41:35 <oerjan> that sparks _my_ interest
02:41:55 <oerjan> and it could tie up all the other suggestions
02:42:26 <RodgerTheGreat> hm
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:45:08 <slereah_> INTERNEEEEEEEEEEEEETS >:|
02:46:34 <slereah_> I can already picture them.
02:46:34 <slereah_> Like hairy chinese dragons.
02:57:36 <bsmntbombdood> i love hot dogs
02:57:40 <bsmntbombdood> damn i'm hungry
02:59:19 <slereah_> See RodgerTheGreat? It's a story that just write itself!
02:59:46 -!- calamari has quit ("Leaving").
02:59:55 <RodgerTheGreat> I'm already off and running on some steampunk
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:10:34 <pikhq> Oooh, steampunk.
04:15:35 <RodgerTheGreat> indeed
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:33:55 <pikhq> 1337.
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:42:41 <marshmallows> better ? :S
04:42:51 <marshmallows> I thought they are equivalent
04:48:07 <oerjan> oh i'm a bit vague on that
04:49:50 <marshmallows> I don't know what to do
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:23 <marshmallows> I see
04:57:26 <oerjan> combined with the usual use and even reentering of the continuation
04:59:21 <marshmallows> O_o http://rosettacode.org/wiki/Rot-13#XSLT
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:05:58 <marshmallows> I don't know what a genaric datastructure is
05:06:02 <marshmallows> any other ideas?
05:06:19 <adu> a genaric "list of integer" would have only elements that are of type integer
05:06:33 <marshmallows> I can't write about this topic though
05:06:41 <adu> what for? school?
05:06:55 <marshmallows> because I'm bored
05:07:00 <adu> oh
05:07:28 <adu> then write about the most common 101 datatypes used in the industry today
05:07:40 <marshmallows> :[
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:11:58 <marshmallows> I can't decide
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:16:20 <RodgerTheGreat> everything changes color
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)
15:18:52 <RodgerTheGreat> granted
15:19:27 <SimonRC> keep us updated
15:22:21 <RodgerTheGreat> I shall
16:04:30 -!- jix has joined.
16:23:18 -!- oerjan has joined.
16:58:24 -!- Sgeo has joined.
17:06:27 <AnMaster> SimonRC, comic?
17:06:33 <AnMaster> SimonRC, what comic?
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 <marshmallows> hi ehird
17:26:47 <ehird> [16:26] [Whois] marshmallows is an operator on channels: #ALGOL
17:26:49 <ehird> well that does it
17:26:51 <ehird> :-)
17:27:03 <ehird> evidently; an agent of evil
17:27:07 <marshmallows> :D
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:28:52 <ehird> brilliant
17:29:04 <ehird> fix Later
17:29:04 <ehird> :D
17:29:18 <oerjan> indeed o_O
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:22 <ehird> #;2> (foo)
17:30:22 <ehird> 254#;3>
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:01 <ehird> YOUR MOTHER
17:32:08 * ehird kicks self repeatedly as punishment
17:32:30 <oerjan> for what? o_O
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> 02:25:51
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:11 <ehird> i mean jeez
17:36:12 <ehird> its an esolang
17:36:13 <ehird> :|
17:36:50 <ehird> Deformative: "comment..."
17:36:54 <ehird> that's what smalltalk does
17:36:58 <ehird> and uses '...' for string
17:36:58 <ehird> s
17:56:46 <marshmallows> I don't know what to do
17:56:55 <marshmallows> should I use haskell or scheme to write a WAM in?
17:57:05 <marshmallows> (or C, or something else?)
17:59:09 <oerjan> Prolog. *ducks*
18:04:51 <lament> ehird: what's bigloo?
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:29 <ehird> it is broken.
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:53 <marshmallows> hahaha
18:10:54 <lament> which is an unrelated issue
18:11:11 <marshmallows> R6RS is great!
18:11:22 <lament> it doesn't even matter if it's great or not so great
18:11:28 <marshmallows> It's like eating mcdonalds everday
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:10 <marshmallows> I need a GC
18:20:15 <ehird> but boehm's gc, for instance, is a good idea for real use
18:20:18 <marshmallows> I don't really want to write one
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:20:34 <marshmallows> It didn't compile for me
18:20:39 <marshmallows> I'll try again
18:21:08 <lament> is that embedded INTERCAL code?
18:21:15 <ehird> /*
18:21:15 <ehird> <<Inclusion of the Header Files used in the project an the reason for their inclusion follows>>
18:21:15 <ehird>
18:21:15 <ehird> */
18:21:21 <ehird> /*
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:21 <ehird> */
18:21:32 <ehird> also it has excessive whitespace and each stdlib include file is extensively documented
18:21:53 <ehird> FOR EXAMPLE:
18:21:53 <ehird> /*
18:21:54 <ehird> This header file is included inorder to enable us to do string operations
18:21:54 <ehird> */
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> {
18:22:27 <ehird> /* return NULL */
18:22:27 <ehird> printf("\nYour Request cannot be satisfied even after Garbage Collection \n");
18:22:27 <ehird> return NULL;
18:22:29 <ehird> }
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:22:52 <lament> haha
18:23:24 <ehird> lament: you could use that for the befunge 'ask on div 0' thing
18:23:24 <ehird> :D
18:59:44 -!- oerjan has quit ("leaving").
19:13:15 -!- ehird`ii has joined.
19:13:28 <ehird`ii> testy
19:13:43 <ehird`ii> echo>foo sending to irc is a weird feeling
19:14:19 <ehird`ii> testy2
19:14:32 <ehird`ii> testy3
19:14:46 <ehird`ii> very amusing little thing.. gotta play with this some more
19:16:11 <ehird`ii> now... how do I quit?\!
19:18:22 -!- ehird`ii has quit (Remote closed the connection).
19:22:07 -!- ehird_ has joined.
19:22:11 -!- ehird has quit (Read error: 113 (No route to host)).
19:56:44 <AnMaster> ehird_, err?
19:56:49 <AnMaster> <ehird`ii> now... how do I quit?\!?
19:56:53 <AnMaster> what were you doing?
20:01:13 -!- ehird_ has quit (Read error: 104 (Connection reset by peer)).
20:04:01 <AnMaster> Deewiant, there?
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:11 <ehird_> hi, ais523
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:04 <ais523> ehird_: hi
20:14:07 * Sgeo doesn't either
20:14:23 * ais523 doesn't remember having used a computer in dreams
20:14:25 <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:13 <ais523> Deewiant: context?
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:40 <AnMaster> ehird_, link?
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:58 <Deewiant> er, s/the on/the/
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:14 <ehird_> ais523: yes, yes i do
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:03 <ehird_> AnMaster: yes i know
20:17:04 <AnMaster> and you can work in your shell at the same time
20:17:05 <ehird_> i told you about it.
20:17:10 <AnMaster> it kind of hooks into the shell
20:17:15 <ehird_> i told you about it.
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 <ehird_> etc
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:14 <ais523> AnMaster: INTERCAL
20:18:14 <ehird_> presumably befunge-98
20:18:17 <AnMaster> ais523, ah
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:15 <AnMaster> Sgeo, -_-
20:19:16 <ais523> Sgeo: yes
20:19:20 <ehird_> Sgeo: oh shut up.
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:41 <AnMaster> ehird_, oh why would it?
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:19 <AnMaster> ehird_, bf centric? how+
20:20:22 <AnMaster> s/+/?/
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:20:51 <ais523> ehird_: pretty much
20:20:56 <AnMaster> ehird_, a "foobar"?
20:21:03 <ais523> although I'm writing an FFI for it at the moment, which would make it even more extensible
20:21:03 <AnMaster> == intercallish for module?
20:21:12 <ehird_> AnMaster: pretty much :D
20:21:14 <ehird_> ehirdish
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:35 <AnMaster> err
20:22:38 <AnMaster> wtf
20:22:39 <AnMaster> ?!
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:22:55 <AnMaster> ehird_, not that -_-
20:23:07 <ehird_> ais523: I just realised we've exausted all possible Unlambda/Underload/Overload/etc names
20:23:09 <ehird_> Oh wait
20:23:10 <ehird_> Overlambda
20:23:12 <ehird_> that's what's left
20:23:16 -!- olsner has joined.
20:23:26 <AnMaster> ehird_, sidewayslambda?
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:45 <ais523> Sgeo: yes
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:02 <ehird_> :D
20:24:09 <AnMaster> ais523, so your program must be shorter than 1000 lines?
20:24:13 <ehird_> AnMaster: no
20:24:16 <ehird_> AnMaster: you can use 2000-..
20:24:18 <ais523> AnMaster: no, 2000-65535 are fine
20:24:25 <AnMaster> so a LOT of whitespace lines?
20:24:25 <ais523> and not every line needs a number anyway
20:24:32 <ehird_> AnMaster: no
20:24:35 <ais523> AnMaster: your line numbers needn't be in order
20:24:36 <ehird_> just do '2000 foo'
20:24:38 <ais523> or contiguous
20:24:41 <ais523> ehird_: (2000) foo
20:24:43 <ehird_> err
20:24:44 <ehird_> yes
20:24:45 <ehird_> whatever
20:24:45 <AnMaster> oh line as in 10 PRINT HELLO GOTO 10
20:24:45 <ehird_> :D
20:24:45 <AnMaster> ?
20:24:57 <ais523> AnMaster: like that
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:06 <ehird_> like, a spec for it
20:25:09 <slereah__> *PRINT LOOK AROUND YOU
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:49 <ais523> ehird_: not hard
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:26:53 <ehird_> :D
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:55 <ehird_> ais523: whoaa, wait
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:06 <ehird_> an ideaaaaaaaaaaaaa
20:28:10 <ehird_> TAOCP in INTERCAL.
20:28:16 <ehird_> There's already one in redcode, so..
20:28:18 <ais523> TAOCP?
20:28:31 <AnMaster> what is TAOCP?
20:28:37 <ehird_> ..
20:28:45 <ehird_> Knuth you people!!!
20:28:49 <AnMaster> ?
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:22 <ehird_> the origin of tex/
20:29:22 <ehird_> ?
20:29:27 <ehird_> AnMaster: ehh, taocp is in blocks
20:29:31 <ehird_> you can translate one algo at a time
20:29:34 <ehird_> but tex.. sheesh
20:29:37 <ehird_> http://www-cs-faculty.stanford.edu/~knuth/programs/tex.web <-- tex82
20:29:40 <ehird_> hideous :D
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:49 <ehird_> which is hilarious
20:29:54 <ehird_> AnMaster: hideously complex.
20:30:07 <AnMaster> ehird_, yes both are
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:35 <ehird_> AnMaster: um no..
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:30:46 <ehird_> sheehs
20:30:50 <AnMaster> ehird_, err?
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:28 <AnMaster> and produce, say, *.dvi
20:31:56 <ehird_> AnMaster: do you know how complex tex is?
20:32:00 <ehird_> and how quite primitive intercal is?
20:32:02 <AnMaster> ehird_, rather complex yes
20:32:04 <ehird_> well, it has loads of stuff
20:32:04 <AnMaster> I know that
20:32:07 <ais523> ehird_: INTERCAL isn't primitive
20:32:09 <AnMaster> that was why I suggested it
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:32:59 <AnMaster> while p≠null do
20:33:02 <AnMaster> wtf?
20:33:04 <ehird_> AnMaster: it's html...
20:33:08 <AnMaster> "pâ‰"?!
20:33:09 <ehird_> save it as .html
20:33:10 <ehird_> then ctrl-a
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 <AnMaster> uhu
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:37 <AnMaster> ais523, "enslaving-using"?
20:33:38 <ehird_> are very tedious
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:31 <ehird_> so save as html!
20:34:34 <ais523> AnMaster: I don't implement them
20:34:38 <AnMaster> ehird_, I got utf8 here
20:34:43 <AnMaster> ais523, ah
20:34:50 <ehird_> AnMaster: save tex.web as an html document damnit
20:34:50 <AnMaster> so CLC does?
20:34:54 <ais523> AnMaster: yes
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:05 <AnMaster> heh
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:41 <marshmallows> what's tex.web?
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:09 <lament> it's still tex.web
20:38:09 <marshmallows> why is it in an HTML file?
20:38:15 <lament> 3.141592
20:38:19 <marshmallows> lament: Yeah someone linked it a while ago
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:31 <ehird_> anyway
20:38:33 <ehird_> THE REAL REASON
20:38:38 <ehird_> is that knuth wanted to put tex.web on his website
20:38:38 <marshmallows> ehird: me since I have NFI what it is
20:38:42 <ehird_> so he wrote an html document wrapping it
20:38:45 <ehird_> and uploaded 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:50 <marshmallows> ok
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:08 <ehird_> hmm
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:31 <ehird_> hmm
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:49 <ehird_> no wait
20:40:51 <ehird_> reverse that
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 <ehird_> so like this:
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:41:34 <ehird_> :D
20:45:53 -!- tola has joined.
20:49:34 <ehird_> ais523: perl global variable initialized to false
20:49:35 <ehird_> quick!
20:49:36 <ehird_> :D
20:49:38 <ehird_> no wait
20:49:44 <ehird_> initalized to true
20:50:09 <ais523> ehird_: $]
20:50:18 <ais523> it's the version number, which is not false, and therefore true
20:50:26 <ehird_> ais523: wow
20:50:27 <ehird_> :D
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:53:22 <ehird_> ais523: (??{$foo})
20:53:23 <ehird_> right
20:53:24 <ehird_> ?
20:53:28 <ais523> yes
20:54:09 * slereah__ received this : http://membres.lycos.fr/bewulf/Russell/Ada2.jpg
20:54:10 <slereah__> :D
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:55:53 * SimonRC likes classnamer.com
20:56:30 <ais523> if you never use <> again, you could instead use $/ as a default-true global
20:56:35 <ais523> (the line separator)
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:23 <ehird_> ais523: oh wtf
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:43 <ehird_> :(
20:59:55 <ais523> you can write s%[^@]*%print... for instance
21:00:01 <ais523> what did you expect $0 to be?
21:00:09 <ehird_> ais523: whole-match
21:00:11 <ais523> $&
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:18 <ehird_> :D
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:53 <ehird_> ais523: um..no
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:20 <ehird_> okay.. :p
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:04:58 <ehird_> so $& is broken
21:05:09 <ehird_> $& is my replacement, somehow..
21:05:47 <ehird_> ais523: in s/foo/.../, performed on 'foo', group 0 = 'foo'
21:06:30 <ais523> that should be $&
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:07:58 <ehird_> </PRE></HTML>
21:08:05 <ais523> or you'll keep matching no chars at the start of the string...
21:08:08 <ehird_> my /e is broken
21:08:09 <ehird_> :D
21:08:48 <ehird_> hm
21:08:52 <ehird_> it now infiniloops
21:09:14 <ehird_> ahh i see
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:12:18 <ehird_> QED
21:12:56 <ehird_> hmm
21:12:59 <ehird_> I want ^@
21:13:10 <ehird_> but then i get
21:13:11 <ehird_> <HTML><TITLE>Literate program</TITLE>helloworldabcdef
21:13:11 <ehird_> </HTML>
21:15:25 <ehird_> ais523: !$. == $.
21:15:29 <ehird_> or: $. == 0
21:15:32 <ehird_> then !$. == 0
21:16:06 <ehird_> or rather
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:29:07 <marshmallows> I'm not sure that objects have failed
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:33 <Deewiant> yeh
21:31:53 <AnMaster> Deewiant, I tried with ulimit -v, it didn't abort, it caused GC to print lots of warnings
21:31:57 <AnMaster> and errors
21:32:01 <AnMaster> but it didn't abort
21:32:33 <Deewiant> right, C doesn't have exceptions. :-P
21:32:41 <AnMaster> Deewiant, ok point taken
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:42 <AnMaster> ehird_, yes I know that
21:34:44 <ehird_> use it everywhere.
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:36:04 <AnMaster> realloc too
21:38:21 <AnMaster> I dumped a trace from mycology, one instruction for each line:
21:38:23 <AnMaster> $ wc -l trace.txt
21:38:23 <AnMaster> 125363 trace.txt
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:12 * AnMaster rewrites
21:41:13 <ehird_> AnMaster: fix that place
21:41:14 <ehird_> :D
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:17 <AnMaster> as funge-space = hash table
21:42:17 <SimonRC> huh? hashing?
21:42:20 <SimonRC> ah, ok
21:42:30 <Deewiant> what's wrong with calloc?
21:42:55 <SimonRC> well, for a start, funge-space must be initialised to 0
21:43:08 <Deewiant> actually, to ' ', i.e. 32.
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:35 <SimonRC> yes
21:43:37 <AnMaster> SimonRC, of course it isn't, default value == ' '
21:43:47 <ehird_> we need a UniFunge
21:43:49 <ehird_> :D
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:43:59 <AnMaster> ehird_, unefunge does exist
21:44:03 <ehird_> SimonRC: unifunge, dmanit
21:44:04 <SimonRC> ah, unicode
21:44:06 <AnMaster> ah
21:44:06 <SimonRC> outch
21:44:08 <AnMaster> ouch
21:44:23 <SimonRC> well, there is ping-pong
21:44:38 <AnMaster> I wonder why just 6 MHz :/
21:44:42 <AnMaster> or so
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:45:17 <AnMaster> :D
21:46:12 <ehird_> AnMaster: write an asmfunge
21:46:15 <ehird_> :D
21:46:22 <AnMaster> ehird_, forget that!
21:46:35 <SimonRC> (ping-pong has a custom charset)
21:46:50 <AnMaster> actually a faster hash library would help
21:46:56 <AnMaster> I used gprof
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:47:42 <ehird_> :|
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:22 <AnMaster> probably far from best
21:48:25 <ehird_> AnMaster: xD
21:48:28 <ehird_> you have a finite set of keys.
21:48:32 <ehird_> ergo: http://www.gnu.org/software/gperf/
21:48:39 <SimonRC> a known set of keys, too
21:48:50 <ehird_> SimonRC: exactly
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:22 <AnMaster> :/
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:13 <AnMaster> at least they are now
21:50:16 <ehird> ...
21:50:29 <ehird> SimonRC: Please tell AnMaster his fungespace has a warped, terrible design.
21:50:37 <AnMaster> ehird, it probably hash
21:50:39 <AnMaster> has*
21:50:40 <AnMaster> I agree
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:51:28 <SimonRC> hmm
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:52:52 <SimonRC> yes, i know
21:53:05 <AnMaster> oh and negative values are valid
21:53:10 <AnMaster> like say, -4,-6
21:53:11 <SimonRC> often the middle is very dense, so an array would be good
21:53:14 <AnMaster> totally valid
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:06 <AnMaster> SimonRC, indeed
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:40 <AnMaster> for both x and y
21:54:49 <SimonRC> and you will want to exploit high code locality
21:54:50 <ehird> hmm
21:54:56 <ehird> 'mv *.pl *.py' should work :(
21:55:00 <ehird> clever *-globbing.
21:55:06 <ehird> as replacement
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 <SimonRC> AnMaster: yup
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:51 <ehird> SimonRC: no
21:55:53 <marshmallows> autoload zmv
21:55:54 <AnMaster> ehird, try rename like SimonRC said
21:56:01 <AnMaster> marshmallows, zsher?
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:39 <ehird> AnMaster: lazy
21:56:42 <AnMaster> ehird, also how would it call it? call the function x times?
21:56:48 <AnMaster> or program or whatever
21:56:54 <ehird> AnMaster: not sure yet
21:56:55 <AnMaster> use the right tool for the job
21:56:55 <ehird> :D
21:56:56 <AnMaster> man rename
21:57:14 <AnMaster> ehird, or just a simple loop
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:19 <ehird> :|
21:57:30 <SimonRC> ehird: no he isn't
21:57:36 <AnMaster> for file in *.pl; do mv "$file" "$(basename "$file" .pl).py"; done
21:57:39 <AnMaster> NOT TESTED
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:57:58 <AnMaster> call*
21:58:06 <AnMaster> using parameter expansion iirc
21:58:22 <AnMaster> left as an exercise to the reader ;P
21:58:47 <marshmallows> ls >>= mv `ap` (s/*pl/*py/)
21:58:49 <marshmallows> lol
21:59:00 <AnMaster> marshmallows, is that zsh?
21:59:04 <marshmallows> no
21:59:10 <AnMaster> marshmallows, what shell?
21:59:16 <marshmallows> none
21:59:22 <AnMaster> oh what is it then?
21:59:30 <ehird> AnMaster: that's haskell with the right functions
21:59:35 <ehird> hmm
21:59:40 <ehird> list-monad + IO i think
21:59:47 <ehird> and... s/// :P
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:36 <ehird> 0,0
22:06:37 <ehird> 0,1
22:06:40 <AnMaster> yes
22:06:41 <ehird> etc
22:06:41 <AnMaster> true
22:06:46 <AnMaster> ehird, and negative values
22:06:50 <ehird> AnMaster: yes yes whatever
22:06:50 <ehird> :)
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:07:15 <AnMaster> hm
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:16:31 <AnMaster> ie, -2^31 to 2^31
22:16:33 <AnMaster> or whatever
22:17:13 <AnMaster> I don't have disk space for a file with 2 * 2^64 lines
22:19:57 <SimonRC> hmm
22:20:02 <SimonRC> you could jit stuff
22:20:17 <SimonRC> initially, interpret
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:29 <SimonRC> yes
22:23:32 <AnMaster> you know that fails on lots of OS
22:23:38 <AnMaster> like openbsd that I'm on atm
22:23:40 <ais523> <ehird> 'mv *.pl *.py' should work :(
22:23:42 <SimonRC> well the JVM manages it
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:06 <AnMaster> err executable and writable
22:25:13 <AnMaster> however it is complex to do that
22:25:15 <AnMaster> iirc
22:25:47 <AnMaster> SimonRC, also compile to machine code, well what arch
22:25:55 <AnMaster> x86? x86_64? ppc? ppc64?
22:26:00 <SimonRC> whatever is supported
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:35 <ais523> like C--, or an OISC
22:26:37 <AnMaster> ais523, eh?
22:26:52 <ais523> (C-- would be the 'serious' choice)
22:27:09 <AnMaster> ais523, that would mean a compiler at runtime?
22:27:12 <ais523> AnMaster: no
22:27:19 <AnMaster> unless I misunderstood C--
22:27:23 <ais523> it just assembles into a range of different architectures
22:27:23 <AnMaster> got a link for C--?
22:27:26 <ais523> it's a programming language
22:27:38 <AnMaster> ais523, right, but how would that work for JIT?
22:27:42 <SimonRC> indeed
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:28:40 <AnMaster> -_-
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:30:38 <AnMaster> heh
22:30:41 <AnMaster> m$...
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:31 <ehird> back
22:32:32 <ehird> who said something
22:33:05 <ais523> ehird: me, AnMaster, SimonRC
22:34:26 <ehird> AnMaster:
22:34:33 <AnMaster> ehird, yes?
22:34:37 <ehird> 'M$' is pretty immature
22:34:48 <AnMaster> yes they are
22:34:50 * AnMaster runs
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:34:58 <ehird> and also made c--
22:35:11 -!- oerjan has joined.
22:35:18 <ais523> ehird: that would explain why ghc uses C-- and Microsoft funds it
22:35:22 <ehird> yes
22:36:07 <lament> microsoft is evil!!!!
22:36:13 <lament> boycott ghc!
22:36:15 * ais523 thinks that there are all types of people at Microsoft; the company itself is completely self-serving and acts in a way most of its employees dislike, but the employees themselves aren't all bad
22:36:39 <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:52 <marshmallows> yhc looks really cool
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:30 <marshmallows> ehird check it out
22:37:59 <AnMaster> ais523, their marketing is evil
22:38:01 <ehird> marshmallows: meh
22:38:07 <ais523> AnMaster: yes
22:38:09 <AnMaster> ais523, just one word: "sourcefource"
22:38:14 <ais523> it even fooled their own employees
22:38:16 <AnMaster> or however they spell it
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:17 <AnMaster> yes indeed you are
22:39:27 <AnMaster> I know there are good ppl at MS
22:39:33 <AnMaster> but the company *IS* evil
22:39:41 * ais523 agrees with AnMaster
22:39:44 <ehird> AnMaster: evil is such a funny term
22:39:45 <ehird> define it.
22:39:46 <SimonRC> well, it does nasty things
22:39:51 <ais523> except I would have highlighted the word 'company'
22:39:52 <AnMaster> ehird, ais523 can do that
22:40:03 <SimonRC> but only to the extent that many companies would in that situation
22:40:08 <SimonRC> i.e. natural dominance
22:40:45 <ehird> AnMaster: outsourcing, eh?
22:40:47 <SimonRC> and its software is comstimes dreadful
22:40:51 <SimonRC> *sometimes
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:20 <AnMaster> ehird, care to answer?
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:41:55 <AnMaster> err?
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:42:54 <AnMaster> of RAM. "
22:43:21 <AnMaster> that software must be old
22:43:25 <AnMaster> or rather the docs must
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:39 <AnMaster> well, good night
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:06 <SimonRC> hmm
22:46:17 <SimonRC> what are vim's advantages over emacs?
22:47:15 <ehird> SimonRC: no RSI
22:47:41 <SimonRC> in particular?
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:23 <SimonRC> ehird: yes
22:48:28 <SimonRC> if at all faster
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 <ehird> same with emacs
22:48:50 <SimonRC> you can press arrow keys much faster than type complex movement commands
22:48:56 <ehird> and hardly
22:49:02 <ehird> 4 words along:
22:49:06 <ehird> M-> M-> ...
22:49:07 <ehird> or
22:49:10 <ehird> 4w
22:49:16 <ehird> Or..
22:49:19 <ehird> C-u 4 M->
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:52:35 <ais523> ehird: M-4 M->
22:53:28 <ais523> no, not M->, that's end-of-document
22:53:31 <ais523> maybe M-.?
22:53:41 <SimonRC> no, M-f
22:53:44 <ehird> err, I meant
22:53:44 <ehird> -->
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:31 <SimonRC> ah, yes
22:54:36 <SimonRC> waitamo...
22:54:39 * SimonRC thinks
22:54:51 <SimonRC> for speed purposes, vim has arrow keys
22:54:55 <SimonRC> they're marked hjkl
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:20 <ehird> deal with it
22:55:27 <SimonRC> well yes
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:17 <ehird> :p
22:58:25 <ehird> oh, and vim integrates with the unix way
22:58:28 <ehird> filters, etc
22:58:41 <ehird> you have probably seen the recent thing about using vi(m) for a hex editor
22:58:44 <ehird> :!xxd -> to hex
22:58:49 <ehird> :!xxd -r -> and back
22:59:00 <ehird> err
22:59:03 <ehird> :!%xxd
22:59:04 <ehird> :!%xxd -r
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:30 <ais523> yes
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:29 <ais523> yes
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:03:58 <ehird> ais523: indeed
23:04:03 <ehird> we need a third option
23:04:03 <ehird> like
23:04:04 <ehird> vi
23:04:05 <ehird> ^
23:04:06 <ehird> |
23:04:10 <ehird> ---------> ???
23:04:11 <ehird> |
23:04:12 <ehird> v
23:04:12 <ehird> emacs
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:27 <SimonRC> hehehe
23:05:39 <SimonRC> I created a file called .url once somehow
23:06:02 <ais523> $ ???
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> $ ***
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:21 <ehird> hah
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:46 <ais523> ah
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:00 <ehird> one per line.
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:13:58 <ehird> example:
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:14:38 <ehird> etc
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:19:53 <marshmallows> my favorite is 'dont'
23:20:09 <marshmallows> dont { foo } # foo is never executed
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:40 <marshmallows> Could you do Prolog in INTERCAL?
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:28:25 <marshmallows> INTERCAL is crazy.....
23:29:05 <ehird> marshmallows: really? that's an odd and unique opinion
23:29:23 <marshmallows> lol
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:39 <ehird> :)
23:35:40 <ais523> probably does, for that matter
23:35:42 <ehird> ais523: haha
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:13 <ehird> and similar
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:02 <ehird> ..sometime
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:41:50 <RodgerTheGreat> hm
23:42:04 <ais523> checking clog's or cmeme's are likely to produce better results
23:42:16 <RodgerTheGreat> well, it must've been between 10:30 am today and now
23:43:18 <oerjan> er i mentioned your nick
23:43:25 <RodgerTheGreat> oh
23:43:43 <oerjan> but only to point out that i thought you were responsible for the recent comic link
23:44:05 <RodgerTheGreat> oh, the "in progress" shot?
23:44:22 <oerjan> the mad science Apparatus one :)
23:44:44 <RodgerTheGreat> yes
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:01 <ais523> but not all
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?
23:56:40 <ehird> ais523: maybe
2008-03-18
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:18:51 * ais523 agrees
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:19:29 <ais523> s/>/?/
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:49 <ais523> s/recures/recurse/
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:01 <ehird> ais523: yep
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:39 <ehird> haha
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:51 <oerjan> ooh, scary
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:20 <ehird> more like evil
00:47:23 <ais523> now all I need is a Python module to grant me {} and semicolon
00:48:07 <ehird> ais523: been done
00:48:10 <ehird> as one of python's coding
00:48:11 <ehird> s
00:48:14 <ehird> which is used for utf-8 etc
00:48:22 <ehird> ais523: python already gives you ;
00:48:24 <ehird> it's just ignored
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:15 <ehird> a; b
00:50:30 <ais523> that is actually really useful
00:51:18 <ehird> ais523: perl is actually making stuff fun again
00:51:18 <ehird> :D
00:51:33 -!- ais523 has quit ("it's very late, I have to go home").
00:57:08 -!- BMeph has joined.
00:59:40 -!- jix has quit (Remote closed the connection).
02:02:45 -!- digital_me has joined.
02:28:14 -!- calamari has joined.
02:53:09 -!- theholyduck has joined.
02:53:18 -!- theholyduck has left (?).
02:57:07 -!- olsner has quit ("Leaving").
03:04:40 -!- ehird has quit ("Konversation terminated!").
03:54:49 -!- faxathisia has joined.
04:03:24 -!- marshmallows has quit (Read error: 113 (No route to host)).
05:20:58 <RodgerTheGreat> I've finished more panels:
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:31 <pikhq> :D
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:42 <pikhq> Gorgeous color.
05:23:48 * RodgerTheGreat sighs
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:24 <RodgerTheGreat> alright, I'll keep plodding along like this
05:24:29 <pikhq> It's like the difference between a hacked together shell-script and a full REPL.
05:25:04 <RodgerTheGreat> is the story interesting so far, at least?
05:25:14 <pikhq> Quite.
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:33:12 <Sgeo> G'night all
05:33:13 <RodgerTheGreat> does anyone else have any thoughts and/or opinions?
05:33:19 <RodgerTheGreat> cya, Sgeo
05:35:00 -!- Sgeo has quit ("Ex-Chat").
05:36:25 -!- digital_me has quit ("leaving").
05:36:31 <RodgerTheGreat> hm. I guess not many people are awake.
05:36:36 <pikhq> Course not.
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:40:53 <RodgerTheGreat> nifty
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:44 <RodgerTheGreat> IT is akin to being an "internet janitor"
05:46:47 <pikhq> I *am* landing this internship out of high school. ;)
05:46:58 <RodgerTheGreat> yeah, so in your case it isn't too bad
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:05 <pikhq> Yeah.
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:03 <RodgerTheGreat> well, I think I'm turning in.
05:51:10 <pikhq> Mmkay.
05:51:30 <RodgerTheGreat> one factoid before I go about my steampunk adventure... there's a reason he's called "Mister Thompson".
05:51:43 <pikhq> Oooh.
05:52:03 -!- RodgerTheGreat has quit.
07:04:33 -!- BMeph has quit ("calls it a night").
07:15:28 -!- calamari has quit ("Leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:53:55 -!- oklopol has joined.
08:55:51 -!- oklofok has quit (Read error: 113 (No route to host)).
08:56:49 -!- olsner has joined.
09:02:47 -!- oerjan has quit ("Krnknhs").
09:21:53 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
09:22:10 -!- oklofok has joined.
10:30:57 -!- olsner has quit ("Leaving").
11:01:37 -!- SimonRC has quit (Read error: 110 (Connection timed out)).
11:11:42 -!- oklofok has quit (Read error: 113 (No route to host)).
11:15:57 -!- SimonRC has joined.
12:33:56 <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:37:01 <AnMaster> err 112 for both those
12:37:08 <AnMaster> y I mean
12:46:58 -!- Slereah has joined.
12:48:20 <Deewiant> AnMaster: that's the bit that prints out the environment variables
12:53:16 <AnMaster> Deewiant, aha
12:53:31 <AnMaster> well that explains it, gentoo seems to like setting a lot of env variables
12:53:43 <AnMaster> $ env | wc -l
12:53:44 <AnMaster> 85 <-- gentoo
12:53:50 <Deewiant> and that suggests that the total strlen of your envvars is around 5709 :-P
12:53:54 <Deewiant> how about -c
12:53:58 <AnMaster> $ env | wc -l
12:53:58 <AnMaster> 22 <-- free bsd
12:54:10 <AnMaster> $ env | wc -c
12:54:10 <AnMaster> 5543
12:54:17 <AnMaster> freebsd
12:54:19 <AnMaster> $ env | wc -c
12:54:19 <AnMaster> 443
12:54:30 <AnMaster> Deewiant, hehe :)
12:54:36 <Deewiant> 2641 here, on windows
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:10 <AnMaster> only portage cares about that
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:06:58 <AnMaster> apart from loading that is
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:07:55 <Deewiant> at least it's not _,#! #:<
13:07:57 <AnMaster> hm
13:08:04 * AnMaster parses
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:43 <Deewiant> s/instead/instead of/
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:15 <AnMaster> when popping value I mean
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:22 <AnMaster> er?
13:10:38 <Deewiant> it's an esolang after all, can't be too easy
13:10:47 <AnMaster> hah. true
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:22:16 <faxathisia> AnMaster: Nothing
13:22:33 <AnMaster> good
13:23:05 <faxathisia> http://tunes.org/~nef/logs/esoteric/
13:29:17 <AnMaster> faxathisia, what bot or person captures those logs?
13:29:37 <faxathisia> clog and cmeme
13:49:50 -!- sebbu has joined.
15:19:29 -!- sebbu has quit ("bye").
15:21:03 <SimonRC> #
15:39:43 <AnMaster> Deewiant, you there?
15:40:28 <Deewiant> aye
15:40:43 <AnMaster> wtf should o do if the width or height of the area to write is negative?
15:40:51 <AnMaster> output mirrored?
15:40:56 <AnMaster> reflect?
15:41:11 <AnMaster> or absolute value?
15:41:11 <Deewiant> I think I thought about doing mirrored output but decided to just reflect
15:41:17 <AnMaster> ah
15:41:30 <Deewiant> // undefined behaviour
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:41:38 <Deewiant> -> reverse(); return;
15:42:40 <AnMaster> ah
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:41 <Deewiant> but it's up to you :-)
15:45:47 <AnMaster> how does #32 differ from space?
15:45:47 <Deewiant> yeah?
15:45:58 <Deewiant> probably a typo
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:49:29 <AnMaster> not clearly
15:49:42 <Deewiant> to me it sounds like TRDS
15:49:58 <AnMaster> yeah that is definitely feral
15:50:10 <AnMaster> Deewiant, but would you consider MODE, or IMAP feral?
15:50:22 <Deewiant> somewhat
15:51:03 <AnMaster> FPDP?
15:51:16 <Deewiant> don't think so, why?
15:51:21 <AnMaster> after all it forces me to link with -lm
15:51:22 <AnMaster> :P
15:51:26 <Deewiant> :-P
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:51:54 <AnMaster> Deewiant, and freebsd :P
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:34 <Deewiant> or something
15:54:43 <AnMaster> Deewiant, right and that would make no sense with larger cell sizes
15:54:50 <AnMaster> ie, 64-bit
15:55:01 <AnMaster> a compile time option here
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:08 <AnMaster> oh what ones? IPv6?
15:58:16 <Deewiant> can't remember
15:58:22 <Deewiant> certainly nothing that complicated ;-)
15:59:15 <AnMaster> if not I may add a SCK6 ;)
15:59:23 <AnMaster> later on I mean
16:37:59 -!- faxathisia has quit ("If there are any aliens, time travellers or espers here, come join me!").
16:42:50 -!- jix has quit ("CommandQ").
16:52:41 -!- RodgerTheGreat has joined.
16:52:55 <RodgerTheGreat> hi everyone
16:54:30 -!- Sgeo has joined.
16:56:03 -!- sebbu has joined.
17:06:50 -!- timotiis has joined.
17:11:30 <pikhq> Yo.
17:12:29 <RodgerTheGreat> oY
17:12:55 <timotiis> hola
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:39:43 <Deewiant> prolly reflect
17:39:50 <AnMaster> ok
17:40:00 -!- stefo has quit (Remote closed the connection).
17:40:05 <AnMaster> the docs for it are so bad, rcfunge...
17:41:50 <Deewiant> yep :-)
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:03 <AnMaster> hm
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:04 <Deewiant> i.e. the defaults
17:48:12 <Deewiant> if there are no defaults, pick some.
17:48:18 <AnMaster> Deewiant, no defaults afaik
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:48:58 <AnMaster> ah that is different
17:49:04 <Deewiant> yes, I know
17:49:11 <AnMaster> SYNOPSIS
17:49:11 <AnMaster> mkdir [OPTION] DIRECTORY...
17:49:12 <Deewiant> but it certainly does have defaults
17:49:13 <AnMaster> -m, --mode=MODE
17:49:13 <AnMaster> set file mode (as in chmod), not a=rwx - umask
17:49:29 <AnMaster> 777 & ~umask I suspect
17:49:31 <Deewiant> yes, I can read man pages myself, thank you very much. :-P
17:49:38 <Deewiant> so use that
17:49:46 -!- timotiis_ has joined.
17:49:46 <AnMaster> why not S_IRWXU?
17:49:56 <AnMaster> (man sys_stat.h)
17:50:01 <Deewiant> it's up to you
17:50:04 <Deewiant> do whatever you want
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:57:09 <AnMaster> \o/
17:57:14 <AnMaster> DIRF that is
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:45 <RodgerTheGreat> yeah, that's what I figured
17:58:53 <RodgerTheGreat> I just wondered if anyone had tried it.
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:14 <AnMaster> :P
17:59:29 <RodgerTheGreat> depends on the browser
17:59:31 <Deewiant> well, no, not quite. :-P
17:59:42 <AnMaster> RodgerTheGreat, if it is number crunching I'd suggest FORTRAN
18:00:13 <RodgerTheGreat> AnMaster: that's rather missing the point
18:01:12 -!- timotiis has quit (Read error: 113 (No route to host)).
18:01:52 -!- timotiis_ has changed nick to timotiis.
18:02:17 <AnMaster> RodgerTheGreat, indeed
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:21:26 <SimonRC> "template files"?
19:27:34 -!- ais523 has left (?).
19:29:45 <AnMaster> #vt"drwolh">:#,_ @
19:29:45 <AnMaster> >"lo le">:#,_a,@
19:29:46 <AnMaster> yay
19:30:09 <AnMaster> SimonRC, ie a .c file with empty functions but with right name to add a fingerprint to cfunge
19:30:25 <SimonRC> ok
19:31:17 <AnMaster> SimonRC, anyway tell me what the befunge program above does
19:31:18 <AnMaster> :D
19:32:12 <SimonRC> it's a hello world, of course
19:32:15 <SimonRC> in parallel
19:32:20 <SimonRC> very fragile, I think
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:00 <SimonRC> um, not really
19:34:12 * AnMaster still have problems reading backwards in befunge
19:34:33 <SimonRC> it's an obvious thing to say
19:34:38 <AnMaster> hah
19:34:39 <AnMaster> ok
19:35:42 <AnMaster> unlike this version below it is "lock free" XD:
19:35:50 <AnMaster> #vtf2*2+"olleH">:#,_'>11p><a,0q
19:35:50 <AnMaster> ><"dlrow">:#,_'>fb+0p@
19:40:13 * Sgeo should learn Befunge at some point..
19:40:30 <Slereah> Or brainfuck.
19:40:31 <Slereah> :D
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:34 <AnMaster> oh?
19:41:45 <AnMaster> btw, not very original example:
19:41:47 <AnMaster> "AMOR"4#v(MCM\-+LXXX+++IV\-++.)a,@
19:41:47 <AnMaster> @
19:41:50 * Sgeo is no good with Brainfuck. Also, PSOX isn't meant to be Brainfuck specific
19:41:55 <AnMaster> need ROMA fingerprint
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:23 <AnMaster> SimonRC, oh?
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:47 <SimonRC> I mean the second line
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:08:50 * AnMaster looks
20:09:09 <SimonRC> oops
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:47 <SimonRC> not at the moment
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:38 <AnMaster> it is very slow
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:04 <AnMaster> hehe
20:14:05 <SimonRC> "optimised" how?
20:14:22 <AnMaster> SimonRC, -O3 -NDEBUG -profile-use
20:14:36 <AnMaster> and profile data was generated on mycology
20:14:39 <SimonRC> ok
20:15:04 <SimonRC> the interpreter is optimised, rather than it optimising the befunge
20:15:10 <AnMaster> indeed
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:43 <SimonRC> ok
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:17:49 <SimonRC> threaded?
20:17:55 <AnMaster> ie, -pthread
20:18:09 <AnMaster> -lpthread at link time too
20:18:15 <SimonRC> how would that help?
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:37 <SimonRC> I doubt that would help
20:18:43 <AnMaster> was thinking of CPU with pipeline
20:18:50 <SimonRC> they would need to switch every befung instruction
20:18:50 <AnMaster> or whatever
20:18:59 <AnMaster> SimonRC, hm?
20:19:02 <AnMaster> yeah
20:19:03 <AnMaster> probably
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:19:57 <AnMaster> :)
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:24:54 <SimonRC> blech
20:34:13 <AnMaster> SimonRC, err?
20:34:14 <AnMaster> what?
20:35:46 -!- oerjan has quit ("Bus").
20:36:33 <AnMaster> SimonRC, how is it weird?
20:36:41 <AnMaster> you just pop
20:36:53 <AnMaster> my interpreter handles it :)
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:27 <AnMaster> SimonRC, can be very useful
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:40:56 <AnMaster> :)
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:41:40 <SimonRC> which is just confusing
20:41:40 <AnMaster> then you load FOOO
20:41:43 <AnMaster> load BAAR
20:41:47 <AnMaster> unload FOOO
20:42:02 <AnMaster> how A, B and C are from FOOO and D from BAAR
20:42:04 <AnMaster> :D
20:42:07 <AnMaster> now*
20:42:08 <SimonRC> so unloading something makes parts of it available where they previously weren't
20:42:17 <SimonRC> argh, blither, wibble
20:42:20 <AnMaster> SimonRC, it is how it works
20:42:29 <AnMaster> SimonRC, called esoteric language for a reason
20:42:30 <SimonRC> it's crazy
20:42:54 <AnMaster> SimonRC, but way easier to implement
20:43:06 <AnMaster> just a stack for each opcode
20:43:34 <AnMaster> SimonRC, "NULL" unloading can be used to pop all stack once
20:43:39 <AnMaster> ie unload all really
20:43:57 <AnMaster> "LLUN"4(
20:44:00 <AnMaster> err
20:44:01 <SimonRC> at least the stack effects are reasonably sane
20:44:03 <AnMaster> "LLUN"4)
20:44:04 <AnMaster> I meant
20:44:16 <AnMaster> SimonRC, yes that is what I said
20:44:22 <AnMaster> <AnMaster> load BAAR
20:44:23 <AnMaster> <AnMaster> unload FOOO
20:44:23 <AnMaster> <AnMaster> now A, B and C are from FOOO and D from BAAR
20:44:32 <AnMaster> or rather, first load FOOO
20:44:36 <AnMaster> then do those steps
20:44:48 <SimonRC> I mean the main stack effects
20:45:07 <SimonRC> ( pushes the fingerprint in a different form
20:45:15 <AnMaster> err?
20:45:23 <AnMaster> ( and ) does not affect normal stack
20:45:32 <SimonRC> yes they do
20:45:39 <AnMaster> yes partly truye
20:45:41 <AnMaster> true*
20:45:52 <AnMaster> they pop stuff, and ( pushes the loaded fingerprint back
20:46:03 <SimonRC> yes
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:54 <ehird> ooh ee ooh ah ah
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:22:32 <AnMaster> ehird, includes some examples
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:26:34 <AnMaster> I actually already wrote it
21:26:45 <AnMaster> that part I mean
21:26:53 <AnMaster> quantum, and what n-nary
21:28:17 <ais523> ehird: it isn't really quantum
21:28:24 <ais523> just multithreaded a different way from C-INTERCAL
21:29:09 <AnMaster> ais523, oh? got a link?
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:30:52 <ehird> but there you go
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:07 <ehird> and this:
21:31:10 <ehird> (= url-kill* nil
21:31:11 <ehird> url-ignore* '("internetisseriousbusiness")
21:31:11 <ehird> comment-kill* nil
21:31:11 <ehird> comment-ignore* '("http://internetisseriousbusiness"
21:31:11 <ehird> "http://www.internetisseriousbusiness")
21:31:11 <ehird> ip-ban* nil)
21:31:19 <ais523> intercal.freshell.org
21:31:28 <ais523> http://intercal.freshell.org (making it clickable)
21:35:47 <AnMaster> ais523, you typoed that url
21:35:50 <AnMaster> forgot an e
21:35:54 <ais523> yes
21:35:59 <ais523> http://intercal.freeshell.org
21:36:01 <AnMaster> so not very clockable
21:36:04 <AnMaster> clickable*
21:36:05 <ehird> ais523: could you implement twoducks ala timetravel in b98?
21:36:14 <ais523> ehird: not really
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 <AnMaster> ehird, and what is twoducks?
21:36:30 <ais523> but it might not converge
21:36:40 <ais523> AnMaster: an esolang based around time travel
21:36:47 <AnMaster> ah
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:40 <ehird> yes BUT
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:01 <ehird> ais523: ContT
21:41:10 <ehird> ais523: or rather, Cont
21:41:13 <ehird> Cont is the time-travel monad
21:41:23 <ais523> but it uses metatime
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:43 <ehird> ais523: well, no
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:00 <ehird> ais523: true
21:46:05 <ehird> but..
21:46:07 <ehird> IOT Cont
21:46:08 <ehird> IS twoducks
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:05 <ehird> ais523: um, yes
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:36:52 <ehird> ais523: why?
22:36:54 <ehird> it's the only way
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:00 <ais523> so? Make it possible!
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:54:21 <SimonRC> ok that was a bit big
22:55:58 -!- slereah__ has joined.
22:55:59 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
23:00:36 <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:06:49 <lament> or
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:16 <lament> right
23:12:18 <lament> it's ugly
23:12:24 <SimonRC> not really
23:12:35 <ehird> lament: it's ugly because you can write a compiler for it
23:12:38 <ehird> excellent logic
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:12:59 <SimonRC> e.g.: where versus let
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:39 <oerjan> nearly so, i believe
23:13:44 <lament> makes sense
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:14:49 <SimonRC> (for ghc at least)
23:15:13 <oerjan> lament: type classes have strange limitations though in order to keep it decidable
23:15:19 <lament> right
23:15:21 <lament> okay
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:32 <oerjan> heh :)
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:17:50 <lament> heh
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:18:59 <SimonRC> hmm
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:23:44 <lament> ouch
23:25:07 <ehird> eh
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:25:34 <SimonRC> indeed
23:25:50 <lament> haskell is ugly :)
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:14 <SimonRC> FAIL!
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:28:11 <SimonRC> not really
23:28:15 <SimonRC> it has dependant types
23:29:51 <lament> so much stuff to learn.
23:31:06 <ehird> ePig!
23:31:10 <ehird> it's a PIG
23:31:12 <ehird> on the INTERNET
23:32:21 -!- pikhq has quit ("Rebooting stuff.").
23:33:10 <lament> epigram looks shiny
23:34:24 -!- pikhq has joined.
23:34:27 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
23:35:58 -!- sebbu has quit ("@+").
23:39:23 <lament> n : Nat; X : *
23:39:29 <lament> cute
23:46:12 <ehird> heh
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:06 <ehird> ;)
23:59:46 <SimonRC> waitamo...
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
2008-03-19
00:00:01 <SimonRC> how closely is the Halting problem related to Incompleteness?
00:00:14 <lament> olsner: actually yeah
00:00:31 <ehird> SimonRC: not
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:24 <oerjan> or wait
00:01:30 <oerjan> actually no
00:01:42 <oerjan> it could lie and say it halts even if it doesn't
00:02:01 <SimonRC> huh?
00:02:10 <oerjan> because the halting time could be a non-standard integer, which doesn't actually exist
00:02:25 * SimonRC hasn't hears of NISs
00:02:28 <SimonRC> *NSIs
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:14:27 <SimonRC> hi
00:14:29 <SimonRC> WRU?
00:14:47 <oerjan> GNPE
00:14:52 <SimonRC> oerjan: ??
00:15:35 <oerjan> i just like to say things i don't know what mean :D
00:28:07 <ehird> oerjan: me tooo
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:06 <SimonRC> 23:14:26 < SimonRC> hi
00:49:09 <SimonRC> 23:14:29 < SimonRC> WRU?
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:52:24 <oerjan> of the month?
00:52:46 <oerjan> whence Volapk?
00:53:34 <ehird> oerjan: haha
00:53:46 <ehird> right now, it's Perl
00:58:18 <ehird> ais523: hi
00:59:02 -!- ais523 has quit ("Konversation terminated!").
01:01:00 <ehird> hah
01:23:37 -!- pikhq has joined.
01:54:44 -!- ehird has quit ("Konversation terminated!").
02:18:14 -!- dbc has quit (Client Quit).
02:39:09 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
02:42:27 -!- slereah_ has joined.
02:48:02 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
03:00:18 -!- Corun has quit ("This computer has gone to sleep").
03:17:29 <lament> we need a language with a good type system
03:17:36 <lament> do any esolangs have good type systems?
03:23:23 <Deformative> Explain good.
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:40:16 <pikhq> :)
04:40:22 <adu> :)
04:41:03 <oerjan> :[]
04:42:25 -!- adu has quit ("Computer went to sleep").
05:08:09 -!- adu has joined.
05:13:03 <lament> :heh
05:26:07 -!- shinku has quit.
05:45:51 <RodgerTheGreat> new panels: http://www.nonlogic.org/dump/images/1205901932-preview3.png
05:48:18 <RodgerTheGreat> pikhq: attention
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
05:57:29 <RodgerTheGreat> :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:05:41 <RodgerTheGreat> I, too, am a reader of GG.
06:05:47 <RodgerTheGreat> do you read Buck Godot?
06:06:00 <oerjan> no
06:06:18 <RodgerTheGreat> you really should- it's every bit as good as Phil's other work.
06:07:52 <pikhq> Brilliant.
06:07:57 <RodgerTheGreat> :)
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:24:45 <RodgerTheGreat> howdy
13:34:40 <SimonRC> hi
13:36:35 <SimonRC> RodgerTheGreat: moar
13:37:06 <RodgerTheGreat> moar wut?
13:37:11 <SimonRC> comic
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:30 <RodgerTheGreat> I suppose I could do a little moar this morning
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:40:24 <AnMaster> assuming befunge98 of course
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:00 <RodgerTheGreat> unbounded storage in a sense... I'd presume so
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:46:42 <Deewiant> nowhere
13:46:50 <AnMaster> oh?
13:46:58 <Deewiant> not sure if it ever had any
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:21 <AnMaster> it runs under cfunge though
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:16 <AnMaster> Deewiant, link?
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:14 <AnMaster> ah
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:13 <Deewiant> AnMaster: how about that? ;-)
13:52:13 <AnMaster> oh and update README and such
13:52:35 <AnMaster> Deewiant, I know about those, mentioned in befunge98 specs, one of the latter apendixes
13:52:59 <AnMaster> later*
13:53:02 <AnMaster> "Other Topologies"
13:53:04 <Deewiant> yeah
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:54:56 <AnMaster> quite amazing
13:54:59 <AnMaster> in befunge93 even
13:55:01 <Deewiant> yeah, it's nice
13:55:16 <AnMaster> Deewiant, just with ccbi it is rather slow :P
13:55:20 * AnMaster runs
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:55:55 <AnMaster> shows*
13:56:05 <Deewiant> well, in a way it still is
13:56:08 <Deewiant> because it's memory-IO
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:57:34 <AnMaster> hm for ccbi or cfunge?
13:57:39 <Deewiant> both
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:23 <Deewiant> that doesn't matter
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:00:52 <Deewiant> process explorer, on windows.
14:00:55 <Deewiant> don't know about *nix.
14:01:09 <AnMaster> hah
14:01:53 <Deewiant> it looks like ps shows them
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:37 <AnMaster> hm, ps? or cfunge?
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:07:47 <AnMaster> interesting
14:07:49 <AnMaster> from strace
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:10:33 <Deewiant> you worry too much :-P
14:12:29 <AnMaster> you know, it was a joke
14:14:35 <Deewiant> yep, but even so, you do ;-)
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:23 <AnMaster> hm
15:13:31 <CakeProphet> ....I wrong a poem in Python.
15:13:37 <CakeProphet> http://pastebin.org/24426
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:16 <AnMaster> quite interesting
15:18:19 <Deewiant> no? :-P
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:18:59 <AnMaster> so wouldn't do any harm
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:40 <AnMaster> Deewiant, see?
15:20:42 <AnMaster> :P
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:21:13 <Deewiant> yeah, but...
15:21:15 <Deewiant> all caps
15:21:16 <Deewiant> in quotes
15:21:19 <Deewiant> followed immediately by a 4
15:21:21 <AnMaster> not likely
15:21:23 <Deewiant> followed immediately by a (
15:21:28 <Deewiant> exactly :-P
15:21:29 <AnMaster> indeed not likely
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:19 <AnMaster> or 184753
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:06 <Deewiant> uh, that's crap
15:23:14 <Deewiant> maybe I should test that in Mycology :-P
15:23:22 <AnMaster> Deewiant, so what should it do?
15:23:29 <AnMaster> and what does CCBI 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:23:55 <Deewiant> but anything > 0 is fine
15:24:03 <AnMaster> Deewiant, and above 8 wouldn't work considering how fingerprints are done
15:24:05 <AnMaster> afaik
15:24:07 <Deewiant> yes, it would.
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:24:44 <Deewiant> yes.
15:24:45 <AnMaster> that would break for bignum
15:24:52 <AnMaster> which is valid
15:24:57 <AnMaster> so you can't test it
15:25:04 <Deewiant> sure, but what if it first checks with y that the cell size is exactly 4
15:25:07 <Deewiant> then, it is valid
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:21 <Deewiant> for 4, 8, 2, 1, etc.
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:26:31 <AnMaster> took some time to debug
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:04 <AnMaster> Deewiant, what would that do?
15:30:16 <AnMaster> also, it could reflect
15:30:18 <Deewiant> just check if it popped 10000 values or not
15:30:28 <AnMaster> if it lacks the fingerprint
15:30:33 <AnMaster> Deewiant, ugh
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:31:47 <Deewiant> hence, "easy way".
15:32:16 <AnMaster> Deewiant, it could be a valid fingerprint
15:32:33 <AnMaster> someone could make one
15:32:37 <AnMaster> it all depends on cell size
15:32:47 <Deewiant> yes, it could
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:35:34 <AnMaster> hahah
15:36:07 <AnMaster> Deewiant, but what should happen at negative count I wonder
15:36:16 <Deewiant> reflect.
15:36:18 <Deewiant> undefined.
15:36:22 <Deewiant> tested in mycology.
15:36:30 <AnMaster> ah right yep
15:36:41 <AnMaster> Deewiant, however mycology fails to test the case of length == 0
15:36:50 <AnMaster> IMO that should reflect too
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:19 <AnMaster> or not infinite
15:37:22 <AnMaster> just very very large
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:10 <AnMaster> :P
15:38:24 <Deewiant> it's called your brain - learn it, use it, it's your friend :-P
15:38:28 <AnMaster> yep indeed
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:39:44 <AnMaster> anyway it was i-- not --i
15:39:48 <AnMaster> but that hardly matters
15:40:05 <Deewiant> and besides, ( with 0 /is/ tested.
15:40:14 <AnMaster> sure it is?
15:40:16 <Deewiant> i-- does matter.
15:40:22 <AnMaster> Deewiant, ah hm
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:43:45 <AnMaster> hm true
15:44:12 <AnMaster> but why did checking for 0 fix the bug in that other program then...
15:44:22 <Deewiant> I don't know...
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:19 <AnMaster> #vt"drwolH">:#,_ @
15:53:19 <AnMaster> >"lo le">:#,_a,@
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:00 <vixey> Hi
16:12:12 <vixey> Are there any esolangs based on π-calculus?
16:12:34 <oklofok> not that i know of :\
16:12:56 <oklofok> there are real languages based on it, though
16:13:02 <Deewiant> http://www.esolangs.org/wiki/Pict
16:13:02 <oklofok> Joy, iirc
16:13:19 <oklofok> oh
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:15:29 <Deewiant> joy is a functional forth
16:25:14 <oklofok> yarrrr
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:08:13 <Deewiant> forth is concatenative.
18:08:27 <Deewiant> as are factor and joy.
18:09:10 <lament> oh right, good point
18:09:19 <lament> i thought concatenative had something to do with lists
18:26:53 <AnMaster> Deewiant, there?
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:27:48 <AnMaster> hrrm
18:27:55 <Deewiant> but I don't know. :-P
18:29:45 <AnMaster> GOOD: y acts as pick instruction if given large enough argument
18:29:45 <AnMaster> GOOD: ] turns flying IP right
18:29:50 <AnMaster> wtf, I don't do flying ips?!
18:29:55 <AnMaster> I don't implement MODE
18:30:18 <Deewiant> uh?
18:30:25 <AnMaster> oh wait, flying isn't one from MODE
18:30:29 <AnMaster> hover is?
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:31:33 <Deewiant> no it's not ;-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:41 <Deewiant> n{aa y9k$2w00p01pn00g01g2w0w
18:53:57 <AnMaster> mhm
18:53:57 <Deewiant> replace 9 with the correct index of the stack sizes in y
18:54:01 <Deewiant> something like that
18:54:09 <Deewiant> that probably doesn't work but it's a start :-P
18:55:52 * AnMaster tries
19:05:50 <AnMaster> Deewiant, in any case, ccbi and cfunge give different results
19:06:17 <Deewiant> you have working test code?
19:06:19 <AnMaster> Deewiant, at the second w
19:06:22 <AnMaster> Deewiant, not sure
19:06:27 <AnMaster> probably not
19:06:29 <Deewiant> :-P
19:06:37 <AnMaster> as one goes up the other one down at the second w
19:06:50 <Deewiant> that shouldn't matter
19:06:54 <Deewiant> it should either be equal or not
19:06:57 <AnMaster> indeed
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:14 <AnMaster> true
19:08:27 <Deewiant> AnMaster: the point was, get all the correct values with only one call to y.
19:08:34 <Deewiant> so, call y.
19:08:40 <Deewiant> pop the required number of cells to get to what we want.
19:08:46 <AnMaster> yep
19:08:53 <Deewiant> check that the stack stack size is correct, since it's first.
19:08:58 <Deewiant> (it /is/ first isn't it?)
19:09:07 <Deewiant> store the two stack sizes somewhere.
19:09:12 <Deewiant> clear the rest of the stack.
19:09:19 <Deewiant> make sure they're correct.
19:09:25 <Deewiant> that's probably not necessary now that I think about it >_<
19:09:35 <AnMaster> aha
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:09 <Deewiant> I'm fairly certain, anyway.
19:10:21 <AnMaster> <Deewiant> (it /is/ first isn't it?) <-- that I got no idea about
19:10:34 <Deewiant> AnMaster: it's in the spec
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:10:42 <AnMaster> hrm
19:11:00 <AnMaster> "size-of-stack-stack cells containing size of each stack, listed from TOSS to BOSS (ip)"
19:11:05 <AnMaster> that is a short one?
19:11:17 <AnMaster> that would mean TOSS at bottom then?
19:12:20 <Deewiant> shrug
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:17:55 <Deewiant> alright, so here
19:17:55 <Deewiant> 1230{aaa0y2a*k$....a,@
19:18:30 <Deewiant> since it uses 'k' it prints one extra value due to the way some interpreters implement 'k'
19:18:44 <AnMaster> Deewiant, err what?
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:19:55 <AnMaster> $ ./cfunge tmp.b98
19:19:56 <AnMaster> 1184561 2 5 3
19:19:56 <AnMaster> heh?
19:20:27 <AnMaster> Deewiant, looks like k popped one to few?
19:20:37 * AnMaster looks
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:27 <AnMaster> oh god
19:21:36 <Deewiant> FBBI prints 2 3 5 97
19:21:45 <AnMaster> 97 from?
19:21:55 <Deewiant> first char of command line argument?
19:22:12 <AnMaster> ok
19:22:16 <Deewiant> like said, <ignore>
19:22:17 <Deewiant> :-P
19:23:37 <AnMaster> yeah
19:23:51 <AnMaster> Deewiant, well is the k of those other ones broken or not?
19:23:56 <AnMaster> or is it a UNDEF case?
19:24:04 <Deewiant> it's broken, of course
19:24:07 <AnMaster> ah
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:39 <AnMaster> it passes mycology so :D
19:24:54 <Deewiant> AnMaster: whatever, I just wrote the generic code so I can quickly test it against all interpreters
19:25:01 <AnMaster> true
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:28 <Deewiant> go ahead
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:27:12 <AnMaster> $ ls tests/
19:27:12 <AnMaster> jumpwrap.b98 ystack-size.b98
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:28:59 <AnMaster> break;
19:29:04 * AnMaster wonders if that is correct
19:29:13 <Deewiant> ssize_t?
19:29:29 <AnMaster> Deewiant, or gcc complains that i will always be >= 0
19:29:33 -!- Corun has quit (Client Quit).
19:29:35 <AnMaster> ssize_t is signed size_t
19:29:37 <Deewiant> sigh
19:29:43 <Deewiant> GNU extension?
19:29:46 <AnMaster> Deewiant, nop
19:29:48 <AnMaster> see C99
19:29:48 <Deewiant> ptrdiff_t is the standard 'signed size_t'
19:30:04 <AnMaster> Deewiant, err, look at C99
19:30:19 <AnMaster> I think it comes from there
19:30:22 <Deewiant> and also, switching to signed is not the solution to that problem :-P
19:30:22 <AnMaster> or maybe POSIX
19:30:37 <Deewiant> sorry, ISO/IEC 9899:1999 doesn't contain ssize_t
19:30:39 <Deewiant> it's POSIX
19:30:42 <Deewiant> (probably)
19:30:48 <AnMaster> ah yes
19:30:51 <AnMaster> because freebsd got it
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:11 <AnMaster> so POSIX
19:32:12 <AnMaster> :D
19:32:42 <AnMaster> Deewiant, look someone said even windows was POSIX
19:32:44 <AnMaster> so...
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:33:27 <AnMaster> Deewiant, probably indeed
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:32 <Deewiant> compile it and try
19:34:56 <AnMaster> Deewiant, well it looks correct but problem is, it does the top stack separatly
19:34:57 <AnMaster> :/
19:35:11 <Deewiant> why is that a problem?
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:21 <AnMaster> hrrm
19:37:28 <AnMaster> $ ./ccbi ~/src/cfunge08/tests/sysinfo-multi-stack-sizes.b98
19:37:28 <AnMaster> 3 3 4 5
19:37:29 <AnMaster> $ ./cfunge tests/sysinfo-multi-stack-sizes.b98
19:37:29 <AnMaster> 3 5 3 116
19:37:33 <AnMaster> indeed something breaks there
19:38:45 -!- oerjan has joined.
19:39:01 <AnMaster> $ ./ccbi ~/src/cfunge08/tests/sysinfo-multi-stack-sizes.b98
19:39:02 <AnMaster> 3 6 5 4
19:39:03 <AnMaster> hm ok
19:40:24 <AnMaster> $ ./cfunge tests/sysinfo-multi-stack-sizes.b98
19:40:24 <AnMaster> 3 5 4 6
19:40:28 <AnMaster> better but not perfect
19:40:29 <AnMaster> hehe
19:48:30 <AnMaster> Deewiant, btw I actually think TOSS should be at the bottom, opposite of how ccbi does it
19:48:39 <AnMaster> considering the standard
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:49:48 <AnMaster> 3 4 5 6 or 3 6 5 4
19:50:18 -!- Slereah has joined.
19:57:52 <AnMaster> gah
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:23 <AnMaster> another undef sigh
20:14:35 <AnMaster> well I'll add both versions, in #ifdef
20:14:35 <Deewiant> the whole spec is an undef
20:14:43 <Deewiant> since it's not written formally
20:14:50 <AnMaster> Deewiant, oh?
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:16:59 <AnMaster> indeed
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:41:39 * AnMaster looks for ehird
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:32 <Slereah> With only one combinator
21:45:45 <Slereah> Although it's *ii in actual iota
21:46:15 <AnMaster> ah
21:47:18 <Deewiant> AnMaster: appears to
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:24 <Deewiant> er, don't know about that
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:49:25 <Deewiant> in binaries you distribute
21:49:47 <AnMaster> Deewiant, exactly
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
21:53:30 <AnMaster> hope libm is ok then too
21:55:51 <Slereah> oerjan: In size maybe!
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:04:33 <AnMaster> dynamic/static 32/64
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:09:12 <AnMaster> oerjan, ?
22:09:28 <oerjan> ah yes
22:09:37 <oerjan> those are equivalent
22:40:25 -!- jix has joined.
23:13:38 <AnMaster> cfunge 0.2.0 released
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.
2008-03-20
00:18:50 -!- olsner has quit ("Leaving").
00:28:50 -!- timotiis has quit ("leaving").
00:53:37 -!- Corun has joined.
00:57:15 -!- sebbu has quit ("@+").
01:27:11 -!- shinku_ has joined.
01:28:39 -!- shinku_ has changed nick to shinkuzin.
01:33:40 -!- jix has quit ("CommandQ").
01:46:46 -!- Corun has quit (Read error: 110 (Connection timed out)).
04:09:13 -!- Tritonio_ has quit (Remote closed the connection).
04:10:14 -!- calamari has joined.
04:52:03 -!- GreaseMonkey has joined.
05:19:35 -!- BMeph has quit ("calls it a night").
05:21:11 <Sgeo> G'night all
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:29:47 <RodgerTheGreat> well, at least pick which one you'll want
05:29:52 <pikhq> Question.
05:30:22 <RodgerTheGreat> and don't hold out on me for absurd lengths of time or it'll expire
05:30:38 <RodgerTheGreat> otherwise, cool
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:18 <Deewiant> neither do I
12:08:24 <Deewiant> I'd use what Tango provides
12:08:30 <Deewiant> the point is, just define it higher-level
12:08:31 <AnMaster> hah ok
12:08:35 <AnMaster> Deewiant, indeed
12:08:45 <AnMaster> anyway this is just an idea
12:08:54 <AnMaster> along with SCK6 and a few more I got
12:09:08 <AnMaster> SCK6 = SOCK for ipv6
12:09:17 <AnMaster> unless SOCK can already do ipv6
12:09:28 * AnMaster growls at rcfunge specs about that
12:09:29 <Deewiant> possibly, in theory
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:11:40 <Deewiant> >_<
12:11:47 <AnMaster> don't like it?
12:11:50 <AnMaster> nor do I
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:22:14 <ais523_> hi ais523
13:22:38 <ais523> hi ais523_
13:23:06 <slereah__> PIME TARADOX
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:57 <slereah__> Huzzah!
13:29:59 <ais523> This is being done entirely by typing raw commands
13:30:14 <oklofok> sounds like serious stuff
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:00 * oklofok just read the rfc
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:29 <oklofok> yeah
13:31:30 <AnMaster> ais523, don't forget to PONG
13:31:48 <AnMaster> ais523, and well irc is a rather easy protocol
13:31:50 <oklofok> luckily, freenode basically never pings
13:31:52 <AnMaster> but soo many extensions
13:31:59 <AnMaster> and twists
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:44:35 * ais523 tests doing an ACTION
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:45:57 <oklofok> let's all do it!
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:40 <oklofok> ...?
13:46:43 <ais523_> you must have written /ctcp ais523_ #esoteric VERSION
13:46:44 <oklofok> what did i get wrong?
13:46:58 <ais523_> your client added my nick to the request, so it only went to me
13:47:03 <oklofok> errrr
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:22 <oklofok> sends
13:47:29 <AnMaster> <ais523_> [CTCP] Received CTCP-PING reply from ais523: 105 seconds.
13:47:30 <AnMaster> hah yes
13:47:45 * AnMaster notes that /me == CTCP ACTION
13:47:56 <AnMaster> you send \1ACTION jumps\1
13:47:57 <AnMaster> iirc
13:47:58 <oklofok> ais523: doing that to a channel == doing it to each user separately
13:48:03 <AnMaster> as a PRIVMSG
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:39 <ais523> I figured that
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:38 <AnMaster> but some send 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:47 <AnMaster> but it is allowed
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:51:30 <AnMaster> ais523, hehe true
13:51:43 <AnMaster> blame your client ;)
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:52:40 <AnMaster> http://www.irc-standard.org/
13:52:52 <ais523> thanks
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
13:56:39 <AnMaster> bbl
14:02:02 -!- ais523 has changed nick to ais523_testingni.
14:02:08 -!- ais523_testingni has changed nick to ais523.
14:03:06 -!- Tritonio_ has joined.
14:03:34 <ais523> hello Tritonio
14:04:42 <AnMaster> http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/befc3.php
14:04:43 <AnMaster> hm
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:04 <AnMaster> it only uses tcp timeout
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:10:55 <AnMaster> freenode is indeed
14:11:04 <AnMaster> it doesn't care about PONG though
14:11:16 <AnMaster> yes freenode's ircd is weird
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:11:47 <AnMaster> so
14:12:06 <AnMaster> do it the right way in your client
14:12:43 * ais523 was going to
14:18:45 -!- ais523 has quit ("testing quitting").
14:18:56 -!- ais523_ has changed nick to ais523.
14:26:57 -!- ais523_ has joined.
14:35:31 -!- Corun has joined.
14:36:02 <ais523_> hello, Corun
14:36:58 -!- ais523_ has quit (Nick collision from services.).
14:38:23 <Corun> Arr.
14:38:25 <Corun> Arr.
14:38:31 <ais523> Corun: ?
14:38:41 <Corun> Pirate! :-)
14:39:32 -!- ais523_ has joined.
14:39:38 -!- jix has joined.
14:39:48 <ais523_> it
14:40:11 <ais523_> it isn't Talk Like A Pirate Day already, is it?
14:40:20 * ais523_ forgot the colon
14:40:31 <Corun> No, no. I'm always like this. :-)
14:41:08 <oklofok> okokokokokokokokokokokoko
14:41:32 <ais523_> hmm... a properly esoteric IRC client would have options to swap nicknames with someone else
14:41:47 <AnMaster> ais523_, HAHA
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:46 <ais523_> yes
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:02 <AnMaster> very useful one
14:45:05 <ais523_> it would be kind-of hard to write anything copmlex in INTERCAL
14:45:05 <AnMaster> ais523_, a sec for docs
14:45:12 <ais523_> * complex
14:45:25 <AnMaster> ais523_, see description at http://www.inspircd.org/wiki/NAMESX_Module
14:45:43 <AnMaster> and there is UHNAMES too
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:39 <AnMaster> no docs there
14:46:44 <AnMaster> ais523, lol at that one
14:46:47 <AnMaster> what did you do=
14:46:50 <ais523> whoops
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:25 <AnMaster> ais523, err, wrong
14:47:31 -!- vixey` has joined.
14:47:31 <AnMaster> SendQ from server view
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> << NAMES
14:48:49 <AnMaster> >> :quark.kuonet-ng.org 366 AnMaster * :End of /NAMES list.
14:48:57 <AnMaster> that server runs inspircd
14:49:12 <AnMaster> and as I'm oper on it, I can see every channe
14:49:14 <AnMaster> channel*
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:56 <ais523> * suggests
14:49:58 <AnMaster> ais523, ah another case of most ircds not following things because it is so stupid
14:50:06 <AnMaster> ais523, because I did /quote
14:50:09 <ais523> s/clients/servers/
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:25 <AnMaster> so silly names
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:01 <AnMaster> for example:
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:29 <AnMaster> 005 = the three last lines
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:57:53 <AnMaster> ais523, that is bad :/
14:57:55 <AnMaster> very bad
14:58:09 <ais523> I have to start somewhere
14:58:13 <AnMaster> true
14:58:23 -!- ais523 has left (?).
15:04:41 -!- Tritonio_ has quit (Remote closed the connection).
15:09:16 -!- Tritonio_ has joined.
15:15:41 -!- ais523 has joined.
15:19:08 <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:26:53 <AnMaster> good luck with that
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:30 <AnMaster> account based systems
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:03 <AnMaster> I use such a system
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:28:16 <AnMaster> or on some networks, oper up
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:07 <AnMaster> ais523, right, still
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:30:56 <AnMaster> or a mix of them
15:31:05 * AnMaster goes with the mix way
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:32:44 <AnMaster> good idea
15:33:17 <ais523> responding to PING commands, also, because it won't work on some servers otherwise
15:33:27 <AnMaster> ais523, s/some/most/
15:33:27 <AnMaster> .
15:36:52 <oklofok> o
15:37:09 <ais523> oklofok: ?
15:37:24 <oklofok> ais523: just oing
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:01 <oklofok> i o i real life too
15:39:04 <oklofok> *in
15:39:36 <ais523> you mean you say o out of nowhere for no apparent reason every now and then?
15:39:50 <oklofok> yes
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:09 <AnMaster> most do
15:44:17 <AnMaster> in xchat for example it is a /set
15:44:22 <AnMaster> and so it is in irssi
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:16 <AnMaster> ais523, except you took ages
15:45:29 <ais523> AnMaster, you sent me three at once!
15:45:42 <okofolor> ais523: they don't mean anything
15:45:43 <AnMaster> yes finger exist
15:45:45 <okofolor> i guess just fofun
15:45:47 <okofolor> *for fun
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:16 <AnMaster> hahaha
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:14 <AnMaster> oh and ACTION of course
15:48:19 <AnMaster> but that is special
15:48:34 <ais523> AnMaster, is that better?
15:48:42 <AnMaster> * Ping reply from ais523: 18446744063813.62 second(s)
15:48:44 <AnMaster> well
15:48:50 <ais523> I sent you a second reply to the ping dated further in the future
15:49:01 <AnMaster> yes it seems to overflow
15:49:04 <AnMaster> around 2038 I bet
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:48 <AnMaster> -_-
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:35 <AnMaster> heh
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> "SOURCE
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:13 <AnMaster> "
15:52:23 <AnMaster> "and the reply is zero or more CTCP replies of the form"
15:52:28 <AnMaster> "\001SOURCE #:#:#\001"
15:52:35 <AnMaster> remove all quotes
15:52:42 <AnMaster> "followed by an end marker
15:52:42 <AnMaster> \001SOURCE\001"
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:04 <AnMaster> hahaha
15:53:24 <ais523> you said 'zero or more', so that one's easy to respond to
15:53:29 <AnMaster> yeah
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:06 <AnMaster> your DNA sequence?
15:54:15 <ais523> I could look up the source code to telnet, I suppose
15:54:22 <AnMaster> ais523, hehe no need
15:54:37 <ais523> I wonder if any closed-source IRC clients implement SOURCE?
15:55:08 <AnMaster> Deewiant, any replies?
15:55:15 <Deewiant> 2008-03-20 16:54:57 [freenode] CTCP ERRMSG reply from clog: unknown CTCP: SOURCE
15:55:21 <AnMaster> haha
15:55:31 <Deewiant> that's the only one I got :-P
15:55:43 <AnMaster> Deewiant, oh btw, did you see the note about !Befunge above
15:55:49 <Deewiant> aye, cheers
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:35 <Deewiant> it's a pain to do it
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> D:2rltB:vlpgo tCidn rA To
15:57:40 <AnMaster> NNNNNNNNNNNDFFFFFFFFF:00000002 rffflc
15:57:41 -!- Deformative has quit (SendQ exceeded).
15:57:43 <AnMaster> very odd
15:57:43 <Deewiant> you're missing --files
15:57:47 <Deewiant> and --warn
15:57:51 <AnMaster> Deewiant, yes but why those
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:05 <AnMaster> why should it change stuff
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:38 <Deewiant> PING foo -> PONG foo
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:07 <Deewiant> doesn't matter
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:28 <Deewiant> PING :irc.cs.hut.fi
15:59:28 <Deewiant> >>> PONG :irc.cs.hut.fi
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:28 <AnMaster> I did
16:15:40 <AnMaster> Deewiant, after converting them to LF
16:15:43 <Deewiant> well I don't know
16:15:45 <AnMaster> oh and finding right files
16:15:52 <AnMaster> Deewiant, as you linked to lower case names
16:15:58 <AnMaster> so it gave 404 on links
16:16:02 <Deewiant> ??
16:16:02 <Deewiant> firk
16:16:04 <AnMaster> I needed upper case B
16:16:23 <AnMaster> thanks mod_dir_index or whatever it is called under apache
16:16:24 <AnMaster> ;O
16:16:25 <AnMaster> ;P*
16:16:31 <AnMaster> Deewiant, wtf does "firk" mean?
16:16:39 <Deewiant> look it up
16:16:46 <AnMaster> Deewiant, what language
16:17:01 <AnMaster> Did you mean: define:firm
16:17:01 <AnMaster> No definitions were found for firk.
16:17:58 <Deewiant> "firk ding blast
16:18:40 <Deewiant> odd that google doesn't know it
16:18:41 <AnMaster> Deewiant, ah
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:18:54 <Deewiant> just an expletive
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:11 <AnMaster> the second one
16:20:43 <Deewiant> AnMaster: fixed the patch links, cheers
16:20:56 <AnMaster> Deewiant, try klinkchecker some time btw
16:21:21 <AnMaster> err klinkstatus
16:21:35 <Deewiant> there are many such tools
16:22:22 <AnMaster> according to klinkstatus "http://web.archive.org/web/20070322234225/http://www.teepop.net/fungus/" fails
16:22:50 <Deewiant> and it's wrong
16:22:56 <Deewiant> because it works fine here :-P
16:23:08 <AnMaster> Deewiant, it times out here
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:30 <Deewiant> AnMaster: works fine here.
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:26:53 <AnMaster> it worked like last week too
16:27:05 <AnMaster> hopefully temporary
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:29:11 <AnMaster> Deewiant, I don't
16:29:33 <AnMaster> and that link seems to fail
16:30:57 <AnMaster> $ file Turtle
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:32:36 <Deewiant> nope
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:33:48 <Deewiant> oh cool, didn't find that
16:33:50 <Deewiant> lessee
16:34:07 <AnMaster> Deewiant, closed source
16:34:15 <Deewiant> yeah, so?
16:34:17 <AnMaster> and likely to pollute the windows registry even more
16:34:22 <AnMaster> than it already is
16:34:30 <Deewiant> no, I think that's unlikely :-P
16:34:33 <Deewiant> it can't get much worse
16:34:49 <Deewiant> hmm, it's 16-bit
16:34:54 <Deewiant> unsurprisingly
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:36:59 <AnMaster> Deewiant, hah
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:34 <AnMaster> ;)
16:38:35 <Deewiant> yeah, sure
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:38:54 <Deewiant> or to install RISC OS :-P
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:39:57 <Deewiant> 2002 O_o
16:39:58 <AnMaster> Instead of c:\<localized>
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:27 <AnMaster> in Swedish windows xp
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:40:51 <AnMaster> for the latter
16:41:04 <Deewiant> beats me
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:26 <Deewiant> C:\D<tab> usually does it
16:41:27 <AnMaster> Deewiant, btw do you come from the Swedish or Finnish speaking part of Finland?
16:41:36 <Deewiant> finnish
16:41:40 <AnMaster> ais523, cd /home :)
16:41:41 <Deewiant> like most :-P
16:41:43 <ais523> and is even more difficult with cmd.exe than it is on POSIXy shells
16:41:51 <AnMaster> Deewiant, heh ok
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:44 <Deewiant> alright, I got a turtle file
16:42:45 <AnMaster> ais523, hah
16:42:55 <AnMaster> Deewiant, oh? does it looks right?
16:43:02 <AnMaster> for !Befunge
16:43:06 <Deewiant> nope
16:43:11 <AnMaster> Deewiant, oh?
16:43:22 <Deewiant> but then this program is really weird
16:43:35 <Deewiant> I can't decipher the UI
16:43:39 <Deewiant> could be it's just displaying it wrong
16:43:43 <AnMaster> Deewiant, hm ok
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:44:41 <Deewiant> and nothing else
16:44:54 <AnMaster> weird
16:44:56 <Deewiant> food ->
16:45:55 -!- ais523 has quit ("bye!").
16:49:41 -!- Corun has quit (Read error: 110 (Connection timed out)).
16:52:13 <okofolor> o.
16:52:23 <AnMaster> okofolor, what?
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?
16:58:44 <okofolor> well what did it not mean
17:00:14 <Deewiant> i,
17:00:17 <Deewiant> it didn't mean that
17:08:53 <okofolor> it didn't?
17:22:18 <AnMaster> heh
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:26:15 <AnMaster> like that
17:26:20 <AnMaster> where ^@ = \0
17:27:31 * AnMaster fixes
17:29:12 <AnMaster> done
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:38 <AnMaster> if (optimize_val != -1)
18:46:38 <AnMaster> {
18:46:38 <AnMaster> optimize = optimize_val;
18:46:38 <AnMaster> optimize_size = 0;
18:46:38 <AnMaster> }
18:46:39 <AnMaster> err
18:46:54 <AnMaster> looks like it set optimize to any level?
18:46:54 <Deewiant> ?
18:47:02 <Deewiant> yes
18:47:10 <Deewiant> so you can give it -O9 if you want
18:47:13 <Deewiant> but it's all the same as -O3
18:47:16 <AnMaster> so it doesn't actually handle the values of -O there
18:47:20 <Deewiant> no, lower
18:47:23 <Deewiant> if (optimize >= 3)
18:47:28 <AnMaster> it will set optimize == 9 or whatever
18:47:43 <Deewiant> jep
18:47:56 <Deewiant> but it only cares about >= 1, >= 2, >= 3, and nonzero
18:48:04 <AnMaster> hm in that place yes
18:48:22 <AnMaster> where is the variable optimize declared?
18:48:31 <Deewiant> probably in opts.h
18:48:44 <AnMaster> doesn't seem to
18:48:56 <Deewiant> flags.h
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:23 <AnMaster> to see how fast I can get
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:51 <AnMaster> Deewiant, result?
19:16:53 <Deewiant> AnMaster: a couple of instances of 3, none of 4 or higher.
19:17:00 <AnMaster> interesting
19:17:12 <Deewiant> this is 4.3.0 BTW.
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:09 <AnMaster> checked 10 times each
19:18:12 <Deewiant> AnMaster: is there a difference between the binaries?
19:18:17 <AnMaster> Deewiant, there is
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:04 <Deewiant> if you can bother, that is
19:19:26 <ais523> you could just use diff to compare the asm
19:20:36 <Deewiant> of course, what else :-P
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:21:59 <AnMaster> so that should be UNDEF
19:21:59 <AnMaster> :P
19:22:04 <AnMaster> in that situation
19:22:14 <AnMaster> y claims all of the following:
19:22:14 <AnMaster> That t is implemented
19:22:14 <AnMaster> That i is implemented
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:17 <AnMaster> and so on
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:22:49 <AnMaster> ais523, indeed
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:23:59 <AnMaster> ais523, stop using telnet
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:22 <AnMaster> ais523, what code?
19:24:28 <AnMaster> I'd use ncurses
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:25:17 <AnMaster> ais523, create bindings?
19:26:26 <Deewiant> AnMaster: changed.
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:26:55 <AnMaster> let me tell you
19:26:57 <AnMaster> it wasn't
19:27:05 <AnMaster> Deewiant, it is looping in overwritten
19:27:14 <Deewiant> hah
19:27:20 <AnMaster> rwrwrwrwrw
19:27:21 <Deewiant> how'd that happen
19:27:29 <AnMaster> Deewiant, no fucking clue
19:27:38 * AnMaster writes a dump funge space routine
19:27:41 <Deewiant> can you give a... yeah
19:27:47 <ais523> AnMaster: so you've accidentally implemented shred?
19:27:54 <AnMaster> ais523, ?
19:28:14 <ais523> AnMaster: a utility for repeatedly overwriting files to try to prevent them being undeleted
19:28:21 <AnMaster> ais523, yes I know
19:28:26 <AnMaster> but it didn't overwrite them
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:39 <AnMaster> Deewiant, you know, so am I
19:30:46 <AnMaster> since it is in between the two r
19:30:48 <Deewiant> what does trace say
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:03 <AnMaster> hm no it isn't
19:31:08 <Deewiant> it's not
19:31:16 <Deewiant> it's the one in the string
19:31:17 <AnMaster> tix=0 tid=0 x=94 y=126: (0)
19:31:28 <Deewiant> O_o
19:31:32 <Deewiant> your i is borked ;-)
19:31:45 <AnMaster> Deewiant, nop, my load routine is
19:31:48 <AnMaster> and that isn't in i
19:31:55 <Deewiant> same difference
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:12 <AnMaster> set
19:32:13 <Deewiant> ais523: store character
19:32:22 <AnMaster> at one ahead
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:33:19 <AnMaster> it works fine at 0,0
19:33:22 <AnMaster> but not otherwise
19:33:27 <Deewiant> heh
19:36:53 <jix> oklopol: i made one?
19:37:32 <ais523> jix: context?
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:24 <AnMaster> didn't change anything
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:35 <Deewiant> AnMaster: :-D
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:40:54 <Sgeo_> Back all
19:41:02 <oklopol> -- ''kAB -> A
19:41:02 <oklopol> -- evaluating a k means skipping one expression, then removing an expression
19:41:02 <oklopol> >''k::=A
19:41:18 <oklopol> ki-interp took like 5 minutes
19:41:31 <oklopol> s needed some 15 states
19:42:06 <jix> i have two non working versions ^^
19:42:14 <Deewiant> AnMaster: never overwrite anything with spaces
19:42:22 <Deewiant> binary or not
19:42:25 <AnMaster> ok
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:49 <oklopol> :P
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:30 <jix> yeah
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:02 <jix> so....
19:45:04 <oklopol> hehe :D
19:45:25 <jix> thue basic ^^
19:45:41 <jix> hmm
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:35 <jix> yeah
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:06 <jix> ouch
19:48:18 -!- ais523 has joined.
19:48:22 <oklopol> paradox-ad
19:48:23 <oklopol> ...
19:48:25 <oklopol> paradox-a-day
19:48:34 <ais523> my Internet connection dropped
19:48:39 <oklopol> was it the telnet one
19:48:44 <ais523> did I miss anything?
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:20] <jix> yeah
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:48:54 <oklopol> [20:47:52] <jix> ouch
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:49:24 <oklopol> oh, right
19:50:54 <AnMaster> Deewiant, what is the "| C K M V | " stuff about
19:51:20 <Deewiant> ?
19:51:29 <AnMaster> some fingerprint
19:51:36 <AnMaster> "We'll be moving the 3x3 area starting at the 1"
19:51:37 <Deewiant> where
19:51:39 <Deewiant> TOYS
19:51:47 <Deewiant> that's documentation
19:51:50 <AnMaster> ah
19:51:52 <AnMaster> I see
19:51:58 <Deewiant> :-P
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:45 <AnMaster> bts
19:52:46 <AnMaster> btw*
19:52:48 <AnMaster> "v<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
19:52:54 <AnMaster> what is those lines about
19:53:00 <Deewiant> where
19:53:10 <AnMaster> before fingerprints
19:53:13 <AnMaster> hard to miss
19:53:19 <AnMaster> several lines like that
19:53:24 <Deewiant> ah, testing flying IP
19:53:29 <Deewiant> and ]
19:53:41 <AnMaster> hm
19:53:44 <Deewiant> of course it's not necessary to fill the whole line
19:53:47 <Deewiant> but might as well :-P
19:53:56 <Deewiant> you never know what kind of bugs you'll run into
19:54:13 <AnMaster> hahah indeed
19:54:13 <Deewiant> just like in the first x tests
19:54:24 <Deewiant> and there's similar in ORTH
19:54:33 <AnMaster> ^^^^^^<^^^^^^^#^^ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>"sllec fo rebmun gnorw eht drawkcab spmuj j-40 :DAB"1 ^ ee
19:54:42 <AnMaster> for j too it seems
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:43 <AnMaster> to the right side
19:55:52 <AnMaster> ee
19:55:53 <AnMaster> ll
19:55:54 <AnMaster> and so on
19:55:55 <Deewiant> it's just a string running in the vertical direction
19:56:33 <AnMaster> <^^
19:56:35 <AnMaster> at the bottom
19:56:52 <Deewiant> yes...
19:56:54 * AnMaster tries to figure out string direction
19:56:59 <AnMaster> that mean string starts at top?
19:57:00 <Deewiant> from top to bottom
19:57:08 <Deewiant> yep
19:57:30 <AnMaster> oh it's the "skip/hit easternmost"
19:57:34 <AnMaster> Deewiant, but why vertical
19:57:35 <Deewiant> yep
19:57:38 <AnMaster> were you insane?
19:57:41 <Deewiant> why not, saves a bunch of space
19:57:45 <AnMaster> you were
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:12 <AnMaster> :P
19:58:25 <Deewiant> so I needed to fit the line testing in the same place
19:58:31 <AnMaster> ah
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:45 <AnMaster> Deewiant, and not PIC code?
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?
19:59:52 <AnMaster> I thought that was at the end
19:59:58 <Deewiant> it is at the end.
20:00:07 <Deewiant> I can only find that on line 768, at least :-P
20:00:09 <AnMaster> Deewiant, oh wait
20:00:12 <AnMaster> right
20:00:22 <AnMaster> missed that was the end of the previous funge space dump
20:00:25 <AnMaster> hah
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:00:40 <AnMaster> (gdb) finish
20:00:40 <AnMaster> (gdb) call FungeSpaceDump()
20:00:46 <AnMaster> <new dump starts>
20:00:49 <AnMaster> more like that ;P
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:17 <AnMaster> ais523, oh?
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:07:53 <AnMaster> can't see it
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:08:23 <AnMaster> saw that
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:10 <AnMaster> and what is Futurama?
20:10:17 <Deewiant> O_o
20:10:45 <ais523> if you really don't know, you can look it up on Wikipedia
20:12:04 * AnMaster looks it up
20:12:22 <slereah__> AnMaster lives in Nofuturamastan
20:12:36 <AnMaster> oh some tv series
20:12:39 <AnMaster> explains it
20:12:43 <AnMaster> I hardly ever watch TV
20:12:50 <AnMaster> sometimes news and thats it
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:14:40 <AnMaster> ais523, you are mad
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:05 <AnMaster> ais523, -_-
20:17:10 <AnMaster> why not do it in intercal?
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:18:46 <AnMaster> yes and?
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:20:31 <Deewiant> the former
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:06 <ais523> AnMaster: yes
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:23 <AnMaster> as a fingerprint
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:06 <AnMaster> ?
20:23:07 <ais523> I was planning to just link the programs together at compile time
20:23:18 <AnMaster> oklopol, what did you change?
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:23:40 <AnMaster> ah
20:23:54 <AnMaster> what is tetration?
20:24:12 <ais523> it's what comes next in the sequence addition, multiplication, exponentiation
20:24:17 <oklopol> ais523: no
20:24:31 <ais523> no?
20:24:39 <Deewiant> yes.
20:24:50 <Deewiant> that is, not no.
20:24:52 <oklopol> i swapped "brainfuck" and "tetration", and changed "in" to "with"
20:25:00 <Deewiant> oh, right.
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:18 <AnMaster> ^3?
20:25:21 <oklopol> no
20:25:23 <ais523> I was comparing the topic to the last-but-two, from memory
20:25:28 <AnMaster> oklopol, then what..
20:25:44 <oklopol> 5^^3 = 5^5^5
20:25:46 <ais523> n^n^n^n^n...
20:25:49 <AnMaster> ah
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 <AnMaster> Deewiant, ie, what it does
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:36 <Deewiant> what's not to get
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:49 <Deewiant> that's the only part :-P
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:24 <Deewiant> and no, that's not tested.
20:34:37 <AnMaster> Deewiant, suggestion: test it?
20:36:00 <Deewiant> yeah, because that's /easy/
20:36:07 <Deewiant> sure, let's just add a { here
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:36 <Deewiant> ...
20:36:37 <AnMaster> Deewiant, right right, add a mycology 2 test suite?
20:36:37 <Deewiant> no thanks
20:36:44 <Deewiant> like said, rewrite mycology
20:36:48 <Deewiant> by all means
20:36:52 <Deewiant> a good idea
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:41:16 <AnMaster> as in gcc -fpic
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:48:50 <Deewiant> in a way, yes
20:49:01 <AnMaster> oh?
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:49:48 <AnMaster> ah ok
20:50:52 <AnMaster> Deewiant, it could output it for later manual verification
20:51:21 <Deewiant> true
20:51:22 <Deewiant> but...
20:51:24 <Deewiant> it doesn't. :-P
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:28 <AnMaster> Deewiant, err
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:26 <Deewiant> as somebody pointed out
20:57:36 <AnMaster> now, tell me the truth and say as it is: you can't fit it in
20:57:36 <AnMaster> :P
20:57:54 <Deewiant> I can, actually
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:12 <Deewiant> the 'main' stuff?
20:59:20 <AnMaster> as in "not just maintainance"
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:00:06 <AnMaster> ah
21:00:34 <Deewiant> or hmm
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> $ cat mycotmp0.tmp
21:03:51 <AnMaster> #@>. 1#@vv"@.4"@#<.>$#v5#.< #>3.#@$ .^@^ 0@# 4.2<v.6_5.@>7.
21:03:53 * AnMaster sighs
21:04:11 <Deewiant> doesn't look quite right :-P
21:04:18 <AnMaster> missing newlines yeah
21:04:34 <AnMaster> they went to stderr, instead, thanks code copying from dump function
21:04:39 <Deewiant> :-D
21:05:35 <AnMaster> anyway text file mode looks painful
21:05:41 <AnMaster> ie, having to lookahead
21:05:45 <Deewiant> aye, unless you implement it the lazy way
21:05:49 <AnMaster> to find trailing whitespace
21:05:56 <AnMaster> Deewiant, what? ungetc?
21:06:05 <Deewiant> err, for i or o
21:06:21 <AnMaster> Deewiant, for o
21:06:41 <Deewiant> yeah
21:06:51 <AnMaster> Deewiant, do mycology test binary input?
21:07:08 <AnMaster> for i
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:26 <AnMaster> err wait ungetc is wrong
21:07:31 <AnMaster> would need unputc
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:08:33 <AnMaster> Deewiant, check bounding box
21:08:34 <AnMaster> :P
21:08:37 <Deewiant> exactly :-P
21:08:42 <AnMaster> no checking is done for space
21:09:00 <AnMaster> Deewiant, yes but in text mode it says o should not print trailing whitespaces
21:09:11 <Deewiant> yes...
21:09:17 <Deewiant> so what's the problem
21:10:04 <AnMaster> a sec
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:11 <AnMaster> fputc(value, file);
21:10:11 <AnMaster> }
21:10:11 <AnMaster> fputc('\n', file);
21:10:13 <AnMaster> }
21:10:15 <AnMaster> is how I do it
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:34 <AnMaster> ..
21:10:42 <AnMaster> Deewiant, exactly
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:10:57 <AnMaster> Deewiant, err what?
21:11:08 <AnMaster> why not?
21:11:10 <Deewiant> mallocate a buffer
21:11:17 <AnMaster> Deewiant, if text mode yes
21:11:19 <AnMaster> otherwise no
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:11:50 <AnMaster> just not for string mode
21:12:20 <AnMaster> err text mode
21:12:47 * AnMaster puts in TODO for now
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:16 <AnMaster> I checked
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:15 <AnMaster> Deewiant, err why would it?
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:31 <Deewiant> of course it is
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:17:33 <AnMaster> yes but there must be limits
21:18:16 <AnMaster> // Sanity test!
21:18:16 <AnMaster> if (*filename == '\0' || size.x < 1 || size.y < 1) {
21:18:16 <AnMaster> ipReverse(ip);
21:18:16 <AnMaster> return;
21:18:16 <AnMaster> }
21:18:20 <AnMaster> is that a good idea?
21:18:28 <AnMaster> or does it break some standard?
21:18:40 <Deewiant> UNDEF
21:18:45 <AnMaster> ah.... right
21:18:48 <Deewiant> for the latter two, that is
21:18:57 <AnMaster> for the first?
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:20:43 <AnMaster> what is the reason for that?
21:20:56 <Deewiant> why should I?
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:21:46 <AnMaster> because it seemed logical
21:21:47 <Deewiant> and why is it necessary?
21:22:18 <AnMaster> not really, but IMO cleaner code
21:22:30 <AnMaster> but I asked about your design decision
21:22:54 <Deewiant> didn't feel it was necessary
21:23:02 <Deewiant> for cleaner code or otherwise
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:10 <AnMaster> is that really a BAD?
21:33:17 <AnMaster> just a question
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:33:46 <AnMaster> hm
21:33:54 <AnMaster> ERR maybe?
21:34:15 <AnMaster> several of the IO ones should be ERR on fail instead of GOOD/BAD/UNDEF
21:34:19 <AnMaster> IMO
21:34:26 <Deewiant> and what would ERR mean
21:34:28 <AnMaster> just a suggestion
21:34:48 <AnMaster> error due to environment that may indicate for example a read only FS
21:34:49 <AnMaster> or such
21:35:25 <Deewiant> so basically, "can't test"
21:35:29 <AnMaster> yep
21:35:39 <Deewiant> I guess that could work
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:13 <AnMaster> just mudflap is horribly slow
21:37:35 <AnMaster> like 30 seconds waiting after
21:37:37 <AnMaster> Trying to quit with q. If the return status is 15, consider it GOOD...
21:38:52 * slereah__ goes ee SMITH
21:39:00 <AnMaster> "ee SMITH"?
21:39:00 <slereah__> It seems neat.
21:39:05 <slereah__> see, AnMaster.
21:39:05 <AnMaster> ee?
21:39:06 <slereah__> See.
21:39:07 <AnMaster> ah
21:39:07 <AnMaster> ok
21:39:09 <AnMaster> right
21:39:49 <AnMaster> __mf_violation: [0, 0, 0, 0, 0]
21:39:50 <AnMaster> :D
21:49:51 <AnMaster> Deewiant, pushed added o instruction.
21:49:53 * slereah__ looks at SMITH examples
21:49:59 <slereah__> IT'S MACHINE CODE
21:51:12 <AnMaster> slereah__, it is?
21:51:34 <slereah__> Well, it looks like Assembly.
21:51:40 <slereah__> Full of move to register and stuff.
21:52:30 <slereah__> This can mean only one thing.
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:54:33 <slereah__> To the text editor machine!
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:56:35 <AnMaster> slereah__, ^
21:56:47 <slereah__> whut
21:56:52 <AnMaster> see question
21:57:02 <slereah__> I barely understand it
21:57:05 <AnMaster> or anyone else for that matter
21:57:08 <AnMaster> slereah__, ok
21:57:09 <slereah__> Answering it would be pushing it!
21:57:24 <AnMaster> you know about compare and exchange? or locks?
21:57:30 <slereah__> No.
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:57:50 <slereah__> Neither!
21:57:54 <AnMaster> while the first could
21:58:01 <AnMaster> so are they in same computational class?
21:58:12 <slereah__> Let me get a coin.
21:58:17 <slereah__> What should tail be?
21:58:19 <AnMaster> ok forget it
21:58:24 <AnMaster> Deewiant, you then?
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 <oklopol> wait a minute
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
21:59:53 <AnMaster> there it is again
22:00:09 <AnMaster> slereah__, I prefer a 2D array :)
22:00:30 <slereah__> I tried to do that
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:02:27 <AnMaster> oklopol, with me so far?
22:03:06 <AnMaster> oklopol, ?
22:03:17 <oklopol> oh, sorry
22:03:23 <oklopol> i'll read
22:03:28 <AnMaster> .
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:04:52 <slereah__> Well, for me at least
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:10 <oklopol> i'm with you i think'
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:05:55 <oklopol> i mean
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:06:59 <AnMaster> kind of like co-routines
22:07:05 <oklopol> yes
22:07:18 <oklopol> co-routines?
22:07:21 <slereah__> I dunno
22:07:26 <oklopol> i don't see what you men
22:07:27 <oklopol> *mean
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:40 <AnMaster> oklopol, agree on that?
22:07:44 <oklopol> sure
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:27 <AnMaster> oklopol, hrrm
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:11 <AnMaster> ie I/O
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:36 <oklopol> processes are IO
22:09:46 <AnMaster> oklopol, so being IO complete? :D
22:09:52 <oklopol> well, they are not exactly that...
22:09:55 <AnMaster> hm
22:09:57 <slereah__> Hm.
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:40 <AnMaster> oklopol, hah ok
22:12:42 <oklopol> the only thing you cannot have is the actual physical processes.
22:12:47 <oklopol> i mean
22:12:57 <oklopol> the actual whatever queue sharing you were talking about
22:13:04 <oklopol> umm
22:13:26 <oklopol> weren't you originally saying something about not being able to share a queue between processes?
22:17:36 <AnMaster> oklopol, indeed I were
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:00 <oklopol> *a
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:21:09 <AnMaster> oh he left
22:23:09 -!- okofolor has joined.
22:24:05 <AnMaster> okofolor, wb
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:24:08 <AnMaster> <AnMaster> oh he left
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:26:53 <okofolor> but isn't that a given...
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:06 <okofolor> yes
22:28:20 <AnMaster> but of course, instructions may or may not take longer
22:28:26 <AnMaster> due to cache issues and so on
22:28:33 <AnMaster> cache hits and cache misses
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:28:51 <AnMaster> okofolor, ^
22:28:51 <okofolor> not how much they will take
22:28:54 <slereah__> Ah shit.
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:39 <AnMaster> okofolor, it can be anything
22:29:47 <AnMaster> okofolor, within say 2^32 years
22:29:51 <AnMaster> or even longer
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:14 <AnMaster> okofolor, indeed
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:30:47 <AnMaster> say one byte from each other
22:31:01 <okofolor> they can exchange certain bytes?
22:31:07 <AnMaster> okofolor, nop they can't
22:31:13 <okofolor> then what do you mean
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:28 <AnMaster> without problems
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:31:57 <AnMaster> or something like that
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:30 <AnMaster> indeed
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:13 <AnMaster> both of them
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:34:22 <oklopol> and "expected failure"
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:04 <AnMaster> ;)
22:35:11 <AnMaster> thereby killing the operator
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:03 <oklopol> slereah__: l
22:36:12 <slereah__> wut?
22:36:15 <oklopol> link
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:36:51 <slereah__> http://paste-it.net/7474
22:36:54 <slereah__> There.
22:38:02 <AnMaster> <oklopol> okay, now how probable is it for a read-read to fail?
22:38:03 <AnMaster> hm
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:33 <AnMaster> both cpus would that is
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:22 <oerjan> oh random access time
22:39:28 <AnMaster> RATRAM hehehe
22:39:34 * AnMaster loves that name
22:39:36 * oerjan declares this completely impossible
22:39:45 <slereah__> oklopol: I like my programs to be compacts like cement blocks
22:39:52 <AnMaster> oerjan, aye, :)
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:17 <AnMaster> oklopol, indeed not
22:40:18 <AnMaster> :D
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:40:39 <AnMaster> oklopol, aye that is the case
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:41:50 <AnMaster> understand*
22:42:14 <oklopol> slereah__: x just adds a command in the end of the prog?
22:42:19 <oklopol> not tc
22:42:27 <slereah__> Well, any char.
22:42:39 <slereah__> How does SMITH do it?
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:05 <slereah__> Heh.
22:44:21 <slereah__> Would 2 chars be enough?
22:44:23 <oklopol> YABC does something like that
22:44:28 <oklopol> i mean
22:44:50 <oklopol> similar, although you have goto, you have to build your jumps with +'s and -'s
22:45:16 <slereah__> Like a wang machine :o
22:45:17 <oklopol> 2 chars that do what?
22:45:18 <slereah__> Heh. Wang.
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:45:50 <oklopol> two same characters?
22:46:00 <oklopol> hmm, harder to declare non-tc at least.
22:46:01 <slereah__> Well, two adjacent cells
22:46:16 <oklopol> well
22:46:34 <oklopol> hmm
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:46:39 <oerjan> or two
22:46:46 <slereah__> I guess I could restart Lore
22:47:07 <AnMaster> Lore?
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:21 <slereah__> Some stupid idea I have.
22:47:41 <slereah__> About a language in which you can declare any sort of data structure or something
22:47:46 <slereah__> And doing stuff in 'em
22:48:26 <slereah__> The structure 0 was the program itself
22:48:27 <oklopol> like graphica?!?!?!?
22:48:29 <oklopol> oh
22:48:38 <oklopol> you can *do stuff with them*, nevermind then.
22:48:50 <slereah__> Heh.
22:54:19 * Judofyr feels proud; has just written a JavaScript-only site: http://yr.judofyr.net
22:54:31 * Judofyr don't know JavaScript
22:54:45 <Judofyr> jQuery helps a LOT!
22:59:46 <AnMaster> Judofyr, I see "JavaScript required", and then a menu on the side
22:59:48 <AnMaster> crap site
22:59:55 <AnMaster> please make it work without javascript
23:00:04 <Judofyr> It's a mashup with Google Maps
23:00:11 <Judofyr> it DOES need JavaScript
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:00:57 <AnMaster> so even more crap
23:01:01 <Judofyr> which browser?
23:01:04 <AnMaster> Judofyr, firefox
23:01:09 <Judofyr> it's not completely done, yet..
23:01:13 <Judofyr> that's weird...
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:02:44 <Judofyr> hm..
23:02:52 <AnMaster> name == Örebro
23:02:53 <Judofyr> I hate client-coding :(
23:02:55 <AnMaster> Swedish city
23:03:00 <Judofyr> Should handle UTF-8...
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:50 <AnMaster> airport near Örebro
23:03:52 <AnMaster> ESOE 202150Z AUTO 13010KT 9999 SCT052 M02/M06 Q0991
23:03:55 <AnMaster> much more info
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:28 <Judofyr> lol
23:04:28 <oklopol> </AnMaster>
23:04:31 <AnMaster> oklopol, I didn't mean that
23:04:34 <oklopol> :P
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:15 <AnMaster> Judofyr, oh?
23:05:43 <Judofyr> not in the mashup, but the raw-data I receive
23:05:48 <AnMaster> ah
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:27 <Judofyr> AnMaster: got it?
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:12:37 <Judofyr> (remove the other places)
23:13:24 <AnMaster> Judofyr, "javascript: protocol not supported"
23:13:34 <Judofyr> *sigh*
23:13:36 <Judofyr> clients :P
23:13:47 <Judofyr> programs*
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:15:22 <Judofyr> :P
23:15:53 <AnMaster> thats a lot
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:23:48 <Judofyr> like?
23:23:58 <AnMaster> how much expected rain
23:23:58 <Judofyr> :S
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:27 <AnMaster> Judofyr, visibility
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:25:43 <Judofyr> OSL
23:25:54 <Judofyr> (I'm pretty sure)
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:14 <Judofyr> oh
23:26:16 <Judofyr> hm..
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:46 <Judofyr> ENGM
23:26:57 <Judofyr> http://en.wikipedia.org/wiki/Oslo_Airport%2C_Gardermoen
23:26:59 <AnMaster> INPUT: 2008/03/20 22:13
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:01 <AnMaster> a lot of data
23:27:02 <AnMaster> :)
23:27:05 <Judofyr> :)
23:27:32 <AnMaster> Judofyr, here is same data in a non-flying geek format: http://rafb.net/p/tafC0e26.html
23:27:43 <Judofyr> thx :)
23:27:50 <Judofyr> are you a flying geek?
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:08 <AnMaster> parts I can
23:28:19 <AnMaster> -SN = light snow for example
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:01 <AnMaster> M means minus
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:26 <AnMaster> V means variable direction
23:29:32 <AnMaster> 7000 = visibility
23:29:55 <AnMaster> I think "TEMPO" is some kind of "temporary changes excepted in soon future"
23:29:57 <AnMaster> not sure though
23:30:09 <AnMaster> Q0986 is pressure
23:30:35 <AnMaster> Rel. Humidity is calculated from pressure, dew point and temperature iirc
23:31:09 <AnMaster> Judofyr, did I miss any part?
23:31:15 <AnMaster> I'm not fast at reading METAR
23:31:17 <AnMaster> but I can parse it
23:31:21 <AnMaster> given enough time
23:31:43 <AnMaster> anything after TEMP0 I don't understand
23:32:13 <Judofyr> that's pretty much
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:32:48 <AnMaster> I *THINK*
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:41:40 <AnMaster> heh ok
23:42:15 <Judofyr> *gone*
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:48:47 <oklopol> wut?
23:51:11 <slereah__> For the adding of cells.
23:51:50 <AnMaster> slereah__, 0-terminated cell adding?
23:51:53 <AnMaster> from a stack?
23:52:03 <slereah__> Well, from a tape, since it's BF.
23:52:19 <AnMaster> interesting
23:52:20 <slereah__> As I always say, around stacks, never relax.
23:52:30 <AnMaster> err what?
23:52:36 <AnMaster> slereah__, befunge uses stacks, it works great
23:52:45 <AnMaster> much easier than brainfuck IMO
23:53:07 <slereah__> I'm not too used to stacks.
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:54:57 <AnMaster> can't do functional though
23:54:59 <slereah__> Underload?
23:55:03 <AnMaster> oklopol, why not?
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:30 <AnMaster> oklopol, in befunge?
23:55:32 <slereah__> Heh.
23:55:39 <oklopol> AnMaster: yes, in befunge
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:08 <AnMaster> pushing vectors on stack
23:56:10 <oklopol> you can have any serialized structure
23:56:16 <AnMaster> oklopol, aye
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:15 <AnMaster> :P
23:57:34 <oklopol> hmm, what does that mean? :\
23:57:41 <AnMaster> oklopol, load SUBR fingerprint
23:57:42 <AnMaster> :P
23:57:58 <AnMaster> SUBR does subroutines
23:58:24 <oklopol> cool
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:02 <AnMaster> in true befunge style :D
23:59:10 <oklopol> slereah__: i'd recommend false
23:59:12 <oklopol> hehe :)
23:59:15 <oklopol> sounds like fun
23:59:22 <AnMaster> oklopol, oh and don't forget { and }
23:59:29 <AnMaster> for stack-stack
23:59:33 <AnMaster> means you can isolate code
23:59:38 <AnMaster> uses storage offset
23:59:38 <slereah__> Isn't false obfuscated?
23:59:49 <AnMaster> slereah__, most esoteric languages are
2008-03-21
00:00:09 <oklopol> slereah__: obfuscation is something you do to code, you don't usually call languages that
00:00:10 <slereah__> Nah.
00:00:16 <slereah__> Most are just minimal
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:20 <AnMaster> um
00:01:23 <AnMaster> malbolge?
00:01:31 <SimonRC> heh
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:01:56 <slereah__> Heh.
00:02:04 <oklopol> perl has an entry in esolang wiki, i think :)
00:02:10 <AnMaster> :D
00:02:11 <slereah__> Yes, there is
00:02:18 <slereah__> http://www.esolangs.org/wiki/Perl
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:05:32 <slereah__> it's a metaphore, apparently!
00:05:55 <AnMaster> lament, it actually works!
00:05:56 <AnMaster> !?!?!
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:07:38 <slereah__> Not even an error message
00:08:14 <slereah__> slereah@Vixem:~$ perl -wlne'END{print$n}eof&&$n++;/<title>([^<]+)/i&&$n--' *
00:08:14 <slereah__> 929
00:08:16 <slereah__> D:
00:08:19 <slereah__> This isn't 30.
00:08:23 <slereah__> This isn't 30 at all!
00:09:01 <oklopol> i spot a regex matching the contents of the title
00:09:12 <oklopol> but i don't really know perl
00:09:51 <slereah__> And I really don't know Perl
00:10:00 <oklopol> i :)
00:10:04 <oklopol> ...
00:10:06 <oklopol> :)
00:10:22 <oklopol> i'm such an egoist i like to type an "i" and just look at it
00:10:28 <oklopol> sometimes i forget to delete it
00:10:47 * SimonRC grins at the censoring: http://answers.yahoo.com/question/index;_ylt=Ah4pBKeFFHxVdUWNrNoikqGIxQt.;_ylv=3?qid=20080320073519AA7zuRZ
00:10:55 <SimonRC> "What is moby-***** connection to romanticism?"
00:18:53 <oerjan> lament: i think that perl program counts the number of files in the current directory, minus the number of lines in those files containing something matching /<title>([^<]+)/i
00:19:37 <lament> oh! useful.
00:20:02 <oerjan> i'm sure someone has needed it at some point, since it was invented :)
00:20:24 <lament> not invented, discovered!
00:20:48 <slereah__> You don't write programs that you need to post them on the esowiki
00:21:17 <oerjan> slereah__: no parse
00:21:26 <oklopol> ditto
00:22:03 <slereah__> Wut?
00:22:25 <lament> oerjan: imagine somebody looking with a telescope into a vast universe of perl one-liners. "Hey! That one could be useful for something, one day! Let's write it down!"
00:22:32 <oerjan> slereah__: your sentence is hard to get the meaning of, and possibly ungrammatical
00:22:51 <slereah__> Program that you actually need XOR program that you post on the esowiki
00:23:06 <slereah__> Well, forgot the turnstile at the beginning of the sentence.
00:23:35 <oerjan> turnstile? is may client censoring characters i wonder
00:23:52 * oerjan brings up the logs
00:24:42 <oerjan> hm no, still incomprehensible in proper unicode
00:25:37 <oerjan> lament: sounds like Erdos's big book
00:25:50 <lament> erdos had a book?
00:26:12 <oerjan> no he had a metaphor of a Big Book that contained all interesting mathematics
00:26:48 <oerjan> "God has the Big Book, the beautiful proofs of mathematical theorems are listed here." . Paul Erdos
00:27:41 <oerjan> now for the Perl book we might want to ask the competition instead.
00:28:09 <SimonRC> That reminds me of the reasoning that people should be able to copyright numbers.
00:28:20 <SimonRC> large ones with no easy pattern, at least
00:28:37 <SimonRC> imagine a huge pile of sand...
00:29:08 <SimonRC> on one grain of that sand is enscribed a novel that will sell 100,000 copies, if published
00:29:34 <SimonRC> if you find that grain of sand and publish the novel, you should have the right to the money
00:30:07 <SimonRC> because though you didn't create it, you did a hell of a lot of work and society benefited from it
00:30:23 <SimonRC> the analogy with copyrighting the numbers that represent movies etc should be obvious
00:30:48 <lament> that's not a good argument for copyrighting. That's a good argument for _some_ form of compensation.
00:30:48 <oklopol> sure, but it was fairly obvious without the analogy too :)
00:30:59 <oklopol> it's just a number can represent anything
00:31:06 <SimonRC> lament: yes
00:31:20 <oklopol> this is why we always simultaneously copyright the way in which to interpret the number
00:31:41 <SimonRC> huh?
00:32:03 <oklopol> you can have an infinite number of numbers representing a certain book
00:32:14 <SimonRC> ah, ok
00:32:41 <slereah__> Heh. That reminds me.
00:32:57 <slereah__> I once saw one of those IQ-test type of question
00:33:09 <slereah__> With the following number of a sequence.
00:33:18 <slereah__> I then thought "This is fucking stupid".
00:33:30 <slereah__> And found a handful of numbers that fitted.
00:33:59 <SimonRC> indeed
00:34:22 <SimonRC> with polynomial curves, you can make any next number fit
00:34:39 <oerjan> A given IQ-test only works within a range of IQs i think. you mustn't be so smart as to overanalyze it...
00:34:51 <slereah__> The following number of <1,4,9,16> was then 27, 90, 27 again, 31, 17, 81, 20.25
00:35:01 <slereah__> Also "any number", "any set"
00:35:03 <slereah__> And 25.
00:35:50 <slereah__> The solutions were the following : http://paste-it.net/7475
00:35:59 <oerjan> now that is rather silly. 25 _is_ the obvious answer.
00:36:57 <slereah__> I was rather amused that p(n) + f(n-1) fitted the description :D
00:37:44 * oklopol is not
00:42:24 <oklopol> Not just toy programs have been written in False, the list of programs in the distribution includes various useful convertion utilities, a compression program, Life, an expression evaluator, a module ripper, queens, tic-tac-toe, a html-table generator, and, probably the biggest False program ever, a complete working BreakOut clone.
00:42:28 <oklopol> breakout :o
00:42:50 <oklopol> what are these people...
00:42:58 <oklopol> i should make something fun too
00:43:10 <slereah__> A party?
00:43:33 <SimonRC> Does false have anything that can model a TM tape?
00:44:27 <SimonRC> I thought it only had 26 variables and the stack
00:44:44 <SimonRC> though you can peek arbitrarily far down the stack, that isn't very nice.
00:44:44 <vixey`> I finished a Prolog interpreter in Scheme
00:44:52 <vixey`> anyone want it?
00:45:08 <slereah__> Sure, why not
00:45:14 <vixey`> http://paste.lisp.org/display/57253,6/raw
00:45:47 * vixey` failed at coding a WAM a couple times.. :(
00:47:13 <SimonRC> vixey`: "WAM"?
00:48:00 <vixey`> that's the typical VM people compile Prolog, the first Prolog compiler was VAM based
00:48:03 <vixey`> oops WAM
00:48:08 <vixey`> VAM is a vastly different beast
00:48:45 <SimonRC> ok
00:48:47 <vixey`> compile Prolog to*
00:49:08 <vixey`> this code is really slow for making magic squares :/
00:49:36 <AnMaster> oklopol, make breakout in befunge!
00:49:59 <SimonRC> befunge lacks non-blocking input
00:50:02 <vixey`> you can actually do interactive realtime graphic stuff with befunge?
00:53:15 <AnMaster> vixey`, sure
00:53:21 <AnMaster> vixey`, use a fingerprint
00:53:34 <AnMaster> vixey`, there is one for ncurses
00:53:37 <AnMaster> should work well
00:54:50 <AnMaster> SimonRC, so with NCRS fingerprint you get non-blocking indeed :D
00:55:03 <AnMaster> SimonRC, and clients may have that anyway
00:55:09 <AnMaster> err
00:55:12 <AnMaster> interpreters
00:55:14 * AnMaster is tired
00:55:29 <AnMaster> look, 1y will tell you what kind of IO is used
00:55:44 <AnMaster> and NCRS will always be non-blocking
01:11:09 -!- BMeph has joined.
01:13:09 <SimonRC> BMeph: yo
01:13:32 <BMeph> SimonRC: Hey
01:35:11 -!- timotiis has quit ("leaving").
02:01:45 * SimonRC goes
02:04:19 -!- vixey` has changed nick to vixey.
02:12:57 -!- jix has quit ("CommandQ").
02:22:36 <vixey> an Algol implementation with the J operator would be cool
02:23:10 <vixey> has nobody implemented ISWIM yet? :S
02:24:38 <GreaseMonkey> " "90" "26* v
02:24:38 <GreaseMonkey> p <
02:24:55 <GreaseMonkey> ^ program to freeze fully-compliant befunge-98 interpreters
02:32:15 -!- puzzlet has joined.
03:30:00 -!- puzzlet has quit (Remote closed the connection).
03:30:05 -!- puzzlet has joined.
04:05:18 -!- Corun has quit ("This computer has gone to sleep").
04:42:53 -!- olsner has joined.
05:36:24 <RodgerTheGreat> pikhq: http://www.nonlogic.org/dump/images/1206074168-preview4.png
05:42:10 <pikhq> :D
05:49:52 <oerjan> new page?
05:56:24 <RodgerTheGreat> possibly
05:57:01 <RodgerTheGreat> I'm thinking about going back and reorganizing the panel layouts a bit- I think the current format is a little too rigid and boring
05:57:16 <RodgerTheGreat> so, for now, all bets are off on page numbers
05:58:45 <RodgerTheGreat> anyway, goodnight folks
05:59:08 -!- RodgerTheGreat has quit.
07:03:09 -!- BMeph has quit ("calls it a night").
07:10:05 -!- oerjan has quit ("leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:06:40 <Sgeo_> G'night all
08:07:13 -!- Sgeo_ has quit (Read error: 104 (Connection reset by peer)).
08:51:41 -!- lifthrasiir has joined.
09:21:02 -!- rutlov has joined.
09:29:02 -!- rutlov has left (?).
10:04:37 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)").
12:36:33 -!- timotiis has joined.
13:16:10 -!- Corun has joined.
13:23:24 -!- sebbu has joined.
13:40:40 -!- Taggard has joined.
14:04:55 -!- Taggard has left (?).
14:17:03 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)).
14:18:03 -!- bsmntbombdood has joined.
14:30:21 -!- jix has joined.
14:37:35 <Judofyr> AnMaster: Check out http://yr.judofyr.net now
14:37:40 <Judofyr> added some more data :)
14:40:17 -!- Corun has quit ("This computer has gone to sleep").
14:47:20 * AnMaster tests
14:47:50 * AnMaster waits while browser is locked up for about 30 seconds after clicking add button
14:48:10 <AnMaster> Judofyr, apart from the slow speed it looks very nice
14:48:30 <AnMaster> Judofyr, my connection is 8 mbit down / 1 mbit up so it isn't that slow
14:48:30 <Judofyr> yeah, it sucks to bridge :(
14:48:44 <Judofyr> it's rather the connection to the server
14:48:46 <AnMaster> ADSL from Swedish Tele2
14:49:15 <Judofyr> you asks for data -> server fetches from api.yr.no -> server sends them to you -> you receive them
14:49:28 * Judofyr want cross-site Ajax!
14:49:32 <oklopol> Judofyr: the speech bubble goes under the "weather everywhere" title
14:49:44 <Judofyr> oklopol: I know
14:49:55 <oklopol> not that nice for us scandinavians
14:50:05 <Judofyr> yeah
14:50:08 <Judofyr> I'll fix it
14:50:44 * Judofyr loves Firebug
14:50:49 <AnMaster> Judofyr, what about google maps bit then?
14:51:13 <Judofyr> the maps shouldn't load slow, or that's not my fault
14:51:24 <AnMaster> Judofyr, odd btw, google maps fails to load some of the bits, there are some grey rectangles in misc places
14:51:34 <AnMaster> like one near the top and one just in the middle
14:51:42 <AnMaster> zooming in and then out again fixes it
14:51:48 <AnMaster> waiting a long time doesn't
14:51:58 <Judofyr> sometimes the map won't load in Safari
14:52:07 <AnMaster> Judofyr, not safari, konqueror
14:52:11 <Judofyr> zooming in and out again fixes that also
14:52:22 <AnMaster> Judofyr, it doesn't fix it always btw
14:52:26 <AnMaster> but often it does
14:52:36 <Judofyr> AnMaster: noted. just wanted to say my problems
14:52:49 <AnMaster> oh changing to sattelite mode helps all the time
14:53:11 <AnMaster> though the satellite data over Örebro area is crappy
14:53:41 <Judofyr> AnMaster: you're interested in Örebro :P
15:40:29 -!- vixey has quit ("Leaving").
16:26:42 -!- puzzlet_ has joined.
16:27:27 -!- puzzlet has quit (Remote closed the connection).
16:46:53 <AnMaster> Judofyr, just random, and not too far away from where I live (I live out in the middle of nowhere though, but Örebro is the closest large city)
16:49:00 -!- ais523 has joined.
17:30:51 -!- Sgeo has joined.
18:00:03 <ais523> hmm... my entire terminal window is just full of PINGs, PONGs and Sgeo's join message
18:00:37 <ais523> anyone care to start a conversation?
18:02:46 -!- Hiato has joined.
18:03:12 <Hiato> Hello, world! ;)
18:03:28 <ais523> Hiato: hello!
18:03:43 <ais523> were you logreading, or was that just good timing?
18:03:55 <Hiato> good timing I suppose
18:04:02 <Hiato> no logs for me - yet :P
18:04:04 <Hiato> why?
18:04:21 <ais523> I had got bored of a terminal-full of PINGs and PONGs and asked someone to say something
18:04:49 <Hiato> oh, lol. Well then, fate has it's means :P
18:05:05 -!- slereah_ has joined.
18:05:18 <ais523> hello slereah_
18:05:28 <Hiato> ditto
18:05:55 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
18:06:02 <ais523> suppose you have a certain number of people inside and outside an IRC channel
18:06:18 <ais523> each of which likes each other person a certain amount, and has a certain boredness
18:06:19 <Hiato> (on a side note, any opinions http://rafb.net/p/5Uodtk56.html )
18:06:52 <ais523> challenge: given that bored people are more likely to say hello, and people are more likely to say hello to people they like, and people join and part at random, create an esolang
18:07:07 <Sgeo> Delayed, but if I started the conversation, you know what it would be about..
18:07:08 <Sgeo> lol
18:08:05 <Hiato> heh, now there's an idea. Not sure how one could influence branching/looping if people (variables?) leave and appear at random though
18:08:23 <ais523> Sgeo: actually, I've been meaning to ask you about that
18:08:31 <Sgeo> ais523, oh?
18:08:36 <ais523> is there any way in PSOX to read from multiple input sources at once?
18:08:50 <Sgeo> ais523, you could switch between file descriptors
18:08:54 <ais523> i.e. read user input and a socket simulataneously, and get the first message from either?
18:09:00 <Sgeo> oh
18:09:08 <Sgeo> currently, no
18:09:11 <ais523> Sgeo: that would require knowing which one would be next to send a message
18:09:28 <ais523> the lack of ability to do that is holding up my INTERCAL IRC client
18:09:31 -!- Corun has joined.
18:10:01 <Sgeo> ais523, you're writing an INTERCAL IRC client w/ PSOX?
18:10:02 <Sgeo> Cool!
18:10:59 <ais523> Hiato: I've looked at your paste, it looks interesting but I don't really understand the syntax
18:11:26 <ais523> Sgeo: I was thinking of implementing the CLC-INTERCAL syscall library using C-INTERCAL's ffi
18:11:48 <Sgeo> ais523, so not PSOX, you're wondering if PSOX solved a problem?
18:12:03 <Hiato> heh, probably entirely my fault, I didn't really intend this so much as a publication, but an internal doccy for my own benefits. Would you like me to explain, or would you prefer to leave it as a mystery? :P
18:12:33 <ais523> Hiato: an explanation would be interesting; Sgeo: I was wondering how PSOX handled the situation
18:12:55 <ais523> Sgeo: because it's quite a complicated thing to do in many languages
18:13:03 <ais523> the relevant syscall is 'select'
18:13:16 <ais523> in POSIX
18:13:55 <Sgeo> Well, all I know is that Windows select() can only use things from Winsock
18:14:10 <Sgeo> So incorporating select() into PSOX would be problematic
18:14:20 <Sgeo> (The only reason I know that is from the Python docs)
18:14:39 <ais523> yes, Windows isn't very good at selecting by default
18:14:58 <ais523> that's actually a big problem, though, because some way to select is necessary to write an IRC client
18:15:15 <Hiato> Well, lets see. Look at every chunk of code as a function. It all returns a value of some kind or another. Whether the value is stored, where it is stored and for how long is entirely up to the user. the basic structure is this {Operation} {Variable/Constant} ( {arguments/code} ) {imperative/questionative/no signal}
18:15:35 <ais523> (it's either that, or using a second IRC username to repeatedly ping the one you're logged in on, thus ensuring that the first one gets data at an acceptable rate, and using a separate process for input from the user)
18:15:57 <Hiato> so, the various operations are listed in the file, then, the variable is a variable of the form {lower case letter}{number} eg z7643 or a2
18:16:22 <ais523> (actually, I just thought of a simpler way to select, which is to use three processes, two in input loops that communicate to the third asynchronously)
18:16:22 <Hiato> finally, the arguments may be a list of variables seperated by a comma, or more code in the same form
18:16:38 <Sgeo> ais523, I suppose asynchnorous reading would also work?
18:16:43 <Sgeo> Maybe something for PSOX 1.1 ...
18:16:59 <ais523> which leads to the nested pattern that things like + and - create?
18:17:05 <Hiato> yep
18:17:12 <Hiato> (if that was aimed at me)
18:17:14 <ais523> Sgeo: that works but uses up more CPU time than it ought to
18:17:27 <ais523> Hiato: it was
18:17:51 <ais523> having two conversations in the same channel can be confusing at times, though
18:18:04 <ais523> especially if other people say something immediately after you've made a typo
18:18:19 <ais523> I have to get better at touch-typing to do this properly...
18:18:31 <SimonRC> hi
18:18:33 <Hiato> thus, we can assign a10 to 65 through the following
18:18:34 <Hiato> : 65 (a1)
18:18:34 <Hiato> that tells us to use the assignment operator, and apply 65 to a1 using it. This does infact return something (nil) but it is un-important so we can disregard it
18:18:50 <Sgeo> I don't touch type
18:19:06 <Sgeo> I used to hunt-n-peck, but I've done that for so many years that it's now know-and-peck
18:19:07 <Hiato> meh, I made a typo too ;)
18:19:09 <ais523> hello SimonRC
18:19:15 <SimonRC> Sgeo: yes
18:19:46 <ais523> Hiato: many languages with assignment statements return the value that was assigned
18:19:56 <ais523> s/assignment statements/assignment expressions/
18:20:25 <ais523> Perl is slightly different, and returns the variable that was assigned to
18:20:38 <ais523> it comes to much the same thing, except in cases like ($a=4)++
18:20:42 <SimonRC> so an assignment is an lvalue?
18:20:57 <ais523> SimonRC: yes
18:21:09 <Hiato> hrmm... yeah, something worth considering, but It doesn't really matter because you can do multiple assignments using lists. :64(a1,a2,a3) in place of grabbing the returned value like this- :(:65(a1))(a2) etc
18:21:32 <ais523> one of the most famous lines of C code went like this:
18:21:43 <SimonRC> op, value, variable is a funny order to put it in
18:21:45 <ais523> while(*dest++=*src++);
18:21:52 <SimonRC> Sgeo: yup
18:21:54 <SimonRC> oops
18:21:57 <SimonRC> ais523: yup
18:22:07 <ais523> that's a one-liner strcpy implementation
18:22:15 <Hiato> SimonRC: yeah, but it's nice and different for a change ;)
18:22:17 <ais523> which relies on the return value of =
18:22:30 <SimonRC> Hiato: it's a bit forth-like
18:22:39 <SimonRC> Forth has value, var, op
18:23:05 <Hiato> well, I'm afraid you have me there, I've never really heard of Forth before (well, I've *heard* , but that's as far as it goes)
18:23:29 <ais523> when concatenative languages have variables, they generally go value, [var], op
18:23:35 <Hiato> asi523: I should just probably nod :P
18:23:43 <Hiato> about the earleir c line
18:24:00 <SimonRC> no, you must understand
18:24:02 <ais523> it isn't that difficult to understand
18:24:15 -!- Judofyr has quit.
18:24:39 <ais523> *ptr++ returns the memory location that ptr points to, and then increments ptr
18:24:51 <Hiato> oooh, aaah
18:24:56 * Hiato sees the light
18:25:05 <Hiato> ingenious :)
18:25:11 <SimonRC> specifically, ++ increments pointer after evaluation but before the next sequence point
18:26:13 <ais523> ah, the whole 'sequence points' thing, which fugged up comp.lang.c for months despite being in the FAQ
18:26:49 <ais523> people kept on asking about the infamous statement i=i++; (which doesn't actually do anything defined, because you're trying to assign two different values to i simultaneously)
18:27:19 <SimonRC> indeed
18:27:51 <SimonRC> or things like (i++ * i++)
18:27:52 <Hiato> well, can't it be broken down recursively. i = i + 1 forever onwards ?
18:28:12 <ais523> it's defined to be undefined behaviour in the C standard
18:28:25 <SimonRC> I found a good way of showing the ambiguity:
18:28:29 <ais523> which means that a C compiler can do anything it likes, even if it doesn't make logical sense, on encountering the statement
18:28:52 <Hiato> oh, I see. Hrmm... interesting that. Predefined ambiguity ;)
18:28:53 <ais523> most compilers either do nothing or add 1 to i
18:29:03 <oklopol> hmm, can it actually decide to do *neither*?
18:29:07 <oklopol> that i didn't know
18:29:15 <ais523> oklopol: yes
18:29:19 <oklopol> Hiato: most languages have that
18:29:28 <SimonRC> for example, if the compiler keeps a flag on each variable that is set if the variable must be incremented after the current expression, it would be expected to only increment once in the expression (i++ * i++)
18:29:32 <ais523> the archetypal example is 'demons flying out of the user's nose'
18:29:42 <SimonRC> ais523: indeed
18:29:42 <ais523> no known compiler does that, but it's allowed by the Standard
18:29:45 <Hiato> really? Shows where I've been (glances over shoulder at rock)
18:30:05 <oklopol> :)
18:30:12 <SimonRC> ISTR that for a while gcc would launch nethack if it encountered an unknown #pragma, too
18:30:25 <ais523> it was any pragma, if I remember
18:30:30 <SimonRC> ok
18:30:38 <ais523> because #pragma can do anything as long as the implementation documents it
18:30:42 <SimonRC> indeed
18:30:51 <ais523> but I think nethack was something like third in the list of things it tried to do
18:31:05 <ais523> it first attempted to start Emacs running a Towers of Hanoi simulation
18:31:08 <SimonRC> heh
18:31:26 <Hiato> awesome :)
18:31:34 <ais523> presumably the nethack was a fallback for if Emacs wasn't installed
18:32:11 <SimonRC> lol: http://www.galactanet.com/comic/view.php?strip=307
18:32:19 <SimonRC> (a good comics strip generally
18:32:20 <SimonRC> )
18:32:36 <ais523> actually, I just looked it up, it was nethack, then rogue, then towers of Hanoi on Emacs
18:32:57 <ais523> and if all of those failed, it printed "You are in a maze of twisty compiler features, all different."
18:33:26 <Hiato> awesome comic there :)
18:36:53 <ais523> hmm... does anyone here know if it's possible to open a write handle to a socket with one process, and a read to the same socket with a different process
18:37:09 <ais523> as in, connecting to freenode on port 6667, but having one process writing to it and another process reading?
18:37:36 <oklopol> who here did J?
18:37:46 <oklopol> or was it faxathisia
18:38:38 <ais523> ehird was talking about it a lot, but I'm not sure whether they used it
18:39:07 <oklopol> doubt they did
18:39:27 * ais523 is inclined to agree
18:39:42 <oklopol> i recall it was mostly K they were interested in
18:39:54 <oklopol> am i supposed to say "were" or " they was" :P
18:40:09 <oklopol> i like the latter <3
18:40:16 * ais523 usually says 'they were' along the lines of 'you were'
18:40:36 <ais523> but I prefer 'themself' in the singular context
18:40:52 <oklopol> yarrr
18:43:18 <oklopol> the two problems with me learning new languages are that i always have to read all the documentation before i even start considering using the language, and that i usually never learn to use the interp/compiler
18:43:42 <oklopol> god there's a lot of foreigns
18:44:44 <ais523> oklopol: if you read all the C-INTERCAL documentation, you would know how to use the compiler
18:44:50 <ais523> I spent ages writing it
18:45:12 <ais523> it's decent as a reference source as well, although not as good at being a tutorial
18:47:56 <oklopol> i'll put intercal on my list of implementing-something-in
18:49:43 <ais523> there's already Unlambda and Befunge-93 interps in INTERCAL
18:51:09 <oklopol> no brainfuck?
18:51:36 <ais523> suprisingly, no
18:51:59 <ais523> you have an unlimited number of stacks available, so a brainfuck interp shouldn't be very difficult
18:52:30 <oklopol> i'll make on as my test project, well, try to make on at least
18:52:37 <oklopol> *one
18:52:49 <ais523> dealing with the I/O model is likely to be one of the harder parts
18:53:21 <ais523> by the way, http://intercal.freeshell.org has the manuals for CLC-INTERCAL and C-INTERCAL, and downloads for the implementations
18:53:37 <oklopol> this isn't intercal day, this is jayday
18:53:49 <ais523> there are a lot of other references, but they're mostly out of date
18:54:07 * ais523 goes to write an IRC bot in Thutu
19:02:58 -!- ais523 has quit ("for testing, will be back soon").
19:03:25 -!- ais523 has joined.
19:22:54 -!- Tritonio_ has joined.
19:26:52 -!- Hiato has quit (Read error: 110 (Connection timed out)).
19:37:57 <ais523> grr... why is it so hard to connect a program's stderr and stdout to telnet using shellscript?
19:39:26 -!- Corun has quit ("This computer has gone to sleep").
19:51:57 -!- thutubot has joined.
19:52:11 <ais523> \hello
19:52:28 <Tritonio_> hi
19:52:39 <ais523> hmm, it doesn't work
19:52:42 <Tritonio_> why is it hard?
19:52:59 <ais523> partly because I'm having problems linking the bot to freenode in both directions
19:53:10 <ais523> and also I've probably made a mistake in one of my regexps
19:53:20 <ais523> \quit
19:53:44 -!- thutubot has quit (Remote closed the connection).
19:54:33 <Tritonio_> do you use a named pipe?
19:55:11 <ais523> I tried that, but it didn't work for some reason
19:55:33 <ais523> the info went down the named pipe OK, but perl wasn't reading telnet's output for some unknown reason, not even when I piped them together directly
19:56:01 <ais523> maybe telnet was sending control codes on stdout that shouldn't have been involved, or something like that
19:56:03 <Tritonio_> O_o
19:56:09 <ais523> or maybe it just wasn't flushing its output
19:56:31 <Tritonio_> then maybe you should rewrite e telnet app... ;-)
19:58:03 -!- Tritonio_ has quit (Remote closed the connection).
20:07:37 <oklopol> i love j already
20:08:08 <ais523> neat, isn't it?
20:10:20 -!- puzzlet has joined.
20:13:07 <oklopol> fun stuff, although oklotalk still would own its ass if only i managed to write an efficient interp for it
20:13:16 <oklopol> at least i think it would
20:13:51 <oklopol> oklotalk is very much like J, K and APL, but with pattern matching and OOP if you want the use them
20:14:09 <oklopol> well, not exactly OOP... message passing
20:14:58 <oklopol> just so general you can easily write functions for inheritance and suh
20:14:59 <oklopol> *such
20:15:09 <ais523> recursive regexps need a proper sort of replace ability
20:15:22 <oklopol> hmm?
20:15:26 <oklopol> replace?
20:15:57 <oklopol> recursive here means you can do x = (.*); y = x|a x c? and such?
20:16:00 <oklopol> or just plain recursion
20:16:04 <oklopol> i mean
20:16:08 <oklopol> what do you mean? :)
20:16:36 <oklopol> my example was an example of just being able to call other regexes, whereas recursion would just be calling the current regex
20:16:51 <oklopol> probably didn't come through
20:17:05 <oklopol> eh
20:17:22 <oklopol> my example was an example of being able to call any regex from inside a regex
20:17:30 <ais523> a recursive regex lets you use part of the regex inside itself
20:17:41 <oklopol> what does that mean
20:17:43 <oklopol> part of it?
20:18:22 <oklopol> like, you can tag a certain place in its parse tree and reuse it, like reg = X@(a | b) | (X)+
20:18:29 <oklopol> :D
20:18:34 <ais523> e.g. a regex to match nested angle brackets could be (|<$1>$1)
20:19:25 <ais523> that is, a string consists of nested angle brackets if either it's empty, or it's a string consisting of angle brackets surrounding a string consisting of nested angle brackets followed by a string consisting of nested angle brackets
20:19:27 <oklopol> $1 meaning what exactly
20:20:15 <oklopol> oh, $1 means the whole thing
20:20:38 <oklopol> it's just $1 should mean the *matched* thing, not the actual regex
20:21:03 <oklopol> so... whatever it matched, we'll call that M, would have to be of the form M = <M>
20:21:10 <oklopol> which is impossible, unless the string is infinite
20:21:21 <oklopol> i may be totally clueless here, just wondering
20:21:26 <ais523> in Cyclexa (my work-in-progress regex language)
20:21:33 <ais523> $1 means the code of group 1
20:21:41 <oklopol> ah
20:21:41 <ais523> whereas \1 means the text matched by group 1
20:21:46 <oklopol> oh, right, i see
20:22:08 <ais523> so (|<$1>$1)
20:22:13 -!- puzzlet_ has quit (Read error: 110 (Connection timed out)).
20:22:19 <oklopol> can it have infinite strings and (|<\1>\1)? :)
20:22:42 <oklopol> haha
20:22:49 <oklopol> \w
20:22:50 <ais523> I'm not entirely sure what happens if you put \1 inside group 1 itslef
20:22:57 <oklopol> for cardinals
20:22:59 <oklopol> like
20:23:00 <oklopol> omega
20:23:02 <oklopol> whaddyacallit
20:23:29 -!- Corun has joined.
20:23:46 <oklopol> well, that should match the string infinity*"<" ++ infinity*">", for instance
20:24:20 <ais523> sorry, could you write the original example again? I got slightly confused due to the way my low-tech IRC client works
20:24:34 <oklopol> (|<$1>$1)
20:24:36 <oklopol> this one?
20:24:42 <ais523> yes
20:25:02 <ais523> it's equivalent to (|<(|<$2>$2)>(|<$3>$3))
20:25:06 <ais523> and so on
20:25:23 <oklopol> yes
20:25:34 <ais523> now, one of Cyclexa's features is that it's possible to match antitext
20:25:43 <oklopol> meaning?
20:25:51 <ais523> so instead of removing text from the input string, you add text to the input string
20:26:08 <ais523> this, and one extra feature, allow Cyclexa to be TC with an empty input string
20:26:54 <oklopol> probably even with just one regex
20:27:06 <ais523> a program is just one regex
20:27:25 <oklopol> ah okay
20:27:48 <oklopol> can you do something like "don't match this at all"
20:27:49 <oklopol> like a nop
20:27:55 <ais523> the syntax for antitext is, e.g. (abc)^ adds (abc) to the group
20:28:01 <oklopol> i mean, you could make regex variables like that, quite neatly
20:28:04 <ais523> probably, it depends on exactly what you want
20:28:07 <oklopol> like
20:28:22 <ais523> (abc)^+ does nothing to the input string
20:28:26 <oklopol> that you could have all your regexps in $n's
20:28:34 <oklopol> without having to declare them as you use the
20:28:36 <oklopol> "declare"
20:28:59 <ais523> for predeclaring groups, doing something like (''(group)(group)(group))? would do
20:29:11 <ais523> '' is like fail in Prolog; it never matches anything
20:29:12 <oklopol> ''?
20:29:17 <oklopol> ah
20:29:22 <oklopol> why not _
20:29:24 <oklopol> hmm
20:29:29 <oklopol> not sure how that's good.
20:29:39 <oklopol> just felt it was a failure character :P
20:29:40 <ais523> because it's an empty character class
20:29:52 <ais523> [abc] becomes 'abc' in Cyclexa
20:30:14 <ais523> but the apostrophes are cleverer than []; 'ab+c' matches a, c, or any number of bs
20:30:14 <oklopol> that's actually pretty neat, i always hated that in regexes
20:30:30 <oklopol> having nestable characters for an unnestable group
20:30:55 <ais523> 'a(bc)d' matches a, d, or bc
20:31:08 <ais523> and so is equivalent to (a|bc|d)
20:31:17 <oklopol> yep
20:31:24 <ais523> in fact, (??a|bc|d) because the group shouldn't be given a group number (that's what the ?? does)
20:31:43 <ais523> I overload a lot of characters, particularly ^$+*?\
20:31:54 <ais523> they can mean many different things in different contexts
20:32:04 <oklopol> does (??a (b c)) still give the inner group a number?
20:32:08 <ais523> because I don't like character sequences that have no sensible meaning
20:32:11 <ais523> yes
20:32:28 <ais523> you can also give a group a particular number like (?4this)
20:32:37 <oklopol> have ?!?!?!!?!? for nor giving nested ()'s group number either
20:32:39 <oklopol> *not
20:32:45 <oklopol> *numbers
20:33:01 <ais523> maybe that would be (?^nonumber(nonumbereither))
20:33:14 <ais523> that would be more orthogonal, because the ^ has a meaning of 'not' in many group modifiers
20:33:21 <ais523> and ? sets a group number
20:33:48 <oklopol> yes, also, ^ is one of the characters that have a "nesting" feeling in them, i mean, in my head
20:34:06 <oklopol> usually exactly that of unnesting stuff
20:34:27 <ais523> one thing that amuses me is that the ^ and $ are implemented completely differently to each other in the Cyclexa regex ^abc$
20:34:28 <oklopol> well, because of how it looks, and the fact it does that in oklotalk, now that come tpo i think of it :)
20:34:30 <oklopol> *to
20:34:41 <ais523> the $ means 'only match at end of string' in this context
20:34:58 <ais523> and the ^ means 'don't put an implied .* at the start of the program' in this context
20:35:28 <oklopol> you switched their meanings?
20:36:04 <ais523> no, a ^ at the start of a regex still anchors it to the start of the string, and a $ at the end still anchors it to the end of the string
20:36:13 <ais523> they're just implemented in really different ways
20:36:32 <ais523> because Cyclexa basically treats a string as a stack of characters, whose top is at the start of the string
20:38:00 <ais523> http://pastebin.ca/951922
20:38:13 <ais523> what I've done so far on the Cyclexa spec and implementation
20:38:29 <ais523> but the implementation isn't done enough to even be able to interpret a single program
20:38:38 <ais523> so far it's just the parser, which was hard enough to do
20:40:26 <oklopol> is C<...> for cyclexa?
20:40:29 <oklopol> i mean
20:40:41 <oklopol> is that your "cyclexa regex" bracketing
20:41:01 <ais523> because strings of +*?^ often tokenize in many different ways
20:41:01 <ais523> and there are precedence rules to say which way is correct
20:41:01 <ais523> it's POD
20:41:01 <oklopol> i usually ask before reading the next line explaining it.
20:41:05 <ais523> a markup language normally used to document Perl programs
20:41:16 <ais523> it's equivalent to <tt>...</tt> in HTML
20:41:28 <ais523> so basically just marking the code as code
20:41:38 <oklopol> i c
20:42:26 <oklopol> #
20:42:26 <oklopol> In some cases, a single Cyclexa expression can completely
20:42:26 <oklopol> #
20:42:26 <oklopol> translate one language to another, although this is unusual.
20:42:33 <oklopol> what prevents it?
20:42:55 <ais523> the translation is often too hard to manage by regex alone
20:43:04 <ais523> for instance, imagine compiling BASIC into C
20:43:10 <oklopol> ah, you mean, in practise.
20:43:20 <ais523> you'd have to figure out which type each variable was, and add declarations
20:43:49 <oklopol> well yeah, but you *can* do it for any language, right?
20:44:02 <ais523> well, Cyclexa is TC
20:44:16 <oklopol> that doesn't mean you can do any translation, necessarily
20:44:21 <oklopol> but you can?
20:44:21 <ais523> so in theory it can do any compilation from one language to another that's theoretically possible
20:44:30 <ais523> some translations aren't possible
20:44:41 <ais523> such as TwoDucks -> Malbolge, for instance
20:44:58 <slereah_> TIME TRAVELLING MALBOLGE
20:45:01 <slereah_> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH
20:45:23 <oklopol> i meant, can you do any translation you can do in, say, perl?
20:45:48 <oklopol> tcness doesn't exactly say you can, it comes to questions about io
20:46:05 <oklopol> i mean
20:46:12 <ais523> it's BF-complete as well, for that matter
20:46:15 <oklopol> cyclexa programs take a string and return a string, basically?
20:46:21 <ais523> yes
20:46:25 <oklopol> hmm, yeah, that's a better way to put it
20:46:34 <oklopol> i always forget we already have that concept too
20:46:35 <oklopol> :P
20:46:56 <ais523> there's an input command
20:47:10 <ais523> there's going to be some way to do output too, but I haven't yet figured out the details
20:47:52 <oklopol> btw, is there a purely functional language, that does io by having two infinite lists, popping heads from which, and putting heads to which, perform input and output
20:48:02 <oklopol> so that you'd carry those around and at recursion, do io
20:48:07 <oklopol> perfectly pure
20:48:11 <oklopol> and doesn't need monads
20:48:18 <ais523> that's basically a monad that you've defined there
20:48:22 <slereah_> Heh.
20:48:25 <oklopol> :P
20:48:27 <ais523> just with an explicit monad chain
20:48:28 <slereah_> Zing!
20:48:30 <oklopol> i see
20:48:31 <oklopol> isee
20:48:51 <slereah_> All you need to do for a purely functional language is to print the expression at every step!
20:48:59 <slereah_> Then you only have to read the expression!
20:49:07 <slereah_> And possibly understand it.
20:49:07 <oklopol> ais523: i see no explicit infinite input list in haskell.
20:49:23 <ais523> oklopol: it's the monad chain for the IO monad
20:49:29 <oklopol> hmm
20:49:31 <oklopol> right
20:49:46 <oklopol> i hate this world
20:49:50 <ais523> the monad chain is hidden by monads, though, because otherwise you could perform IO twice on an earlier monad chain, which doesn't make a whole lot of sense
20:49:59 <oklopol> right.
20:50:07 <oklopol> that's exactly what i was thinking for the lists
20:50:14 <oklopol> hiding them exactly like that
20:50:21 <oklopol> "you could've invented monads"
20:50:54 <ais523> Underlambda has only one monad
20:51:04 <ais523> whose chain is the stack that all commands operate on
20:51:16 <ais523> so despite being purely functional, all commands run in a strict order
20:53:44 <oklopol> wow, i just realized that's a real fuckload of text :P
20:53:55 <oklopol> i'll read cyclexa later...
20:55:07 <ais523> anyone who wants to help me implement it, feel free; it's really difficult!
20:55:33 * oklopol makes that his first J project!
20:55:35 <oklopol> ...or not
21:00:03 <oklopol> hmm
21:00:17 <oklopol> i should make a turing-complete Tree using a new construct called "seed"
21:00:35 <ais523> how does it work?
21:00:39 <oklopol> dunno :P
21:00:48 <oklopol> the stack is a bit non-tree
21:00:56 <oklopol> i want something like a worm holding the stack...
21:01:01 <oklopol> :D
21:01:27 <oklopol> i like languages with real life origin in syntax to have real life semantics too, as much as possible
21:02:42 <oklopol> Receives two characters as input and outputs the greater of the two inputs
21:02:42 <oklopol> ^
21:02:42 <oklopol> # |
21:02:42 <oklopol> \<| ~~
21:02:42 <oklopol> |/
21:02:43 <oklopol> v |
21:02:45 <oklopol> \| v
21:02:47 <oklopol> |/
21:02:49 <oklopol> i don't get this
21:02:54 <oklopol> first v -> stack = A
21:02:58 <oklopol> second v -> stack = A B
21:03:04 <oklopol> ~ -> stack = A B B
21:03:11 <oklopol> ~ -> stack = A B B B
21:03:19 <oklopol> then <, which is false
21:03:23 <oklopol> so outputs B
21:03:39 <ais523> that reminds me slightly of HOMESPRING
21:04:15 <oklopol> tell me how that works, if you have the 30 seconds
21:04:26 <oklopol> or is it fucked up?
21:04:38 <ais523> how HOMESPRING works?
21:04:56 <oklopol> errrrrrrr i mean, how that *program* works
21:05:01 <oklopol> http://esoteric.voxelperfect.net/wiki/Tree
21:05:10 <ais523> I don't know either
21:05:45 <oklopol> Tslil? interesting name
21:06:31 <ais523> oklopol: ?
21:06:39 <oklopol> anyway, my seed idea was something like dropping seeds that grow a similar tree, and start new execution
21:07:04 <oklopol> possibly not the exact same tree, you'd have to do something real clever to keep semantics intact :P
21:07:12 <oklopol> ais523: creator of the lang = tslil
21:07:48 <ais523> ok
21:33:41 -!- boily has joined.
21:34:21 <ais523> hello boily
21:37:04 <boily> hello ais523
21:38:16 * ais523 is saying hello to people when they join in the hope of resparking a conversation
21:40:49 <boily> hmm... uh... how are you? (i know it's not much for a conversation, but it's a start!)
21:40:59 <slereah_> Y HULO THAR
21:40:59 <ais523> fine, but a little tired
21:41:11 <slereah_> My name is Epic Fail Guy, and I am here to ruin your esolang.
21:41:31 <ais523> sleareah_: I'd be interested to see how you would go about doing that
21:41:52 * ais523 finished an 8-month project on Wednesday
21:42:10 <ais523> so now I have time to waste doing things like using telnet as an IRC client
21:42:20 <boily> eh?
21:43:24 <ais523> I'm typing in IRC commands by hand
21:43:48 <ais523> it's one reason why I'm anxious to start a conversation, because repeatedly PONGing is boring
21:44:03 <oklopol> http://jsoftware.com/help/dictionary/dccapdot.htm okay J owns.
21:44:51 <ais523> wow, there are a lot of irssi users here
21:45:06 <boily> conversation starter: i was recently thinking about an assembly-based esolang.
21:45:24 <ais523> assembly's reasonably esoteric as it is, so that might be a good starting point
21:45:34 <ais523> most OISCs can be seen as assembly-based esolangs
21:48:20 <boily> about your remark that assembly is obfuscated enough by itself, you are right.
21:49:03 <ais523> I like some of the DSP assemblies that have commands that do crazily specific things
21:49:10 <boily> such as?
21:49:35 * boily hates 8086 assembly, and my homeworks.
21:49:35 -!- Deformati has changed nick to Deformative.
21:49:45 <oklopol> add ax to bx, when ax = 4, bx = 2 and cx < 100
21:49:47 -!- GreaseMonkey has joined.
21:49:58 <oklopol> otherwise divide 5/8, and lose result
21:50:00 <ais523> One I used had a command to multiply two registers and add the result to an accumulator, load another two numbers from memory into those registers, increment the pointers that said which address to load those two numbers from, and also store another accumulator into memory elsewhere
21:50:13 <oklopol> :D
21:50:16 <oklopol> lol awesome
21:50:17 <boily> good one!
21:50:22 <ais523> oklopol: what a pointless task
21:50:30 <slereah_> In what is it used?
21:50:36 <oklopol> ais523: the one i said?
21:50:58 <ais523> oh, and if adding to the acccumulator gave a value above 4294967295, it saturated at that value
21:51:05 <ais523> oklopol: yes
21:51:21 <ais523> slereah_: it's useful in doing a Fast Fourier Transform
21:51:30 <ais523> also in taking the product of two vectors
21:52:54 <ais523> it had lots of variants too; for instance, one subtracted the two numbers being loaded from memory and stored their difference in a register, rather than storing both of them
21:53:07 <ais523> that was useful for calculating the length of a vector
21:53:33 <ais523> the instruction looked kind of ridiculous in the assembly code because it took so many arguments
21:53:55 <ais523> oh, and it wasn't restricted to just incrementing the pointers; it could add or subtract 1, 2, or 3
21:55:19 <boily> bus time
21:55:21 <boily> bye!
21:55:22 -!- boily has quit ("WeeChat 0.2.6").
21:59:50 -!- Tritonio_ has joined.
22:00:12 <ais523> hello Tritonio
22:16:32 -!- oerjan has joined.
22:17:37 <ais523> hello oerjan
22:17:46 <AnMaster> just found a very nice tool, helps you find holes in your structs due to alignment issues: http://git.kernel.org/?p=linux/kernel/git/acme/pahole.git;a=summary sadly it seems you have to use git, can't find it anywhere else
22:18:25 <AnMaster> ais523, ah you are?
22:18:26 <oerjan> hello
22:18:27 <AnMaster> ok
22:19:14 <ais523> I can't think of any sensible way to write an IRC client without the ability to select()
22:19:31 <slereah_> What about a crazy way?
22:19:32 <AnMaster> ais523, intercal lacks that?
22:19:34 <ais523> there's a method involving three processes and two usernames, but it isn't sensible
22:19:45 <AnMaster> ais523, why two usernames?
22:19:49 <ais523> it lacked even the ability to read its own output for several decades
22:20:39 <ais523> the crazy way involves one thread to interact with the user, one to read from the server and write things back, and one to repeatedly ping the thread that's writing to the server on a second username so that it writes data every now and then
22:20:53 <ais523> the repeated pinging prevents the need to select
22:20:57 <AnMaster> ais523, hah
22:21:35 <AnMaster> ais523, ok that is plain crazy, well that is also why I couldn't do a sane irc client in bash, but it is fully possible to do a bot in bash
22:22:01 <ais523> I agree; I tried to write a bot in Thutu, but it wasn't getting messages back from the server for some reason
22:22:19 <ais523> I'd used a named pipe to connect my program to telnet in a loop, but the communication only seemed to be one way
22:22:25 <AnMaster> one issue however remains, that to do periodic events I do read with timeout of 5 seconds, and then look for periodic events that should have happened the during the last 5 seconds
22:22:33 <ais523> either that, or telnet was sending control chars that confused Thutu
22:24:00 <ais523> did you get that problem in your bashbot?
22:27:22 <AnMaster> nop
22:28:09 <AnMaster> it can use: socat, gnutls-cli, netcat, openssl sclient, /dev/tcp (fake device built in into bash, selectable at compile time of bash)
22:28:18 <AnMaster> so called transport modules
22:28:21 <AnMaster> easy to add new ones
22:28:51 <ais523> ah, so you didn't use telnet
22:29:09 <AnMaster> it just defines a set of methods: "get list of supported features and check deps installed", connect, disconnect, get line, send line
22:29:10 <AnMaster> :)
22:29:35 <AnMaster> unlike normal envbot modules you can only load one transport module
22:29:46 <AnMaster> and not unload or reload at runtime
22:30:27 <AnMaster> ais523, :D
22:30:53 <AnMaster> envbot is very advanced, and has the potential of getting to the same level as, say, supybot
22:31:05 <AnMaster> apart from multiple networks
22:32:39 -!- pikhq has quit ("Leaveth").
22:32:58 <ais523> I'll just have to add a select() syscall to INTERCAL
22:33:08 <ais523> but first I'll have to get the ffi working so I can implement it
22:34:00 -!- Judofyr has joined.
22:34:41 <AnMaster> ais523, what about poll?
22:35:07 <AnMaster> err, wait that just does one fd
22:35:18 <AnMaster> wouldn't help at all
22:35:29 <ais523> polling isn't really much use if you don't have the syscall for that either
22:35:41 <AnMaster> hah true
22:37:44 <AnMaster> ais523, what about doing async IO?
22:37:51 <AnMaster> aio_read/write/whatever
22:38:23 <ais523> or set the async flag on the file descriptor
22:38:36 <ais523> but the dearth of syscalls affects me again
22:38:45 <AnMaster> dearth?
22:38:51 <ais523> there are only something like 7 in CLC-INTERCAL, and I haven't implemented any in C-INTERCAL yet
22:38:57 <AnMaster> ais523, does that work on anything but linux, setting async flag I mean
22:39:01 <ais523> maybe I used the wrong word
22:39:09 <ais523> O_NONBLOCK is POSIX IIRC
22:44:41 -!- okofolor has joined.
22:44:56 <okofolor> rofl, switching back to linux is starting to feel like a good idea, my j interp crashed, took me like 5 minutes to get my computer running again :D
22:45:09 <okofolor> (on vista now)
22:45:51 -!- okofolor has changed nick to okopol.
22:45:57 -!- marshmallows has joined.
22:46:15 -!- oklopol has quit (Read error: 113 (No route to host)).
22:46:58 * oerjan picks up a stray 'l' from the floor. wonder who it belongs to?
22:47:23 <ais523> oerjan: any idea why there are stray lowercase letters on the floor?
22:47:36 <oerjan> i guess someone must have lost one, ais523
22:48:22 <oerjan> hm lais523, doesn't look like
22:48:33 <oerjan> *right
22:49:36 <AnMaster> http://rafb.net/p/gWAc2P69.html <-- interesting tool that pahole
22:49:48 <oerjan> and i don't think anyone called me loerjan since primary school or thereabouts
22:50:49 <ais523> AnMaster: what is that? it looks Befunge-related
22:51:16 <AnMaster> ais523, yes the struct is, but the output is from pahole, a tool that find holes in your structs due to alignment issues
22:51:30 <marshmallows> oh I wrote that
22:51:32 <AnMaster> developed by linux kernel people originally
22:51:38 <AnMaster> marshmallows, !?
22:51:40 <okopol> oerjan: could you hand that to me?
22:51:50 <okopol> or just insert it yourself
22:52:07 * oerjan gives okopol the 'l'. Be careful with it!
22:52:14 <okopol> yeah yeah, i've done this before
22:52:17 -!- okopol has changed nick to oklopol.
22:53:07 <oerjan> mind you, LanMaster sounds sorta cool
22:53:17 <oklopol> :P
22:53:22 <oerjan> but it was the wrong case anyhow
22:53:35 <oklopol> AnMalster sounds like "an molester"
22:53:56 <AnMaster> marshmallows, you wrote what?
22:54:33 <oerjan> oh no not marshmallows again.
22:54:39 <AnMaster> oklopol, oerjan: why the "l" discussion?
22:54:45 <oerjan> he is such a jerk, not like that nice guy faxathisia
22:55:49 <oerjan> AnMaster: oklopol lost an 'l' a while ago
22:56:03 <AnMaster> oerjan, oh?
22:56:23 <oerjan> fortunately it was recovered
22:56:52 <ais523> oerjan: are you sure that was the right 'l'? There's several over here that could fit
22:57:01 <oerjan> ooh
22:57:43 <oerjan> nah, none of them have the right black metal look
22:58:52 <ais523> that's a relief
22:58:59 * AnMaster someone left two dots here, they look like they would fit you oerjan
22:59:11 <AnMaster> örjan maybe?
22:59:16 <oerjan> no
22:59:26 <AnMaster> oh you want the dash over there then?
22:59:38 <oklopol> rjan usually leaves his dots home, they're strictly forbidden here
22:59:44 <oklopol> ah
22:59:46 <oklopol> indeed
22:59:51 <AnMaster> oklopol, I think he want an Ø not an Ö
22:59:52 <oerjan> don't think so, clashes with the e
22:59:59 * ais523 just came across this: http://catless.ncl.ac.uk/Risks/24.93.html#subj10.1
23:00:32 <ais523> strikes me as being a somewhat ambitious attempt
23:00:38 <oerjan> a is just a crumbled e anyhow
23:00:53 <ais523> but presumably the sort of people who fall for spam emails would fall even for that
23:01:08 <ais523> however, the plan would be thwarted due to such people's inability to use a fax machine
23:01:51 * marshmallows cries
23:02:22 <oklopol> i wish i had more money
23:02:29 <oklopol> i would gladly fund phisters
23:02:32 <oklopol> *phishers
23:02:56 <ais523> oklopol: why?
23:03:21 <marshmallows> I just bought this http://www.info.ucl.ac.be/~pvr/book.html
23:03:37 <oklopol> because in a perfect world, everyone would fall for that, and i could get rich doing something like that
23:03:51 <oklopol> donating money, clearly, makes the world a bit better.
23:04:08 <oerjan> marshmallows: i've heard great praise of it over at lambda the ultimate
23:04:10 <oklopol> my logic is flawless, as always
23:04:23 * ais523 is laughing out loud again, but at least this time there's nobody else in the lab to hear
23:04:45 <oklopol> :D
23:05:34 <oerjan> oklopol: too bad the world doesn't work on logic
23:06:00 <oklopol> too bad your mother doesn't work on logic
23:06:11 <oklopol> i'm on fire today
23:06:15 <oklopol> better continue my j's
23:06:41 <Judofyr> oklopol: I'm very sorry, but I can't make the header go under the box :(
23:06:47 <marshmallows> bleh
23:06:51 <ais523> oklopol: you'll have to change your nick to oklorofl some time if you continue reasoning like that
23:06:56 <marshmallows> can't find my code
23:07:07 <ais523> Judofyr: context?
23:07:19 <Judofyr> ais523: http://yr.judofyr.net
23:07:25 <Judofyr> click the marker
23:07:30 <Judofyr> (very beta)
23:07:57 <marshmallows> btw I'm really annoyed at IRC
23:08:05 <oklopol> ais523: good idea
23:08:08 <marshmallows> I just realised how silly this is (I mean other than #esoteric)
23:08:10 <oklopol> i love playing with my nick
23:08:15 <oklopol> i wish i could do it with my real name
23:08:22 <marshmallows> Why do we segregate into programming language specific channels?
23:08:42 <marshmallows> Would it not make so much more sense to have paradaigm specific channels instead?
23:08:49 <ais523> marshmallows: so that people don't have to be in conversations that don't interest them?
23:09:02 <ais523> much of IRC is "how do I do X in programming language Y"
23:09:21 <ais523> there's #concatenative, anyway
23:09:26 <marshmallows> yeah sort of like that ais523, but it ends up that people use a single programming language instead of many
23:09:34 <marshmallows> I thought that was the factor channel :p
23:09:39 * oklopol joined
23:10:21 <oklopol> they said "hi", what a nice channel :)))
23:10:24 <marshmallows> hmf :[
23:10:40 <oerjan> oklopol: there is this tv guy in norway who added "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:04 <oklopol> heh
23:11:16 -!- Corun has quit ("This computer has gone to sleep").
23:11:18 <oklopol> well, the problem is, while you can do that here, too, you cannot change it back.
23:11:42 <oerjan> marshmallows: there is a #concatenative i believe
23:11:53 <ais523> oerjan: what does that translate as?
23:11:56 <oklopol> hmph, i cannot translate that to english, just finnish
23:12:46 <oklopol> here you are | thanks?
23:12:54 <oerjan> something like that
23:13:47 <oerjan> yeah i think there is some limit on how often you can change your name
23:14:03 <marshmallows> It just seems totally wrong to me
23:14:12 <oklopol> we have once in a lifetime / for a *good reason* / marriage
23:14:23 <oklopol> marshmallows: still on the paradigm topic?
23:14:26 <marshmallows> I am thinking of the story with all the blind people trying to figure out what an elephant is
23:14:27 <oerjan> he did it after the laws were greatly liberalized
23:14:28 <oklopol> or changeing names
23:14:37 <oklopol> changing
23:14:46 <marshmallows> they are all expert in one thing, so none of them really understand it
23:15:15 <oklopol> i haven't heard that story
23:15:19 <oklopol> will you tell it?
23:15:22 * marshmallows wants to merge all the procedural channels in one.. all the functional into one..
23:15:28 * oklopol gathers by the fire
23:16:08 <oklopol> #haskell is quite different from #scheme...
23:16:24 <ais523> and likewise C++ is quite different from Java
23:17:16 <marshmallows> It just feels like segregation
23:17:30 <marshmallows> and I think it's bad but I'm probably wrong and worrying about nothing
23:18:16 <ais523> on Usenet there are newsgroups at all levels
23:18:49 <ais523> so for instance comp.lang.c only talks about 100% ANSI- (or K&R-) compliant C, or occasionally about whether code is conforming
23:19:01 <ais523> to discuss things like POSIX C, you would go to comp.unix.programmer
23:19:20 <ais523> but to discuss algorithms (which are language-dependent), comp.programming would be the best place
23:19:29 <marshmallows> I see
23:19:36 <oklopol> language-dependent?
23:19:38 <oklopol> or independent?
23:20:05 <ais523> I meant independent
23:20:13 <oklopol> yrar
23:20:56 <marshmallows> anyway I'm happy I got someone into logic programming today :P
23:21:09 -!- Corun has joined.
23:21:36 <ais523> marshmallows: which language?
23:22:00 <marshmallows> I used Prolog, http://reddit.com/r/programming/info/6cwnk/comments/ , but they will probably learn Oz, I guess.. which I also want to do
23:22:32 <marshmallows> Oz is this witches cauldron language seems pretty cool
23:23:11 * ais523 likes Prolog but doesn't think it goes far enough
23:23:25 <ais523> it has lots of restrictions, just to make it implementable...
23:23:27 <marshmallows> Yeah Prolog is severely flawed in many ways..
23:24:03 <marshmallows> Still it's one of the best :/
23:24:39 -!- slereah_ has changed nick to Slereah.
23:25:24 <marshmallows> always looking for new Logic langs/implementation techniques :)
23:25:44 * ais523 is planning a Prolog-like esolang
23:25:49 <ais523> that's very uncomputable
23:26:03 <ais523> it manages to be above-TC (and therefore TC) despite having no way to loop
23:26:14 <ais523> because it can perform uncountably many computations in parallel
23:26:21 <marshmallows> :D
23:26:22 <marshmallows> cool
23:26:37 <oklopol> the one that could actually check its own halting if implemented perfectly?
23:26:38 <Slereah> How will it do it!
23:26:58 <Slereah> Perfect proof generator? :o
23:26:59 <ais523> basically, a program contains a certain number of variables
23:27:14 <marshmallows> There was a nice thought exercise, adding the language construct infinity { ... } to C
23:27:16 <ais523> which can take on infinitely many values
23:27:29 <ais523> 'untyped function' is one of the possible data types
23:27:41 <ais523> A program consists of constraints on those variables
23:28:29 <oklopol> can you do "recursion"?
23:28:41 <ais523> of course
23:28:44 <oklopol> define constraints in terms of other constraints
23:28:50 <oklopol> i guess would be more appropriate
23:28:59 <oklopol> hmm
23:29:18 <oklopol> or not, that might sound more confusing
23:29:41 <ais523> as for recursion, you simply add an argument to a function that represents recursion depth and place a constraint on the relationship between values of the function at different depths
23:30:14 <oklopol> yeah, sure
23:30:30 <oklopol> i think we need some help from the matlab people
23:30:45 <oklopol> it obviously needs to be able to do all mathematics known to man!
23:31:18 <oklopol> can you do algebra?
23:31:19 <oklopol> hmm
23:31:34 <oklopol> i guess you can just make tree constraints and use the parse trees of algebraic expressions
23:31:39 <ais523> algebra's fine
23:32:19 <marshmallows> give it a MAXIMA FFI :D
23:32:36 * ais523 tries to remember what MAXIMA is
23:32:51 <marshmallows> nice algebra system written in Common Lisp
23:33:07 <oklopol> can you just do stuff like A*x^2 + Bx + C == 0 <==> x = (-B+sqrt(B^2-4*A*C))/(2*A)
23:33:11 <oklopol> to add mathematical truths :-)
23:33:23 <oklopol> +-
23:33:34 <oklopol> or <==> -> ==>
23:33:38 <oklopol> errr
23:33:40 <oklopol> <==
23:33:44 <oklopol> errrr
23:33:46 <oklopol> you fix it
23:33:46 * marshmallows whines about introducing such compilex axioms
23:33:57 <marshmallows> why not just prove it in the language itself?
23:33:59 <ais523> that's easy enough to deduce without that rule using completing-the-square
23:34:08 <oklopol> indeed
23:34:18 <oklopol> but can you hint the program?
23:34:26 <Quendus> bah, why can't esolang creators do anything more interesting than brainfuck-derivatives? :(
23:34:42 <marshmallows> Quendus: Check out #esoteric!
23:34:45 <oklopol> you should be able to give it that axiom *and* deduce that
23:34:55 <ais523> many esolang creators do
23:34:56 <oklopol> Quendus: some can, look deeper
23:34:58 <marshmallows> Quendus: they are talking about something totally different ovwer there
23:35:17 <Quendus> RLY???
23:35:18 <ais523> look at the list of esolangs I've created, for instance, or that any of the regulars here have created
23:35:25 <marshmallows> :(
23:35:30 * marshmallows hasn't made any esolang...
23:35:43 <ais523> http://esolangs.org/wiki is a good starting point
23:35:43 <oklopol> most of esolangs.org are brainfuck-derivatives, or at least clearly imperative, and very close
23:36:02 <oklopol> but there are many languages completely unlike it
23:36:08 <ais523> http://esolangs.org/wiki/User:ais523 contains a list of the ones I've created
23:36:10 <Quendus> I looked at the list of things on the wiki and found very little else
23:36:19 <oklopol> and some of the brainfuck-derivatives really do have a point.
23:36:19 <ais523> I don't think many of them are Brainfuck-based
23:36:24 <marshmallows> oh well I implemented an esotericish lang (one that lets you run programs forwards or backwards in ..)
23:36:24 <Quendus> and so far nothing that more fun than befunge to write in
23:36:33 <marshmallows> I guess that's something..
23:36:38 <marshmallows> ?
23:36:49 <ais523> Quendus: try Underload if you haven't already
23:37:24 <oklopol> Quendus: also unlambda and lazy k are based on a different mathematical model than brainfuck
23:37:33 <oklopol> very different
23:37:38 <Quendus> ok, thanks
23:37:57 <ais523> yes, the functionals are pretty different
23:38:09 <ais523> you might also want to look at languages like Thue and ///
23:38:17 <ais523> which is a different paradigm again
23:38:23 <Slereah> Writing a mathematical function in Brainfuck is as easy to do as a CAT program in Unlambda :D
23:38:49 <marshmallows> hehe
23:39:01 <oklopol> in thue, the way i program, is basically to simulate something like a a turing machine
23:39:06 <oklopol> just much harder
23:39:11 <marshmallows> thue is so cool o_o
23:39:23 * Slereah never had the courage to read up Thue
23:39:31 <marshmallows> oh I wrote a thue-ish interpreter too!
23:39:35 <ais523> what other paradigms are there?
23:39:45 <marshmallows> I have implement lots of langs but not invented :/
23:39:54 <ais523> there are object-oriented langs like Glass and ORK
23:39:56 <Slereah> Cellular automatons?
23:39:58 <Slereah> Also bully
23:40:02 <marshmallows> Procedural, Logic, Functional
23:40:04 <oklopol> hmm... weird kolmogorov thing no one understands, are there esolangs based on it?
23:40:10 <oklopol> Slereah:
23:40:13 <oklopol> ^
23:40:14 <Slereah> oklopol: Well, I'm trying.
23:40:22 <ais523> oklopol:Andrei Machine 9000
23:40:25 <marshmallows> Declarative, Constraint, Term Rewriting, Cellular
23:40:27 <Slereah> Although right now, I have a lot of school.
23:40:28 <oklopol> oh, right :D
23:40:34 <ais523> there are langs like Flip, BackFlip, and Black
23:40:51 <oklopol> *the weird
23:41:13 <Quendus> ok, that should be enough to distract me from matrices :>
23:41:14 <Slereah> And multi-paradigm.
23:41:20 <Slereah> Like the dysfunctional languages :D
23:42:02 <oklopol> no one mentioned stack based langs?
23:42:07 <oerjan> Smetana and Smatiny
23:42:09 <oklopol> concatenative
23:42:24 <oklopol> also destructor-based languages, they are a bit hit
23:42:26 <oklopol> :D
23:42:30 <ais523> well, I mentioned Underload
23:42:32 <Slereah> Destructor based?
23:42:43 <oerjan> well yeah if they weren't just vaporware i guess :)
23:42:44 <oklopol> Slereah: oerjan's reaper
23:42:50 <ais523> there's also Sceql, a queue-based lang
23:42:50 <oklopol> oh
23:42:55 <oklopol> then there's nopular programming
23:42:59 <oklopol> for instance nopol
23:43:00 <oerjan> o_O
23:43:09 <oklopol> where no program does absolutely anything.
23:43:11 <oklopol> hmm
23:43:14 <oklopol> err
23:43:14 <ais523> and OISCs like Subskin, SMATINY (not quite an OISC but similar), and MiniMAX
23:43:20 <oklopol> where every program does absolutely nothign.
23:43:21 <Slereah> Oh, like Unecessary or minimal
23:43:23 <oklopol> *nothing
23:43:32 <marshmallows> LAZY!
23:43:34 <oerjan> oklopol: i preferred the first explanation
23:43:52 <oklopol> hmm, just sounded weird at first
23:43:53 <Slereah> There's the social esolangs.
23:43:55 <marshmallows> Stacky, Consey, Array-based
23:43:56 <Slereah> Such as IRP
23:43:56 <oklopol> irp!
23:44:02 <oklopol> chirp chirp
23:44:05 <marshmallows> hash table based ;p
23:44:32 <oklopol> hash tables are a special function, paradig...mically speaking
23:44:33 <oerjan> would Turkey Bomb be a social esolang?
23:44:36 <marshmallows> is there any good IRP -bot-?
23:44:48 <oklopol> special case of functions
23:44:58 <oklopol> asdasdf, i can't form sentences today
23:45:00 <oerjan> marshmallows: i made an IrpBot but i wouldn't call it good...
23:45:04 <ais523> is there a hashtable-based esolang?
23:45:05 <marshmallows> :D
23:45:19 <ais523> oerjan: if it just did all the examples on the wiki page, it would probably be good enough
23:45:23 <marshmallows> ais523: I think adu described one here but didn't implement it
23:45:50 <oerjan> ais523: oh nothing like that
23:45:55 <oklopol> oh, then there's tag systems... not sure if they actually belong to some category
23:46:02 <oklopol> i'd call them queue-based languages
23:46:14 <ais523> how could I have forgotten cyclic tag?
23:46:26 <oklopol> indeed, you're the WCT guy
23:46:26 <ais523> it's really good at proving TCness of /very/ simple systems
23:46:45 <ais523> and it's the lang I proved the 2,3 Turing machine could emulate
23:47:03 <Slereah> Also, uncomputable langs
23:47:10 <oklopol> hmm... aren't they actually the ideal model for queue-based langauges? i think people have talked about making a queue-based language, but haven't heard the comparison to tag systems
23:47:11 <Slereah> Although they're kind of uncomputable.
23:47:15 <oklopol> *languages
23:47:30 <oklopol> *i haven't heard
23:47:51 <ais523> yes, I wonder why nobody mentioned that during the creation of Qdeql and Sceql
23:50:54 <ais523> there's ordinary tag as well as cyclic tag, of course
23:51:35 <Slereah> No freeze tag?
23:52:01 <ais523> Slereah, what's that?
23:52:26 <oklopol> a game
23:52:32 <oklopol> kids play it
23:52:43 <Slereah> A variation of the one the tag system is based on.
23:52:51 <Slereah> Well, named from
23:53:20 <oklopol> what's ordinary tag?
23:53:24 <ais523> Slereah: how does it work?
23:53:41 <ais523> oklopol: you repeatedly disregard the first n characters of a queue
23:53:49 <Slereah> IIRC, like normal tag, but when someone is it, he can't move
23:53:59 <Slereah> He can move again if another player unfreeze him
23:54:01 <ais523> then put something on the end of the queue that depends on the head of the queue
23:54:33 <ais523> it can be compiled into cyclic tag easily
23:54:37 * oerjan thinks a tag game where 'it' cannot move would be a tad boring
23:54:42 <oklopol> umm, and cyclic tag different how?
23:54:59 <oklopol> actually, 'it' doesn't change
23:55:01 <Slereah> oerjan: The "it" guy remains the same
23:55:10 <Slereah> But he has to tag everyone.
23:55:10 <oerjan> thought so ;)
23:55:12 <Slereah> I think
23:55:16 <Slereah> It's been a while
23:56:01 <ais523> ah, you can't move if you're tagged, and you can be released by anyone who hasn't been tagged?
23:56:03 <oklopol> *tag is
23:56:10 <oklopol> ais523: yeah
23:57:04 <oklopol> fun game for everyone except the poor bastard who happens to be 'it'
23:57:10 <Slereah> Heh.
23:57:41 <ais523> oklopol: you remove the first character from the queue each time. If it's a 1, you add a string to the end of the queue that depends on the number of steps the system has run, modulo some constant
23:57:57 <oklopol> oh, right
23:58:16 -!- Judofyr has quit.
23:59:00 <ais523> so a tag system examines every nth character, and has often more than two characters available, but adds something at every step
23:59:25 <oklopol> hmm... i may have asked before, but does anyone know anything about the complexity of the 1 -> 11 -> 21 -> 1211 -> 111221 -> 312211 thing?
23:59:29 <ais523> whereas a cyclic tag system examines every character, adds something only on one character (so only two characters are available), but what is added depends on the number of steps the system has been running
23:59:48 * ais523 has to go home
23:59:52 -!- ais523 has quit ("bye!").
2008-03-22
00:00:59 <oklopol> that seems to be complex enough not to be predictable, but doesn't seem to leave much room for anything sensical
00:01:17 <oklopol> i shall run it a few thousand steps
00:04:54 <oklopol> heh
00:04:59 <oklopol> exponential, it seems
00:05:07 <oklopol> perhaps that should've been clear
00:05:09 <Slereah> Well, it's esolangs.
00:05:18 <Slereah> What were you hoping, o(0)?
00:05:40 <oklopol> in most esolangs, modularity is fairly simple to do
00:06:30 <oklopol> *or* they are easy to compile to something that was hell to prove universal, but some mathematician luckily did it millions of years ago
00:06:48 <oklopol> hmph
00:06:51 <oklopol> python crashed
00:07:10 <Slereah> Oh noes :o
00:07:34 <oklopol> so much fun writing a program in the shell just to lose it right away, because i don't realize the interpreter and my os sucks
00:07:56 <oklopol> well, i guess i can rewrite it, took like 40 seconds :D
00:08:22 <oklopol> rofl, time me
00:08:24 <oklopol> rewrite time
00:09:25 <oklopol> ready
00:09:34 <oklopol> darn, minute
00:09:36 <oklopol> let's see if it works...
00:09:49 <oklopol> it does
00:09:59 <oklopol> well, could've been worse
00:10:44 <oklopol> 1
00:10:44 <oklopol> 11
00:10:44 <oklopol> 21
00:10:44 <oklopol> 1211
00:10:44 <oklopol> 111221
00:10:44 <oklopol> 312211
00:10:46 <oklopol> 13112221
00:10:48 <oklopol> 1113213211
00:10:50 <oklopol> 31131211131221
00:10:52 <oklopol> 13211311123113112211
00:10:54 <oklopol> 11131221133112132113212221
00:10:56 <oklopol> see any structures?
00:11:18 <Slereah> Yes
00:11:23 <Slereah> It's the look-and-say sequence
00:11:43 <oklopol> yes, but we are talking turtles
00:12:04 <oklopol> i was assuming everyone was familiar with that, not having a quiz
00:12:06 <Slereah> Are we known for our ninjustsu?
00:12:27 <oklopol> minute...
00:12:31 <oklopol> :<<
00:12:49 <oklopol> that's so trivial algorithmically it shouldn't take time at all
00:12:51 <oklopol> it should just be
00:13:09 <oklopol> i'll try it in j
00:13:23 <oklopol> probably better not to time me this time :)
00:13:59 <oklopol> hmm...
00:14:31 <oklopol> group + map (\a -> count a, pick first a)
00:14:57 <oklopol> map (\a -> (length a, head a)) $ group s
00:15:01 <oklopol> except it's not group
00:15:13 <oklopol> and there probably isn't anything exactly like that
00:15:19 <oklopol> oerjan to the rescue, perhaps
00:17:22 <oerjan> certainly. in fact the wikipedia page is on my watchlist
00:17:42 <oklopol> {{#_,.a}\grp} in oklotalk, i think
00:17:56 <marshmallows> (length &&& head)
00:18:03 <oklopol> cool
00:18:04 -!- Corun has quit ("This computer has gone to sleep").
00:18:13 <oerjan> after a number of iterations it split into Conway's elements. From there on it is a simple substitution
00:18:24 <oerjan> *splits
00:18:29 <oklopol> conway's elements?
00:18:33 <oerjan> oh you meant the haskell?
00:18:40 <oklopol> that too
00:18:48 <oklopol> but marshmallows kinda beat you to it with a cooler solution
00:18:54 <oklopol> errr
00:19:10 <oklopol> or not, was just just for my lambda?
00:19:22 <marshmallows> I just pointlessed (\a -> (length a, head a))
00:19:27 <oklopol> yeah
00:19:36 <oklopol> group was my problem
00:19:40 <oklopol> because i don't think that's correct
00:19:52 <marshmallows> group is right
00:19:57 <oklopol> ofc, {{#_,._}\grp}
00:20:03 <marshmallows> oh ..
00:20:06 <oerjan> http://en.wikipedia.org/wiki/Look-and-say_sequence, look for Cosmological Theorem
00:20:43 <oklopol> &&& is definable in oklotalk too, &&&={a b->{a_,b_}}
00:21:10 <oklopol> takes two arguments, returns a function that returns a tuple with functions a and b used on the argument
00:21:27 <oklopol> &&&={A B->{a_,b_}} actually
00:21:55 <oerjan> also the constant, which explains your exponential growth (in fact the polynomial comes out of the eventual substitution i believe)
00:22:04 -!- Corun has joined.
00:22:13 <oklopol> i don't think you can make it any simpler
00:22:16 <oklopol> oerjan: i'll look now
00:22:24 <oklopol> was doing my oklotalks very intensely
00:22:26 <oerjan> that part actually is slightly related to my PhD
00:22:27 <marshmallows> can you do it in thue!?
00:22:36 <oklopol> marshmallows: &&&?
00:22:42 <marshmallows> generate the sequence
00:22:49 <oklopol> sure
00:22:54 <oklopol> but J first
00:23:23 <olsner> thue is turing complete, so there is no way for it not to be able to generate the sequence :P
00:23:31 <marshmallows> yeah but can you do it :P
00:23:35 <marshmallows> I don't think I could
00:23:42 <oklopol> oerjan: i'll read your papers when i've gathered some additional ownage.
00:23:52 <oklopol> i mean, those crazy mathematical papers of yours
00:24:32 <Slereah> Is oklopol TC enough to do it?
00:24:37 <olsner> wow, "Conway's constant is the unique positive real root of the following polynomial:"
00:25:00 <olsner> ... but my VAX only supports polynomials up to degree 31
00:25:09 <oklopol> x71 - x69 - 2x68 - x67 + 2x66 + 2x65 + x64 - x63 - x62 - x61 - x60 - x59 +
00:25:09 <oklopol> 2x58 + 5x57 + 3x56 - 2x55 - 10x54 - 3x53 - 2x52 + 6x51 + 6x50 + x49 + 9x48 - 3x47 -
00:25:09 <oklopol> 7x46 - 8x45 - 8x44 + 10x43 + 6x42 + 8x41 - 5x40 - 12x39 + 7x38 - 7x37 + 7x36 + x35 -
00:25:09 <oklopol> 3x34 + 10x33 + x32 - 6x31 - 2x30 - 10x29 - 3x28 + 2x27 + 9x26 - 3x25 + 14x24 - 8x23 -
00:25:09 <oklopol> 7x21 + 9x20 + 3x19 - 4x18 - 10x17 - 7x16 + 12x15 + 7x14 + 2x13 - 12x12 - 4x11 -
00:25:09 <oklopol> 2x10 + 5x9 + x7 - 7x6 + 7x5 - 4x4 + 12x3 - 6x2 + 3x - 6
00:25:11 <oklopol> i lolled :)
00:25:16 <Slereah> THE LOOK AND SAY SEQUENCE HAS BEEN DESTROYED BY NINJAS
00:25:18 <Slereah> ARE YOU TC ENOUGH A DUDE TO GENERATE THAT SEQUENCE?
00:25:24 <marshmallows> lol
00:25:43 <olsner> oklopol: or as 4chan would have it: <polynomial> ... I came
00:25:49 <oklopol> flood, lolling and capital letters, esoteric at its best :P
00:27:07 <oklopol> oerjan: in fact, i'll promise to read them 2012, if we both are still around.
00:27:58 <Slereah> 2012 is the end of the world, don't you know?
00:28:19 <oerjan> oklopol: if you take the 92 elements of conway and set up a matrix of how they turn into each other in one step, then the constant is the largest eigenvalue of that matrix
00:29:03 <oklopol> eigenvalue?
00:29:04 <oerjan> (the only positive one, actually)
00:29:27 <oklopol> i think i've looked that up before...
00:29:40 <oerjan> an eigenvalue of a matrix is a value l such that there exists a vector v such that M v = l v
00:29:46 <Slereah> Eigenvalue is k if Ax = kx
00:30:17 <oerjan> to find them, you solve the equation det(lI - M) = 0, which probably is that polynomial
00:30:24 <Slereah> It be them numbers on the diagonal in a diagonalised form
00:30:39 <oklopol> well at least i get how the equation is formed then
00:30:57 <oklopol> well polynomial
00:31:22 <oerjan> actually there probably is some simplification going on, since it doesn't have degree 92...
00:31:55 <Slereah> What, no 92x92 matrix? :o
00:32:15 <oerjan> so the polynomial on the page may be a factor of the full one
00:32:46 <oerjan> or perhaps some terms really are zero from the start
00:33:11 <Slereah> Remember the trick : if you can't solve a 92x92 matrix, just write "The margin is too thin for me to write the proof".
00:33:16 <oklopol> i really have no matrix intuition
00:33:19 <Slereah> It worked great!
00:33:40 <oerjan> Slereah: if you have time to wait a few hundred years...
00:33:42 <oklopol> yeah, then just leave the paper around for a few hundred years and you'll have the answer
00:33:49 <oklopol> darn
00:33:55 <oklopol> i was pwned bad
00:34:28 * oklopol is oerjan's slow win
00:34:31 <oklopol> *twin
00:34:39 <Slereah> What I find amusing is that Conservapedia doesn't like Andrew Wiles proof.
00:34:52 <Slereah> They say it uses the CONTROVERSIAL AXIOM OF CHOICE
00:35:02 <Slereah> They probably think it's pro choice.
00:35:15 <oklopol> axiom of choise is so fake
00:35:40 <Slereah> I'm okay with it.
00:35:42 <marshmallows> :D
00:35:59 <oerjan> it's consistent with the others, as Godel proved
00:36:07 <marshmallows> I'm going to suggest the library I go to burn all books that mention the axiom of choice
00:36:14 <Slereah> Then again, so's its negation!
00:36:32 <oerjan> Slereah: so you have a choice!
00:36:35 <marshmallows> can you prove axiom of choice?
00:36:40 <marshmallows> :P
00:36:49 <Slereah> You can prove it in ZFC.
00:37:04 <oklopol> what about KFC?
00:37:09 <Slereah> a -> a
00:37:11 <Slereah> Axiom of choice -> axiom of choice
00:37:14 <oerjan> you can prove that you cannot prove it or disprove it, unless ZF without it is inconsistent
00:37:17 <Slereah> Axiom of choice is true
00:37:18 <Slereah> Axiom of choice -> axiom of choice
00:37:20 <Slereah> is true
00:37:26 <Slereah> Then axiom of choice is true
00:37:30 <marshmallows> o_O
00:37:45 * oerjan puts a big F on Slereah's logic exam
00:37:50 <Slereah> Whaaaaat
00:37:58 <Slereah> I said in ZFC
00:38:04 <oerjan> ah
00:38:07 * marshmallows gives Slereah and A, for A..d-hoc
00:38:13 <Slereah> :D
00:38:29 * oerjan hides the F under his bed
00:39:18 <oklopol> oerjan: or just give it to me
00:39:26 <oklopol> you'll get your l back...
00:39:29 <oerjan> but you already got an 'l'
00:39:37 <oerjan> darn
00:39:41 <oklopol> i'm willing to trade
00:39:58 * oerjan notes oklopol didn't note his repwning
00:40:00 <oklopol> i have a k and nothing to combine it with, so i might just as well use it
00:40:11 <oklopol> oerjan: i have a different joke, actually
00:40:13 <oklopol> :)
00:40:42 <oklopol> also what repwning?
00:40:44 <oklopol> i can't see it.
00:40:50 <oerjan> and then buy a 'u' and a 'c' on ebay?
00:41:18 <oerjan> oklopol: you mentioned the 'l' before i did
00:41:23 <Slereah> Fkuc? What kind of silly word is that.
00:41:45 <oerjan> Slereah: it's popular in dyslexic circles, i hear
00:42:01 <oklopol> oerjan: in that case, i was the one doing the pwning, while you did it last time
00:42:10 <oerjan> yes
00:42:11 <oklopol> anyway, i actually would like the f.
00:42:24 <oerjan> very well. here: F
00:42:28 <oklopol> thanks
00:42:30 -!- oklopol has changed nick to oklofok.
00:42:47 <oklofok> funny, i actually need to pee now.
00:42:47 <oklofok> ->
00:44:34 * marshmallows tries to invent an esolang
00:44:48 <Slereah> Try Freeze Tag!
00:45:49 <marshmallows> maybe I should do something based around linear logic
00:45:57 <olsner> I was thinking about building a programming language somewhat like haskell, but with only monads (and as little as possible of all that function stuff)
00:45:57 <marshmallows> I just read about that yesterday..
00:46:05 <marshmallows> lol
00:46:22 <marshmallows> sounds like you would get *really* good PR
00:46:39 <olsner> the problem lies in eliminating all the usable stuff
00:51:02 <olsner> then I had an idea of a super-polymorphic haskell dialect, with everything including functions as type classes (presumably with a primitive function type and application operator available somewhere)
00:51:32 <marshmallows> M++
00:54:18 * Slereah just had a stupid idea.
00:54:35 <Slereah> WHAT WOULD HASKELL LOOK LIKE IF GERMANY WON WWII :O
00:54:48 <Slereah> It's just an excuse to use the old German notations.
00:54:57 <Slereah> Or something like that
00:54:58 <oerjan> we present: the ERWIN language
00:55:11 <oerjan> (shades of Irregular Webcomic, and Schrodinger)
00:55:32 <marshmallows> haha
00:55:35 <marshmallows> Oh my god
00:56:34 <oerjan> oh wait
00:56:44 <oerjan> that would have to be Werner, for Heisenberg
00:57:15 <Slereah> It would be a good excuse to make people share my pain
00:57:16 <Slereah> The old logical notations were crazily insane
00:57:20 <oerjan> (who at least possibly was a nazi)
00:57:29 <oklofok> erwin is like winner but nubbed and scrambled.
00:57:40 <oklofok> good point, oklo
00:57:47 * oklofok continues his readings
00:58:03 <olsner> did you just say "good point" to yourself?
00:58:06 <Slereah> But then again, Heisenberg was no computer scientist
00:58:38 <Slereah> Wasn't Curry originally in Germany?
00:59:01 <oklofok> olsner: yes.
01:00:14 <olsner> uhm, okay
01:00:37 <oerjan> olsner: what do you expect from someone who keeps changing nicks?
01:03:12 <oerjan> IT'S A SIGN VON SCHIZOPHRENIA UND DIE ANAL RETENTION
01:03:56 <Slereah> OKLONUT
01:04:10 <olsner> I CAN HAS CAPSLOCK TOO?
01:04:16 <oklofok> O
01:04:36 <oklofok> olsner: i tend to comment my own speech quite often.
01:04:51 <olsner> in real life too?
01:05:05 <oklofok> hmm... dunno
01:05:23 <oklofok> i rarely have irl conversations
01:05:58 <oklofok> i think i do do it.
01:06:07 <Slereah> Lol
01:06:10 <Slereah> do do
01:06:10 <olsner> heh
01:06:21 <oklofok> yes, that was the real point of what i was saying
01:06:24 <olsner> whut, that's perfectly grammatical
01:06:40 <oklofok> being able to talk about excrete non-explicitly
01:06:52 * marshmallows has seen "that that" and "house house" in grammatically valid sentences
01:06:57 <Slereah> oklofok's entire presence presence here has been just one long set up.
01:07:11 <Slereah> That Oklotalk? All smokes and mirrors
01:07:14 <oklofok> :)
01:07:16 <Slereah> It's all about the doodoo
01:07:17 <olsner> oklofok: excrete?
01:08:13 <oklofok> doesn't the concept of excrete also include poo?
01:08:19 <olsner> excrete != excrement, I hope
01:08:22 <oklofok> ah
01:08:34 <oklofok> excrete can be bodily wastes or something, i think, too
01:08:54 <olsner> or, "I hope you weren't talking about excrement"
01:08:59 <oklofok> DICTINOARY ADVENTURE TIME
01:09:05 <olsner> indeed
01:09:06 <oklofok> *DICTIONARY
01:09:14 <Slereah> *wiktionary
01:09:18 <oklofok> i was talking about excrement, isn't that what do do s
01:09:20 <oklofok> *is
01:10:07 <oklofok> der lehrer hat gesagt das, dass das "dass, das", das das kind gesagt hast, recht ist
01:10:10 <oklofok> or something
01:10:32 <oklofok> and there was something in french with even more homonymes, although i don't remember the word
01:10:40 <oklofok> i think it had "s" and meant at least "6"
01:10:51 <olsner> you probably have to put it "doo doo" for the reference to excrement to come across
01:11:05 <oklofok> olsner: Slereah got it without it
01:11:16 <olsner> uraniwa niwa niwa niwa niwa niwa niwatori ga iru
01:11:24 <Slereah> Well, I am totally awesome
01:11:35 <oklofok> and you can just assume i only talk about sex/shit when i'm not talking about programming.
01:11:40 * oerjan is reminded about the news tidbit about some japanese company who called their candy "dew dew"
01:11:58 <oklofok> also i talk about puppies
01:12:19 <olsner> puppies, sex and shit... well, what else is there to life except programming?
01:12:30 <Slereah> The three at the same time?
01:12:45 <Slereah> Just ask the internet, I'm sure you'll find it!
01:12:53 <oerjan> otoh the Bonbon company around here seems to use that kind of naming for all their candy
01:12:53 <oklofok> well, i also like kids, but i think the context may not be good for saying that.
01:13:07 <oerjan> (on purpose)
01:13:22 <oklofok> here too!
01:13:42 <olsner> sex and shit, definitely already done... puppies and sex, sure... puppies and shit, obviously... I guess you do have to go all three to find a new genre
01:14:09 <oklofok> hmm, i actually haven't seen anything with all three
01:14:38 * oerjan is slightly disturbed by the implication that oklofok has seen all the other combinations
01:14:43 <oerjan> only slightly, though
01:14:43 <olsner> it'd be beastiality scat porn... shouldn't take 4chan more than a minute or two to find
01:14:54 <olsner> oerjan: what, you haven't?
01:15:01 <oklofok> the last one is not really that weird, i've seen dogs poo
01:15:14 <Slereah> http://img183.imageshack.us/img183/2196/blanksp2.jpg
01:15:24 <oerjan> true dat
01:15:48 <oerjan> and i've probably seen dogs fucking too, come to think of it
01:15:48 <oklofok> but it is a well-known fact you don't wanna peek in my collection.
01:16:03 * Slereah peeks
01:16:05 -!- timotiis has quit ("leaving").
01:16:08 <oerjan> not that i actually remember
01:16:15 <Slereah> I've never seen so much rubber!
01:16:26 <marshmallows> I got humped by a dog once o_o
01:16:30 <oklofok> "i wish... it's Whitespace!"
01:16:36 <Slereah> :D
01:16:39 <oerjan> if i _had_ a collection you wouldn't want to peek in it, but i don't
01:16:39 <olsner> oklofok: that's a compliment to your collection that
01:16:40 <oklofok> marshmallows: almost, or actually?
01:16:41 <Slereah> oklofok, you win.
01:16:53 <marshmallows> I'm not sure how to tell the difference
01:17:03 <marshmallows> I didn't consent!
01:17:10 <Slereah> RAPE
01:17:26 <oklofok> marshmallows: did it get inside you?
01:17:30 <oklofok> did you report it?
01:17:32 <marshmallows> no :P
01:17:33 <marshmallows> lol
01:17:37 <oklofok> the dog would get like 10 years
01:17:46 <Slereah> Hve you sought psychological help?
01:17:52 <Slereah> We're here for you marshmallows
01:17:58 <oklofok> :P
01:18:00 <oerjan> oklofok: only dog years though
01:18:03 <oklofok> i've never believed in traumas
01:18:05 <marshmallows> I have been through struggling on my own..
01:18:07 <oklofok> oerjan: naturally
01:18:30 <oklofok> in fact, i was gonna make a dog year joke, but i knew you'd do it
01:19:08 <oklofok> i guess dog+year is quite an obvious set-up for a dog year joke
01:19:09 <oerjan> maybe we should start a comedy troupe
01:19:30 <oklofok> yes! it's just #esoteric logs flashing through the screen
01:19:40 <Slereah> We'd probably cram in more obscure reference than a group of Dennis Miller!
01:20:41 <oklofok> if there was a show for programmers, i'd watch it
01:20:56 <olsner> though you/we haven't been particularly obscure lately, mostly talk about poop and dogs
01:21:15 <Slereah> Well, only in the last five minutes.
01:21:23 <oerjan> "Watch this guy juggle _four_ monadic frameworks at once"
01:21:25 <Slereah> Plus, oklofok's whitespace joke made me lol.
01:21:34 <oklofok> yes, we actually had nazi jokes too, a while back
01:21:46 <oklofok> hehe, yeah, i was kinda fun :)
01:21:50 * oklofok pats itself
01:22:26 <olsner> * oklofok regresses to an 'it'
01:23:02 <oklofok> i do that occasionally
01:23:23 <oklofok> i used to date this chick who called herself that, it became something of a pet name
01:23:31 <oklofok> or whatwouldyacallit
01:23:45 <marshmallows> how can someone call themselves 'that'?
01:23:54 * oerjan regresses to an 'xfwlkscprtsk'
01:23:54 <olsner> was that a reflexive that or a literal that - 'that' or 'itself'?
01:23:58 <oklofok> not 'that', 'it'
01:24:12 * oerjan somehow doubts it will become a pet name though
01:24:15 <oklofok> damn you implicit quoting
01:24:46 <olsner> implicit quoting, heh, perl does that
01:24:49 <oklofok> actually she used both "i" and "it"
01:24:51 <oerjan> don't say it!
01:24:57 <oklofok> i never quite got to know how serious that was
01:25:16 <oerjan> maybe she had a Caesar complex
01:25:20 <oklofok> perhaps
01:26:13 <olsner> oh, sorry, programming-language-that-must-not-be-named does that
01:26:23 <oerjan> watch out for when she becomes president
01:26:44 <oerjan> or would prime minister be scarier? not sure of the finnish system
01:26:55 <oklofok> you know as much as me.
01:27:04 <olsner> finland has a president
01:27:12 <oklofok> (president does really nothing here)
01:27:21 <oerjan> ic
01:27:28 -!- jix has quit ("CommandQ").
01:27:30 <oerjan> so prime minister would be scarier
01:27:44 <oerjan> or perhaps defense minister
01:27:55 <oklofok> but i'm not proud i know what "president" means, politics are my no-touch zone
01:28:04 <olsner> they have a female one, last time I checked (which was 10 years ago or something)
01:28:24 <olsner> oklofok: wow, I like your view on politics!
01:28:26 <oklofok> we haven't had a female president for that long, but we do currently.
01:28:38 <oklofok> hmm, actually
01:28:41 <oklofok> i'm not sure we do :)
01:28:46 <oklofok> but most likely
01:29:36 <oklofok> i'm fairly separated from the society, except for a few friends
01:29:41 <marshmallows> "we" is which place?
01:29:50 <oklofok> err finland
01:29:54 <marshmallows> ok
01:30:03 <oerjan> the United Kingdom of Europe, of course
01:30:25 <olsner> marshmallows: you never know which oklofok you're talking to though, it could change
01:31:08 <oklofok> yes, currently, i'm a collective entity, the whole population of finland.
01:31:35 <SimonRC> ok, that line needs context
01:31:46 <SimonRC> yay, go Dilbert! http://www.dilbert.com/comics/dilbert/archive/dilbert-20080316.html
01:32:06 <oklofok> is it about esolangs?!?!?!?
01:32:08 <oklofok> i'll look
01:32:14 <SimonRC> no
01:32:17 <SimonRC> but it is geeky
01:32:20 <SimonRC> ish
01:32:26 <SimonRC> well *I* liked it
01:33:08 <SimonRC> I would read the recent conversation, but I CBA telling the three o-names apart
01:33:19 <olsner> I dislike how dilbert became the besserwisser - it makes it hard to decide which one's the protagonist in the story
01:33:22 <Slereah> http://membres.lycos.fr/bewulf/Divers2/dilbert-20-11-1998.gif
01:33:26 <Slereah> http://membres.lycos.fr/bewulf/Divers2/dilbert-26-01-1999.gif
01:33:30 <Slereah> Am I doin it rite?
01:33:36 <olsner> and the PHB actually comes of as having a clue
01:33:54 <olsner> *off
01:34:21 <oklofok> we are clearly not wanted here, o-guys, #o-club (LNFAJ)
01:34:38 <SimonRC> oklofok: define: "LNFAJ"
01:34:46 <oklofok> link not for actually joining, my new
01:34:49 <oklofok> acronym
01:35:09 <SimonRC> ok
01:35:13 * olsner was a split-second away from actually joining
01:35:18 * oerjan notes that currently #haskell seems as weird as #esoteric. although lament _is_ partly to blame
01:35:19 <oklofok> :)
01:36:09 <Slereah> http://membres.lycos.fr/bewulf/Divers/penrose2.png
01:36:12 <olsner> zombies, hitler and tesla coils, all in a few lines of irc3!
01:36:21 <Slereah> Penrose tensor notation
01:36:42 -!- cherez has quit ("Leaving.").
01:37:19 <oklofok> http://membres.lycos.fr/bewulf/Divers/penrose2.png <<< this is a joke too?
01:37:30 <oklofok> just checking, because i'm going to stare at it till i get it
01:37:50 <Slereah> It is no joke
01:38:07 <oklofok> that is not the correct answer
01:38:34 <Slereah> Although I already don't understand most of regular tensor notations, so it's hard to read!
01:38:48 <oklofok> what a regular tensors?
01:39:03 <oklofok> what a regular tensor!
01:39:04 <oklofok> i mean
01:39:06 <oklofok> what are the
01:39:08 <oklofok> y
01:39:09 <oklofok> :D
01:39:10 <Slereah> Tensor.
01:39:17 <Slereah> But written in a usual way, i mean
01:39:33 <SimonRC> I know FA about tensors
01:39:35 <Slereah> Unlike the bugs that Penrose uses
01:39:42 <Slereah> FA?
01:39:44 <SimonRC> except they are higher-dimensional matrices
01:39:55 <SimonRC> Fanny Arbuckle
01:39:56 <Slereah> Pretty much.
01:40:05 <SimonRC> or rather, Fuck All
01:40:10 <SimonRC> that is, not much
01:40:59 <Slereah> Just a bunch of n dimensionl matrix, that's pretty much it.
01:41:08 <Slereah> The rest is just the operations applied to them
01:41:15 <SimonRC> looks great
01:41:29 * SimonRC appreaciates a really spectacular notation.
01:42:10 <Slereah> In Penrose case's, the dimension is indicated by the number of legs. Or whatever you want to call them
01:42:53 <oklofok> i totally get what you mean
01:49:03 <SimonRC> It has to make the muggles go "Omg you can read that?!"
01:50:53 <Slereah> It wouldn't be fun otherwise!
01:50:57 <Slereah> "But it's so simple!"
01:54:29 <Slereah> Unlike the nancies in social science, people can't even begin to guess at all those symbols!
01:57:04 <lament> so like
01:57:13 <lament> haskell's type system IS turing-complete after all. I didn't realize.
01:57:26 <marshmallows> no it's not
01:57:45 <lament> they're discussing this in #haskell. GHC extensions are turing-complete.
01:57:46 <olsner> with extensions it is
01:57:52 <marshmallows> "GHC extensions"
01:58:04 <lament> so we already allow turing-completeness
01:58:16 <lament> but surely there's a much nicer way to allow turing-completeness than with GHC type system!
01:58:40 <oerjan> well the hoi polloi could always just use values
01:58:53 <olsner> I think the designers of haskell were cowards for not making it turing-complete and beautiful rather than its H98 limited mess
01:59:14 <olsner> but perhaps the lambda cube wasn't generally known at the time?
01:59:34 <marshmallows> olsner: Turing complete type systems = bugs
01:59:54 <marshmallows> You have a valid program you want to compile, yet it can never be compiled
02:00:06 <marshmallows> so the compiler does not fit its specification
02:00:49 <olsner> well, if you write a program with divergent types you're on your own
02:02:53 <olsner> besides, there are ways of modifying a TC type system to terminate in finite space and time without changing the type system itself (e.g. allowing a limited stack and heap for the type checker)
02:04:02 <oklofok> kinda like C++ does
02:04:10 <oklofok> (:P)
02:04:30 <olsner> incidentally, I think that's what cayenne is supposed to do, if augustss hasn't discontinued that project
02:04:38 <marshmallows> yeah, any standards conforming C++ implementation is buggy
02:05:24 <marshmallows> Cayenne is superseded by Agda 2
02:05:59 -!- shinkuzin has joined.
02:06:06 <olsner> yes, but probably not because of templates being turing complete
02:07:03 -!- shinkuzin has left (?).
02:16:24 -!- shinkuzin has joined.
02:17:27 -!- shinkuzin has left (?).
02:18:32 -!- RodgerTheGreat has joined.
02:21:50 -!- GreaseMonkey has quit (Read error: 104 (Connection reset by peer)).
02:23:26 -!- GreaseMonkey has joined.
02:24:57 -!- GreaseMonkey has quit (Client Quit).
02:30:56 -!- BMeph has joined.
03:07:19 -!- shinkuzin has joined.
03:28:23 * SimonRC reads some lolpresidents.com and goes.
03:49:00 <marshmallows> http://everything2.com/index.pl?node_id=550129
03:49:12 <marshmallows> fish are people too.
04:26:41 <RodgerTheGreat> hey guys, this story will haunt your dreams: http://www.seizureandy.com/stuff/guts.html
04:28:29 * oerjan reads just enough to decide to stop
04:29:35 <RodgerTheGreat> The ending is horribly perfect
04:31:02 <lament> i'm with oerjan
04:39:48 <RodgerTheGreat> it's disgusting, yes, but at the same time I can't help but admire the writing and storytelling technique
04:48:48 -!- shinkuzin has quit (Connection timed out).
05:05:12 <olsner> too long didn't read; he gets stuck on the inlet of the pool cleaning pump and passes out?
05:06:14 <RodgerTheGreat> oh, no
05:06:20 <RodgerTheGreat> much much worse
05:07:33 <olsner> wow, I only had to read a few paragraphs more to get to the really exciting part
05:09:25 <Sgeo> Bye all
05:09:37 <oerjan> bye
05:09:48 -!- Sgeo has quit (Remote closed the connection).
05:09:54 <RodgerTheGreat> definitely makes me want to read "Fight Club". I like the style- very vivid imagery.
05:10:53 <olsner> "Then my sister missed her period." ... hey, that part can't be true
05:13:28 <RodgerTheGreat> lol
05:14:35 <olsner> well, /me goes to sleep
05:14:38 <RodgerTheGreat> cya
05:32:22 -!- Corun has quit ("This computer has gone to sleep").
06:29:32 -!- RodgerTheGreat has quit.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:59:04 <oklofok> okay i gotta admit that was quite a story :D
11:29:41 -!- oerjan has quit ("leaving").
11:47:44 -!- Judofyr has joined.
11:53:12 <AnMaster> Deewiant, Funge98 author just gave me permission to work on a draft for a new standard :)
11:57:14 -!- jix has joined.
12:06:27 -!- BMeph has quit ("calls it a night").
13:09:15 -!- timotiis has joined.
13:56:33 -!- Tritonio_ has quit (Remote closed the connection).
14:00:35 -!- Tritonio_ has joined.
14:15:13 -!- Corun has joined.
14:23:35 <AnMaster> Deewiant, a very early draft http://rage.kuonet.org/~anmaster/funge-108/funge108.pdf very much work in progress (108 was the name Chris Pressey wanted, "years since 1900")
14:38:42 -!- Corun has quit ("This computer has gone to sleep").
14:38:53 -!- slereah_ has joined.
14:49:41 -!- slereah__ has joined.
14:50:34 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
14:50:34 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
15:29:06 -!- Corun has joined.
15:44:40 -!- Corun has quit ("This computer has gone to sleep").
16:18:49 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
16:19:20 -!- slereah__ has joined.
16:46:08 -!- slereah_ has joined.
16:46:29 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
17:11:33 -!- timotiis has quit ("leaving").
17:34:47 -!- timotiis has joined.
17:53:28 -!- Corun has joined.
18:01:52 -!- ehird has joined.
18:05:30 -!- timotiis has quit ("leaving").
18:05:41 -!- timotiis has joined.
18:45:00 <ehird> hell-o
18:45:18 <marshmallows> yo ehird
18:56:34 <ehird> marshmallows: this macro is interesting
18:56:35 <ehird> #;1> (define-macro (foo . args) `'(foo ,@args))
18:56:45 <ehird> i can see a quine using it
18:58:19 <ehird> also
18:58:19 <ehird> #0=(begin (write (quote #0#)) (newline))
18:58:21 <ehird> :D
19:00:09 <marshmallows> weird
19:00:10 <marshmallows> #;> #0=(begin (write (quote #0#)) (newline))
19:00:10 <marshmallows> #0=(begin #@(((source-file . "console") (line-number . 1) (column-number . 11) . #1=((source-kind . user))) . (write #@(((source-file . "console") (line-number . 1) (column-number . 18) . #1#) . (quote #@(((source-file . "console") (line-number . 1) (column-number . 4) . #1#) . #0#))))) #@(((source-file . "console") (line-number . 1) (column-number . 31) . #1#) . (newline)))
19:00:24 <marshmallows> in SISC
19:00:29 * slereah_ is schemed away D:
19:01:21 -!- marshmallows has left (?).
19:01:27 -!- marshmallows has joined.
19:04:39 <ehird> marshmallows: hmm
19:04:46 <ehird> use mzscheme
19:04:46 <ehird> :P
19:04:56 <ehird> but that is bizzare
19:05:03 <ehird> weirdly recursive
19:05:51 -!- sebbu2 has joined.
19:05:53 -!- sebbu has quit (Read error: 145 (Connection timed out)).
19:06:13 -!- sebbu2 has changed nick to sebbu.
19:12:59 <marshmallows> ehird, do you think it's bad .. the way IRC has divided itself into programming language specific channels instead of say, paradaigm specific ones?
19:13:26 <slereah_> Aren't we a paradigm channel?
19:13:38 <marshmallows> yes
19:13:41 <marshmallows> I like this channel :D
19:14:04 <marshmallows> but #declarative #procedural #functional .... all empty
19:14:41 <marshmallows> why?
19:15:17 <slereah_> Because it's usually easier to get help on a particular language than on a broad description of it, I suppose.
19:16:55 <slereah_> And esoteric can survive because really, there's not enough people to fill up chans of even the most popular esolangs
19:23:47 <ehird> marshmallows: #concatenative is n ot empty!
19:24:00 <ehird> slereah_: indeed, marshmallows's channels are too catch-all
19:24:05 <ehird> the concepts vary wildly between them
19:24:16 <ehird> #concatenative is basically a fancy way of saying #factor
19:24:19 <ehird> it's inevitable
19:24:53 -!- ehird has set topic: #esoteric - Extending Tetrationfuck to the reals with magnets. | Logs: http://ircbrowse.com/cdates.html?channel=esoteric | Wiki: http://esolangs.org/wiki/ | The Esoteric File Archive: http://esolangs.org/files/.
19:26:16 <marshmallows> have you seen Oz?
19:26:26 <ehird> briefly.
19:29:01 <lament> oz seems interesting but dead
19:29:46 <slereah_> Like Jesus?
19:29:56 <ehird> slereah_: jesus wasn't that interesting
19:30:16 <ehird> he was born to god, said some shit, died, undied, said some more shit, died, said he'd be back
19:30:18 <ehird> we're still waiting
19:30:34 <lament> marshmallows: i looked at mozart, found this: http://www.mozart-oz.org/mogul/
19:30:46 <lament> it's mozart's equivalent of CPAN
19:31:14 <ehird> i wonder if anyone has developed a decentralized CPAN alike
19:31:16 <lament> then i stopped looking :)
19:31:31 <lament> also the joyful announcement on their front page, "Current Mozart is 1.3.2 released on June 15, 2006
19:31:44 <ehird> lament: 2006 isn't that bad
19:31:50 <ehird> brainfuck's last release was in '93 :)
19:32:11 <lament> no, brainfuck's _standard_ was 93 :)
19:32:32 <lament> and C was 89 (discounting what followed), yet it's hardly dead
19:32:35 <marshmallows> I need ideas!
19:32:41 <slereah_> Brainfuck's ESO standard was 2008
19:32:51 <marshmallows> If I drink enough coffee will I have a good idea
19:32:59 <slereah_> No
19:33:03 <slereah_> You will have a stroke
19:33:22 <slereah_> Ideas for what marshmallows?
19:33:23 <ehird> lament: urban m?ller never released a brainfuck distro post 93
19:33:35 -!- shinkuzin has joined.
19:33:40 <marshmallows> Well I can't decide what to program next
19:33:49 <lament> marshmallows: forth!
19:34:07 <slereah_> Program the Andrei Machine 9000
19:34:13 <slereah_> That way, I won't have to
19:34:17 <lament> better yet. write your programming language that's way better than Haskell.
19:42:10 -!- BMeph has joined.
20:08:47 -!- Corun has quit ("This computer has gone to sleep").
20:18:42 -!- Judofyr has quit.
20:30:04 -!- Judofyr has joined.
20:42:40 -!- slereah_ has quit (Remote closed the connection).
20:43:11 -!- Slereah has joined.
21:00:29 -!- Corun has joined.
21:26:02 -!- Judofyr has quit.
22:18:34 -!- Corun has quit ("This computer has gone to sleep").
22:21:46 -!- bsmntbombdood has quit (Read error: 113 (No route to host)).
22:28:01 -!- bsmntbombdood has joined.
22:37:51 <ehird> channel: dead all day!
22:40:39 <oklofok> almost
22:59:02 -!- Judofyr has joined.
23:47:18 -!- BMeph has quit (Connection timed out).
2008-03-23
00:08:02 <marshmallows> trying to come up with an idea........................................
00:23:04 <marshmallows> It's a slow day
00:27:46 <marshmallows> "human imagination can always outstrip the capabilities of machines."?
00:35:43 -!- Corun has joined.
00:35:52 <ehird> marshmallows: that's called "AI scares me" theory
00:36:00 <marshmallows> hehe
00:36:13 <marshmallows> maybe I should do something AI-ish
00:38:51 <ehird> marshmallows: the suicide rate over there is quite high
00:38:59 <ehird> i reccomend against doing anything ;)
00:39:23 <marshmallows> ehird you should give me ideas for a logic lang ~_~
00:45:37 <marshmallows> cool stuff http://www.cs.ru.nl/~freek/comparison/comparison.pdf
00:47:50 <ehird> marshmallows: make it have just amb and some other primitive stuffaelr
00:47:55 <ehird> then implement the rest in the language
00:47:59 <ehird> (make the syntax extensible)
00:48:12 <ehird> the base of the self-hosted lib should ideally look like crazy stuff
00:48:23 <ehird> err
00:48:24 <ehird> arb
00:48:36 <ehird> err
00:48:36 <ehird> amb
00:52:54 <marshmallows> oh
00:53:09 <marshmallows> amb is implemented with call-with-current-continuation
00:53:26 <marshmallows> and call-with-current-continuation is a specific case of the J operator?
01:03:35 <oklofok> wuz J?
01:03:41 <oklofok> post-composes a lambda expression
01:03:46 <oklofok> what does that, like, mea
01:03:47 <oklofok> n
01:08:39 <ehird> marshmallows: amb is just a backtracking operator
01:09:02 <ehird> amb(a,b,c...) means 'pick one argument from the ones i give you and return it'
01:09:08 <marshmallows> you can't write amb without call-with-current-continuation
01:09:14 <marshmallows> in scheme.. anyway..
01:09:27 <ehird> amb() means 'backtrack and try another argument to a previous amb. if we've tried everything on all of the ambs, yell about it and fail'
01:09:32 <ehird> so e.g.:
01:09:50 <ehird> foo = amb(1,2,3); if (foo < 3) then amb()
01:09:54 <ehird> foo will end up being 3
01:10:09 <ehird> since amb will backtrack until it doesn't get called with no arguments (or is out of arguments)
01:10:13 <marshmallows> can you write amb in C with longjmp?
01:10:15 <ehird> note that it will try every amb in scope
01:10:19 <ehird> marshmallows: no.
01:10:23 <marshmallows> why not?
01:10:29 <ehird> it needs to call the continuation multiple times
01:24:02 <ehird> marshmallows: hmm, my amb in scheme isn't working
01:24:02 <ehird> very odd
01:24:30 <marshmallows> show me?
01:24:43 <ehird> marshmallows: only after you look at this: http://homepage.mac.com/sigfpe/Computing/continuations.html
01:24:45 <ehird> continuations in C
01:24:46 <ehird> very simple
01:24:46 <marshmallows> I wrote a (stream based) Prolog in scheme the other day
01:25:14 * ehird writes amb with it
01:25:26 <ehird> for integers ;)
01:25:31 <ehird> hm wait
01:25:36 <ehird> any type
01:25:36 <ehird> :D
01:25:46 <marshmallows> using a tagged union?
01:26:04 <ehird> marshmallows: no, using a typedef
01:26:04 <ehird> :p
01:26:08 <ehird> hmm
01:26:11 <marshmallows> heh ok
01:26:13 <ehird> variadic functions in c must be at least one argument
01:26:35 <ehird> how unfortunate, still, simple solution
01:26:41 <ehird> define _amb and make amb a macro
01:26:45 <ehird> a variadic macro, though, so c99
01:26:53 <marshmallows> :(
01:27:00 <ehird> #define amb(...) _amb(amb_dummy, __VA_ARGS__)
01:27:00 -!- timotiis has quit ("leaving").
01:27:16 <marshmallows> why not just call it amb(...) and fail();
01:27:35 <marshmallows> the main reason 0 arg amb is good is because of apply
01:27:36 <ehird> marshmallows: because it's va_start(ap, last_param)
01:28:08 <ehird> ah wait
01:28:10 <ehird> first arg == arg count
01:29:06 <ehird> marshmallows: but you're right
01:29:07 <ehird> ok then
01:29:35 <marshmallows> thats cool
01:29:38 <marshmallows> the page you linked
01:29:41 <ehird> yes
01:30:37 <marshmallows> this is actually what goto is for though
01:32:04 <olsner> goto <3
01:32:36 <ehird> marshmallows: can't do this with goto
01:32:44 <ehird> this jumps across stack frames, and is just like scheme's call/cc
01:32:49 <ehird> recallable too
01:32:49 <ehird> etc
01:32:58 <ehird> you could implement scheme using the c-stack then use that to provide call/cc
01:33:21 <ehird> so: very impressive, and practically useful too: schemes that go into c, into scheme, into c etc with their ffis generally only provide limited continuiations
01:33:24 <ehird> with this you can provide full continuations
01:34:06 <marshmallows> i = 2;
01:34:06 <marshmallows> redo0: j = 2; i++;
01:34:07 <marshmallows> redo1: j++; if(j > i) goto redo0;
01:34:07 <marshmallows> if(i*j != 483) goto redo1;
01:34:18 <ehird> marshmallows: that can't jump across stack frames.
01:34:23 <ehird> ergo: no amb
01:34:24 <marshmallows> it doesn't need to
01:35:04 <marshmallows> I didn't mean goto is for implementing call-with-current-continuation
01:35:19 <marshmallows> I meant that goto is useful for nondeterminism
01:39:21 <ehird> marshmallows: i am modernizing the code in that article
01:39:23 <ehird> :D
01:42:19 <ehird> marshmallows: mmrhh, i hate handling malloc errors
01:42:29 <ehird> i'm tempted to just make people define CONT_MALLOC_FAILURE
01:42:29 <marshmallows> :(
01:42:36 <marshmallows> huh?
01:42:40 <ehird> or make them provide a procedure to call on malloc fail
01:42:40 <ehird> ;)
01:46:03 <ehird> marshmallows: heh, look at the exit(1) in that code
01:46:09 <ehird> a true example of 'offensive programming'
01:46:53 <ehird> I am considering replacing it with: printf("You SUCK! Go to HELL!\n"); exit(666);
01:47:01 <marshmallows> lol
01:47:31 <marshmallows> is that an else { /* this is impossible */ } ?
01:48:06 <ehird> that's an else { /* the programmer told us to restore the last continuation without making one in the first place. i hope his corpse is eaten by maggots. he is so stupid. */ }
01:50:33 <ehird> % ./amb
01:50:33 <ehird> You SUCK! Go to HELL!
01:50:35 <ehird> well jeez.
01:53:35 <ehird> marshmallows: take a look at my code?
01:53:54 <marshmallows> ok
01:54:01 <ehird> http://rafb.net/p/Ry3AsE59.txt cont.h
01:54:19 <ehird> http://rafb.net/p/D3uMKQ39.txt cont.c
01:54:32 <ehird> http://rafb.net/p/beqVCL71.txt amb.c
01:54:35 <ehird> compile like:
01:54:38 <ehird> cc amb.c cont.c -o amb
01:56:54 <marshmallows> :(
01:57:03 <marshmallows> 1*4 != 8
01:57:03 <marshmallows> You SUCK! Go to HELL!
01:57:05 <ehird> marshmallows: yep
01:57:09 <ehird> no idea why that's happening
01:57:14 * marshmallows cries
01:57:22 <ehird> as far as I can tell, the FAIL; in (argc == 0) should make it backtrack to the TRY
01:57:26 <ehird> which pops an argument from arb's list
01:57:33 <ehird> ah wait
01:57:35 <ehird> need to argc--
01:57:46 <ehird> before the TRY
01:57:48 <ehird> still happens though
01:59:25 <marshmallows> get_context is returning NULL sometimes
01:59:31 <ehird> marshmallows: yes
01:59:33 <ehird> obviously
01:59:43 <ehird> no, wait
01:59:44 <marshmallows> cont_t *c = malloc(sizeof(cont_t));
01:59:44 <marshmallows> long tos;
01:59:44 <marshmallows> if (!setjmp(c->registers)) {
01:59:45 <ehird> it's gcont that's the problem
01:59:47 <marshmallows> is suspect
01:59:49 <ehird> gcont is sometimes NULL
02:00:01 <marshmallows> gcont = get_context()
02:00:02 <ehird> when we do our FAIL
02:00:07 <ehird> which causes it to yell at us
02:00:40 <ehird> marshmallows: this kind of code is almost impossible to reason about because it copies data to the actual stack
02:00:49 <ehird> i don't think even gdb could handle it
02:00:58 <marshmallows> hm
02:00:59 <marshmallows> typedef struct _cont {
02:00:59 <marshmallows> jmp_buf registers;
02:01:07 <ehird> marshmallows: most of that shizz is from the article
02:01:09 <ehird> i just cleaned up the code
02:01:10 <marshmallows> oh sorry nevermind
02:02:07 <marshmallows> pbos[-i] ? :S
02:02:19 <marshmallows> I should read the whole thing ..
02:02:25 <marshmallows> any single part of it looks wrong :p
02:02:29 <ehird> marshmallows: the stack grows downwards
02:02:32 <ehird> so that's
02:02:34 <ehird> *(pbos - i)
02:08:34 <ehird> marshmallows: on a plus note, the example code he gives works with my version
02:09:35 <ehird> marshmallows: have you noticed that his example resembles a generator?
02:09:41 <ehird> indeed, TRY is pretty much yield
02:09:47 <marshmallows> I don't know what a generator is
02:10:07 <ehird> marshmallows: google it
02:10:14 <ehird> basically it's a function that can return multiple times
02:10:16 <ehird> python example
02:10:30 <ehird> def all_ints(): i = 0; while True: yield i; i += 1
02:10:43 <ehird> foo = all_ints(); foo.next() => 1; foo.next() = 2; ...etc...
02:12:02 <marshmallows> http://rafb.net/p/EBPm5B37.txt
02:12:30 <marshmallows> why did I write != o O_o
02:13:13 <ehird> marshmallows: i'll try that
02:14:22 <ehird> marshmallows: yours works! yay!
02:14:41 <ehird> declarative C is totally awesome
02:15:04 <marshmallows> yes :D
02:15:04 <ehird> marshmallows: interestingly when i make his integer(m,n) function just integer() and unbounded (from 0) the factor program crashes
02:15:08 <ehird> well, not crashes
02:15:09 <ehird> but infiniloops
02:15:12 <marshmallows> yes
02:15:18 * ehird tries to fix
02:15:32 <ehird> marshmallows: what is needed is a robust stack smashing library
02:15:34 <marshmallows> it's like [(x,y,z) | x <- [0..], y <- [0..], x*y = z]
02:15:42 <ehird> loads of different archs, a comprehensive test suite
02:15:43 <ehird> etc
02:15:51 <marshmallows> infinite loops because it's dfs
02:15:59 <marshmallows> [(x,y,z) | x <- [0..], y <- [0..x], x*y = z] -- problem solved
02:16:00 <ehird> then you can build stuff like this on top of it without worrying about fragile stack smashing
02:16:01 <ehird> :)
02:16:11 <marshmallows> why about the CLISP stuff Bruno wrote?
02:16:23 <marshmallows> maybe you can use that, although it doesn't build on mac last time I tried
02:16:41 <marshmallows> oh wait that's only the FFI part (not the other stuff)
02:19:00 <ehird> eek. my factor program jiust ate the worlds memory
02:19:15 <ehird> marshmallows: for ffi we have libffi
02:19:16 <marshmallows> I prefer #define TRY(i) { amb_t e = i; if (!save_context()) { return e; } }
02:19:26 <ehird> marshmallows: and that's less generic
02:19:32 <marshmallows> then you can just go while (argc--) TRY(va_arg(ap, amb_t));
02:19:32 <ehird> my cont.h/cont.c are not tailored towards amb
02:19:50 <marshmallows> take a type with it then
02:19:57 <ehird> marshmallows: no. name clashes.
02:20:33 <marshmallows> it works
02:20:41 <marshmallows> #define TRY(type, i) { type e = i; if (!save_context()) { return e; } }
02:20:53 <ehird> marshmallows: not if i do TRY(type, e) it doesn't
02:21:50 <ehird> marshmallows: yay, i got my factor program working
02:23:19 <ehird> marshmallows: http://rafb.net/p/FoIwsu63.html
02:23:35 <ehird> i might make it use gmp sometime, that would be cool
02:24:18 <ehird> marshmallows: oh, wait, that only factors into two numbers
02:24:23 <ehird> looks like this will be more in-depth than i thought
02:24:23 <marshmallows> hey
02:24:24 <ehird> :)
02:24:32 <marshmallows> ehird, I wanna post amb to rosettacode
02:24:42 <ehird> marshmallows: uh, go ahead, but that continuation lib is biiig
02:24:49 <ehird> do i have to license it under anything?
02:24:53 <ehird> the continuation code ain't mine
02:24:55 <ehird> but the amb code is
02:27:12 <ehird> marshmallows: give me a cool thing to program using backtracking
02:28:00 <marshmallows> generate magic squares in this way http://muaddibspace.blogspot.com/2008/01/generate-test-and-intertwine-aim-here.html
02:28:51 <ehird> too much code ;)
02:29:04 <marshmallows> bah
02:29:09 <marshmallows> It's easy
02:31:05 <ehird> marshmallows: http://en.wikipedia.org/wiki/Continuation i'm trying to implement 'test' here
02:33:29 <ehird> marshmallows: it's hard
02:33:35 <marshmallows> in C?
02:33:43 <ehird> marshmallows: yes, using the cont.h funcions
02:44:05 <ehird> marshmallows: http://rafb.net/p/U9bYdU35.html fibonacci generator using cont.h
02:44:07 <ehird> going for today, bye :)
02:44:14 <marshmallows> bye
02:46:20 -!- ehird has quit ("This computer has gone to sleep").
03:13:16 -!- jix has quit ("CommandQ").
03:31:20 -!- adu has joined.
03:42:17 -!- Corun has quit ("This computer has gone to sleep").
03:59:11 <marshmallows> grr
03:59:18 <marshmallows> there's a bug in that amb in C thing
03:59:32 <Slereah> Solution : Destroy all humans
05:57:52 -!- cherez has joined.
06:47:54 -!- shinkuzin has quit (Connection timed out).
07:04:52 -!- cherez has quit ("Leaving.").
07:39:35 -!- adu has quit (Remote closed the connection).
07:45:46 -!- oerjan has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
11:23:19 -!- oerjan has quit ("leaving").
13:26:50 -!- timotiis has joined.
13:42:49 -!- Corun has joined.
13:49:36 -!- Corun has quit ("This computer has gone to sleep").
14:43:18 -!- marshmallows has quit ("Leaving").
14:53:12 -!- Corun has joined.
15:58:29 -!- Corun has quit ("This computer has gone to sleep").
16:04:17 -!- Corun has joined.
16:29:38 -!- cherez has joined.
16:37:27 -!- p3k has joined.
16:38:21 -!- p3k has quit (Client Quit).
16:38:29 -!- p3k has joined.
16:48:29 -!- jix has joined.
17:18:42 -!- Judofyr has quit.
17:24:36 -!- Corun has quit ("This computer has gone to sleep").
17:26:15 -!- p3k has quit.
17:27:00 -!- Corun has joined.
18:11:35 -!- cherez has quit ("Leaving.").
18:15:14 -!- Judofyr has joined.
18:24:01 -!- jix has quit ("CommandQ").
18:51:51 -!- Judofyr_ has joined.
19:07:14 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
19:11:11 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
19:11:31 -!- Slereah has joined.
19:22:28 -!- RodgerTheGreat has joined.
19:25:15 -!- atsampson has quit (Read error: 104 (Connection reset by peer)).
19:27:31 -!- atsampson has joined.
19:48:51 <Slereah> From the Latin wikipedia :
19:48:52 <Slereah> printf("Salve, munde!\n");
19:48:53 <Slereah> :D
19:49:17 <timotiis> that is so goign to be what I use for hello world programs now
19:51:53 <Slereah> Ludus Vitae est ludus mathematicus ab Anglico mathematico Iohanne Conway inventus.
19:51:56 <Slereah> Heh.
19:51:57 <Slereah> Cute.
19:57:30 -!- Corun has quit ("This computer has gone to sleep").
20:14:26 -!- SimonRC_ has joined.
20:15:43 -!- SimonRC has quit (Read error: 111 (Connection refused)).
20:29:02 -!- Judofyr_ has changed nick to Judofyr.
20:42:31 -!- Corun has joined.
20:48:14 -!- jix has joined.
21:04:47 -!- Corun has quit ("This computer has gone to sleep").
21:18:32 -!- timotiis has quit ("leaving").
21:36:52 -!- Judofyr has quit.
21:55:57 <Slereah> Iota Jot and Zot makes me think of Rice Crispies.
21:57:31 <oklofok> http://kuvaton.com/kuvei/sparta2.jpg wow i found a movie reference joke funny
21:57:44 <oklofok> slightly
21:57:55 <oklofok> hmm
21:58:12 -!- Corun has joined.
21:58:59 <oklofok> Slereah: that would make a great cereal
22:00:40 -!- calamari has joined.
22:01:43 <Slereah> The three combinator elves.
22:05:01 <Slereah> "During World War II they posed patriotically in military clothing, urging consumers to "Save Time, Save Fuel, Save Work"."
22:05:12 <Slereah> Delicious propaganda.
22:57:34 -!- Judofyr has joined.
23:00:54 -!- timotiis has joined.
23:50:59 -!- Corun has quit ("This computer has gone to sleep").
23:54:25 -!- Judofyr has quit.
2008-03-24
00:07:30 -!- ihope has joined.
00:07:54 -!- Corun has joined.
00:15:20 -!- Tritonio_ has quit (Remote closed the connection).
01:24:42 -!- timotiis has quit ("leaving").
01:47:16 -!- jix has quit ("CommandQ").
02:00:39 * AnMaster tabs the heisenbug
02:00:44 <AnMaster> from within function "MediaWikiBagOStuff::_doquery". MySQL returned error "1030: Got error 127 from storage engine (localhost)".
02:00:47 <AnMaster> at the wiki
02:01:02 -!- GreaseMonkey has joined.
02:01:13 <AnMaster> I hate sql errors on the wiki
02:45:58 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
02:46:40 -!- Slereah has joined.
02:50:50 <AnMaster> RUBE looks like a really cool language
02:51:45 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
02:52:45 -!- Slereah has joined.
03:04:13 -!- ihope has quit (Read error: 110 (Connection timed out)).
04:01:18 -!- Corun has quit ("This computer has gone to sleep").
04:47:49 -!- calamari has left (?).
04:49:16 -!- adu has joined.
05:07:03 -!- ihope has joined.
05:28:02 -!- ihope has quit (Read error: 110 (Connection timed out)).
05:55:17 -!- boily has joined.
06:09:20 -!- CakeProphet has joined.
06:10:08 -!- boily has quit ("quit quit quit.").
06:30:54 -!- CakeProphet has quit ("haaaaaaaaaa").
07:03:11 -!- adu has left (?).
07:28:54 -!- bsmntbombdood has quit (brown.freenode.net irc.freenode.net).
07:41:21 -!- bsmntbombdood has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
10:02:09 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)").
10:28:21 -!- ihope has joined.
10:49:36 -!- ihope has quit (Read error: 110 (Connection timed out)).
12:44:45 -!- Hiato has joined.
12:45:32 <Hiato> wassabi all
12:54:35 -!- Hiato has left (?).
13:05:56 -!- Judofyr has joined.
14:00:54 -!- timotiis has joined.
14:03:42 -!- Corun has joined.
14:25:30 -!- jix has joined.
15:14:35 -!- Corun has quit ("This computer has gone to sleep").
15:47:37 -!- Corun has joined.
16:02:48 <Slereah> Is there a version of BF that accepts unbalanced brackets?
16:03:20 <Slereah> Where [ would just halt the program for 0 and ] send it back to the beginning.
16:04:22 <Slereah> The webarchive for Iota doesn't work anymore.
16:09:33 -!- timotiis has quit (Read error: 104 (Connection reset by peer)).
16:13:30 -!- timotiis has joined.
16:16:53 -!- vixey has joined.
16:30:52 <Slereah> Is a string of 1 in jot just ^a^b^c^d... ```abcd... ?
16:38:04 <AnMaster> Deewiant, heh, y with positive values was broken but mycology didn't detect it due to a number of improbably bugs canceled it out for the values mycology tested
16:38:16 <AnMaster> I saw one bug and fixed it and then the rest showed up
17:08:43 -!- vixey has changed nick to marshmallows.
17:37:17 -!- atsampson has quit (Read error: 113 (No route to host)).
17:38:05 -!- atsampson has joined.
18:06:51 <lament> guys
18:06:59 <lament> do we want to be logged by irseek?
18:11:34 -!- jix has quit ("This computer has gone to sleep").
18:12:41 <Slereah> I dunno. I don't want people to know I have that dead hooker under my bed
18:13:15 <lament> Slereah: the channel is already being logged
18:13:23 <Slereah> OH SHI-
18:13:36 <Slereah> brb, going to Thailand
18:13:46 <lament> the question is whether we want to be logged by irseek as well as by ircbrowse.com
18:13:57 <Slereah> What would be the difference?
18:14:04 <lament> more exposure :)
18:14:46 <marshmallows> Slereah: Why don't you cook and eat it?
18:14:47 <Slereah> I'm sure people are dying to read all about esoteric languages
18:14:59 <Slereah> marshmallows: It might be full of diseases
18:15:00 <lament> well
18:15:14 <marshmallows> yes, hence the cooking stage
18:15:21 <lament> at some point there was a big scandal because irseek was logging channels without permission
18:15:25 <lament> which is against freenode's policy
18:15:34 -!- oerjan has joined.
18:15:56 <lament> so now they're seeking permission
18:27:47 -!- asiekierka has joined.
18:29:12 <asiekierka> Woah, i wasn't here in a lond time
18:29:14 <asiekierka> long(
18:29:15 <asiekierka> long*
18:29:44 <oerjan> make up your mind, function or pointer? :D
18:30:33 <asiekierka> long is not a function. It's a type.
18:30:34 <Slereah> heh
18:30:37 <asiekierka> so it must be a pointer
18:30:41 <asiekierka> i can still use
18:31:18 <asiekierka> long long
18:31:20 <oerjan> hm...
18:31:32 <asiekierka> I was thinking of an esoteric language that uses only 2 commands:
18:31:38 <asiekierka> "long" and "long long"
18:31:49 * oerjan is unclear on C nested anonymous function type syntax
18:32:08 <olsner> is there any type syntax in C that is clear?
18:32:15 <asiekierka> "long" is a 32-bit value in C, and "long long" is a 64-bit one
18:32:20 <marshmallows> not really ;P
18:32:23 <marshmallows> C syntax is quite terrible
18:32:29 <asiekierka> i think "long long long" is either 96-bit or 128-bit
18:32:51 <olsner> I think long long long doesn't exist at all
18:33:05 <asiekierka> oh
18:33:07 <asiekierka> i see
18:33:11 <marshmallows> it doesn't in C
18:33:11 <asiekierka> so i must create it
18:33:20 <marshmallows> I don't think anyones talking about actual C though..?
18:33:21 <asiekierka> along with "long long long long" and "long long long long long long long long"
18:33:27 <asiekierka> nope.
18:33:45 <olsner> oh, your conversation is not context free
18:33:45 <Slereah> But what will you do with all those longs!
18:33:52 <asiekierka> Also, my language will be called 64L, or "long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long"
18:33:56 <asiekierka> xD
18:34:16 <asiekierka> It will be created exclusively for the GameBoy Advance
18:34:39 <asiekierka> you separate commands by |.
18:34:46 <asiekierka> long will probably be "rotate IP"
18:34:54 <asiekierka> long long will probably be "execute IP"
18:34:55 <lament> so.. anybody against us being logged by irseek?
18:35:28 <asiekierka> and long long long long will be "magically turn into human" (and since long long long long dosen't exist in C, the interpreter will show an error)
18:35:59 <Slereah> What happens if I type dong?
18:36:11 <asiekierka> ok, some more instructions
18:36:11 <Slereah> Long dong.
18:36:18 <asiekierka> or wait
18:36:31 <asiekierka> i'll make my language have 3 commands, "long", "ding" and
18:36:32 <asiekierka> "dong"
18:36:37 <asiekierka> long is "rotate IP"
18:36:44 <asiekierka> ding is "execute IP"
18:36:56 <asiekierka> what about dong?
18:37:07 <Slereah> It should output this : 8===D
18:37:24 <asiekierka> no
18:37:31 <asiekierka> it will instead make the GBA a mirror
18:37:41 <asiekierka> and i'll call this "a bug"
18:37:46 <Slereah> I don't know much of GB programming
18:39:12 <AnMaster> <lament> so.. anybody against us being logged by irseek?
18:39:13 <AnMaster> yes
18:39:26 <AnMaster> lament, their bots are annoying, often several at once
18:39:40 <AnMaster> bbl food
18:58:13 <asiekierka> which is the best esoteric language with a small amount of commands?
18:58:16 <asiekierka> (excluding BF)
18:59:36 <marshmallows> not really esoteric but 'lambda' is pretty good
19:00:11 <Slereah> Define "best"
19:01:04 <asiekierka> It's fun to make stuff in.
19:01:45 <marshmallows> http://en.wikipedia.org/wiki/Lambda_calculus
19:02:12 <Slereah> Lazy Bird can take in sum lambda
19:02:48 <asiekierka> so, what's fun to make stuff in, from esoteric languages?
19:03:23 <Slereah> Esoteric programming isn't fun. It was designed to break programmers psychologically.
19:04:21 <asiekierka> BF is fun
19:04:40 <oklofok> <asiekierka> "long" is a 32-bit value in C, and "long long" is a 64-bit one <<< these actually defined in the standard nowadays?
19:04:45 <olsner> waterboarding is torture^H^H^Hthe latest esoteric programming language
19:05:06 <oklofok> ah, right.
19:05:09 <marshmallows> the exact bit sizes are not part of any standard
19:05:16 <Slereah> Let's make an esolang based on waterboarding
19:05:26 <Slereah> Every instruction squirts water in your mouth
19:06:37 <asiekierka> Let's make an esolang based on boxing.
19:06:48 <asiekierka> Every instruction punches you, but every instruction is a different place
19:07:05 <asiekierka> B is "punch you in the body", E is "punch you in the eyes", H is "punch you in the head"...
19:07:15 <lament> BEH
19:07:19 <olsner> I believe long is defined to be >= 32 bits and that long long is a non-standard extension
19:07:33 <Slereah> And then, let's see how to make a self-interpreter!
19:07:52 <oklofok> isn't it just short<=int<=long
19:07:53 <asiekierka> it's easy
19:08:06 <asiekierka> M is "punch you in the mind", and it may activate anything
19:08:12 <asiekierka> including a self-self-self-interpreter
19:08:27 <oklofok> asiekierka: try befunge, it's fairly popular here nowadays
19:08:31 <oklofok> thanks to AnMaster and Deewiant
19:08:42 <asiekierka> Befunge?
19:08:43 <oklofok> i mean, quantitively popular
19:08:44 <Slereah> Or Rube!
19:08:44 <asiekierka> why befunge?
19:08:51 <oklofok> befunge is quite fun
19:08:57 <Slereah> Rube seems like a hoot and two yahoos
19:08:57 <asiekierka> What about a language called "Rubeek's Cube"?
19:09:57 <asiekierka> What about a contest to fit the best Befunge-93 program in 10x10 space?
19:10:42 <AnMaster> oklofok, ?
19:10:43 <AnMaster> ??
19:11:33 <asiekierka> is there a befunge tutorial, though?
19:11:50 <Slereah> Probably
19:12:53 <olsner> *but*, is there a monad tutorial in befunge?
19:13:07 <Slereah> Monads don't exist and never will!
19:13:13 <Slereah> Shush
19:15:31 <oklofok> AnMaster: you and Deewiant talk about befunge 24/7, don't try to deny that
19:15:59 <AnMaster> oklofok, we do
19:16:11 <AnMaster> Slereah, yes rube looks interesting
19:16:14 <asiekierka> and i will join
19:16:19 * AnMaster goes back flying in flightsim
19:17:08 <Slereah> It also has a swell online interpreter
19:17:14 <Slereah> And that Lemmings feeling.
19:18:03 <oklofok> the other day i realized i love permutations
19:18:06 <oklofok> they are fucking awesome
19:18:19 <oklofok> perhaps they deserve a languages based on them
19:18:39 <marshmallows> what's good about permutations?
19:18:49 <oklofok> ...good?
19:18:49 -!- timotiis_ has joined.
19:18:53 <oklofok> i just like them
19:19:19 <olsner> permutative programming?
19:19:24 <olsner> how'd that look?
19:19:36 <oklofok> lament: nothing wrong with letting people log #esoteric imo
19:19:43 <oklofok> in case you are still collecting opinions
19:19:59 <oklofok> i don't know, but i'm hoping very confusing and weird
19:20:29 <Slereah> No need to hope.
19:21:23 <olsner> maybe the program permutes after each step?
19:22:15 <oklofok> hmm
19:22:36 <oklofok> something like a massive cube, kinda in the movie, which permutes like crazy and occasionally grows in size
19:23:05 <oklofok> and you just specify in which cube to begin, and what size the cube is :O
19:23:35 <oklofok> long story short: awesome shit
19:24:39 -!- oerjan has quit ("leaving").
19:29:38 <olsner> maybe if certain cubes has certain side effects (like "print register 0", "increment register 0"), and the program contains a series of commands back/forward/up/down/left/right
19:29:55 <olsner> so you just have to arrange for the IP to traverse the side-effects in the right order
19:30:24 <olsner> and every step or every n steps, the cubes rearrange shuffling the IP with it
19:31:22 -!- timotiis has quit (Read error: 110 (Connection timed out)).
19:31:29 <olsner> as a prestudy you could make a labyrinthine programming language that's the same but without the permutating
19:38:43 -!- AnMaster has quit ("rebooting to new kernel").
19:45:54 -!- Judofyr has quit.
20:08:25 -!- asiekierka has quit.
20:09:31 -!- AnMaster has joined.
20:30:32 -!- Corun has quit ("This computer has gone to sleep").
20:49:04 -!- asiekierka has joined.
21:00:13 -!- Corun has joined.
21:26:17 -!- timotiis_ has quit ("leaving").
21:26:26 -!- timotiis has joined.
21:29:46 -!- CakeProphet has joined.
21:34:53 -!- CakeProphet has quit ("haaaaaaaaaa").
21:48:36 -!- CakeProphet has joined.
21:48:47 -!- timotiis_ has joined.
21:50:32 -!- appletizer has joined.
21:50:39 -!- appletizer has left (?).
22:02:48 -!- asiekierka has quit.
22:05:35 -!- AnMaster has quit (Connection timed out).
22:07:40 -!- CakeProphet has quit ("haaaaaaaaaa").
22:13:37 -!- AnMaster has joined.
22:17:36 -!- timotiis has quit (Read error: 110 (Connection timed out)).
23:10:26 -!- olsner has quit ("Leaving").
23:29:25 -!- jix has joined.
23:43:21 -!- Corun has quit ("This computer has gone to sleep").
23:49:30 -!- Corun has joined.
2008-03-25
00:15:34 -!- peterecus has joined.
00:16:03 <peterecus> hello
00:16:41 <marshmallows> Hi
00:17:33 -!- peterecus has quit (Client Quit).
01:38:36 -!- timotiis_ has quit ("leaving").
01:44:19 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
01:46:16 -!- Slereah has joined.
01:50:07 -!- sebbu has quit ("@+").
02:40:31 -!- jix has quit ("CommandQ").
03:06:29 -!- GreaseMonkey has joined.
04:58:35 -!- Corun has quit ("WWDC HO!").
05:07:27 -!- adu has joined.
05:15:35 <marshmallows> What's EVERY syntax of EVERY programming language?
05:16:16 <adu> marshmallows: well, that's gonna take some time to compile
05:16:27 <marshmallows> I'll make a cup of a tea :P
05:16:31 <adu> marshmallows: hey, I remember you from some other channel...
05:16:52 <marshmallows> hm I hope I wasn't doing anything out of order
05:16:58 <marshmallows> adu: #scheme ?
05:17:53 <adu> marshmallows: most of it can be summarized by (PreOp X)|(X InOp Y)|(Y PostOp)|(between LeftThing RightThing X)|(sepBy X Sep)
05:18:06 <marshmallows> PARSEC!!!
05:18:09 <adu> :)
05:18:12 <marshmallows> Woooo oooo
05:18:16 <marshmallows> I love parsec o_o
05:18:34 <marshmallows> so uh..
05:18:34 <adu> =)
05:18:49 <marshmallows> (s-expression (syntax (lets you) nest things))
05:19:12 <adu> thats all handled by (between '(' ')' SExp)
05:19:18 <marshmallows> haskell = Pretty `good` (too ++ infix is) neat
05:19:31 <adu> I had an idea about infix and forth recently
05:19:39 <marshmallows> prolog(Has) :- very_uniform(Syntax), as(Well).
05:20:11 <marshmallows> J:.@P7L1ke!
05:20:12 <adu> well, I was thinking about Haskells `x` syntax, and I had noticed that the back-quotes effectively transformed what was inside of it to move backwards before evaluation
05:20:34 <marshmallows> language Java {
05:20:46 <marshmallows> Is.Pretty.Structured();
05:20:47 <marshmallows> }
05:20:53 <adu> and in Haskell (x) always means "sections" but 'x' could mean move x forward before evaluation
05:21:18 <marshmallows> ++++++<+++->>>[+>++--.-.<>>>]<>++,+.
05:21:24 <adu> so you could do things like ('+' 4 5) == 4 5 `+`
05:21:32 <adu> to simulate forth and lisp at the same time!
05:21:59 <adu> my favorite APL/J/K like language is Funge-98
05:22:24 <adu> I have the Funge98 spec as my browser's homepage :)
05:22:28 <adu> it never gets old...
05:22:36 <marshmallows> lol
05:23:18 <marshmallows> sub perl { and $php; have =~ s/good/quoting/; facilities() };
05:23:49 <marshmallows> what other syntax is there
05:24:01 <adu> My 2 favorite new-languages, right now, are Disciple and Fortress
05:24:48 <adu> although I only like them because Disciple is the only language I know with an explicit Effect system, and Fortress has the most amazing Array syntax
05:25:23 <adu> I'm actually thinking about implementing a new operator in Parsec for it, called "repBy"
05:25:24 <marshmallows> show me the syntax!
05:25:32 <adu> well its multi-line
05:25:37 <adu> [1 0 0
05:25:39 <adu> 0 1 0
05:25:49 <adu> 0 0 1 ;; 1 0 0
05:25:57 <adu> 0 1 0
05:26:03 <adu> 0 0 1]
05:26:14 <adu> would be a 3*3*2 array
05:26:53 <adu> which can also be written [1 0 0;0 1 0;0 0 1;;1 0 0;0 1 0;0 0 1]
05:26:58 <adu> or [[1 0 0;0 1 0;0 0 1] [1 0 0;0 1 0;0 0 1]]
05:27:03 <marshmallows> ok
05:27:05 <marshmallows> that's cool
05:27:22 <adu> or [[[1 0 0] [0 1 0] [0 0 1] [1 0 0] [0 1 0] [0 0 1]]
05:27:38 <adu> they are all equivalent in Fortress
05:28:19 <adu> the ";" is repeated in order to get higher-dimentional separation
05:28:45 <adu> so I'm trying to figure out how to implement that in a Parsec-like "repBy" combionator
05:29:17 <lament> adu: disciple = ddc?
05:29:20 <adu> yes
05:29:24 <lament> how do you like it?
05:29:34 <adu> never used it, only been reading the wiki
05:29:39 <lament> oh
05:29:44 <adu> but so far I like it
05:30:08 <adu> although a friend of mine things there's too many "!" marks
05:30:54 <lament> !!!
05:31:03 <adu> hehehe
05:31:37 <adu> lament: are you related to DDC?
05:31:40 <lament> no
05:31:55 <adu> lament: how do you like it?
05:32:04 <lament> never used it, only been reading the wiki
05:32:10 <adu> heh, like me
05:32:55 <lament> exactly! omg we're like soulmates rofl!!! asl?
05:33:03 <adu> lol
05:33:35 <adu> I'm old, comfortable with my sexuality, and here.
05:34:21 <adu> but anyways, have I talked about my language yet
05:34:57 <adu> I have a plan for removing the cruft of some other languages
05:35:36 <lament> okay, start from perl, cobol and c++, come back when you removed cruft from those :)
05:36:03 <adu> for example, let, let* and letrec in scheme, in my language would be "let (x=y) {...}", "let [x=y] {...}", and "let {x=y} {...}" respectively, none of that "*" business
05:36:18 <marshmallows> :O
05:36:19 <marshmallows> SYNTAX
05:36:23 <adu> hehehe
05:37:03 <adu> my language would be very schemish, and very haskellish too
05:37:13 <lament> adu: how about just replacing all those things with a single statement "let"?
05:37:18 <adu> all built up from 5 primitives
05:37:20 <lament> i mean, who really needs separate let and letrec?
05:37:51 <adu> well, i dunno
05:38:33 <marshmallows> what are these primitives?
05:38:56 <lament> let(, let[, let{, lambda and define
05:39:01 <adu> (.) (:) () [] {}
05:39:10 <adu> thats all
05:39:14 <lament> ha, almost
05:39:14 <adu> everything else is a function
05:39:15 <marshmallows> omg :D
05:39:17 <marshmallows> this is awesome
05:39:38 <marshmallows> have you implemented it?
05:39:42 <adu> partially
05:40:05 <marshmallows> what do they all do?
05:40:17 <adu> I've implemented a parser and a piece of the interpreter in Python + Ply, but I'm planning on re-writing it in Haskell + Parsec
05:40:48 <lament> if you have those things as primitives, do you actually need let?
05:41:00 <lament> i suppose they fuck with environments in some way?
05:41:05 <adu> (.) is homogeneous cons (:) is heterogeneous cons, (which correspond to [1, 2, 3] and [1; "Hello"; True] type lists respectively)
05:41:40 <adu> and () [] and {} are just wraps that keep their info, and pass the syntax tree inside of them to functions called "Tuple" "List" and "Set"
05:42:04 <adu> and the plan is the have these 3 functions add some kind of methods, but I don't really want them to be builtin
05:43:02 <marshmallows> ah cool
05:43:14 <adu> so [1, 2, 3] is syntax for 1 . 2 . 3 . []
05:43:24 <adu> just as {1, 2, 3} is syntax for 1 . 2 . 3 . {}
05:43:54 <adu> very lispish
05:44:10 <lament> so.......
05:44:13 <lament> why not just use haskell? :)
05:44:24 <adu> because Haskell doesn't have native heterogeneous lists
05:44:35 <lament> sure it does, see Typable
05:44:51 <adu> but I am using it to build the next version of the interpreter
05:45:32 <marshmallows> It wouldn't be a problem
05:45:50 <adu> I'm aware of typeable
05:45:55 <marshmallows> no no
05:45:57 <adu> there are other reasons
05:46:08 <lament> besides, what do you actually want heterogenous lists for?
05:46:15 <marshmallows> data Value = VInt Integer | VString String | VTuple Value Value ...
05:46:23 <marshmallows> typeable is gross
05:46:23 <adu> lament: do statements
05:47:06 <adu> begin expressions, progn expressions, etc
05:47:39 <adu> these are all things constructed with a heterogeneous cons-like operator
05:47:48 <adu> in Haskell this turns out to be (>>=)
05:49:02 <adu> so the "..." in "let {x=y} {...; ...}" would probably have ";" because its probably doing things
05:49:27 <lament> yes, except >>= is not heterogenous
05:50:11 <adu> lament: how so?
05:50:36 <lament> for one, haskell has it, and you just said haskell didn't have heterogenous lists :)
05:50:46 <adu> hehehe
05:51:00 <lament> for two, it has a type m a -> (a -> m b) -> m b
05:52:17 <adu> it is a little stricter than heterogeneous lists
06:02:49 <adu> later
06:02:58 <adu> I should sleep
06:03:02 <lament> it's not any different from a -> [a] -> [a]
06:03:13 <lament> the types of the first and the second argument are different
06:10:35 <adu> (:) :: a -> m b -> m c
06:10:49 <adu> so really, (:) = flip (>>=)
06:21:38 -!- adu has quit (Remote closed the connection).
06:53:00 -!- RodgerTheGreat has quit.
07:30:40 -!- AnMaster_ has joined.
07:44:01 -!- AnMaster has quit (Success).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:09:58 -!- immibis has joined.
08:33:41 -!- immibis has quit ("Hi Im a qit msg virus. Pls rplce ur old qit msg wit tis 1 & hlp me tk ovr th wrld of IRC. and dlte ur files. and email ths to).
09:14:51 -!- sebbu has joined.
09:27:22 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)").
12:34:18 -!- asiekierka has joined.
12:34:31 <asiekierka> Is there an esoteric language that can be used with just paper and pencil?
12:42:03 -!- timotiis has joined.
12:59:55 <oklofok> asiekierka: all can
13:00:05 <oklofok> *most can
13:05:45 <asiekierka> ... what's the best one for it though
13:09:14 <asiekierka> what about an esoteric language "Penper"?
13:09:17 <asiekierka> Paper esoteric language
13:10:07 <asiekierka> I thought of memory consisting of ~500 dots on paper. If you set it, you draw a circle around it.
13:10:11 <asiekierka> You can't clear it though.
13:10:21 <asiekierka> So I assume you have an infinite supply of paper.
13:16:35 <asiekierka> You know, i think Piet is the best one
13:20:05 -!- puzzlet has quit (Remote closed the connection).
13:20:13 -!- puzzlet has joined.
13:30:17 -!- jix has joined.
13:57:13 <oklofok> well you want to have a language where memory isn't really erased that much
13:57:28 <oklofok> so perhaps a cyclig tag system might do the tric
13:57:28 <oklofok> k
13:58:02 <oklofok> queues are pretty much the only data structure paper handles without complaining
14:38:41 -!- AnMaster_ has changed nick to AnMaster.
15:51:46 <SimonRC_> oklofok: or immutable tables
15:51:50 -!- SimonRC_ has changed nick to SimonRC.
16:45:39 -!- marshmallows has quit (Nick collision from services.).
17:07:14 -!- asiekierka has quit (Read error: 110 (Connection timed out)).
18:21:52 -!- RodgerTheGreat has joined.
18:25:12 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
18:25:17 -!- Slereah has joined.
18:29:27 -!- slereah_ has joined.
18:30:15 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
18:39:02 -!- slereah__ has joined.
18:39:59 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
18:46:11 -!- slereah__ has quit (Remote closed the connection).
18:46:26 -!- slereah__ has joined.
19:05:20 -!- olsner has joined.
19:06:01 -!- slereah_ has joined.
19:07:14 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
19:11:37 -!- slereah__ has joined.
19:25:13 -!- slereah_ has quit (Read error: 110 (Connection timed out)).
20:05:24 -!- oerjan has joined.
20:13:52 -!- timotiis_ has joined.
20:26:46 -!- timotiis has quit (Read error: 110 (Connection timed out)).
21:06:02 -!- vixey has joined.
21:19:00 -!- oerjan has quit ("leaving").
21:26:54 <vixey> oklofok : wanna see a Curry example?
21:28:26 <oklofok> sure
21:28:47 <vixey> you know Prolog right?
21:28:50 <GregorR> Mmmmmmmmmm, I'd love to see an example of Curry. And eat it.
21:28:54 <oklofok> although i find the spontaneous change of channel confusing
21:29:06 <vixey> http://rafb.net/p/jZJ8fv54.txt
21:29:12 <oklofok> i know prolog, somewhat
21:29:21 <vixey> basically
21:29:33 <vixey> Curry seems no better than Prolog with Haskell syntax
21:29:46 <oklofok> heh
21:29:56 <oklofok> they say it's almost a superset of haskell though.
21:30:47 <lament> wow, looks ugly :)
21:31:23 <oklofok> i found it pretty
21:32:02 <vixey> well the problem is saturn2 is not efficient
21:33:37 <vixey> I want to see what's good about it but I don't :|
21:47:10 -!- Judofyr has joined.
22:44:41 * AnMaster got a cold :(
23:17:29 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
23:18:36 -!- Judofyr has joined.
23:37:42 -!- jix has quit (Nick collision from services.).
23:37:52 -!- jix has joined.
23:47:33 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
23:47:46 -!- Judofyr has joined.
23:55:35 -!- MommeMC has joined.
23:55:46 -!- MommeMC has quit (Client Quit).
2008-03-26
00:00:04 -!- timotiis_ has quit ("leaving").
00:36:41 <SimonRC> :cry: http://lucis.net/stuff/clarke/star_clarke.html
00:41:23 -!- vixey has quit (Read error: 104 (Connection reset by peer)).
01:02:25 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
01:02:39 -!- Judofyr has joined.
01:09:44 -!- sebbu has quit ("@+").
01:12:04 -!- jix has quit ("CommandQ").
01:17:23 -!- Sgeo has joined.
01:19:54 <oklofok> SimonRC: why cry?
01:20:11 <oklofok> is it DON'T READ THIS THING I PASTED IT WILL BE A WASTE OF TIME cry?
01:22:00 <SimonRC> no
01:22:09 <SimonRC> it is worth reading
01:22:14 <SimonRC> well, I liked it at least
01:24:01 <oklofok> i shall read i then, after my sleepz
01:24:04 <oklofok> night ->
01:29:55 <SimonRC> zzzz
03:25:54 -!- atsampso1 has joined.
03:32:43 -!- atsampson has quit (Read error: 110 (Connection timed out)).
04:03:17 <RodgerTheGreat> http://www.nonlogic.org/dump/images/1206500570-physed.png
04:03:20 <RodgerTheGreat> ^ new comic!
04:19:11 -!- GreaseMonkey has joined.
04:44:51 <RodgerTheGreat> ...and no one cares, apparently
04:47:25 <RodgerTheGreat> :<
04:55:50 -!- Overand has quit (Read error: 104 (Connection reset by peer)).
04:55:53 -!- Overand has joined.
05:22:01 -!- Sgeo has quit (Remote closed the connection).
05:49:30 -!- adu has joined.
06:05:08 -!- GreaseMonkey has quit ("shitgtg").
06:33:44 -!- RodgerTheGreat has quit.
06:49:06 -!- vixey has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:13:49 -!- Judofyr has quit (Remote closed the connection).
08:13:57 -!- Judofyr has joined.
08:17:12 -!- Judofyr_ has joined.
08:17:12 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
08:17:48 <slereah__> Anyone thar?
09:01:38 -!- adu has quit ("Computer went to sleep").
09:44:21 -!- olsner has quit ("Leaving").
10:12:35 <oklofok> I IS
10:12:41 <oklofok> DEAL WITH IT
10:29:33 <oklofok> SimonRC: yeah quite fun
10:29:40 <oklofok> the story
10:51:06 -!- Judofyr_ has quit (Read error: 104 (Connection reset by peer)).
10:51:26 -!- Judofyr has joined.
11:18:29 -!- Judofyr has quit (Remote closed the connection).
11:19:05 -!- Judofyr has joined.
11:28:54 -!- jix has joined.
12:17:40 -!- vixey` has joined.
12:20:04 -!- vixey has quit (Read error: 113 (No route to host)).
12:34:09 <AnMaster> <slereah__> Anyone thar?
12:34:11 <AnMaster> yes
12:53:10 -!- vixey` has quit (Read error: 104 (Connection reset by peer)).
13:09:19 <SimonRC> .
13:21:45 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
13:22:21 -!- Judofyr has joined.
13:22:41 -!- puzzlet has quit (Remote closed the connection).
13:22:49 -!- puzzlet has joined.
13:36:42 <slereah__> Is there an actual proof of the jot-CL translation?
13:36:55 <slereah__> The application function doesn't seem very obvious to me
14:33:28 -!- slereah__ has quit (Remote closed the connection).
14:33:44 -!- slereah__ has joined.
14:40:02 -!- RodgerTheGreat has joined.
14:58:03 -!- oklofok has changed nick to oklopol.
15:02:37 -!- RedDak has joined.
15:29:18 -!- slereah_ has joined.
15:30:22 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
16:47:53 -!- timotiis has joined.
17:05:44 -!- marshmallows has joined.
17:23:20 -!- Tritonio_ has joined.
18:24:50 -!- RedDak has quit (Remote closed the connection).
18:27:28 -!- Sgeo has joined.
19:20:44 -!- sebbu has joined.
19:22:05 -!- olsner has joined.
19:35:27 -!- RedDak has joined.
20:38:32 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
21:05:36 <AnMaster> slereah_, of what?
21:09:19 <slereah_> Jot.
21:09:34 <slereah_> It is proved TC by correspondance with Combinatory Logic
21:09:53 <slereah_> But the function used for application doesn't seem all that obvious to me.
21:16:56 <olsner> oh, is that Combinatory Logic I hear?
21:17:11 <slereah_> Indeed it is.
21:18:38 <olsner> hmm, yeah, that's pretty obfuscated
21:19:15 <slereah_> Problem is, Jot doesn't have a priority operator.
21:19:38 <slereah_> So I have no idea how 1 functions as the apply operator in the general case.
21:25:32 <olsner> [f1] -> \xy -> [f](xy) => [1] -> \xy -> xy
21:25:41 <olsner> it basically seems to be some kind of prefix notation
21:26:41 <slereah_> The problem I have is, 11100 for k doesn't obviously means that 11110011100 will translate to `kk
21:26:54 <olsner> it doesn't?
21:27:05 <slereah_> Well, it does apparently
21:27:21 <slereah_> But it doesn't come up as obvious to me.
21:27:23 <olsner> you mean, it's not obvious *to you*? :P
21:27:31 <slereah_> Exactly.
21:27:35 <olsner> eh, so you said at the same time
21:27:37 <olsner> :P
21:28:59 <slereah_> The problem is that the meaning of a string depends on what's before it.
21:33:12 <oklopol> what?
21:33:21 <oklopol> isn't jot's notation just the unlambda notation
21:33:55 <olsner> that's iota
21:34:18 <oklopol> ...aren't both?
21:34:25 <oklopol> isn't it all unlambda
21:34:30 <oklopol> i have to check now
21:34:30 <oklopol> lofl
21:34:32 <slereah_> Nah.
21:34:39 <olsner> unlambda is [`ski]
21:34:41 <slereah_> Jot doesn't have an apply operator
21:35:43 <oklopol> umm, isn't jot the exact same as iota?
21:36:26 <oklopol> jot's 1 doesn't actually have a meani
21:36:27 <oklopol> ng?
21:36:45 <oklopol> i was assuming it's the combinator from iota, but here just represented with binary
21:36:45 <slereah_> Empty string is i
21:36:56 <oklopol> well yes, of course
21:37:14 <slereah_> F 1 is ^xy.F(xy)
21:37:14 <oklopol> or not of course
21:37:23 <slereah_> F 0 is FSK
21:37:59 <oklopol> F 1, where F is the beginning of the program?
21:38:03 <slereah_> It's easy enough to build S and K from the empty string, but I'm not sure what happens in the general case, since it always depends on what's before
21:38:04 <slereah_> Yes.
23:23:10 -!- RedDak has quit (Remote closed the connection).
23:25:40 * SimonRC goes to bed
23:28:03 -!- jix has quit ("CommandQ").
2008-03-27
00:08:53 -!- olsner has quit ("Leaving").
00:09:33 <slereah_> What's a good introduction on electronics for computing purpose?
00:15:22 <oklopol> why not do like me and just know everything without explicitly learning it?
00:17:06 <slereah_> I tried, but I can't find the shoes.
00:19:41 <oklopol> i just use whatever gonkers you can fimble your mendelas on
00:19:48 <oklopol> *-i
00:26:37 -!- timotiis has quit ("leaving").
00:46:00 * slereah_ tries to whip up a Jot interpreter.
00:53:07 <slereah_> Nice thing is, it's regular!
00:53:21 <slereah_> I can get rid of most of the checking in Lazy Bird to build it
01:24:32 <slereah_> Butts. It no works.
01:35:01 <slereah_> Oh dick. It was a misplaced `
01:36:08 <slereah_> And now it works perfectly.
01:36:46 <slereah_> Or does it.
01:36:56 <slereah_> the advertised "non-terminating program" terminates.
01:38:05 <slereah_> And the 100 for i gives me k
01:40:25 <slereah_> Wait, is 100 actually supposed to be i
01:40:29 <slereah_> I think that's zot.
01:52:48 -!- sebbu has quit ("@+").
02:13:02 -!- Sgeo has joined.
03:41:56 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
03:42:33 -!- Judofyr has joined.
03:46:10 <slereah_> Hm.
03:46:37 <slereah_> apparently, the 1[A][B] for `AB only works for the combinators 11100 11111000
03:46:45 <slereah_> k is also 00, but 10000 isn't `kk
03:51:22 <slereah_> Is the Jot guy still available on his email adress?
04:09:18 -!- GreaseMonkey has joined.
04:41:22 -!- Tritonio_ has quit (Remote closed the connection).
04:44:52 -!- Tritonio_ has joined.
04:47:32 -!- Sgeo has quit (Remote closed the connection).
06:47:01 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
06:47:26 -!- Judofyr has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:54:40 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)").
10:53:06 -!- oklopol has quit (Read error: 113 (No route to host)).
11:11:40 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
11:12:11 -!- Judofyr has joined.
11:20:13 -!- puzzlet has quit (Remote closed the connection).
11:20:20 -!- puzzlet has joined.
11:32:36 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
11:33:12 -!- Judofyr has joined.
11:39:16 -!- puzzlet_ has joined.
11:39:16 -!- puzzlet has quit (Remote closed the connection).
13:25:58 -!- okopol has joined.
14:03:13 -!- oklopol has joined.
14:04:41 -!- okopol has quit (Connection reset by peer).
14:06:29 -!- Tritonio_ has quit (Remote closed the connection).
14:13:59 -!- jix has joined.
14:21:02 <Deewiant> O_ooo
14:21:03 <Deewiant> http://cubonegro.orgfree.com/sponge/sponge.html
14:34:35 <Deewiant> heh, generates about 6500 bytes to calculate the factorial of 5
14:41:27 <oklopol> 456**
14:41:27 <oklopol> !
14:41:34 * oklopol pwnd it
14:41:46 <Deewiant> ba*
14:41:51 <Deewiant> ca* that is
14:42:02 <Deewiant> shorter :-P
14:42:25 <oklopol> darn :D
14:43:20 <Deewiant> AnMaster: if you want to do benchmarking, this generates some /slow/ code :-P
14:43:50 <Deewiant> getting the 8th fibonacci number took about as many seconds
14:44:10 <Deewiant> over 10KB of code :-)
14:55:28 -!- Tritonio_ has joined.
15:06:17 <AnMaster> Deewiant, where?
15:06:50 <AnMaster> ah
15:06:53 <Deewiant> AnMaster: about 10 lines up
15:06:57 <AnMaster> Deewiant, yes work is slow on cfunge atm
15:07:01 <AnMaster> I got a really nasty cold
15:07:07 <AnMaster> so spend most time in bed atm
15:07:09 <AnMaster> :(
15:07:27 <AnMaster> note I can't code scheme btw
15:07:33 <Deewiant> you worried that I'm secretly rewriting CCBI in Fortran to speed it up? ;-P
15:07:40 <AnMaster> harhar
15:07:45 <AnMaster> nah not really
15:08:06 <Deewiant> and that comes with some scheme samples, like the factorial, which it compiles by default
15:08:20 <Deewiant> so you can just use that if you're interested
15:08:27 <AnMaster> how do I run it?
15:08:47 <Deewiant> get a common lisp compiler/interpreter and run it on the source
15:08:58 <AnMaster> Deewiant, err did you say scheme or lisp?
15:09:03 <Deewiant> at the bottom of the file under "tests" are what it compiles
15:09:12 <Deewiant> AnMaster: it's written in common lisp
15:09:24 <AnMaster> ok, why not scheme, to make it self hosting ;)
15:09:38 <Deewiant> it'd be too limited for that, anyway :-P
15:09:43 <Deewiant> but I don't know.
15:10:11 <AnMaster> Deewiant, would sbcl work?
15:10:18 <AnMaster> I think it was installed by maxima
15:10:24 <AnMaster> as a dep of maxima I mean
15:10:24 <Deewiant> I don't know, try it :-P
15:11:04 <AnMaster> err it outputs stuff like:
15:11:04 <AnMaster> (LAMBDA (G2998)
15:11:05 <AnMaster> ((LAMBDA (G2998)
15:11:05 <AnMaster> (G2998
15:11:05 <AnMaster> (LAMBDA (G2998 N)
15:11:10 <AnMaster> ???
15:11:20 <Deewiant> don't know what that's about
15:11:25 <Deewiant> might be debugging stuff or something
15:11:32 <Deewiant> the program is in out.bf
15:12:12 <AnMaster> $ ./cfunge scheme/out.bf
15:12:12 <AnMaster> 120
15:12:13 <AnMaster> hm?
15:12:15 <AnMaster> that's all?
15:12:21 <Deewiant> factorial of 5
15:12:21 <Deewiant> :-)
15:12:31 <Deewiant> that's the program it compiles by default
15:12:34 <AnMaster> tool like half a second
15:12:38 <AnMaster> or less
15:12:38 <Deewiant> yep :-)
15:12:45 <AnMaster> not optimized build
15:13:01 <Deewiant> try fibonacci
15:13:45 <AnMaster> *** - (NOT "unbound variable") must evaluate to a non-NIL value.
15:13:46 <AnMaster> mhm?
15:13:59 <Deewiant> compile error?
15:14:02 <Deewiant> I don't know lisp myself
15:14:10 <AnMaster> what one is fibonacci
15:14:19 <Deewiant> there's not one there, I'm pasting it
15:14:28 <Deewiant> http://lisp.paste.f-box.org/43
15:14:28 <AnMaster> k
15:14:37 <AnMaster> yet another pastebin
15:14:46 <AnMaster> running the same old software
15:16:02 <AnMaster> Deewiant, ok took about 2 seconds to run
15:16:12 <AnMaster> and the code look badly optimized btw
15:16:16 <Deewiant> yep, see if you can speed that up
15:16:21 <Deewiant> if you're interested
15:16:29 <AnMaster> I don't know lisp
15:16:36 <Deewiant> not the point
15:16:45 <Deewiant> profile CFunge and see if there are any bottlenecks
15:16:52 <Deewiant> or if it's still just the same old funge-space
15:16:56 <AnMaster> well I mean the befunge code looks unoptimized
15:16:59 <AnMaster> but indeed I will
15:17:15 <Deewiant> of course it is, it's auto-generated from a much higher level language :-)
15:17:20 <Deewiant> and poorly ;-)
15:17:49 -!- oklopol has quit (Connection timed out).
15:19:12 -!- okopol has joined.
15:20:38 <AnMaster> Deewiant, yes still funge-space
15:20:51 <AnMaster> one thing however
15:20:58 <AnMaster> fungeSpaceInRange hmmm
15:21:06 <AnMaster> it does a lot of wrapping *looks at code*?
15:21:14 <Deewiant> looks like it, yes
15:21:17 <AnMaster> oh yes it does
15:22:06 <AnMaster> hm hash function got a bit of time too *tries another one*
15:23:03 -!- RedDak has joined.
15:23:43 <AnMaster> Deewiant, also the main execute instruction doesn't look too good
15:26:51 <AnMaster> Deewiant, in total most time is spent in hash lookup indeed, but per call it is most in ExecuteInstruction
15:26:53 <AnMaster> hm
15:28:14 <AnMaster> Deewiant, how long does CCBI take?
15:29:32 <Deewiant> about 9.7 seconds on windows here
15:29:35 <Deewiant> for that fibo
15:30:14 <AnMaster> cfunge does take about 2 seconds on it :)
15:30:19 * AnMaster looks for the ccbi binary
15:30:31 <Deewiant> but of course we're on different machines so the numbers mean little :-P
15:30:39 <Deewiant> plus I've got about 20% background CPU usage anyway
15:30:55 <AnMaster> real 0m8.182s
15:30:56 <AnMaster> yeah
15:31:06 <AnMaster> that's from ccbi
15:31:33 <AnMaster> <q$>04a*4+21g01g:3+01p11p11g2+1p11g1+1p11g0+1p11g04a*3+21g01g:3+01p11p11g2+1p11g1+1p11g0+1p11g:31p2+1g01g:2+01p11p11g1+1p11g0+1p11g21p31g1+1g>#x;# \-+5*a+3*a+4*a20-0+2;#
15:31:39 <AnMaster> still I wonder wtf it is doing
15:32:48 -!- jix has quit ("This computer has gone to sleep").
15:33:44 <AnMaster> Deewiant, I think I seen a pretty fast version of fibo in funge somewhere
15:35:05 <Deewiant> AnMaster: it converted ordinary functional code to CPS
15:35:13 <AnMaster> CPS?
15:35:23 <Deewiant> which, in itself, suggests to me that the result will be complicated, let alone in befunge :-P
15:35:26 <Deewiant> continuation-passing style
15:35:32 <AnMaster> ah
15:35:43 <AnMaster> it uses x a lot I see btw
15:36:24 <AnMaster> yeah befunge doesn't fit for functional programming
15:36:49 <Deewiant> s/functional // ;-)
15:38:02 <AnMaster> for example it doesn't use a-f
15:38:03 <AnMaster> hm
15:39:19 <AnMaster> oh wait it does
15:39:21 <AnMaster> but not often
15:44:52 <SimonRC> I think more inlining would help cut down the x usage
15:47:25 <AnMaster> SimonRC, hum?
15:48:01 <AnMaster> SimonRC, x isn't such a large problem
15:48:05 <AnMaster> other things are worse
15:48:08 <AnMaster> way worse
15:49:38 <AnMaster> hm
15:50:07 <AnMaster> Deewiant, for that program keeping track of two bounding boxes of funge space would help
15:50:12 <AnMaster> because first there is a huge line and then a lot of short ones that wrap
15:50:30 <AnMaster> however I got no idea how to detect it from code
15:50:30 <Deewiant> by all means implement some kind of dynamic partitioning :-)
15:50:40 <AnMaster> Deewiant, I don't know how heh
15:50:57 <AnMaster> but wrapping was quite near the top in that program
15:51:06 <AnMaster> Deewiant, still I beat CCBI ;P
15:51:12 <Deewiant> no surprises there :-P
15:51:20 <SimonRC> ah!
15:51:22 <SimonRC> I know..
15:51:28 <AnMaster> SimonRC, ?
15:51:39 <SimonRC> you could partition space into 32*32 blocks
15:51:54 <AnMaster> hm?
15:52:16 <SimonRC> then for each block, store a bitmap for rows and columns, to say whether there is anything in it...
15:52:21 <AnMaster> still hash function for hash table of fungespace is *worse*
15:52:32 <SimonRC> then you can check 32 cells for code with a simple bit operation
15:53:10 <SimonRC> my optimisation will catch the common case of wrapping when going <v>^
15:53:18 <AnMaster> for cardinal wrapping there could exist one trick
15:53:32 <AnMaster> keep a line length of each line
15:53:59 <SimonRC> AnMaster: mine is a slightly more advanced version of that.
15:54:29 <Deewiant> AnMaster: that's what I originally considered but decided to keep things simple and just kept one big box
15:54:40 <AnMaster> actually just fixing cardinal wrapping to not use the slow backtrack method used for non-cardinal
15:55:00 <AnMaster> the simplified wrapping is atm disabled due to causing an error in mycology
15:55:10 <AnMaster> a infinite loop on string across wrap
15:55:13 <AnMaster> an*
15:55:27 * AnMaster goes to try to find what is wrong in that code
15:56:16 <SimonRC> another idea is to store for each instruction the closest and furthest instruction in each direction
15:56:32 <SimonRC> that could be done lazily
15:56:48 <SimonRC> so the code turns itself into a linked list
15:57:03 <SimonRC> but you would have to handle the insertion of new instructions somehow...
15:58:04 <AnMaster> yes that is one thing, the other issue is with fetching instructions
15:58:19 <AnMaster> need to store a struct instead of just a int into the hash table
16:09:06 <okopol> oh god....
16:09:15 <okopol> oklotalk's continuation system == the J operator xD
16:09:25 <okopol> okay, i've invented another old invention
16:09:27 <okopol> lolz
16:09:27 <okopol> ->
16:11:42 <AnMaster> UNDEF: the empty string wrapped around the edge of space >0a-6cf*+p v>1> \v vv v\ >1>v
16:11:44 <AnMaster> Deewiant, hehehe ^
16:12:13 <SimonRC> hey. that is a point
16:12:33 <SimonRC> with threads, it is possible for an IP to end up trying to traverse a completely empty line
16:12:58 <AnMaster> SimonRC, hm? or with J of SUBR fingerprint
16:13:04 <AnMaster> and possible a few more
16:13:14 <AnMaster> SimonRC, and it is possible even without threads
16:13:18 <SimonRC> what happens then?
16:13:24 <AnMaster> I have seen a program that manage to self destructs itself
16:13:32 <AnMaster> SimonRC, infinite loop possibly
16:13:39 <SimonRC> huh? where?
16:13:43 <AnMaster> err?
16:13:47 <AnMaster> <SimonRC> with threads, it is possible for an IP to end up trying to traverse a completely empty line
16:13:52 <AnMaster> well depends on interpreter
16:13:59 <AnMaster> logically it should be an infinite loop
16:14:07 <AnMaster> wrapping and doing nothing
16:14:25 <AnMaster> as space take no ticks it would lock up any other IP too
16:14:58 <AnMaster> http://quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/
16:14:59 <AnMaster> is where
16:15:11 <AnMaster> "Suicide programs"
16:15:24 <SimonRC> oh wow, nice domain name
16:15:29 <AnMaster> yeah
16:16:27 <SimonRC> ah, I just remembered that you can wrap to get the last few instructions to die
16:17:28 <Deewiant> heh, suicide programs
16:23:49 -!- jix has joined.
16:24:11 -!- jix has quit (Remote closed the connection).
16:24:36 -!- jix has joined.
16:26:04 -!- Tritonio_ has quit (Remote closed the connection).
17:05:34 -!- Tritonio_ has joined.
17:07:21 -!- atsampso1 has quit ("electricity meter change").
17:19:54 -!- RedDak has quit ("Killed (NickServ (Comando GHOST usato da DIO))").
17:22:25 -!- ehird has joined.
17:22:51 -!- ehird has quit (Remote closed the connection).
17:25:20 -!- timotiis has joined.
17:25:36 -!- slereah__ has joined.
17:27:15 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
17:34:15 -!- okopol has quit (Read error: 110 (Connection timed out)).
17:37:57 -!- atsampson has joined.
17:41:24 -!- ehird has joined.
17:41:56 <ehird> I haev 5.3 hearts.
17:42:39 <AnMaster> ehird, err?
17:42:42 <slereah__> Are you a Space Marine or a Mario brother?
17:42:54 <AnMaster> slereah__, what is a space marine?
17:42:56 <marshmallows> yay ehird
17:43:09 <marshmallows> http://rosettacode.org/wiki/Amb
17:43:25 <slereah__> A marine. In space.
17:43:32 <marshmallows> made that page based on the amb stuff
17:43:33 <slereah__> The most famous example has two hearts.
17:43:56 <slereah__> Super Mario is a good example of a game that was given a plot after conception.
17:44:09 <slereah__> PLUMBERS. UP TO BATTLE EVIL TURTLES
17:44:43 <AnMaster> marshmallows, "The Amb operator takes some number of expressions (or values if that's simpler in the language) and nondeterministically yields the one"
17:44:49 <AnMaster> err that grammar is broken?
17:44:59 <marshmallows> AnMaster: probably.. I wrote it..
17:45:04 <marshmallows> You can fix it if you like
17:45:04 <AnMaster> "nondeterministically yields the one" <-- the one what?
17:45:12 <AnMaster> marshmallows, I got no clue what it is about
17:45:33 <AnMaster> slereah__, hehehehe
17:45:39 <AnMaster> slereah__, yeah XD
17:46:13 <slereah__> And we all know what happened when they tried to make a movie out of it!
17:46:23 <AnMaster> err they did?
17:46:28 <AnMaster> did they really try it?
17:46:31 <slereah__> Yes. They did.
17:46:32 <AnMaster> oh my
17:46:36 <AnMaster> failure I bet
17:46:36 <Deewiant> The operative word is 'try'.
17:46:37 <slereah__> Tried, and...
17:46:47 <slereah__> Well, not succeeded, but the movie did came out
17:46:54 <AnMaster> oh?
17:47:05 <slereah__> http://www.gamesetwatch.com/mariomovie2.jpg
17:47:18 <AnMaster> oh my
17:47:45 <AnMaster> when was that?
17:47:45 <slereah__> When your game is about plumbers to defeat evil reptiles, it's hard to scrap up enough plot for a movie
17:47:53 <slereah__> At least ten years ago
17:47:59 <slereah__> That's roughly when I saw it
17:48:07 <AnMaster> you did? poor you
17:48:10 <slereah__> 1993 sez Wikipedia
17:48:12 -!- okopol has joined.
17:48:41 <slereah__> "Although it boasted several big stars, the film was denounced by critics as "cheesy" and lacking any sort of coherent plot. "
17:48:50 <slereah__> Very much in the image of Super Mario itself
17:49:21 <ehird> AnMaster: amb(1,2,3) returns 1 2 or 3
17:49:28 <ehird> if you then do amb() later, it goes back and picks another
17:49:30 <ehird> so:
17:49:39 <ehird> int foo = amb(1,2,3); if (foo < 2) { amb(); }
17:49:40 <ehird> foo is 2
17:50:03 <marshmallows> or 3
17:50:04 <AnMaster> so it's like picking a card from a pack
17:50:14 <AnMaster> and not putting it back before next pick
17:50:14 <marshmallows> DFS is not specified
17:50:16 <AnMaster> ?
17:50:20 <ehird> marshmallows: your code free()s an argument, that's bad style
17:50:24 <ehird> marshmallows: yes
17:50:29 <ehird> AnMaster: well, foo is not 1
17:50:33 <ehird> it is 2 or 3
17:50:40 <AnMaster> ehird, ?
17:50:47 <ehird> basically, amb() means 'one of your previous amb()s were wrong, pick another'
17:50:49 <marshmallows> ugh yeah
17:50:57 <marshmallows> my code is wrong, thanks for pointing that out
17:51:00 <AnMaster> ah I see
17:51:07 <ehird> marshmallows: my pasted one was a LOT simpler..
17:51:16 <marshmallows> it didn't work though :P
17:51:35 <ehird> marshmallows: it did
17:51:35 <marshmallows> if you have a simpler one do just replace mine though
17:51:39 <ehird> mine worked
17:51:39 <AnMaster> ehird, so it is basically back tracking?
17:51:51 <marshmallows> well I had some verson of amb that didn't work at some point
17:52:12 <ehird> AnMaster: it is a backtracking operator
17:52:22 <AnMaster> and that iirc is quite slow?
17:52:30 <ehird> AnMaster: it's a theoretical construct.
17:52:37 <AnMaster> yeah
17:52:42 <ehird> not useful in practice, really, though i think you can implement prolog with just a few more things
17:52:49 <AnMaster> what does amb stand for?
17:52:55 <ehird> AnMaster: ambigious
17:52:58 <AnMaster> ah
17:54:32 <ehird> also
17:54:35 <ehird> the ruby amb is terrible, marshmallows
17:54:42 <ehird> http://www.randomhacks.net/articles/2005/10/11/amb-operator nicer
17:55:02 <ehird> also the scheme is ugly
17:58:02 <lament> scheme is ugly!
17:58:17 * slereah__ liek the way scheme looks :(
17:58:31 <slereah__> Unlike Haskell!
17:58:44 <AnMaster> C!
17:58:49 <AnMaster> and funge of course
17:59:10 <AnMaster> but for real languages C with correct indention (as in the way I like it) is the beauty itself ;P
17:59:12 * AnMaster runs
17:59:20 <AnMaster> real as in non-esoteric
17:59:38 <slereah__> Does MACHINE CODE count as real? :o
17:59:53 <lament> so i propose that we do get logged by irseek
18:00:06 <slereah__> Sure, why not.
18:00:07 <lament> just consider http://www.irseek.com/result.php?keywords=brainfuck
18:00:32 <slereah__> <ironfroggy>:brainfuck is not a sane language.
18:00:36 <slereah__> Haet crime!
18:00:39 <lament> the key advantage over ircbrowse is that ircbrowse is for people who already know that #esoteric exists
18:00:50 <lament> and in irseek, you search by keyword
18:00:56 <lament> so new people could find us that way
18:02:04 <ehird> lament: irseek is corporate jib-jab :D
18:02:18 <ehird> <insert something about eso-std.org housing a logbot and then proceed to never put it up>
18:02:28 <lament> rrright :)
18:02:46 <slereah__> A logbot... IN PSOX?
18:08:25 <ehird> libstacksmash is a much nicer name than libcallstack
18:08:30 <ehird> libcstack might be more correct
18:08:53 <slereah__> LIBSTACK SMASH!
18:16:28 -!- okopol has quit (Read error: 113 (No route to host)).
18:24:28 -!- slereah_ has joined.
18:24:28 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
18:29:48 -!- p3k has joined.
18:30:35 -!- Deformative has quit (Remote closed the connection).
18:30:57 -!- Deformative has joined.
18:39:51 -!- p3k has quit.
18:42:41 -!- Tritonio_ has quit (Remote closed the connection).
18:56:40 -!- RedDak has joined.
19:04:13 -!- Tritonio_ has joined.
19:22:23 -!- sebbu has joined.
19:34:57 * SimonRC goes
19:37:55 -!- RedDak has quit ("Killed (NickServ (Comando GHOST usato da DIO))").
19:38:30 -!- Tritonio__ has joined.
19:40:10 -!- Tritonio_ has quit (Read error: 113 (No route to host)).
20:27:30 <slereah_> Aaaargh.
20:27:35 <slereah_> Damn that jot!
20:48:30 <AnMaster> slereah_, ?
20:49:01 <slereah_> The 1 for ` is really not intuitive at all D:
20:49:10 <slereah_> Because it DOES NOT ACTUALLY WORK AS A GENERAL RULE
20:50:18 <AnMaster> slereah_, well try another language then?
20:50:42 <slereah_> Well, still, I'd like to understand!
20:51:47 <slereah_> But the problem is, 00 is also k, but 10000 isn't `kk
20:52:02 <slereah_> It's ``ssk (^xy.xyx)
20:52:25 <slereah_> The 1 = ` only works if you use 11100 and 11111000
20:52:49 <slereah_> Although I'm starting to doubt my interpreter, since the "shortest non-terminating program" terminates.
21:35:30 -!- shinkuzin has joined.
21:51:20 -!- RedDak has joined.
22:03:55 -!- ehird has quit (Read error: 113 (No route to host)).
22:04:12 -!- ehird has joined.
22:04:45 -!- ehird has set topic: #esoteric - Extending Tetrationfuck to the reals with magnets, cauliflour and tpyos extended over the reals with tetr. | Logs: http://ircbrowse.com/cdates.html?channel=esoteric | Wiki: http://esolangs.org/wiki/ | The Esoteric File Archive: http://esolangs.org/files/.
22:04:50 <ehird> what
22:16:41 <slereah_> What what
22:17:01 -!- RedDak has quit ("Killed (NickServ (Comando GHOST usato da DIO))").
22:17:22 -!- RedDak has joined.
22:22:16 <ehird> slereah_: In the butt?
22:22:41 <slereah_> Yes, indeed.
22:22:54 <slereah_> Although "Bear Force One" is a contender in gayness.
22:25:22 -!- okopol has joined.
22:29:15 -!- ehird_ has joined.
22:29:18 -!- ehird has quit (Read error: 113 (No route to host)).
22:36:15 -!- Tritonio__ has quit (Remote closed the connection).
22:46:35 -!- shinkuzin has quit (Read error: 113 (No route to host)).
23:01:26 -!- olsner has joined.
23:31:44 -!- timotiis has quit ("leaving").
23:47:08 -!- jix has quit (Read error: 110 (Connection timed out)).
23:47:16 -!- RedDak has quit (Remote closed the connection).
2008-03-28
00:58:37 -!- okopol has quit (Connection timed out).
01:03:09 -!- Sgeo has joined.
01:29:17 -!- sebbu has quit ("@+").
02:15:52 <slereah_> Holy Batman, there's actually a functioning site for Iota http://barker.linguistics.fas.nyu.edu/Stuff/Iota/
02:42:50 -!- GreaseMonkey has joined.
03:27:49 -!- ehird_ has quit (Client Quit).
05:09:43 -!- poiuy_qwert has joined.
05:54:12 -!- adu has joined.
06:15:08 -!- Sgeo has quit (Remote closed the connection).
06:23:10 -!- RodgerTheGreat has quit.
06:36:42 -!- codechAos has joined.
06:36:58 <codechAos> #triangleparty
06:37:20 <marshmallows> codechAos: #squareparty
06:37:32 <marshmallows> It's much more perpendicular
06:37:36 <codechAos> noooo
06:37:39 <marshmallows> yes
06:37:41 <codechAos> we are against square
06:37:45 <codechAos> *squares
06:37:50 <codechAos> its even in the topic
06:38:35 <marshmallows> Can't you see that square is much better? The fundamental 4 CORNER DAYS PROVES 1 DAY 1 GOD IS TAUGHT EVIL I call down a Demonic Curse upon the Evil
06:38:35 <marshmallows> Americans who ignore Earth's 4 Corner Days
06:38:35 <marshmallows> within a single rotation of 4 quadrant Earth.
06:38:35 <marshmallows> Believing in a God when there is proof that
06:38:35 <marshmallows> there is no God, dooms humanity to a Hell
06:38:36 <marshmallows> of Horror. America is 1/2 way to it's Hell.
06:38:38 <marshmallows> The American "Bill of Rights" - "Freedom of
06:38:40 <marshmallows> Speech", is BullShit. MisEducators suppress
06:38:42 <marshmallows> The Time Cube Principle and will not allow
06:38:44 <marshmallows> Students to discuss or debate it's merits and
06:38:46 <marshmallows> application. Also, the Academic bastards
06:38:48 <marshmallows> will not even allow Time Cube on their web
06:38:52 <marshmallows> sites. On Yahoo, Time Cube - 81,000,000
06:38:55 <marshmallows> and on Google was once 89,000,000 - until
06:38:56 <marshmallows> cut back to 3,000,000 by ignorant believers.
06:39:16 <codechAos> pastebin?
07:12:09 -!- codechAos has quit (Client Quit).
07:19:59 -!- poiuy_qwert has quit.
07:36:12 <adu> hi marshmallows
07:37:02 <marshmallows> hey adu!
07:37:07 <adu> how are you
07:37:45 <marshmallows> I'm rewriting my Prolog interpreter
07:37:46 <adu> marshmallows: are you an obscurantist?
07:38:20 <marshmallows> mm I don't think so
07:38:29 <marshmallows> well
07:38:34 <adu> http://www.merriam-webster.com/dictionary/obscurantism
07:38:41 <marshmallows> I think I am actually but unintentionally
07:38:51 <adu> 2 a :
07:39:06 <adu> "deliberate vagueness or abstruseness"
07:40:14 <marshmallows> I didn't actually mean to paste all that crap btw :/
07:41:08 <adu> ok
07:41:49 <adu> I enjoy reading obscurantism, but only if it highlights the absense of the intense variety within the realm of the time tube
07:41:56 <adu> hehehe
07:44:26 <adu> i think the best obscurantism i've seen tho is political
07:45:32 <adu> you know, the parts where they go on and on and on about how this one place has weapons, then they go on and on and on about how they are there...
07:45:57 <adu> then they briefly mention how they didn't find any...
07:46:20 <adu> then they go on and on and on about how they need to be there for other reasons...
07:46:27 <marshmallows> yeah that can happen :p
07:46:50 <adu> :P
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:24:21 -!- Judofyr_ has joined.
08:24:21 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
08:37:10 -!- atsampson has quit (Read error: 113 (No route to host)).
08:43:29 <marshmallows> :D
08:43:37 <marshmallows> My rewrite is ~300 lines
09:03:41 -!- adu has quit (Remote closed the connection).
09:24:29 -!- GreaseMonkey has quit ("im tierd").
10:22:47 <AnMaster> marshmallows, of what?
10:24:42 <marshmallows> Prolog interpreter
10:32:30 <AnMaster> I see
10:32:40 <AnMaster> is there any prolog *compiler* btw?
10:33:01 <marshmallows> Yes
10:33:10 <marshmallows> Aquarius is an excellent one
10:33:28 <marshmallows> complining Prolog is really interesting
10:33:30 <AnMaster> I still find backtracking weird
10:34:01 <AnMaster> and IMO wasting of system resources, it is very time consuming to do backtracking iirc
10:40:45 -!- atsampson has joined.
10:45:58 -!- olsner has quit ("Leaving").
11:01:34 -!- kryptos23 has joined.
11:27:05 <AnMaster> Deewiant, I'm working on a protocol for debugger and funge interpreter
11:31:52 -!- Tritonio_ has joined.
11:33:31 -!- kryptos23 has left (?).
12:19:14 -!- Sukoshi has joined.
12:22:06 -!- Sukoshi has quit (Client Quit).
13:22:38 -!- sebbu has joined.
13:45:05 -!- Corun has joined.
14:19:48 -!- RodgerTheGreat has joined.
14:27:47 -!- Corun has quit (Read error: 113 (No route to host)).
14:46:13 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
14:46:23 -!- RedDak has joined.
14:46:28 -!- Slereah has joined.
14:54:01 -!- Judofyr_ has changed nick to Judofyr.
15:43:14 -!- ehird has joined.
15:43:34 <ehird> foo, bar, baz, quux and zonk
15:44:10 <ehird> i == true swap [] if that's clever
15:46:58 <ehird> AnMaster: prolog's don't do real backtracking that often..
15:47:00 <ehird> they are clever
15:47:12 <AnMaster> hm?
15:48:58 <ehird> AnMaster: well, they try and do confusing inferrence stuff that i don't understand to avoid backtracking
15:49:10 <ehird> & i do believe that most prolog's backtracking is micro-optimized anyway
15:50:15 <AnMaster> mhm
15:50:22 <ehird> AnMaster: so i wouldn't worry
15:58:34 -!- okopol has joined.
16:05:08 -!- okopol has changed nick to oklopol.
16:39:16 -!- RedDak has quit (Remote closed the connection).
17:18:06 -!- adi11235 has joined.
19:01:08 -!- oklopol has quit (No route to host).
19:01:17 -!- timotiis has joined.
19:14:50 -!- okopol has joined.
19:15:41 * SimonRC wonders if USAToday are coppying stories from the Onion: http://www.usatoday.com/travel/flights/2006-10-19-skyeurope-minusfare_x.htm
19:16:29 <ehird> THANK you for flying with us!
19:19:43 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)).
19:20:41 -!- bsmntbombdood has joined.
19:26:41 -!- okopol has quit (Remote closed the connection).
19:27:05 -!- okopol has joined.
19:30:10 <lament> peaker is so misguided.
19:30:22 <lament> although it is a really beautiful dream :)
19:30:30 <ehird> lament: I agree
19:30:35 <lament> and will probably happen eventually
19:30:40 <ehird> I disagree
19:31:00 * SimonRC goes (pub)
19:31:22 <lament> ehird: not for modern programming languages. They're all optimized to be entered as text.
19:31:40 <ehird> lament: I doubt it will ever happen. Text is mungible, bungible, malleable, storable, movable stuff.
19:32:11 <lament> ehird: not really. it's just a bunch of characters.
19:32:20 <lament> ehird: consider writing with a pen on a piece of paper.
19:32:32 <lament> ehird: it's WAY more free-form than entering text in an editor.
19:32:47 <lament> ehird: in comparison, text is "structured"
19:33:08 <lament> and yet, we still use it
19:39:43 <lament> personally i would prefer the revolution to go the less structured way. That's how humans work
19:40:03 <lament> write your program as a bunch of notes on a piece of paper.
19:40:22 <lament> including diagrams, arrows, random doodles, etc
19:40:31 <ehird> personally i'm very happy with the status quo
19:40:42 <lament> then have your editor (presumably a strong AI) sort it out :)
19:41:09 <lament> i'm not. Modern programming languages clearly suck.
19:41:27 <lament> an unambiguous (to a human) description of an algorithm tends to be MUCH shorter than a corresponding program.
19:41:51 <ehird> lament: you might want to try K
19:41:53 <ehird> ;)
19:42:01 <ehird> if it's shorter-than-description you're after
19:42:05 <ehird> or oklotalk
19:42:07 <lament> not funny
19:42:21 <ehird> why not?
19:43:08 <lament> having a bunch of short builtins does not translate to expressivity
19:43:32 <lament> (corollary: paul graham is a moron)
19:45:14 <ehird> lament: to be honest the array paradigm of K seems to scale quite well to certain types of problems
19:45:17 <ehird> but i agree with the corollary
19:47:30 -!- okopol has quit (Remote closed the connection).
19:50:31 -!- okopol has joined.
19:55:10 <lament> subtextual.org certainly seems kinda lame
19:58:19 <ehird> lament: from a 2sec glance the 'everythign is serializable' is nice
19:58:21 <ehird> SISC can do that
19:58:25 <ehird> I ought to write something like that
19:58:30 <ehird> It would be nice
19:58:37 <ehird> Serializing continuations, functions, etc.
19:58:47 <ehird> You could serialize sockets, maybe, in a limited way (store host+port)
20:00:38 <lament> sisc doesn't try to revolutionize programming
20:01:33 <lament> and it isn't weirdly visual and stuff :)
20:01:44 <ehird> lament: sure, but you can serialize procs&conts&all that
20:01:47 <lament> what i really don't understand is why peaker thinks haskell is a good language for his task
20:02:04 <lament> (as opposed to, like... scheme)
20:02:26 <ehird> lament: he doesn't
20:02:32 <ehird> remember his "int x = y" example?
20:05:09 <lament> btw, is sisc like, the best scheme out there?
20:06:01 <Deewiant> http://reddit.com/info/6dnlu/comments/ seems to lean towards PLT
20:09:13 <lament> PLT has a horrendous UI :)
20:11:01 <lament> PLT has that typed scheme thing though, and a lot of other packages
20:19:21 <ehird> lament: mzscheme = console plt
20:19:28 <ehird> you can use it with emacs or w/e
20:19:32 <ehird> Chicken is good too
20:19:35 <ehird> lots of libs
20:19:40 <ehird> however, sisc is based on java
20:19:45 <ehird> both positive and negatiev
20:20:01 <marshmallows> SISC is actually really good but a bit slow compared to others
20:20:10 <ehird> lament: DrScheme's actual features are good though
20:20:13 <ehird> even if it is a bit ugly
20:26:14 <Slereah> SISC?
20:26:18 <lament> sisc just seems... clean
20:26:25 <Slereah> Serious instruction set? :o
20:26:56 <ehird> Second Interpreter of Scheme Code
20:27:15 <Slereah> Oh.
20:28:40 -!- olsner has joined.
20:28:49 * lament so wishes there was ONE scheme implementation :)
20:30:05 -!- okopol has quit (Read error: 113 (No route to host)).
20:40:13 -!- Corun has joined.
20:51:30 -!- adrian__ has joined.
21:03:49 -!- adi11235 has quit (Read error: 110 (Connection timed out)).
21:10:03 -!- adrian__ has quit (Read error: 113 (No route to host)).
21:22:16 <ehird> http://codepad.org/PPXTpdOr this is pretty esoteric :)
21:22:29 <ehird> things I want to fix: make it valid C too, instead of just valid shell
21:22:41 <ehird> and fix the program there
21:22:48 <ehird> it should say 'I am ./script.c'
21:22:52 <ehird> not 'I am /tmp/sdfoisudoi'
21:22:57 <ehird> comments welcome :)
21:23:10 <marshmallows> I wanted this !
21:23:23 <marshmallows> I didn't bother to do it but it seemed useful earlier
21:23:28 <ehird> hmmm wait...
21:23:31 <ehird> marshmallows: Improving it now
21:23:35 <marshmallows> It's nice how you can go
21:23:44 <marshmallows> // <applet code="..." ...>
21:23:47 <marshmallows> in a .java f ile
21:23:54 <marshmallows> for appletviewer
21:24:01 -!- adrian__ has joined.
21:24:49 <ehird> marshmallows: http://codepad.org/2FseWr0r
21:25:07 <ehird> removes the file even on compiler failure
21:25:54 <marshmallows> my Prolog interp is -fast- :D
21:26:05 <marshmallows> mutablestate++;
21:27:18 <GregorR> I don't think you're propagating $CODE properly
21:28:15 <ehird> GregorR: you're right. just fixed it
21:28:28 <ehird> http://codepad.org/bUixvfvj
21:28:31 <ehird> its a line longer now
21:28:42 <ehird> mm oh wait
21:28:47 <ehird> i don't need \n after the comment line
21:29:20 <ehird> hmm
21:29:24 <ehird> /* will always fail in shell?
21:29:26 <ehird> hopefully?
21:29:26 <ehird> :P
21:30:42 <GregorR> Uh, it will after a #, that's for sure.
21:30:50 <GregorR> Fail to do anything, that is :P
21:30:59 <ehird> No
21:31:03 <ehird> I mean without the #*
21:31:07 <ehird> It assumes one thing:
21:31:19 <ehird> there isn't an executable that gets sorted first in /
21:31:39 <ehird> Currently it starts:
21:31:44 <ehird> /* 2>/dev/null;
21:31:58 <GregorR> Ah, I see the quandry.
21:32:03 <ehird> Yeah.
21:32:07 <ehird> Trying to reduce lines & get it valid c
21:32:15 <ehird> Because, if I can get it valid C
21:32:17 <GregorR> How about #define true /*\ntrue
21:32:18 <ehird> then I can remove all my filtering
21:32:25 <GregorR> Nah, that probably won't work, come to think of it :P
21:32:27 <ehird> and just have it call gcc
21:33:52 <GregorR> Wait
21:33:58 <GregorR> How about just #if 0 #endif instead of /* */?
21:34:14 <ehird> GregorR: Great idea!
21:34:23 <ehird> But the shebang must be the first line of the file.
21:35:15 <GregorR> Oh, you don't want to be tail'ing that off? :P
21:35:26 <ehird> ahaaa! wait a second!!
21:35:33 <ehird> #define true \
21:35:33 <ehird> #!/bin/sh
21:35:33 <ehird> #if 0
21:35:36 <ehird> except the problem is
21:35:39 <ehird> i don't want to define anything
21:35:41 <ehird> solution: undef after that
21:35:51 <GregorR> Uh, plus the shebang line isn't the first line then?
21:35:58 <ehird> Ohh. Crap.
21:36:17 <ehird> GregorR: Don't see how to do this :(
21:39:06 -!- RedDak has joined.
21:39:58 <ehird> GregorR: Any thoughts?
21:40:11 <ehird> basically, #!foo and #! foo are acceptable
21:42:19 <ehird> GregorR: :/
21:42:32 -!- adrian__ has quit (Read error: 113 (No route to host)).
21:43:09 <ehird> GregorR: I don't think there's any way to get cc to acecpt it
21:50:24 <ehird> GregorR: It's getting more and more advanced by the minute :p
21:50:29 <ehird> #if 0
21:50:29 <ehird> FILE=`mktemp -t _$(echo "$0" | tr -c [:alnum:] _).XXXXXXXXXX` || exit 1
21:50:29 <ehird> if gcc -Wall -xc "$0" -o "$FILE"; then "$FILE" $*; CODE=$?; else CODE=$?; fi
21:50:29 <ehird> rm -f $FILE; exit $CODE
21:50:29 <ehird> #endif
22:02:53 <ehird> Okay. GregorR, marshmallows: http://codepad.org/09A2RJCH A c-script that turns a c file into a c-script
22:03:47 <GregorR> I wonder what system the remote side runs to get that output.
22:04:13 <ehird> GregorR: it's described somewhere
22:04:21 <ehird> http://codepad.org/about
22:05:14 <ehird> GregorR: Here! http://www.hackerdashery.com/2008/03/scaling-at-2am-with-ec2.html
22:05:29 -!- adrian__ has joined.
22:05:37 <ehird> Basically, lots of Amazon C2 services which automatically rewipe themselves regularly
22:05:49 <ehird> & all programs under them run under heavy tracing & each in their seperate chroot jail
22:20:25 -!- adi11235 has joined.
22:20:44 -!- Tritonio_ has quit (Remote closed the connection).
22:24:44 -!- adrian__ has quit (Read error: 113 (No route to host)).
22:42:37 -!- adi11235 has quit (Read error: 113 (No route to host)).
22:49:50 -!- Corun has quit ("This computer has gone to sleep").
22:52:58 -!- Corun has joined.
23:28:50 -!- marshmallows has left (?).
23:30:51 -!- marshmallows has joined.
23:54:45 -!- digital_me has joined.
23:55:19 -!- bsmntbombdood has quit (Nick collision from services.).
23:55:26 -!- digital_me has changed nick to bsmntbombdood.
23:55:55 -!- bsmntbombdood_ has joined.
2008-03-29
00:02:04 -!- RedDak has quit (Remote closed the connection).
00:19:50 <ehird> marshmallows: how short is your prolog again?
00:20:20 <marshmallows> the core is about 300 lines but I'm adding lots of primitives now
00:20:30 <ehird> marshmallows: does it use amb
00:20:31 <marshmallows> this is in Scheme
00:20:34 <ehird> cool
00:20:36 <marshmallows> no, just streasm
00:20:39 <ehird> i'm working on an embedding in scheme now
00:20:39 <ehird> :D
00:20:45 <ehird> (~ (cons X Y (X . Y)))
00:20:50 <olsner> marshmallows: eh, so it's *growing* now? that can't be right! :P
00:21:04 <marshmallows> heheh, olsner I'm not that good yet
00:21:29 <marshmallows> ehirid: Have you seen Reasoned Schemer by the way?
00:21:33 <marshmallows> >_<
00:21:35 <marshmallows> Ehird*
00:22:05 <ehird> nope
00:22:09 <ehird> read little schemer though
00:24:00 <marshmallows> syntax-rules is so great
00:24:54 <ehird> (define (all? f l) (cond ((null? l) #t) ((f (car l)) (all? f (cdr l))) (else #f)))
00:24:58 <ehird> marshmallows: what srfi is that ^^?
00:25:12 <marshmallows> all? is renamed every in SRFI-1
00:26:26 -!- bsmntbombdood has quit ("leaving").
00:26:32 <marshmallows> This is one of my utilites
00:26:33 <ehird> marshmallows: I wish strings were lists
00:26:33 <marshmallows> (define (cons/fail car cdr) (if cdr (cons car cdr) cdr))
00:26:36 <ehird> I have to do:
00:26:45 <ehird> (string->list (symbol->string var))
00:26:58 <ehird> (define (prolog-variable? x)
00:26:59 <ehird> (every (lambda (x) (char= x (char-upcase x)))
00:26:59 <ehird> (string->list (symbol->string x))))
00:27:32 <marshmallows> just (define (symbol->list symbol) (string->list (symbol->string var)))
00:27:33 <lament> marshmallows: why did you have to implement read?
00:27:35 <marshmallows> er
00:27:38 <marshmallows> just (define (symbol->list symbol) (string->list (symbol->string symbol)))
00:27:56 <ehird> marshmallows: oh, and after:
00:27:58 <ehird> (~ (human socrates))
00:27:59 <ehird> (~ (human john))
00:27:59 <ehird> (~ (mortal X) (human X))
00:28:01 <ehird> you can just do:
00:28:05 <marshmallows> you are using a case sensitive Scheme O_o
00:28:06 <ehird> (mortal 'socrates) => #t
00:28:16 <ehird> marshmallows: chicken's the name.
00:28:51 <marshmallows> atm I have lone symbols are variables and anything else is a 0 arity compound
00:29:08 <ehird> (mortal 'socrates) is (prolog-query '(mortal socrates))
00:30:31 <ehird> hmm
00:30:39 <ehird> (mortal 'socrates) => (), #t actually
00:30:42 <ehird> (multiple values)
00:30:52 <ehird> (mortal 'X) => (socrates john), #t
00:30:53 <ehird> or #f
00:30:54 <ehird> unsure
00:31:48 <marshmallows> I was planning on (later, making a new language), which has () and []
00:31:51 <ehird> marshmallows: ah, wait
00:32:01 <ehird> shouldn't (moratl 'X) => ((X . socrates)), #t
00:32:02 <ehird> OR
00:32:06 <ehird> ((X . john)), #t
00:32:15 <ehird> i.e. the multiple X thing is just an artifact of the repl
00:32:40 <marshmallows> one solution
00:32:42 <marshmallows> i
00:32:42 <marshmallows> s
00:33:11 <marshmallows> (mortal 'X) ;=> (((X . socrates)) . #<redo>)
00:33:27 <marshmallows> ((cdr)) gives you more solutions
00:33:28 <ehird> marshmallows: Isn't that just:
00:33:36 <ehird> (mortal 'X) (fail)
00:34:29 <marshmallows> don't think so
00:34:55 <ehird> marshmallows: well, i still need a truth value, surely
00:34:57 <ehird> so:
00:35:07 <ehird> ((X . socrates)), #t, #<procedure redo>
00:36:11 <marshmallows> what would
00:36:20 <ehird> marshmallows: well, the repl
00:36:22 <marshmallows> (human ehird)
00:36:24 <marshmallows> give?
00:36:24 <ehird> it says 'yes' or 'no'
00:36:37 <ehird> ?- human(ehird).
00:36:37 <ehird> No
00:36:40 <ehird> thank you, swi prolog.
00:36:44 <ehird> it would probably give:
00:36:44 <marshmallows> in your thing lol
00:36:48 <ehird> (), #f, #f
00:36:53 <ehird> what in yours?
00:37:09 <marshmallows> ?- (human ehird)
00:37:10 <marshmallows> no
00:37:36 <marshmallows> in mine also
00:37:39 <marshmallows> ?- 0
00:37:39 <marshmallows> no
00:37:41 <marshmallows> ?- 1
00:37:44 <marshmallows> yes ; no
00:37:46 <marshmallows> ?- 2
00:37:50 <marshmallows> yes ; yes ; no
00:37:55 <marshmallows> n succeeds n times
00:38:37 <ehird> marshmallows: I meant in your return desuture
00:39:04 <marshmallows> empty-stream = '()
00:39:14 <marshmallows> and failure = empty-stream
00:39:44 <ehird> (human 'ehird) ;=> ?
00:40:01 <marshmallows> A success is (stream-cons '() empty-stream), I don't actually have any useful values though anymore.. since variable bindings are in mutable vectors (much more efficient than term copying I had before)
00:40:07 <ehird> (human 'ehird) ;=> ?
00:40:28 <ehird> also: for scheme i value elegance over practicality & speed ;)
00:40:40 <marshmallows> (prove (make-declarationbase) (human (ehird))) ;=> empty-stream
00:40:58 <marshmallows> yeah it's much more elegant than my previous too :P
00:41:09 <marshmallows> since I was doing huge amounts of ridiculous computation
00:41:26 <ehird> (human 'ehird) ;=> ?
00:41:30 <ehird> if (mortal 'X) ;=> (((X . socrates)) . #<redo>),
00:41:35 <ehird> then (human 'ehird) ;=> ?
00:42:13 <marshmallows> (mortal 'X) ;=> (((X . socrates)) . #<redo>)
00:42:27 <marshmallows> (#<redo>) ;=> (((X . john)) . #<redo>),
00:42:31 <marshmallows> (#<redo>) ;=> '()
00:42:44 <ehird> (human 'ehird) ;=> ?
00:42:44 <marshmallows> that's how I did it before
00:42:48 <marshmallows> '()
00:42:49 <lament> heh, somebody was recently asking in scheme about some algorithm he had, where everything was ugly and optimized
00:42:59 <marshmallows> empty-stream = '() = failure
00:43:05 <ehird> marshmallows: sounds like CL
00:43:06 <ehird> :p
00:43:09 <ehird> lament: haha
00:43:14 <marshmallows> (null? '())
00:43:24 <ehird> lament: i can't wait for scheme with loads of !x and #a#
00:43:27 <ehird> and ByteString
00:43:30 <ehird> and unsafe io
00:43:32 <lament> ehird: consider, though: r5rs is really small. It pretty much doesn't have anything. And yet, it has vectors (efficiency)
00:43:40 <marshmallows> (cdr '(x)) ;=> '()
00:43:47 <marshmallows> not really CL..
00:43:55 <ehird> Scheme: Now just like Haskell, but with a pretty lame type system! It's about 30% fast, too.
00:44:00 <ehird> marshmallows: :-)
00:44:23 <ehird> marshmallows: You know, though (cdr '()) is obviously nonsense, it occurs to me that (rest '()) and (tail '()) are '()
00:44:24 -!- Deformative has quit (Read error: 110 (Connection timed out)).
00:44:37 <marshmallows> (I am always worrying about that though because I've done much more CL than Scheme)
00:44:41 <ehird> So the operations on conses and lists are different, even the most fundamental ones.
00:44:57 <ehird> lament: Well, vectors have a conceptual elegance to them.
00:45:06 <ehird> Observe that you can't have conses without vectors of length 2.
00:45:14 <ehird> So really the vectors are *above* the lists.
00:45:23 <marshmallows> (define (make-variable) (unbind! (make-vector 1)))
00:45:24 <marshmallows> (define (unbind! variable) (vector-set! variable 0 variable) variable)
00:45:28 <marshmallows> I think this is great :P
00:45:30 <lament> i think vectors are horrendously ugly, at least if you actually use them.
00:45:35 <marshmallows> void *x; x = &x;
00:45:55 -!- GreaseMonkey has joined.
00:45:56 <ehird> marshmallows: Make the failure stream #f
00:46:03 <ehird> lament: The interface leaves much to be desired, I agree.
00:46:06 <marshmallows> you can bind variables into equivalence classes.. unbind on backtracking, deref etc
00:46:16 <marshmallows> ehird: That makes absolutely no sense :P
00:46:19 <ehird> marshmallows: Since your thing is a cons, not a list
00:46:21 <ehird> (X . redo)
00:46:26 <marshmallows> (a b c . #f)
00:46:35 <ehird> Well, you don't haev that.
00:46:39 <ehird> You have (list . func)
00:47:05 <marshmallows> (a b c d) = (a . (b . (c . (d . ()))))
00:47:23 <ehird> marshmallows:
00:47:23 <ehird> [23:42] <marshmallows> (mortal 'X) ;=> (((X . socrates)) . #<redo>)
00:47:23 <ehird> [23:42] <marshmallows> (#<redo>) ;=> (((X . john)) . #<redo>),
00:47:23 <ehird> [23:42] <marshmallows> (#<redo>) ;=> '()
00:47:26 <ehird> I see a cons there
00:47:26 <ehird> not a list
00:47:36 <ehird> Oh, and look at my cute type declaration syntax:
00:47:39 <ehird> ;; prolog-query : form -> (env <prolog-query>) or #f
00:47:48 <ehird> a b c -> d == function
00:47:57 <ehird> a or b == self-explaining
00:48:01 <ehird> x : y == x is of type y
00:48:07 <ehird> <x> = the type of x
00:48:18 <ehird> So amusingly, I have type recursion with a base case.
00:49:15 <ehird> marshmallows: What's the function for 'Nth char in string'?
00:49:17 <marshmallows> (a . (lambda () (b (lambda () (c (lambda () (d . ()))))))) = (stream a b c d)
00:49:30 <marshmallows> in Scheme or Prolog?
00:49:37 <ehird> marshmallows: and aha, but what you haev there is:
00:49:39 <marshmallows> string-ref or nth/elt
00:49:40 <ehird> (a lambda () ...)
00:49:45 <ehird> face it, you don't have a list
00:49:49 <ehird> #f shoudl be your termination
00:49:50 <marshmallows> It's a list
00:49:57 <marshmallows> no it's not a list
00:50:04 <ehird> exactly!
00:50:06 <marshmallows> it's a stream
00:50:09 <ehird> exactly
00:50:11 <marshmallows> Look:
00:50:12 <ehird> and () is the empty LIST
00:50:15 <ehird> not the empty STREAM
00:50:46 <marshmallows> <list(a)> ::= (a . <list(a)>) | ()
00:50:54 <marshmallows> <stream(a)> ::= (a . <stream(a)>) | ()
00:51:05 <marshmallows> <stream(a)> ::= (a . <stream(a)>) | #f -- this makes no sense!
00:52:11 <marshmallows> anyway I don't even use streams
00:52:29 <marshmallows> I built cuttable streams so I can implement !/0
00:53:08 <ehird> ;; prolog : form . form -> unspecified
00:53:08 <ehird> (define (prolog form . conds))
00:53:22 <ehird> my awesome type info extends to varargs!
00:55:40 <marshmallows> reading files with R5RS is nice
00:55:53 <ehird> marshmallows: not reading a whole file
00:56:16 <ehird> (define (slurp-file fn) (call-with-input-file fn read-file))
00:56:29 <marshmallows> check it out http://rafb.net/p/KBesvn31.txt
00:56:38 <marshmallows> reads a s-exp prolog file
00:56:41 <ehird> (define (read-file f) (let ((c (read-char f))) (if (eof-object? c) '() (cons c (read-file f)))))
00:56:51 <ehird> (define (read-whole-file f) (list->string (read-file f))
00:56:56 <ehird> (define (slurp-file fn) (call-with-input-file fn read-whole-file)) ;; fixed
00:57:08 <marshmallows> oh I wrote a R5RS reader the other day
00:57:37 <marshmallows> so you just pass in a dispatch table with options
00:58:04 <marshmallows> that way it takes 3 lines to define the syntax of my other language (changing quoting a bit and adding new parens)
00:58:26 <ehird> marshmallows: is storing continuations in a global enough for backtracking?
00:58:27 <ehird> i think yes
00:58:41 <marshmallows> should be yeah, a stack of them
00:58:50 <ehird> ;; backtracks : (continuation)
00:58:50 <ehird> OR
00:58:54 <ehird> ;; backtracks : list of continuation
00:58:58 <ehird> the latter looks nicer, really
00:59:05 <marshmallows> perhaps you can make a single continuation if you join them in a clever way hm
00:59:11 <ehird> marshmallows: oo, i just realised something
00:59:13 <marshmallows> dunno how to do cut with that though
00:59:19 <ehird> i could write a type-checker for these type decls
00:59:23 <ehird> because they're very mechanical
00:59:26 <ehird> and the syntax is simple yet readable
00:59:33 <marshmallows> hehehe
00:59:33 <ehird> ;; prolog-query : form -> (env <prolog-query>) or #f <-- really easy to test
00:59:45 <ehird> it would just hook in after the macro expansion process
00:59:52 <ehird> and would interact fine with dynamic functions
01:00:09 <ehird> if it had a few built in things like:
01:00:10 <ehird> ;; car : list of 'a -> 'a
01:00:13 <marshmallows> you should write the type checker in (or parts) in Prolog
01:00:15 <ehird> ;; cdr : list of 'a -> list of 'a
01:00:26 <ehird> ;; cons : 'a, list of 'a -> list of 'a
01:00:58 <ehird> ;; map : ('a -> 'b), list of 'a -> list of 'a
01:01:01 <ehird> it's just like ML
01:01:01 <ehird> :p
01:01:28 -!- Corun has quit ("This computer has gone to sleep").
01:01:46 <ehird> marshmallows: I can pop backtracks straight after using them, right?
01:01:51 <ehird> Since if needed the continuation will push a new one
01:02:17 <ehird> hahaha:
01:02:18 <ehird> ;; call-backtrack : ->
01:02:24 <ehird> where no type after the -> means 'doesn't return'
01:02:42 <ehird> marshmallows: Backtracks don't need arguments, do they?
01:04:55 <ehird> marshmallows: hmm. 'add-backtrack-here!' is a sucky name
01:05:08 <ehird> (define (add-backtrack-here!) (call/cc (lambda (k) (add-backtrack k))))
01:05:37 <marshmallows> choice!
01:05:42 <ehird> marshmallows: naw
01:06:04 <marshmallows> maybe you could do something giving backtracking args
01:06:33 <marshmallows> thing is it's like.. "If you had gone down that path you could have seen <x>"
01:06:43 <ehird> marshmallows: hmm, SHOULD i end it with ! ?
01:06:45 <marshmallows> but it's only for the paths before not all
01:06:51 <ehird> internally they do mutate a global list of backtrack points
01:06:56 <ehird> but it's declarative as far as the user can tell
01:07:46 <marshmallows> I don't know
01:07:50 <marshmallows> I would
01:08:13 <marshmallows> you can only pop it after using them up
01:08:20 <ehird> (define (amb . args)
01:08:20 <ehird> (call/cc
01:08:20 <ehird> (lambda (k)
01:08:20 <ehird> (cond ((null? args) (backtrack))
01:08:20 <ehird> (else (call/backtrack (lambda () (k (car args))))
01:08:20 <ehird> (apply amb (cdr args)))))))
01:08:26 <marshmallows> like a branch can have more than two choices
01:08:28 <ehird> would that really be nicer with scattered !s?
01:08:51 -!- Deformative has joined.
01:08:56 <marshmallows> :o
01:09:26 <marshmallows> if that works.. you should replace the one on http://rosettacode.org/wiki/Amb since that's *much* nicer
01:10:15 <ehird> marshmallows: only with my lib ;)
01:10:21 <ehird> i have one without a lib around here
01:10:27 <ehird> it's basically that, withh 1 or 2 support functions
01:10:34 <marshmallows> but
01:10:50 <marshmallows> I do not encourage the abbreviation of call-with-current-continuation
01:11:05 <ehird> marshmallows: tough. I use call/cc over the time and value my fingers.
01:11:13 <ehird> I'm not going to risk rsi for the sake of a goddamn stupid identifier
01:11:20 <ehird> PLT, Chicken, ... support it.
01:11:25 <ehird> If your impl doesn't, I don't care
01:11:26 <marshmallows> I always type it out in full :P
01:11:43 <marshmallows> (undefine call/cc call-with-current-continuation)
01:11:45 <marshmallows> lol
01:11:55 <marshmallows> rm
01:12:46 <ehird> marshmallows: But yeah, I would have to change (backtrack) to (backtrack!)
01:12:54 <ehird> and (call/backtrack ...) to (call/backtrack! ...)
01:13:10 <ehird> To me, that is not elegant. It just shows that the declarative layer was built on top of imperative primitives.
01:13:17 <ehird> And exposing implementation is not good.
01:13:32 <marshmallows> yeah good point
01:14:19 <marshmallows> hey
01:14:26 <marshmallows> how do you do bag-of with amb?
01:14:32 <ehird> marshmallows: dunno
01:14:33 <ehird> show me bag-of
01:14:43 <marshmallows> I saw the Scheme in Fixnum days one, it's pretty nastly
01:15:04 <ehird> marshmallows: Btw, I write an amb in Haskell explicitly: custom monad etc. I even made an AmbT monad transformer! http://www.haskell.org/haskellwiki/Amb
01:15:10 <ehird> Amb is the list monad, interestingly.
01:15:13 <ehird> And AmbT is NOT ListT.
01:15:21 <ehird> AmbT is ListT done right since ListT is broken
01:15:30 <marshmallows> (bag-of (let ((x (amb 1 2 3 4 5))) (if (odd? x) (amb) x))) ;=> '(2 4)
01:15:41 <ehird> marshmallows: It's even polymorphhic
01:15:46 <ehird> do a <- [1,2,3]; b <- ["hello","world"]
01:15:49 <ehird> works inside the same monad
01:15:50 <ehird> err
01:15:52 <ehird> add an amb there
01:16:12 <ehird> marshmallows: hm that would be hard
01:16:15 <ehird> you'd need to stop the call/cc
01:16:20 <ehird> dynamic-wind would be involved.
01:17:23 <marshmallows> cool!
01:17:27 <marshmallows> (AmbT)
01:17:47 <ehird> marshmallows: yeah
01:18:00 <ehird> marshmallows: that code even lets amb [] appear in any type context
01:18:14 <ehird> due to having a permanently uninstated type variable (r) and using that as a type for a function to do 'return undefined'
01:18:41 <ehird> (define (prolog form . conds)
01:18:41 <ehird> ...) ;; chicken scheme throws an *error* on this function, because it knows that ... can never be defined here. That is too damn clever, I love it.
01:20:54 <marshmallows> my code works on chicken :D
01:20:55 <ehird> marshmallows: for the backtrack continuations...
01:20:58 <ehird> (k #f) or (k (void))?
01:21:08 <ehird> I'm inclined to the former, because (void) should probably only be a return value.
01:21:19 <marshmallows> (k k)
01:21:27 <ehird> marshmallows: Chicken is great, it marries the UNIX scripting & batch compilation way with the Scheme/Lisp REPL way.
01:21:37 <ehird> It's also quite fast, and has excellent libraries and ffis
01:21:39 <lament> ehird: sounds like bash
01:21:43 <lament> :D
01:21:48 <ehird> also, the webserver it has is great
01:22:06 <ehird> lament: 'cept bash has no FFIs, barely any libraries, and is painful to code in :)
01:22:25 <marshmallows> ehird: Do you know how to make a really good REPL with it (for a sexp lang but not Scheme)
01:22:41 <ehird> marshmallows: Like readline and stuff?
01:22:47 <marshmallows> I guess
01:22:49 <marshmallows> I don't know
01:22:50 <ehird> Do you want commands at the REPL too?
01:22:51 <ehird> :p
01:22:58 <ehird> You could just expose special functions of course
01:23:41 <ehird> the example here: http://www.call-with-current-continuation.org/eggs/amb.html worked unmodified
01:23:45 <ehird> #;4> (solve-kalotan-puzzle)
01:23:45 <ehird> (f m f)
01:23:54 <ehird> amb-colelct is bag-of thouhgg
01:23:57 <marshmallows> actually I have this problem I need to solve in my code first but I can't figure how to do it in an elegant (e.g. not totally ugly) way
01:24:23 <marshmallows> or I could use an object system to write a single procedure :|
01:25:48 <marshmallows> hm
01:25:50 <ehird> marshmallows: (~ ...) is my defining
01:25:55 <ehird> (? ...) querying
01:25:56 <ehird> and hmm
01:25:58 <ehird> don't use an object system
01:26:00 <marshmallows> I use FACT and TO-DERIVE
01:26:02 <ehird> Chicken has really nice ones
01:26:03 <ehird> but still :)
01:26:07 <ehird> marshmallows: ah, but mine are macros
01:26:17 <ehird> (~ (a b) c d) -> (prolog '(a b) 'c 'd)
01:26:24 <ehird> (? (a b)) -> (prolog-query '(a b))
01:26:42 <marshmallows> you might wanna make the macro fold the body
01:26:54 <marshmallows> (~ (a b) c d) ~> (prolog '(a b) (and c d))
01:27:05 <ehird> marshmallows: No.. it uses its internal evaluation engine
01:27:11 <marshmallows> syntax-rules does that very naturally
01:27:19 <ehird> (~ (mortal X) (human X))
01:27:23 <ehird> that wouldn't work with yours
01:27:43 <marshmallows> you need 3 cases
01:27:56 <marshmallows> zero, one, one+
01:29:06 <ehird> marshmallows: what does (human 'ehird) result in yours?
01:29:20 <ehird> marshmallows: also, i only need one case
01:29:22 <marshmallows> no
01:29:24 <ehird> which does fold over the body
01:29:26 <ehird> but prolog body
01:29:32 <ehird> marshmallows: what is 'no' in scheme
01:29:39 <ehird> I mean actually (human 'ehird)
01:29:48 <marshmallows> (display "no")
01:29:53 <ehird> (mortal 'X) ;=> (((X . socrates)) . #<redo>)
01:29:56 <ehird> (human 'X) ;=> ?
01:29:59 <marshmallows> I don't think I get what you are asking....
01:30:06 <ehird> marshmallows: You quoted that mortal example before.
01:30:12 <ehird> The human one is supposedly similar.
01:30:14 <ehird> What about:
01:30:16 <ehird> (human 'ehird)
01:30:52 <marshmallows> ok #f
01:30:52 <marshmallows> :P
01:30:57 <marshmallows> you want me to say that right?
01:31:02 <ehird> marshmallows: No. Just wondering
01:31:07 <ehird> It's a simple question, wtf is hard about it
01:31:53 <marshmallows> (prove (make-declarationbase) ((make-term-converter) '(human 'ehird)) ;=> ()
01:31:55 -!- timotiis has quit ("leaving").
01:32:10 <ehird> ok, what if human(ehird).
01:32:54 <marshmallows> % ./prolog2
01:32:54 <marshmallows> ?- (human (ehird))
01:32:54 <marshmallows> no
01:33:18 <marshmallows> oh
01:33:21 <marshmallows> If I add that rule
01:33:53 <ehird> yea
01:34:45 <ehird> marshmallows: also, mine will support definition at the prompt
01:35:00 <marshmallows> echo "(fact (human (ehird)))" >> test.spl
01:35:02 <marshmallows> > (prove (consult "test.spl") ((make-term-converter) '(human (ehird))))
01:35:02 <marshmallows> ((() . #f) . #<procedure>)
01:35:13 <ehird> (() . #f)?! WTF
01:35:41 <marshmallows> http://rafb.net/p/7AKTK053.txt
01:36:06 <marshmallows> do you want my entire code to look at ? (353 lines)
01:36:30 * marshmallows is sort of also hoping suggestions to improve
01:36:59 <ehird> marshmallows: don't you bind () to #f in that thing?
01:37:07 <ehird> if so, doesn't that make no damn sense whatsoever
01:38:08 <marshmallows> in my previous one I returned a stream of substitutions
01:38:17 <ehird> marshmallows: my cut is very easy
01:38:20 <ehird> (set! backtracks '())
01:40:59 <marshmallows> so calling the cdr computed the next substitution.. now though, I have variables as mutable vectors (instead of term copying), so I don't return any substitution, but backtracking unbinds variables now
01:41:20 <ehird> marshmallows: is variables as mutable vectors better?
01:41:22 <ehird> it seems less elegant
01:41:25 <marshmallows> I could have (#f . #<procedure>) infact.. the () is reduntand
01:41:30 <marshmallows> It's more elegant and efficient
01:42:10 <ehird> what is #f
01:42:34 <marshmallows> it means a cut was not applied in proving this goal
01:42:58 <ehird> marshmallows: don't you use continuations?
01:43:05 <marshmallows> cuttable-stream-append-tail chops of choice points if it sees that
01:43:22 <marshmallows> I don't use call-with-current-continuation just streams to delay computation
01:45:00 <marshmallows> one thing is with term-copying you can use EQUAL?
01:45:05 <ehird> marshmallows: Doesn't cut just remove all the backtrack continuations?
01:45:25 <marshmallows> but with mutable variables you need to write a TERMS-EQUAL?
01:46:00 <marshmallows> cut just says, "The previous choice was the right one"
01:46:14 <marshmallows> so you can still have choices above and below it
01:47:12 <marshmallows> did that make sense? :S
01:47:25 <ehird> uhh
01:47:33 <ehird> cut just means 'no backtracking before me, beyond this point'
01:47:38 <ehird> so:
01:47:43 <ehird> (define (cut) (set! backtracks '())
01:48:37 <ehird> marshmallows: right?
01:49:32 <marshmallows> not exactly
01:49:41 <marshmallows> for example,
01:49:41 <marshmallows> foo(X) :- !, member(X, [a,b,c,d]).
01:49:42 <marshmallows> foo(bar).
01:49:53 <marshmallows> so now if you did this query:
01:49:54 <marshmallows> ?- member(A, [1,2]), foo(X).
01:50:04 <ehird> marshmallows: when using amb cut is (set! backtracks '())
01:50:08 <ehird> is it different for full prolog
01:50:28 <marshmallows> um if you aren't implement Prolog then you can choose any semantics you like
01:50:32 <marshmallows> but that's not cut
01:50:59 <ehird> marshmallows: it's amb's cut
01:51:01 <ehird> no?
01:51:18 <marshmallows> because you could A = 1, X = a; A = 1, X = b; A = 1, X = c; A = 1, X = d; A = 2, X = a; A = 2, X = b; ...
01:51:50 <marshmallows> the cut just says the choice between foo(X) and foo(bar) was the right one.. but in that query you can still backtrack
01:53:03 <ehird> marshmallows: so do i need to handle cut in the other parts?
01:53:05 <ehird> or can it be standalone
01:53:08 <ehird> and the other parts not know about it
01:54:07 <ehird> marshmallows: ?
01:54:13 <marshmallows> ASCII ART
01:54:20 <marshmallows> http://rafb.net/p/7NyUa343.txt
01:54:25 <marshmallows> does that help?
01:55:17 <ehird> no
01:55:21 <ehird> my question was simple, an implementation one
01:55:22 <marshmallows> :(
01:55:27 <ehird> if i implement cut do i have to design the rest of my system
01:55:29 <ehird> to accomodate for it?
01:55:36 <ehird> or can i add it later with no pain
01:55:46 <marshmallows> I added it later with no paint
01:55:48 <marshmallows> I added it later with no pain*
01:56:14 <marshmallows> Just replaced streams with cuttable streams
01:56:31 <marshmallows> Actually
01:56:45 <marshmallows> How does dynamic scope interact with calling a continuation?
01:57:05 <marshmallows> because you might be able to just have a box with #t or #f in it denoting whether or not a cut occured
01:58:16 <ehird> marshmallows: what has dynamic scope got to do with it?
01:58:20 <ehird> in prolog, everything is pretty much global
01:58:24 <ehird> or lexical.
01:58:51 <marshmallows> It's very interesting how Prolog handles binding actually
02:00:07 <ehird> marshmallows: ?
02:01:23 <marshmallows> Prolog is implicit ∃, rather than λ
02:01:44 <Slereah> Is there a tarpit based on logical languages?
02:01:54 <Slereah> Like using the Schönfinkel stroke.
02:02:07 <Slereah> Or something.
02:02:52 <marshmallows> what is the Schönfinkel stroke?
02:03:49 <ehird> marshmallows: what is []
02:03:50 <ehird> p
02:03:52 <ehird> :p
02:03:53 <Slereah> In PN, |x ab = for allx (a | b)
02:04:08 <marshmallows> in Prolog [] is empty list
02:04:25 <Slereah> You can define all predicate logic with it, so it is said.
02:05:16 <ehird> marshmallows: prolog is implicit []
02:05:18 <ehird> i.e. what is that char
02:05:31 <marshmallows> oh
02:05:36 <marshmallows> Backwards E
02:08:17 -!- ehird has quit ("Konversation terminated!").
02:26:09 -!- sebbu has quit (Read error: 60 (Operation timed out)).
03:16:40 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
03:18:55 -!- slereah_ has joined.
03:23:14 -!- slereah_ has changed nick to Slereah.
03:39:34 -!- Slereah has quit ("Konversation terminated!").
03:42:06 -!- Slereah has joined.
03:54:40 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
04:36:46 -!- RodgerTheGreat has quit.
04:54:04 -!- Slereah has joined.
06:18:22 -!- slereah_ has joined.
06:21:43 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
06:23:35 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)").
06:51:46 -!- slereah_ has quit (Read error: 110 (Connection timed out)).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:08:32 -!- Judofyr has quit (Remote closed the connection).
08:09:12 -!- Judofyr has joined.
08:17:13 -!- sebbu has joined.
09:32:19 -!- okopol has joined.
09:53:05 -!- okopol has quit (No route to host).
10:00:13 -!- Judofyr_ has joined.
10:00:13 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
10:19:04 -!- okopol has joined.
10:38:34 -!- bsmntbombdood_ has quit (Read error: 113 (No route to host)).
10:38:58 -!- slereah_ has joined.
10:41:59 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
10:42:51 -!- slereah_ has joined.
10:49:16 -!- slereah__ has joined.
10:50:37 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
10:53:25 <AnMaster> Deewiant,
10:53:32 <AnMaster> GOOD: 3DDD is zero doesn't have a matching BAD
10:53:37 <AnMaster> you just get an empty line then
10:54:11 <Deewiant> looks like a misalignment on line 340
10:55:03 <Deewiant> there's a ;>:#,_ on the right end of that line, move the ;> one space to the left so it ends up as ;> :#,_
10:55:08 <Deewiant> that should do it
10:56:25 -!- marshmallows has quit ("Leaving").
10:57:47 <AnMaster> k
10:57:57 <AnMaster> Deewiant, can't test as I fixed my D now
10:57:57 <AnMaster> heh
10:59:31 <GregorR> It was a P, had to stretch and re-block the curve.
11:00:37 <AnMaster> hah
11:00:57 <AnMaster> Deewiant, btw just looked at ccbi for F in TOYS
11:01:00 <AnMaster> for (auto y = ty; y < ty + j; ++y)
11:01:02 <AnMaster> err?
11:01:15 <AnMaster> what is it trying to do exactly hm?
11:02:05 <Deewiant> looks like it's looping from ty to ty + j
11:02:08 <Deewiant> :-P
11:02:20 <AnMaster> ok that auto confuse me
11:02:25 <AnMaster> Deewiant, what does auto does in D?
11:02:26 <Deewiant> type inference
11:02:30 <AnMaster> ah
11:04:26 <AnMaster> BAD: G doesn't work
11:04:30 <AnMaster> in what way I wonder
11:20:54 <AnMaster> áa=BAD: V doesn't move correctly
11:20:54 <AnMaster> áa=GOOD: overlapping copy with C works
11:20:58 <AnMaster> Deewiant, that werid
11:21:00 <AnMaster> weird*
11:21:07 <AnMaster> yes I know why it doesn't work
11:21:16 <AnMaster> because I haven't writte the code for those two yet
11:21:20 <AnMaster> but the odd chars
11:26:27 <AnMaster> case 2: space[ip.x, ip.y] = '^'; goSouth(); break;
11:26:27 <AnMaster> case 3: space[ip.x, ip.y] = 'v'; goNorth(); break;
11:26:30 <AnMaster> Deewiant, that is from ccbi
11:26:42 <AnMaster> shouldn't those ^ and v be the other way around?
11:27:26 <Deewiant> probably, yes :-)
11:27:38 <AnMaster> from U in TOYS
11:36:19 <AnMaster> Deewiant, any idea what cause those áa= btw?
11:36:47 <Deewiant> nope
11:36:50 <AnMaster> BAD: 01T goes up <-- hm?
11:37:17 <Deewiant> 1T is supposed to be |
11:37:49 <AnMaster> yes it is indeed
11:37:56 <AnMaster> so up or down seem correct?
11:38:16 <AnMaster> point is, I made it just call the function used for normal |
11:38:19 <AnMaster> and normal | works
11:38:21 <Deewiant> and what is 0| supposed to do
11:38:30 <Deewiant> it's supposed to go down
11:38:33 <Deewiant> so 01T should go down
11:38:35 <AnMaster> 0| goes down, I tested it
11:38:41 <AnMaster> so why would 01T go up
11:38:47 <Deewiant> it's your code, I don't know
11:38:57 <AnMaster> sound like a bug elsewhere as the same code is used in both cases
11:40:22 <AnMaster> Deewiant, wait a sec
11:40:24 <AnMaster> BAD: 01T goes up
11:40:28 <AnMaster> I set a breakpoint on T
11:40:32 <AnMaster> it didn't hit
11:40:36 <AnMaster> so T is not even called there
11:40:37 <AnMaster> wtf
11:47:34 <AnMaster> Deewiant, when I fixed K that I had before not yet implemented, T suddenly starts to work
11:47:42 <AnMaster> Deewiant, so looks like a mycology bug?
11:48:16 <Deewiant> doesn't make sense to me
11:48:22 <Deewiant> looking at the code for testing T
11:50:11 <AnMaster> Deewiant, where is it? hm?
11:50:17 <Deewiant> end of line 422
11:50:32 <AnMaster> oh that is a HUGE area for TOYS then
11:50:58 <Deewiant> yup, TOYS is over 100 lines of testing
11:51:09 <AnMaster> Deewiant, btw, implementing V removed the odd char in front of M, but not the odd char in front of V itself
11:51:24 <Deewiant> yeah, there's probably a missing 'n' somewhere which means there's some crap on the stack
11:52:13 <AnMaster> implementing M fixed char in front of V btw
11:52:14 <AnMaster> heh
11:52:40 <AnMaster> I guess mycology didn't like that I did the simple ones first, instead of "in order of testing"
11:52:55 <Deewiant> shrug
11:52:56 <AnMaster> BAD: L gets right-hand
11:52:56 <AnMaster> BAD: R gets left-hand
11:52:59 <AnMaster> and those are wrong
11:53:04 <AnMaster> currently they do nothing
11:53:10 <AnMaster> heh
11:54:04 <Deewiant> hm
11:54:27 <Deewiant> that should be "L doesn't work at all" then
11:55:26 <Deewiant> AnMaster: can you replace line 416, col 25, 'A', with 'n'
11:55:51 <AnMaster> Deewiant, hm a sec
11:56:34 <AnMaster> Deewiant, no change
11:59:02 <Deewiant> AnMaster: do you have mercurial installed?
11:59:24 <AnMaster> Deewiant, yes I got most distributed version control systems apart from darcs
11:59:27 <AnMaster> and git
11:59:29 * AnMaster hates git
11:59:42 <Deewiant> AnMaster: pull mycology from http://tar.us.to:8000/
11:59:52 <AnMaster> Deewiant, however, I would need some help if you want me to use mercurial, it was like half a year ago I used it
12:00:03 <AnMaster> my memory is kind of rusty there
12:00:15 <Deewiant> one sec
12:00:28 <AnMaster> hg somecommand I guess?
12:02:25 <Deewiant> AnMaster: hg clone http://tar.us.to:8000/
12:02:29 <Deewiant> I hope
12:02:44 <AnMaster> destination directory: tar.us.to:8000
12:02:46 * AnMaster waits
12:02:58 <AnMaster> Deewiant, seems like nothing happens?
12:02:58 <Deewiant> er
12:03:57 <AnMaster> PORT STATE SERVICE
12:03:57 <AnMaster> 8000/tcp filtered http-alt
12:04:00 <AnMaster> is what nmap says
12:04:05 <AnMaster> so that won't work indeed
12:04:08 <Deewiant> yeah, I killed it now
12:04:16 <AnMaster> Deewiant, why?
12:04:18 <Deewiant> I think the hostname doesn't work, I only just updated DNS :-)
12:04:29 <AnMaster> 88.114.235.101
12:04:33 <AnMaster> is what it resolves to here
12:04:35 <Deewiant> 88.114.224.242
12:04:37 <Deewiant> is what you want
12:04:51 <AnMaster> hm, dns update time ETA?
12:05:06 * AnMaster do not want to run rndc flush because that slows down everything else
12:05:30 <AnMaster> destination directory: 88.114.224.242:8000
12:05:31 <AnMaster> ok
12:05:39 <Deewiant> seems to have worked now
12:05:54 <AnMaster> ok what now?
12:06:04 <Deewiant> now you should have a new mycology there, see if that works
12:06:08 <AnMaster> BAD: L doesn't work at all
12:06:08 <AnMaster> BAD: R gets left-hand
12:06:09 <AnMaster> indeed
12:06:10 <Deewiant> yay
12:06:18 -!- Corun has joined.
12:06:45 <AnMaster> GOOD:GOOD: 000p000W goes seog W000p000 :DOOG 000p000W goes through
12:06:45 <AnMaster> °¥@BAD: 00p100W goes through
12:06:45 <AnMaster> ³?@BAD 000p01-00W goes through
12:06:45 <AnMaster> ³@GOOD: X works
12:06:54 <Deewiant> :-P
12:06:55 <AnMaster> somehow, I don't think that count as GOOD?
12:07:06 <Deewiant> no, I don't think so :-)
12:07:10 <AnMaster> but that got more GOOD than BAD in it ;P
12:07:57 <Deewiant> AnMaster: pull again, "hg pull" should be enough
12:08:06 <Deewiant> just to see if it works for R now as well
12:08:16 <AnMaster> (run 'hg update' to get a working copy)
12:08:23 <Deewiant> that too
12:08:27 <AnMaster> now that is a reason why I selected bzr :)
12:08:42 <AnMaster> BAD: R gets left-hand
12:08:44 <AnMaster> Deewiant, still that
12:09:18 <AnMaster> (wouldn't it be easier just to comment out the relevant line in ccbi for a moment and experiment with that btw?)
12:09:39 <Deewiant> nah :-P
12:10:03 <Deewiant> alright, one more time
12:11:27 <AnMaster> BAD: R doesn't work at all
12:11:29 <AnMaster> indeed
12:11:31 <Deewiant> yeh
12:11:37 <Deewiant> cheers
12:24:07 -!- okopol has quit (Read error: 113 (No route to host)).
12:59:48 <AnMaster> Deewiant,
12:59:50 <AnMaster> GOOD:GOOD: 000p000W goes seog W000p000 :DOOG 000p000W goes through
12:59:50 <AnMaster> °¥@BAD: 00p100W goes through
12:59:50 <AnMaster> ³?@BAD 000p01-00W goes through
12:59:50 <AnMaster> ³@GOOD: X works
12:59:58 <AnMaster> all but W is now complete on TOYS
13:00:03 <AnMaster> W does nothing atm
13:00:19 <AnMaster> so why such weird output
13:00:29 <AnMaster> doing nothing should be quite basic thing shouldn't it?
13:31:45 <Deewiant> shrug
13:32:14 -!- timotiis has joined.
13:33:57 <AnMaster> ok now TOYS are implemented fully
13:34:40 <Deewiant> AnMaster: and BTW, it says clearly in mycology's readme (I think) that if you see an unimpl instruction you should reflect
13:34:53 <AnMaster> hm
13:34:59 <Deewiant> and the behaviour is your fault if you don't
13:35:14 <AnMaster> Deewiant, however most tests does detect such cases
13:35:26 <AnMaster> the threading ones seems a bit more "brittle" though
13:35:33 <Deewiant> doesn't matter, because it's undefined
13:35:52 <Deewiant> the fact that some tests detect it is incidental
13:36:38 <AnMaster> ^D^C^B^AGOOD: : on empty stack makes stack size 2 according to y$
13:36:44 <AnMaster> hm cat -e is interesting
13:36:52 * AnMaster wonders why it print some control codes there
13:37:09 <Deewiant> bugs
13:37:43 <AnMaster> yeah but I wonder what the bug is and where
13:39:07 <AnMaster> Deewiant, btw I have an early draft for debugging protocol, your feedback would be valuable, I can put it up somewhere in one of these formats: lyx. latex, dvi or pdf
13:39:10 <AnMaster> you select
13:41:42 <AnMaster> Deewiant, http://rage.kuonet.org/~anmaster/tmp/frontend-prococol.pdf is the pdf version, it is just a draft
13:46:26 <AnMaster> GOOD: 000p000W goes thrugh
13:46:30 <AnMaster> that's not right hmmm
13:49:48 <AnMaster> Deewiant, request: add something like the trace mode that my interpreter got and make a binary, so I can compare and see where I go wrong :/
13:49:58 <AnMaster> I can't figure out some bugs
13:50:12 <AnMaster> :(
13:50:25 <AnMaster> please :)
13:55:57 -!- atsampso1 has joined.
13:56:49 -!- atsampson has quit (Read error: 104 (Connection reset by peer)).
14:13:13 <Deewiant> AnMaster: what's wrong with the debugger
14:18:39 -!- Judofyr_ has changed nick to Judofyr.
14:20:04 -!- Corun has quit ("This computer has gone to sleep").
14:21:32 -!- Judofyr has quit.
14:22:50 -!- lifthras1ir has joined.
14:22:50 -!- lifthras1ir has quit (Client Quit).
14:23:55 -!- lifthras1ir has joined.
14:24:29 -!- lifthras1ir has quit (Remote closed the connection).
14:24:29 -!- lifthrasiir has quit (Read error: 104 (Connection reset by peer)).
14:24:37 -!- lifthrasiir has joined.
14:25:06 <AnMaster> Deewiant, because I can't easily get a list of all instructions executed
14:25:23 <Deewiant> why do you need that
14:25:54 <AnMaster> Deewiant, I'm unable to track down a bug in my interpreter, so I think the best way would be to compare the instructions exected with one that does it right
14:26:01 <AnMaster> to see what went wrong where
14:26:10 <Deewiant> you probably know the coordinates where you want to compare
14:26:29 <Deewiant> so just use the debugger, set a break point there, and then go step by step and see what happens
14:27:15 <AnMaster> Deewiant, tried that, something goes wrong earlier I think and doesn't show up until later
14:27:50 <Deewiant> so set the breakpoint earlier :-P
14:29:16 -!- lifthrasiir has quit (Client Quit).
14:29:40 -!- lifthrasiir has joined.
14:30:01 -!- lifthrasiir has quit (Client Quit).
14:30:07 -!- lifthrasiir has joined.
14:59:42 <AnMaster> Deewiant, no I'm unable to find out the cause
15:02:13 <Deewiant> can't you follow what's on your stack and what's on CCBI's
15:02:24 <AnMaster> hm yeah
15:02:31 <Deewiant> and if/when they differ go back to see where the differing value(s) came from
15:02:53 <AnMaster> hrrm
15:03:04 <AnMaster> Deewiant, well did you look at http://rage.kuonet.org/~anmaster/tmp/frontend-prococol.pdf
15:03:16 * AnMaster ponders implementing it first to be able to find this bug
15:03:18 <Deewiant> yeah I looked it over quickly
15:03:26 <AnMaster> any comments on it?
15:03:42 <Deewiant> nothing particular
15:04:00 <AnMaster> anything ccbi will ever support if I do it and make a good debugger frontend?
15:04:04 <Deewiant> I didn't read it word for word so there might be omissions or something but the general idea looks fine
15:04:22 <AnMaster> ok
15:04:51 <Deewiant> does the interpreter ever send messages? or only respond to questions from the client?
15:09:23 <AnMaster> Deewiant, it does send trace messages
15:09:40 <AnMaster> oh and BRK for breakpoint hit and such
15:10:06 <AnMaster> Deewiant, the table at the end describes that
15:10:11 <AnMaster> appendix a
15:10:13 <Deewiant> ah, tracing
15:10:19 <Deewiant> is that always enabled?
15:10:31 <AnMaster> Deewiant, yes, do you have an objection to that?
15:10:36 <Deewiant> if it is, it should be disablable IMO
15:10:45 <AnMaster> ok
15:10:50 <AnMaster> but why?
15:10:54 <AnMaster> performance?
15:10:58 <Deewiant> because if you don't need it it's pointless
15:11:11 <AnMaster> hm ok
15:11:13 <Deewiant> you could be debugging over the net, right
15:11:28 <AnMaster> Deewiant, you could but I can't imagine why anyone would want to heh
15:11:31 <Deewiant> so sending a lot of lines like that over a slow connection can be annoying
15:11:40 <AnMaster> hm
15:11:49 <Deewiant> AnMaster: user runs a script on his machine, developer debugs remotely
15:12:01 <Deewiant> admittedly this /is/ Funge we're talking about, but you never know ;-)
15:12:07 <AnMaster> heh, well that user got to trust the developer, as you can set funge space cells
15:12:20 <Deewiant> well, of course
15:12:32 <AnMaster> so "drowssap/cte/" o
15:12:33 <AnMaster> ;P
15:12:47 <AnMaster> or i
15:13:08 <Deewiant> in general, in that situation, the user will do whatever they're asked anyway
15:13:15 <AnMaster> oh?
15:13:37 <Deewiant> well, because such users aren't necessarily very tech-savvy
15:13:58 <AnMaster> I don't think non-computer literate ppl would *use* funge
15:14:08 <Deewiant> which is why I said "admittedly" above :-P
15:14:11 <AnMaster> yeah
15:15:01 <Deewiant> okay, so... you've only got a windows debugger but you need to debug a funge script running on a *nix
15:15:04 <Deewiant> or vice versa
15:15:47 <AnMaster> Deewiant, hm ok a point
15:15:58 <AnMaster> most likely done over LAN though but I see your point
15:16:11 <AnMaster> something like a TRACEOPT enabled:b ?
15:16:16 <AnMaster> where b is a boolean
15:16:27 <Deewiant> or just TRACETOGGLE or something
15:16:31 <AnMaster> or maybe, as I indented other ways of tracing
15:16:33 <AnMaster> a bit mask
15:16:52 <AnMaster> for example just trace when new ips were created, but possible that is better as change notification
15:18:28 <AnMaster> Deewiant, should trace initially be on or off?
15:19:07 <Deewiant> no default, needs negotiation?
15:19:24 <Deewiant> so that the client can set its own default
15:19:59 <AnMaster> hm
15:20:07 <AnMaster> Deewiant, it is easy to set in pre-run state
15:20:13 <AnMaster> ie just before program starts running
15:21:22 <AnMaster> Deewiant, also it is unclear to me how some things should work, ie tracing of space
15:21:35 <AnMaster> or in k
15:21:48 <AnMaster> one trace each time k runs the instruction?
15:22:22 <Deewiant> hmm
15:22:34 <Deewiant> if it's kp or something it might change the instruction being run, so yes I guess
15:23:56 <AnMaster> Deewiant, also I got no idea what extra stuff TRDS would need, if you have any interest in seeing it supported I need info on that
15:24:22 <AnMaster> I did add a ip mode in the bitmask on trace for it after looking into CCBI's debugger
15:24:41 <Deewiant> for debugging it's a bit tricky
15:25:13 <Deewiant> just for tracing, it's easy since you can just send "space changed to <new funge-space data>" or "space changed by" and similarly for IPs moving around and being created/dying
15:25:14 <AnMaster> also should it be possible to change IP mode, ie, string mode and such from inside the debugger?
15:25:46 <Deewiant> for full functionality, sure, but I wonder if it's really necessary
15:25:46 <AnMaster> uhu?
15:25:59 <Deewiant> I mean, tracing anything is easy
15:26:09 <Deewiant> since the debugger doesn't have to know anything about semantics
15:26:12 <AnMaster> yes, and this one allows several breakpoints heh
15:26:43 <AnMaster> Deewiant, well depends, for example if you want the debugger to draw a "live" version of funge space as the programs execute it would have to
15:26:44 <Deewiant> the interpreter can just tell, when time jump happens, "funge-space changed to ...", "IP 0 moved to ...", "IP 1 is now in mode X", etc.
15:26:53 <Deewiant> AnMaster: no, it wouldn't
15:27:03 <Deewiant> AnMaster: since the interpreter only has to communicate the current funge-space
15:27:05 <AnMaster> that is one thing I wanted recently, when trying one of the <mad domain name> programs
15:27:08 <AnMaster> called a roller
15:27:09 <Deewiant> and the debugger can draw that
15:27:17 <AnMaster> hm
15:27:25 <Deewiant> it shouldn't be the way that interpreter says "executed p" and then debugger executes p locally
15:27:40 <AnMaster> true
15:27:41 <Deewiant> it should be that interpreter says "executed p; space[0, 0] is now a"
15:27:47 <AnMaster> Deewiant, so you want change notification
15:27:49 <AnMaster> see that section
15:27:50 <Deewiant> and then debugger can draw a at (0,0)
15:27:56 <AnMaster> EVCHGANYCELL
15:27:59 <AnMaster> is the one you want
15:28:01 <AnMaster> for that
15:28:30 <Deewiant> aye
15:28:47 <AnMaster> anyway what is needed for stack-stack
15:28:56 <AnMaster> I don't know there, the stack-stack section is just todo atm
15:29:12 <Deewiant> more events needed, though
15:29:20 <AnMaster> Deewiant, agreed
15:29:27 <Deewiant> and hmm
15:29:33 <Deewiant> how does this position stuff work
15:29:37 <Deewiant> in events
15:29:45 <AnMaster> you mean dimensions?
15:29:50 <Deewiant> "this is the position to monitor"
15:30:16 <AnMaster> Deewiant, yes? not sure I got your question?
15:30:29 <Deewiant> so what is that, exactly
15:30:33 <Deewiant> funge-space coordinates?
15:30:34 <Deewiant> for one point?
15:30:35 <Deewiant> for a range?
15:30:44 <AnMaster> hm see section 5.1
15:30:56 <AnMaster> but one cell yes
15:31:12 <Deewiant> okay
15:31:15 <AnMaster> but range may indeed be a good idea I guess
15:31:16 <Deewiant> so, something to consider
15:31:17 <Deewiant> ranges
15:31:20 <Deewiant> and also, unbounded ranges
15:31:27 <AnMaster> um?
15:31:30 <Deewiant> so you can say "anything with y-coordinate > 100"
15:31:37 <AnMaster> right I see
15:31:46 <Deewiant> because the funge-space can grow, so you don't have to send STOP, also check y-coordinate 101, CONTINUE
15:31:54 <Deewiant> and then again for y-coordinate 102, etc.
15:32:13 <AnMaster> well that is one issue with STOP, it may not stop exactly where you want
15:32:16 <AnMaster> for example, network lag
15:32:22 <Deewiant> yeap
15:32:23 <AnMaster> from the remote developer ;)
15:32:35 <Deewiant> well, even internally to the machine
15:32:39 <AnMaster> indeed
15:32:42 <Deewiant> the interpreter will probably go at least a few instructions forward
15:32:59 <Deewiant> also, btw: IP change events
15:33:00 <AnMaster> in even the best case at least one instruction forward the way I plan to implement it
15:33:08 <AnMaster> Deewiant, hm? as in?
15:33:17 <AnMaster> "ip split happened"?
15:33:19 <Deewiant> "IP 1 moved to (x,y)"
15:33:23 <Deewiant> "IP 2 created at (x,y)"
15:33:30 <Deewiant> (+ with mode foo)
15:33:31 <Deewiant> etc.
15:33:34 <AnMaster> moved well, that trace would show
15:33:43 <AnMaster> create and destroy yes
15:34:35 * AnMaster is copying this down into a text file
15:34:50 <Deewiant> :-)
15:36:07 <Deewiant> for stack stack: push stack, pop stack, at least
15:36:28 <AnMaster> it can do that
15:36:32 <AnMaster> oh wait
15:36:36 <AnMaster> push a stack you mean?
15:36:38 <AnMaster> right
15:36:39 <Deewiant> yes
15:37:09 <Deewiant> tracing or events for when stack is changed
15:37:13 <AnMaster> Deewiant, brb, phone sorry
15:37:22 <Deewiant> in general, I'm a bit leery about the tracing+events relationship
15:37:39 <Deewiant> tracing currently just looks like an event that always fires
15:37:56 <Deewiant> so maybe remove the whole tracing section and do the whole thing in terms of events
15:38:29 <Deewiant> there doesn't seem to be any way of getting info on the current stack state
15:39:18 <Deewiant> SSGET for getting a whole stack at once, maybe
15:39:35 <Deewiant> and an SSGETALL for getting the whole stack stack
15:41:49 <AnMaster> Deewiant, yeah it should probably be an event
15:42:15 <AnMaster> and I agree with the other two
15:42:21 <AnMaster> Deewiant, is there anything un-needed?
15:42:42 <AnMaster> because the protocol is starting to look more complex than needed :/
15:43:54 <Deewiant> well I'm not sure about all the "get info" stuff
15:44:09 <Deewiant> if tracing is always on, it's not needed
15:44:22 <Deewiant> but then, having full tracing is a bit bloaty
15:44:45 <AnMaster> yes I'm changing it into an even
15:44:47 <AnMaster> event'
15:44:48 <AnMaster> *
15:45:15 <Deewiant> what I mean is, the only cases where you would need IPINFO, for instance, are if you don't have IP tracing on
15:45:36 <Deewiant> because if you have tracing on, then the interpreter has already told you where the IPs are, what their deltas are, etc.
15:46:16 <Deewiant> but it's true that if you don't have it on, you do need it, and this way you can minimize network traffic: send a breakpoint, then request all info when stopped and get nothing in between.
15:46:41 <Deewiant> so strictly speaking I don't think there's anything major that's unnecessary
15:46:57 <Deewiant> similarly for FSPACEGET and FSPACEBOUNDS and FSPACEDUMP
15:47:21 <Deewiant> if you have the event notification for that on, you don't need it, otherwise you do and that way is more optimal in some cases.
15:47:42 <AnMaster> Deewiant, you do need it in one case always
15:47:45 <AnMaster> to get initial state
15:47:53 <AnMaster> and then turn on the notification
15:48:09 <Deewiant> you don't necessarily need the initial state
15:48:14 <AnMaster> hm?
15:48:22 <Deewiant> for instance, FSPACEDUMP
15:48:29 <AnMaster> yes?
15:48:43 <Deewiant> if you know that all you want to do is set a breakpoint at (x,y) and then see what's up, you don't need to download a dump of the whole space at the start
15:48:52 <AnMaster> true
15:49:07 <AnMaster> but why on earth would you want to trace writes to funge space then?
15:49:19 <Deewiant> well, this is a case where you wouldn't.
15:49:25 <AnMaster> indeed
15:49:28 <Deewiant> you'd set all events off
15:49:32 <Deewiant> set the breakpoint
15:49:39 <Deewiant> and then get no traffic until the interpreter's at the breakpoint.
15:50:40 <AnMaster> indeed
15:50:48 <AnMaster> Deewiant, well that made me think...
15:50:55 <Deewiant> but it's up to you whether you consider that use case relevant.
15:50:58 <AnMaster> with tcp you need to keep the connection alive
15:50:59 <AnMaster> so
15:51:10 <Deewiant> if you don't want to make a big spec.
15:51:16 <AnMaster> how do you do that then? some "keep alive" instruction needed maybe?
15:51:26 <AnMaster> Deewiant, I want something that won't take a year to implement
15:51:30 <Deewiant> hmm, isn't that builtin to TCP?
15:52:00 <AnMaster> Deewiant, I think connections times out, otherwise why is there an option for ssh keepalive for example
15:52:01 <Deewiant> http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/overview.html
15:52:11 <AnMaster> Deewiant, you said "<Deewiant> and then get no traffic until the interpreter's at the breakpoint."
15:52:13 <AnMaster> that is the issue
15:52:16 <AnMaster> no traffic
15:52:38 <Deewiant> but isn't that rather an issue with the SSH daemon killing the connection
15:52:45 <AnMaster> not sure
15:52:46 <Deewiant> not with the OS
15:52:49 <Deewiant> neither am I
15:53:08 <Deewiant> but I do think it'd make more sense if it were
15:53:12 <Deewiant> so it probably is ;-)
15:54:09 <AnMaster> Deewiant, um, I think connection tracking in firewall will time out after a while with no traffic
15:54:14 <AnMaster> I'm pretty sure that is the case
15:55:08 <AnMaster> because I remember that back when I ran windows, I ran colinux for a while, I didn't need ssh keepalive to make a connection stay alive to colinux, UNTIL I enabled iptables in colinux
15:55:16 <AnMaster> then suddenly it was needed
15:55:19 <Deewiant> hm, possible
15:55:32 <Deewiant> alright, so enablable keepalives
15:55:41 <AnMaster> of the tcp type? yeah good idea
15:56:38 -!- ehird has joined.
15:56:49 <AnMaster> Deewiant, wait, the application doesn't do tcp keepalive?
15:56:52 <AnMaster> but the OS does?
15:56:54 <ehird> boop
15:56:58 <ehird> AnMaster: umm yeah
15:56:59 <AnMaster> ok then we need some protocol level one
15:57:08 <ehird> obviously the os' tcp layer handles that
15:57:09 <ehird> :)
15:57:10 <Deewiant> I honestly don't know whether you need app-level keepalives
15:57:16 <Deewiant> I don't think so, but I don't know
15:57:24 <AnMaster> Deewiant, irc uses it too
15:57:28 <AnMaster> PING/PONG
15:57:29 <ehird> it is kinda weird though, most raw-feeling socket stuff has a lot of bunk behind it in tcp
15:57:32 <Deewiant> yeah, but IRC is /old/
15:57:33 <ehird> it's really quite comfy
15:57:34 <ehird> :)
15:57:37 <ehird> and yeah
15:57:42 <ehird> IRC is an old dead machine
15:57:47 <ehird> ping/pong is pretty much useless
15:57:48 <AnMaster> agreed
15:57:55 <AnMaster> ehird, however ssh keepalive then
15:57:56 <ehird> & annoying to have to code into stuff
15:57:57 <AnMaster> it is useful
15:58:08 <ehird> AnMaster: ssh has to do all kinds of tricks to fit into the protocol it works on
15:58:13 <ehird> kind of like stack smashing in c
15:58:17 <AnMaster> <AnMaster> Deewiant, um, I think connection tracking in firewall will time out after a while with no traffic
15:58:17 <AnMaster> <AnMaster> I'm pretty sure that is the case
15:58:17 <AnMaster> <AnMaster> because I remember that back when I ran windows, I ran colinux for a while, I didn't need ssh keepalive to make a connection stay alive to colinux, UNTIL I enabled iptables in colinux
15:58:17 <AnMaster> <AnMaster> then suddenly it was needed
15:58:22 <AnMaster> ehird, hm ^
15:58:25 <Deewiant> yeah, SSH doesn't necessarily run over TCP
15:58:32 <ehird> maybe iptables moderates it
15:58:39 <Deewiant> maybe SSH keepalive just means enabling TCP keepalive, when on TCP
15:59:22 <AnMaster> hm
15:59:44 <Deewiant> once again, I have no clue.
16:00:01 -!- Judofyr has joined.
16:00:05 <ehird> i think ssh does its own keepalive
16:00:11 <ehird> so that it can be protocol-agnostic
16:00:18 <AnMaster> yeah
16:00:18 <ehird> however, protocol-agnostic programs are... uncommon :)
16:00:32 <AnMaster> ehird, well I need this to run over two kind of sockets
16:00:42 <AnMaster> TCP/TCP6 and Unix domain
16:01:46 <ehird> AnMaster: you should really give git a try
16:01:50 <ehird> not like
16:01:54 <ehird> try and use it for everything
16:01:58 <ehird> but just use some projects using it
16:02:03 <ehird> its not that bad once you get used to it. nice
16:02:08 <AnMaster> ehird, I have tried it
16:02:13 <ehird> AnMaster: presumably not recently
16:02:18 <ehird> yes, until recently, it was painful
16:02:20 <ehird> it's not any more
16:02:20 <AnMaster> ehird, about two months ago
16:02:27 <AnMaster> it changed since then?
16:03:02 <ehird> AnMaster: a litle bit. but you obviously didn't try it very well
16:03:15 <AnMaster> "obviously"?
16:03:16 <ehird> its kinda like lisp. you learn about it, laugh at it, hate it ferociously, then maybe try it and gradually 'get it' :)
16:03:33 <ehird> (also, darcs is pretty impressive for its theoretical basis. but mostly its used by lisp/haskellers)
16:03:45 <AnMaster> ehird, while I find lisp quite annoying I do see it have points, and I even coded some small bits of elisp
16:04:19 <AnMaster> ehird, and yes darcs indeed, didn't seem to be able to install haskell on my PPC based computer where I tried it
16:04:40 <slereah__> "We are a triune being - BODY, SOUL, and SPIRIT. Speaking computerese, we have Body - computer casing; Soul - Hard Drive/Hard Copy; Spirit - Software."
16:04:41 <slereah__> Lulz
16:04:52 -!- sebbu has quit (brown.freenode.net irc.freenode.net).
16:04:52 <ehird> 'uld help making Funge a more attractive language. In this'
16:04:57 <ehird> because funge should be an attractive language.
16:05:02 -!- sebbu has joined.
16:05:14 <ehird> AnMaster: find it quite annoying -- yeah your state with git is like yours with lisp :)
16:05:27 <ehird> i'm not patronising you, because i felt exactly the same way about git and lisp :p
16:05:32 <AnMaster> ehird, no I find git bloody stupid
16:05:35 <AnMaster> quite a difference
16:05:40 <ehird> AnMaster: still the same basic thing
16:05:46 <ehird> you don't "get it" yet
16:05:59 <AnMaster> ehird, also it is harder to learn for others
16:06:09 <AnMaster> I don't want to have to hand hold users once I get it
16:06:13 <AnMaster> as you said
16:06:18 <Deewiant> ehird: I don't like Darcs's patch-based model
16:06:32 <ehird> Deewiant: It does do a good job of sorting out stuff, though
16:06:34 <AnMaster> ehird, bzr is close enough to svn that you can easily change really
16:06:41 <ehird> Though its automatic hunking sometimes gets it wrong
16:06:51 <ehird> AnMaster: being close to svn is a flaw
16:06:53 <AnMaster> Deewiant, that is one thing I want from darcs
16:06:58 <AnMaster> the ability to juggle changesets
16:07:03 <ehird> svn is broken by design, and theoretically bullcrap
16:07:06 <AnMaster> and be able to track from where they came
16:07:11 <AnMaster> ehird, well cvs is worse
16:07:22 <ehird> AnMaster: cvs is probably better than svn.
16:07:25 <AnMaster> ehird, point is svn got a nice user interface
16:07:29 <ehird> I say that unsarcastically
16:07:34 <AnMaster> I'm not talking about internals
16:07:39 <AnMaster> but they way a user see it
16:07:41 <ehird> and if you think svn's user interface is nice I don't know what kind of monster you are
16:07:51 <AnMaster> ehird, compared to cvs at least
16:08:04 <AnMaster> ehird, err the one with two heads and three arms
16:08:07 <AnMaster> ;P
16:09:45 <ehird> really the ideal solution is plan9's versioned FS
16:09:50 <ehird> it's terribly advanced &nice to use
16:10:09 <ehird> unfortunately plan9, though infinitely better than any system i've come across, is totally useless for practical work :)
16:10:20 <AnMaster> ehird, exactly
16:10:33 <AnMaster> it's a research os
16:10:38 <AnMaster> that is now more or less dead
16:10:41 <ehird> AnMaster: not dead
16:10:45 <ehird> new snapshots are made daily
16:10:58 <AnMaster> ehird, so is the community growing?
16:11:10 <AnMaster> when will it have support for accelerated 3D?
16:11:11 <ehird> AnMaster: in little trickles
16:11:15 <ehird> AnMaster: it is a research os.
16:11:22 <ehird> why would it have support for that?
16:11:26 <AnMaster> when will it work on something as simple as a SATA disk?
16:11:32 <ehird> it does
16:11:33 <AnMaster> last I checked it didn't handle that
16:11:37 <AnMaster> hm ok
16:11:43 <ehird> iirc
16:12:04 <Deewiant> daily? http://plan9.bell-labs.com/sources/plan9/sys/src/ looks a bit older
16:12:09 <AnMaster> ehird, point is, it is not useful for practical work
16:12:27 <AnMaster> Deewiant, well for bell it *is* dead
16:13:55 <ehird> Deewiant: that's not a snapshot
16:13:59 <ehird> AnMaster: i already said that
16:14:05 <ehird> [15:10] <AnMaster> ehird, exactly
16:14:06 <ehird> [15:10] <AnMaster> it's a research os
16:14:06 <ehird> [15:10] <AnMaster> that is now more or less dead
16:14:08 <ehird> everything but the last line, i agree with
16:14:30 <Deewiant> ehird: where're the snapshots
16:14:36 <AnMaster> ehird, yes I was agreeing with you
16:14:43 <ehird> Deewiant: don't rememberr offhand
16:14:57 <ehird> AnMaster: ok, but it is NOT more or less dead
16:15:06 <ehird> it's alive, and interesting fromm a research POV
16:15:14 <ehird> hopefully the OSs of the future will resemble it in some way
16:15:26 <ehird> i really like it's refreshing approach to the mouse, actually
16:15:32 <ehird> the tests etc. they did and all
16:15:39 <ehird> and they developed an interface combining the keyboard and the mouse efficiently
16:15:41 <ehird> it's really nice
16:15:59 <ehird> i've always been a mouse fan, though. it's just that a lot of apps are designed suckily for one
16:16:09 <ehird> (I love acme.)
16:18:21 <AnMaster> hm?
16:18:32 <AnMaster> I prefer working with my hand on the keyboard
16:18:36 <AnMaster> avoiding mouse
16:18:55 <AnMaster> ergonomics
16:19:45 <ehird> AnMaster: the mouse is very effiient with the right interface
16:19:55 <ehird> and enough practice, a lot of mouse-haters just don't even try the mouse properly
16:19:59 <ehird> so they're simply not proficient with it
16:20:10 <AnMaster> ehird, I can use it well enough
16:20:26 <AnMaster> I use it a lot, but it make my hand hurt in the long run
16:20:57 <AnMaster> a track ball seems much better
16:21:03 <ehird> trackballs are interesting
16:21:12 <ehird> i am not sure they are superior to a well-calibrated mosue though
16:21:14 <AnMaster> ehird, of course there are tasks where you can't avoid mouse, for example image editing
16:21:20 <ehird> anyway, my whole computer interaction system is warped
16:21:31 <ehird> my hands are very efficient at jumping keyboard/mouse
16:21:36 <ehird> so the context switch is almost none
16:21:37 <AnMaster> where mouse or pen on touch surface are the only sane options
16:21:44 <ehird> also, my typing is really weird
16:21:51 <AnMaster> ehird, oh?
16:21:57 <ehird> my hands are predictive, they know which area they will be tapping the most before they actually tap
16:22:15 <ehird> so they kind of float about to a weird place and then a second later i realise that they were being really clever and going to the right place
16:22:40 <AnMaster> heh?
16:22:56 <AnMaster> yes of course I know where I will type
16:23:34 <ehird> no
16:23:35 <ehird> I mean
16:23:40 <ehird> my hands generally don't rset on the home row
16:23:54 <ehird> they type a bit then drift somewhere else (not conciously, they do it automatically)
16:24:04 <ehird> and then it ends up that where they drifted was where they'll be typing the most until the next drift
16:24:10 <ehird> it's strangely automatic
16:24:11 <AnMaster> so I move while the previous char is typed with the other hand. anyway I'm right-handed but I seem to type faster and use more of my fingers with left hand
16:24:18 <ehird> I just kind of wobble my hands and tap down
16:24:20 <ehird> and it all moves for me
16:24:26 <Deewiant> I never use the home row anyway
16:24:35 <AnMaster> Deewiant, nor do I
16:24:36 <Deewiant> my fingers are where they need to be, not on some default location :-P
16:24:43 <AnMaster> exactly
16:24:51 <AnMaster> that comes from not using vi IMO
16:24:51 <ehird> my idiosyncratic style has developed over quite a few years
16:25:00 <Deewiant> maybe, but I use vim :-P
16:25:07 <AnMaster> Deewiant, ah but I use emacs
16:25:37 <ehird> i use vi or emacs
16:25:43 <ehird> i quite like textmate on os x
16:25:58 -!- marshmallows has joined.
16:26:01 <AnMaster> mhm
16:26:02 <ehird> esp. for xml
16:26:06 <ehird> its really nice
16:26:13 <AnMaster> ehird, I tend to xml in kate
16:26:18 <AnMaster> C in emacs or kdevelop
16:26:34 <AnMaster> the problem is when finding out you used both for same file
16:26:36 <AnMaster> heh
16:26:37 <ehird> AnMaster: hmm, just tried xml'ing in kate
16:26:38 <AnMaster> at the same time
16:26:40 <ehird> not that hot
16:26:45 <ehird> but still hotter than anything emacs has, oddly
16:26:51 <AnMaster> ehird, I don't really do a lot of xml really
16:26:55 <ehird> emacs' xml support sucks more than anything else emacs can do
16:26:56 <AnMaster> so kate is enough for me
16:26:57 <ehird> it's just terrible
16:27:13 <ehird> i don't care if nxml has a validating xml parser written in emacs, it's crap
16:27:14 <AnMaster> ehird, agreed, it fails at indention in xml for example
16:27:50 <AnMaster> ehird, but the solution is very simple
16:27:55 <AnMaster> just use S-Expressions
16:28:03 <AnMaster> emacs got a very good support for that
16:29:21 <ehird> AnMaster: s-expressions can get really ugly for some types of data you know
16:29:37 <AnMaster> indeed, but much less overhead than xml in most cases
16:29:47 <ehird> also
16:29:51 <ehird> emacs has no S-Expr mode
16:29:52 <ehird> just lisp mode s:)
16:29:58 <ehird> Paredit on its own: nope. won't indent.
16:30:49 <AnMaster> hm?
16:30:59 <AnMaster> ehird, just open a html file or xml file in emacs
16:31:04 <AnMaster> it won't indent where you want
16:31:44 <AnMaster> while kate won't find the right indention level automatically either, it won't prevent you from doing it yourself
16:31:58 <Deewiant> emacs does? O_o
16:32:09 <AnMaster> Deewiant, yes for C it does
16:32:25 <Deewiant> I mean, "prevent you from doing it yourself"
16:32:35 <AnMaster> Deewiant, in xml mode it does yes oddly
16:34:19 <ehird> AnMaster: kate autoindents
16:34:22 <ehird> you must have it broken
16:34:41 <AnMaster> ehird, what version?
16:35:16 <AnMaster> ?
16:36:12 <AnMaster> ehird, =
16:36:13 <AnMaster> ?
16:36:27 <ehird> AnMaster: ubuntu
16:36:29 <AnMaster> ......
16:36:32 <AnMaster> what kate version
16:36:33 <AnMaster> ...
16:36:40 <ehird> ubuntu's kate.
16:36:43 <AnMaster> and kde version
16:36:43 <ehird> go in your config
16:36:47 <ehird> change the indent settings
16:36:48 <AnMaster> ehird, and that is 4.what?
16:36:51 <AnMaster> or 3.what?
16:36:52 <ehird> 4?
16:36:52 <ehird> no
16:36:53 <ehird> 3
16:37:04 <ehird> kate has ALWAYS indented xml
16:37:06 <ehird> its a config options
16:37:07 <ehird> sheesh
16:37:16 <AnMaster> help -> about kate
16:37:18 <ehird> change indent mode to 'c style'
16:37:19 <ehird> jesus
16:37:20 <AnMaster> what version?
16:37:23 <ehird> change indent mode to 'c style'
16:37:23 <ehird> change indent mode to 'c style'
16:37:23 <ehird> change indent mode to 'c style'
16:37:23 <ehird> change indent mode to 'c style'
16:37:30 <AnMaster> ehird, there is no such thing here
16:37:32 <AnMaster> odd
16:37:36 <ehird> AnMaster: settings
16:37:38 <ehird> configuration
16:37:39 <ehird> indentation
16:37:41 <ehird> -> c style
16:37:54 <AnMaster> you mean: Inställningar -> Anpassa kate?
16:38:06 <ehird> whatever, you dirty swede :)
16:38:08 <slereah__> If you use C style, Al Qaeda wins.
16:38:13 <AnMaster> slereah__, err?
16:38:23 <AnMaster> ehird, anyway emacs rocks for C
16:38:26 <ehird> real programmers use computers in english! ;)
16:38:29 <ehird> AnMaster: yes but C style indents xml
16:38:37 <AnMaster> ehird, perfect CScope integration for example
16:38:43 <olsner> I find most swedish translations of software disgusting
16:39:03 <AnMaster> olsner, the KDE one is unusally good
16:39:03 <AnMaster> not common
16:39:09 <AnMaster> but KDE one is actually really high quality
16:39:23 <olsner> oh, good for KDE
16:39:35 * olsner uses no KDE software
16:39:40 <AnMaster> olsner, gnome?
16:39:51 <AnMaster> they have very shitty Swedish translation iirc
16:40:00 <AnMaster> but I haven't used it for long
16:40:07 <AnMaster> so can't really say anything about current state
16:40:07 <olsner> nah, I use X11, with some software from the gnome project ;-)
16:40:24 <AnMaster> olsner, what window manager?
16:40:52 <ehird> oh god i'm pretentious
16:40:59 <ehird> i just responded to a post on reddit saying 'JWZ' with 'it's jwz'
16:41:13 <AnMaster> jwz?
16:44:31 <ehird> jamie zawinski
16:44:33 <olsner> AnMaster: xfce, so I guess I'm half-gnome
16:44:44 <AnMaster> ehird, doesn't mean anything to me
16:44:48 <ehird> Jamie W. Zawinski (born November 3, 1968[1] in Pittsburgh, Pennsylvania), commonly known as jwz, is an American computer programmer responsible for significant contributions to the free software projects Mozilla and XEmacs, and early versions of the proprietary Netscape Navigator web browser. He still actively maintains the XScreenSaver project, used by most Unix-like computer operating systems for screenblanking.
16:45:14 <ehird> (also: 'Zawinski is currently the proprietor of the DNA Lounge, a nightclub in San Francisco.')
16:45:44 <ehird> if you've ever heard: 'Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.' then that's a jwz quote. it's also horribly incorrect
16:46:15 <AnMaster> ah
16:46:20 <Deewiant> that's often paraphrased as "I know, I'll use XML." ;-)
16:46:26 <AnMaster> ehird, I know someone who like to quote that yes
16:46:30 <AnMaster> one of the #bash regulars
16:46:34 <AnMaster> called greycat
16:46:53 <AnMaster> and well some ppl try to use regex where regex does not really fit
16:47:29 <olsner> hmm, has someone produced a turing complete regexp dialect yet?
16:47:36 <AnMaster> olsner, was just about to ask
16:47:45 <AnMaster> if not, someone should
16:48:37 <ehird> olsner: perl5 regexps
16:48:42 <ehird> also ais523 is working on one
16:48:46 <ehird> which is actually convenient for parsing
16:48:52 <ehird> AnMaster: aah, greycat. that moron :)
16:49:03 <AnMaster> ehird, oh? he is smart
16:49:06 <AnMaster> just very unusal
16:49:11 <olsner> doesn't perl5 regexpes rely on embedding perl code for TC:ness?
16:49:39 <AnMaster> ehird, I respect his knowledge, but I don't agree with his opinions
16:49:41 <ehird> AnMaster: smart but elitist and unhelpful
16:49:46 <ehird> & plain wrong on most things
16:49:53 <AnMaster> ehird, opinons indeed
16:49:55 <ehird> so a lot of smart going to waste
16:50:03 <ehird> olsner: nope
16:50:09 <ehird> you can have recursive regexps and some other stuff
16:50:10 <ehird> it is tc
16:50:23 <ehird> Speaking of jwz, this has to be the craziest lisp code i've ever seen: http://jwz.livejournal.com/854482.html
16:50:31 <AnMaster> ehird, and he knows more than anyone else on #bash about HP-UX ;)
16:50:40 <AnMaster> or whatever it was he ran
16:52:56 <olsner> heh, just the lisp equivalent of a bit of unsafePerformIO and unsafeCoerce :P
16:53:28 <ehird> AnMaster: knowledge about HP-UX, how useful and practical
16:53:44 <AnMaster> ehird, hehe exactly ;P
16:53:47 <ehird> olsner: except that those functions will be actively used in the code for: 1. efficient programs 2. OS-level code
16:53:49 <AnMaster> it was ironic
16:53:52 <ehird> since they were just low-level primitives
16:54:07 <ehird> #<massively-positive-bignum> is a hilarious printout though
16:54:34 <ehird> http://www.unlambda.com/nevermore/ ooo
16:55:46 <ehird> http://www.unlambda.com/lisp/meroko.page a different one, same site. odd
17:17:13 <AnMaster> Deewiant, where is the string GOOD: : on empty stack makes stack size 2 according to y stored
17:17:16 <AnMaster> I can't find it
17:18:23 <AnMaster> oh wait just found it
17:18:25 <AnMaster> but wtf
17:29:24 <ehird> is SISC's startup unbearably slow for anyone else?
17:29:51 <AnMaster> ehird, SISC?
17:32:17 <slereah__> Second Interpreter Scheme Something
17:32:22 <ehird> seecond interpreter of scheme code
17:32:24 <ehird> a java scheme interp
17:32:26 <ehird> main interest:
17:32:33 <ehird> it has full continuations while still interacting with java, and
17:32:36 <ehird> everything is serializable in it
17:32:44 <ehird> you can serialize functions, continuations, everything except obviously things like sockets
17:37:06 <AnMaster> Deewiant, so far it seems to be crap on after the newline in "GOOD: ] turns flying IP right"
17:37:32 <AnMaster> stack have 1 2 3 4 at that point
17:37:34 <AnMaster> wtf
17:42:49 <AnMaster> Deewiant, the code in that area is very confusing
17:43:51 <ehird> hmm
17:43:55 <ehird> i wonder how hard implementing a basic smalltalk is
17:45:14 -!- Corun has joined.
17:45:45 <AnMaster> "GOOD: \ on empty stack makes"$"x stack size 2 accord"<
17:45:53 <AnMaster> Deewiant, what is the $ there for?
17:45:59 <AnMaster> it tests something else at once?
17:46:22 <AnMaster> oh wait
17:46:32 <AnMaster> it is code running through the string
17:46:36 <AnMaster> oh my
17:50:25 <ehird> hmm
17:50:28 <ehird> anyone a smalltalker?
17:50:39 <ehird> do messages have built-in arity, i.e. can I respond_to with an argc?
17:50:41 <ehird> i think no
17:51:50 <AnMaster> <small>well depends on how you define smalltalker</small>
17:52:07 * AnMaster runs
17:53:01 <ehird> for (i = argc; i--;) { /* cute c hack *.
17:59:37 <AnMaster> ehird, if you want to parse your command line arguments backwards it does indeed seem like the right way
17:59:45 <AnMaster> why on earth you would want that I don't know
17:59:52 -!- slereah_ has joined.
18:03:30 <ehird> AnMaster: yeah, oops :)
18:03:32 <ehird> anyway
18:03:42 <ehird> http://rafb.net/p/x7YYOH94.html skeleton of message sending for my imaginary smalltalk
18:04:08 <AnMaster> ehird, I think objc does message based object orientation too?
18:04:09 <AnMaster> iirc
18:04:17 <ehird> AnMaster: yep
18:04:20 <ehird> objc is smalltalk+c
18:04:25 <ehird> [...] = smalltalk-land!
18:04:30 <ehird> and some bits with @ and - (abc)
18:04:31 <ehird> but yeah
18:04:50 <AnMaster> bbiab food
18:04:53 -!- Tritonio_ has joined.
18:07:11 <ehird> http://jwz.livejournal.com/843296.html hahahahahah
18:14:34 <AnMaster> ehird, that dialog in mosaic was optional and not the default
18:14:56 <ehird> AnMaster: i know that
18:15:07 * AnMaster has been working on mosaic code recently
18:15:12 <ehird> AnMaster: it was added because of corporate bureaucracy
18:15:18 <AnMaster> oh?
18:15:41 <ehird> yeah
18:15:48 <ehird> a corporate customer wanted some kind of warning or similar
18:15:50 <ehird> so they added that
18:15:56 <ehird> (config key: protectmefrommyself, iirc)
18:15:56 <AnMaster> hah
18:16:01 <ehird> i read up on mosaic aaages ago :)
18:16:12 <AnMaster> ehird, yes I think it is, prefsdefs.h iirc
18:16:14 <AnMaster> ;P
18:16:25 <AnMaster> not totally sure about what header file
18:19:14 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
18:20:10 -!- slereah_ has joined.
18:27:37 -!- Sle has joined.
18:27:53 -!- Sle has changed nick to Slereah.
18:28:59 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
18:30:49 -!- slereah__ has quit (Read error: 110 (Connection timed out)).
18:49:00 -!- okopol has joined.
19:05:26 <AnMaster> Deewiant, so far I found whatever causes it happens somewhere before ] turning flying IP test
19:05:40 <AnMaster> and *probably* after "GOOD: y acts as pick instruction if given large enough argument"
19:06:25 <AnMaster> actually happens before it
19:06:26 <AnMaster> sigh
19:07:01 <Deewiant> what's your stack at (140,163)
19:07:15 <AnMaster> um can't break like that yet *looks*
19:07:27 <Deewiant> and hence debuggers are handier than tracing ;-)
19:07:48 <AnMaster> agreed that is why I'm working on the protocol
19:09:30 <AnMaster> (gdb) break ExecuteInstruction if (ip->position.x == 140) && (ip->position.y == 163)
19:09:33 <AnMaster> Deewiant, :P
19:09:46 <AnMaster> tix=0 tid=1 x=140 y=163: f (102)
19:09:47 <Deewiant> :-P
19:09:58 <AnMaster> (gdb) call StackDump(ip->stack)
19:09:58 <AnMaster> 5 elements:
19:09:58 <AnMaster> 1 2 3 4 0
19:10:07 <AnMaster> Deewiant, yes indeed it is wrong even at that point
19:10:17 <AnMaster> those 1 2 3 4 is what is messing up below
19:10:31 <Deewiant> hm
19:10:49 <Deewiant> your y isn't working as a pick instruction correctly
19:10:58 <AnMaster> Deewiant, hm, it says it is
19:11:00 <AnMaster> :/
19:11:05 <Deewiant> the test isn't sufficient
19:11:06 <AnMaster> "GOOD: y acts as pick instruction if given large enough argument"
19:11:11 <Deewiant> or rather, it is, in a way
19:11:14 <AnMaster> oh?
19:11:16 <Deewiant> you can't ever be sure the stack is really empty
19:11:18 <Deewiant> but one sec
19:11:24 <Deewiant> I can make it a bit better easily
19:11:27 <AnMaster> Deewiant, you can after n really, right?
19:11:48 <Deewiant> yes, but you can't be sure whether n deleted anything or not
19:11:51 <Deewiant> that's what I meant
19:11:57 <Deewiant> i.e. in this case, after the y, the stack should have only a 2
19:12:04 <Deewiant> and that's all that's being tested for
19:12:07 <AnMaster> hm
19:12:09 <Deewiant> I'll make it check for 2 and then 0
19:12:18 <AnMaster> what would cause the 3 and 4?
19:12:20 <Deewiant> ideally it'd check for 2 and then empty, but that's basically impossible
19:12:24 <AnMaster> ie, where do they come from
19:12:42 <Deewiant> 1234 is put on the stack
19:12:49 <Deewiant> from which 2 is meant to be piciked
19:12:54 <Deewiant> s/picik/pick/
19:13:03 <AnMaster> ok, y as pick should not pop any item right?
19:13:13 <AnMaster> but just push the given item?
19:13:18 <AnMaster> or did I get that wrong?
19:13:19 <Deewiant> according to the spec surely it should :-P
19:13:25 <AnMaster> aha
19:14:09 <AnMaster> Deewiant, so it should pop until that point?
19:14:35 <AnMaster> then how does it differ from say 4k$ ?
19:14:46 <Deewiant> it also clears the stack below
19:15:01 <AnMaster> Deewiant, so the stack is empty except that item, huh
19:15:02 <Deewiant> so it's more like 4k$00pn00g
19:15:06 <Deewiant> yep
19:15:11 <AnMaster> but y doesn't always clear the stack does it?
19:15:22 <Deewiant> if you want to pull from tar.us.to:8000 go ahead
19:15:44 <Deewiant> with luck the test works
19:16:08 <Deewiant> and with luck the DNS resolves correctly this time :-P
19:16:15 <AnMaster> FUNGEDATATYPE tmp = ip->stack->entries[ip->stack->top - (request - tmp->top)];
19:16:15 <AnMaster> StackClear(ip->stack);
19:16:15 <AnMaster> StackPush(tmp, ip->stack);
19:16:26 <AnMaster> is that correct then for the case of y going pick?
19:16:37 <Deewiant> something like that
19:16:48 <Deewiant> just pull the myco and test it
19:17:47 <AnMaster> ok that works now
19:17:58 <AnMaster> Deewiant, however, should y clear stack in other cases too?
19:18:05 <Deewiant> no, no
19:18:08 <Deewiant> read the spec
19:18:34 <AnMaster> If y is given a positive argument, all these cells are pushed onto the stack as if the argument was non-positive. However, y then goes on to copy the argumentth stack cell (counting from the top) into a temporary location, subsequently removing all the cells it pushed onto the stack. It then pushes the temporary cell onto the stack. For example, 3y will act as if only the handprint was pushed onto the
19:18:34 <AnMaster> stack.
19:18:40 <AnMaster> yes, that *it* pushed
19:18:47 -!- poiuy_qwert has joined.
19:18:52 <AnMaster> don't seem to be like it pushed the first 1 did it?
19:18:59 <AnMaster> Deewiant, ?
19:19:02 <Deewiant> An interesting side-effect of this behaviour is that if y is given an argument that exceeds the number of cells it pushes onto the stack, it can act as a 'pick' instruction on data that was on the stack before y was even executed.
19:19:11 <AnMaster> yes indeed
19:19:12 <Deewiant> hmm
19:19:19 <Deewiant> you may be right
19:19:22 <Deewiant> let's see
19:19:22 <AnMaster> but where does it say it should clear the stack?
19:19:35 <AnMaster> at most it is an undef
19:20:31 <AnMaster> and probably it is a BAD to clear the stack
19:20:50 <Deewiant> augh, I can't test this because 0y doesn't work in other interpreters :-P
19:21:07 <AnMaster> Deewiant, err 0y must work on some to push stuff?
19:21:17 <Deewiant> ?
19:21:31 <AnMaster> Deewiant, what do you mean 0y doesn't work?
19:21:37 <Deewiant> I mean, 0y doesn't work.
19:21:46 <AnMaster> hm
19:21:49 <Deewiant> it gives the wrong stack size.
19:21:52 <AnMaster> ok
19:21:59 <AnMaster> Deewiant, try gdb
19:22:05 <AnMaster> and a breakpoint and then examine stack
19:22:25 <AnMaster> Deewiant, btw I think my gdb breakpoint was quite nifty
19:22:26 <AnMaster> ;)
19:22:58 <AnMaster> and is actually more useful to me to debug the interpreter itself but to debug a script it is less useful
19:23:03 <AnMaster> err program
19:24:22 <Deewiant> hmm, this may actually be a CCBI bug
19:24:31 <Deewiant> pop(size - oldStackSize);
19:24:34 <AnMaster> Deewiant, XD
19:24:46 <Deewiant> I wonder what's up with that
19:25:13 <AnMaster> Deewiant, well hurry up or rename it to NCCBI ;)
19:25:27 <AnMaster> Deewiant, in any case looks like I'm right and mycology wrong or?
19:25:27 <Deewiant> bugs happen
19:25:40 <AnMaster> I want to know what way I should do it
19:27:34 <Deewiant> at this point I'm not sure where the bug is
19:27:36 <Deewiant> gimme a few secs
19:27:49 <AnMaster> just want to know if I need to change cfunge or you change mycology
19:28:00 <Deewiant> wondering what on earth "aa 2++k$" is doing in myco
19:28:10 <Deewiant> I think it's getting the stack size
19:28:14 <Deewiant> but it might be messing it up too
19:28:22 <AnMaster> I don't want to have to use a #define MYCOLOGY_COMPATIBLE vs #define STANDARD_COMPATIBLE ;)
19:32:45 <Deewiant> hmm
19:32:54 <Deewiant> it does seem to be a CCBI bug
19:33:04 <Deewiant> and of course Mycology as well
19:33:09 <AnMaster> ok
19:33:22 <AnMaster> hope you can fix it soon in mycology so I can look at the next bug
19:33:23 <Deewiant> but I'm wondering what the right way of resolving this is
19:33:37 <Deewiant> if (size > oldSize) pop(size - oldSize); ??
19:33:44 <Deewiant> does that make any sense?
19:33:50 <AnMaster> err I have not read your sysinfo code at all
19:34:04 <AnMaster> mine is completely freestanding
19:34:07 <Deewiant> what it does is, like the spec says, it pushes everything
19:34:18 <Deewiant> then it pops up to the argumenth cell
19:34:25 <Deewiant> pops the cell to be picked
19:34:31 <Deewiant> and then does pop(size - oldSize);
19:34:34 <AnMaster> I push things to a temp stack
19:34:36 <AnMaster> and then do this
19:34:38 <AnMaster> if (tmp->top > (size_t)request)
19:34:38 <AnMaster> StackPush(tmp->entries[tmp->top - request], ip->stack);
19:34:38 <AnMaster> else
19:34:38 <AnMaster> StackPush(ip->stack->entries[ip->stack->top - (request - tmp->top)], ip->stack);
19:34:42 <AnMaster> tmp is the temp stack
19:34:54 <AnMaster> request is the thing y popped of the main stack
19:34:58 <Deewiant> stack->top is the stack size?
19:35:05 <Deewiant> or a pointer to the top?
19:35:07 <AnMaster> Deewiant, it is the top stack item yes
19:35:17 <Deewiant> yeah, so the size
19:35:20 <Deewiant> makes sense
19:35:28 <AnMaster> Deewiant, top->size however is the actual stack size, as it doesn't realloc to smaller stack
19:35:29 <Deewiant> so if size > arg...
19:35:37 <Deewiant> yeye, same difference
19:35:46 <Deewiant> I don't think I expose the "actual size" myself :-)
19:35:47 <AnMaster> argh getting dcc chat spam
19:36:04 <Deewiant> if size > arg, if oldSize <= size
19:36:52 -!- otesanek has joined.
19:37:40 <Deewiant> both appear to work
19:40:07 <Deewiant> AnMaster: you might still have it wrong, though :-P
19:40:21 <Deewiant> AnMaster: pull
19:40:25 -!- poiuy_qwert has quit.
19:40:32 <AnMaster> k
19:41:12 <AnMaster> BAD: y doesn't act as pick instruction if given large enough argument
19:41:13 <AnMaster> ok
19:41:18 <AnMaster> Deewiant, how would it be wrong now?
19:41:34 <Deewiant> pop up to the requested one, but leave everything below that untouched
19:41:38 <AnMaster> ah
19:41:40 <AnMaster> right
19:45:49 <AnMaster> Deewiant, ok pushed fixed cfunge :)
19:46:08 <AnMaster> GOOD: 000p000W goes thrugh
19:46:08 <AnMaster> GOOD: 000p100W waits indefinitelyGOOGOOD: X works
19:46:11 <AnMaster> still have to solve that
19:46:19 <AnMaster> Deewiant, any idea about wtf may be going on there?
19:46:46 <AnMaster> I copied the logic of TOYS' W from CCBI
19:46:51 <AnMaster> or or less
19:46:55 <Deewiant> not really, no
19:47:08 <AnMaster> Deewiant, ok, can you tell me where in the file that is?
19:47:12 <Deewiant> does that really print "thrugh" btw
19:47:18 <AnMaster> Deewiant, not for CCBI
19:47:19 <Deewiant> just grep for 000p000W
19:47:24 <Deewiant> AnMaster: good :-)
19:47:33 <AnMaster> Deewiant, problem is I don't know what direction to grep for it in
19:47:40 <Deewiant> grep it left to right
19:47:45 <Deewiant> if you can't find it, grep it right to left
19:47:52 <AnMaster> I mean it is probably either left to right or right to left
19:47:53 <AnMaster> but
19:47:55 <Deewiant> and if you still can't find it, use another part of the error message
19:47:56 <Deewiant> :-P
19:47:59 <AnMaster> it could be upwards or downwards
19:48:07 <AnMaster> someone need to invent a fungegrep
19:48:07 <Deewiant> in 99% of cases it isn't
19:48:10 <AnMaster> like there is xmlgrep
19:48:22 <Deewiant> or if it is, then look for the next or previous message
19:48:33 <AnMaster> v"U executes itself after transmuting"_v#! <g1<< >'<w;was <; 00g:3-!#v_1+00p'^48a*+3bd**p^ ^ < >v>;#"BAD: 000p000W reflects"ap$$$<;^
19:48:35 <AnMaster> right
19:55:51 <AnMaster> Deewiant, the problem is that it is concurrent
19:56:00 <AnMaster> so bloody hard to make sense of
19:56:01 <AnMaster> :/
19:56:41 <Deewiant> yep :-/
19:57:39 -!- bsmntbombdood has joined.
19:59:31 -!- marshmallows has quit ("Leaving").
20:01:00 -!- otesanek has quit (Read error: 113 (No route to host)).
20:06:16 <AnMaster> Deewiant, so the W is kind of like Compare and exchange?
20:06:19 <AnMaster> or?
20:06:49 <Deewiant> W ('television antenna') pops a vector off the stack, then a value. If the cell at that vector (plus the storage offset) in Funge-Space (a la g) is equal to that value, nothing happens. If the cell in space is less than the value, it pushes the value and the vector (inverted) back onto the stack, and backs up the IP (subtracts the IP's delta from it's position, sort of a 'wait to try again' condition, useful mainly in Concurrent Funge.) If the cell in s
20:07:33 <Deewiant> so it keeps retrying until the cell at the vector is >= the requested value
20:07:40 <Deewiant> if it's >, it reverses, if it's =, it does nothing
20:07:45 <Deewiant> (besides popping the vals, of course)
20:07:58 <AnMaster> hah
20:08:01 <AnMaster> aha*
20:08:15 <AnMaster> Deewiant, is it reverses and tries to execute again on next tick?
20:08:26 <AnMaster> ie a kind of semaphore?
20:08:33 <Deewiant> yeah, kinda
20:08:43 <Deewiant> like it says, "sort of a 'wait to try again' condition"
20:10:31 <AnMaster> Deewiant, but why doesn't it print BAD
20:10:45 <AnMaster> why does it print some weird GOODGOOD and missing char stuff?
20:10:53 <AnMaster> Deewiant, and is the error really in W?
20:10:56 <Deewiant> because it's concurrent and complicated :-P
20:10:58 <Deewiant> I can't be sure
20:10:59 <AnMaster> or does W use something not tested before?
20:11:04 <Deewiant> I hope not
20:11:21 <Deewiant> once again, compare stacks (and, since concurrent, IP positions) with CCBI
20:12:12 <AnMaster> tix=0 tid=1 x=172 y=430: g (103)
20:12:12 <AnMaster> tix=1 tid=2 x=164 y=432: n (110)
20:12:12 <AnMaster> tix=0 tid=1 x=173 y=430: u (117)
20:12:12 <AnMaster> tix=1 tid=2 x=165 y=432: @ (64)
20:12:12 <AnMaster> tix=0 tid=1 x=175 y=430: r (114)
20:12:13 <AnMaster> tix=0 tid=1 x=176 y=430: h (104)
20:12:15 <AnMaster> tix=0 tid=1 x=177 y=430: t (116)
20:12:17 <AnMaster> um
20:12:19 <AnMaster> ??
20:12:27 <AnMaster> is that supposed to happen
20:12:37 <AnMaster> it is where the through string is messed up I think
20:12:39 <Deewiant> possibly, I can't remember
20:14:41 -!- oerjan has joined.
20:14:50 <AnMaster> hguorht
20:14:59 <AnMaster> Deewiant, to me it seems something overwritten wrong place
20:15:10 <Deewiant> so what are your storage offsets like
20:15:14 <AnMaster> because the code does not contain any @ in that place
20:15:36 <AnMaster> hm
20:15:56 <AnMaster> c = space[x, y];
20:16:02 <AnMaster> Deewiant, that is from your code
20:16:12 <AnMaster> no storage offset is used when accessing ?
20:16:17 <AnMaster> but only when writing it back?
20:16:26 <AnMaster> pushVector(x - ip.offsetX, y - ip.offsetY);
20:16:29 <AnMaster> from your code too
20:16:32 <Deewiant> 165 432 is meant to be @
20:17:04 <AnMaster> err *looks*
20:17:09 <Deewiant> AnMaster: but isn't that a concurrency bug, right there
20:17:20 <Deewiant> AnMaster: why does your other IP skip over the 'o' when the other hits '@'
20:17:39 <AnMaster> hm
20:17:41 <AnMaster> right
20:17:46 <AnMaster> I was reading on the wrong line
20:18:20 <AnMaster> Deewiant, um
20:18:22 <AnMaster> *looks*
20:18:59 <AnMaster> http://rafb.net/p/pYLvrJ74.html
20:19:07 <Deewiant> the @ is put there by the p at (168,430)
20:19:16 <AnMaster> Deewiant, if I just had such a output from ccbi too so I could compare
20:19:23 <AnMaster> but maybe time for a funge space dump
20:19:31 <Deewiant> I'd start with figuring out why the 'o' isn't output
20:20:13 <AnMaster> v"U executes itself after transmuting"_v#! <g1<< >'<w;was <; 00g:3-!#v_1+00p'^48a*+3bd**p^ ^ < >v>;#"BAD: 000p000W reflects"ap$$$<;^
20:20:14 <AnMaster> >"" >" :FEDNU">:#,_a,$111p > > > ^ > ;BAD;^ >na"v^<> fo lla otni detumsnart U :DOOG">:#,_1y2%!#v_p'@faf*+689**000#vt#^Wpa"hguorht"v
20:20:14 <AnMaster> v>"nseod U"^ > ^ v<< < >
20:20:14 <AnMaster> " stiaw W000p000 :DABvv"deb*+25ef*+*p83a*+689**p@ v "Cannot test W without Concurrent Funge-98 support."a< >>>n@"yletinifedni"
20:20:16 <AnMaster> " v$$$< >$$$pna"stcelfer W001p000 :DAB" v >$$$pa"stcelfer W00-10p000 :DOOG" v
20:20:19 <AnMaster> is how it looks
20:20:21 <AnMaster> in the dump
20:20:53 <AnMaster> '^48a*+3bd**p^ ^ < >v>;#"BAD: 000p000W reflects"ap$$$<;^
20:20:53 <AnMaster> > fo lla otni detumsnart U :DOOG">:#,_1y2%!#v_p'@faf*+689**000#vt#^Wpa"hguorht"v
20:20:53 <AnMaster> ^ v<< < >
20:20:53 <AnMaster> est W without Concurrent Funge-98 support."a< >>>n@"yletinifedni"
20:20:53 <AnMaster> v >$$$pa"stcelfer W00-10p000 :DOOG" v
20:20:56 <AnMaster> >;#$$$$$< ;>:#,_'@6bc*+f92a*+*01-00#vt#^Wpa"hguorht seog W00-10p000 :DAB" v
20:20:58 <AnMaster> ^v"d5*27ef*+*pc9*f92a*+*p@ > #< #<na#<"yletinifedni stiaw W00-10p000 :DABvv";
20:21:00 <AnMaster> <
20:21:02 <AnMaster> is more relevant
20:21:04 <AnMaster> sorry for spam
20:21:08 <Deewiant> pasting huge bunches of Befunge here isn't exactly useful :-P
20:21:24 <AnMaster> Deewiant, problem is I can't make head or tail out of the code at all
20:21:53 <Deewiant> like said, I wouldn't worry about reading Mycology
20:21:58 <Deewiant> you have a bug: the 'o' isn't output
20:21:59 <Deewiant> why not
20:22:10 <Deewiant> you don't need mycology for that other than running through it with gdb
20:22:27 <AnMaster> yes I realize it isn't there
20:22:35 <AnMaster> but I don't understand it
20:22:44 <Deewiant> the o /is/ there, in the code
20:22:53 <Deewiant> the problem is that Cfunge is skipping over it
20:23:01 <Deewiant> I'd wager the problem is in how you handle @
20:23:08 <AnMaster> hm
20:23:17 <AnMaster> Deewiant, so why doesn't mycology test it before? heh
20:23:44 <AnMaster> I mean I only found out because of this fingerprint
20:23:58 <Deewiant> I can't test everything, as I've said many times before
20:24:02 <AnMaster> hm
20:24:05 <Deewiant> trust me, writing code for testing 2 threads was bad enough
20:24:08 <Deewiant> let alone 3 or more
20:24:14 <AnMaster> I agree
20:24:23 <Deewiant> because the point is that even if space or z don't work as regards ticks, the code has to work
20:24:25 <AnMaster> I have coded some simple concurrent
20:24:38 <Deewiant> so I had to rerun it over and over again with CCBI's space mapped to z and vice versa
20:24:42 <Deewiant> and make sure it worked in all cases
20:24:53 <AnMaster> yeah
20:25:29 <AnMaster> tix=0 tid=1 x=173 y=430: u (117)
20:25:29 <AnMaster> tix=1 tid=2 x=165 y=432: @ (64)
20:25:29 <AnMaster> tix=0 tid=1 x=175 y=430: r (114)
20:25:35 <AnMaster> indeed it skips one simply
20:25:43 * AnMaster ponders
20:26:28 <AnMaster> that means one of two files really, interpreter.c or ip.c
20:35:31 <AnMaster> Deewiant, fixed it
20:35:40 <Deewiant> what was the problem
20:35:43 <AnMaster> just needed to set a NeedMove to false
20:35:54 <Deewiant> right
20:36:04 <AnMaster> Deewiant, I'm not sure how this will work out of there are more than two IPs though
20:36:10 <AnMaster> it may break in the other way then
20:36:17 <Deewiant> I think there are 3 where that's tested
20:36:20 <Deewiant> though I'm not sure
20:36:30 <Deewiant> no, more likely it's 2
20:36:39 <Deewiant> no more than 2 are alive at once
20:36:42 <Deewiant> but more are created
20:36:55 <AnMaster> also the new IP must be index 0 in the array
20:36:59 <AnMaster> and a few other things
20:37:19 <AnMaster> 1) the remaining ip must now have index 0 before, the killed one index 1
20:37:24 <AnMaster> there must be no third IP
20:37:33 <Deewiant> O_o
20:37:34 <AnMaster> only then does the bug show up and is fixed this way
20:37:39 <Deewiant> heh
20:37:46 <AnMaster> I don't know if it will break in other cases
20:37:53 <AnMaster> no idea whatsoever
20:38:09 <AnMaster> it might
20:38:41 <AnMaster> so I'll write a few small test cases
20:49:34 -!- Corun has quit ("This computer has gone to sleep").
20:51:20 -!- Tritonio_ has quit (Remote closed the connection).
20:52:00 -!- Tritonio_ has joined.
20:53:14 -!- oerjan has quit ("leaving").
20:53:14 <AnMaster> wow
20:53:17 -!- Tritonio_ has quit (Remote closed the connection).
20:53:18 <AnMaster> cfunge: /home/arvid/src/cfunge/trunk/src/stack.c:313: StackStackDuplicate: Assertion `old != ((void *)0)' failed.
20:53:19 <AnMaster> Deewiant, ^
20:53:34 <Deewiant> :-D
20:53:35 <AnMaster> > #vt zzzzzzzzzzzzz v
20:53:36 <AnMaster> >#vtzzz@
20:53:36 <AnMaster> >a"DOOG :4">:#,_@
20:53:36 <AnMaster> v <
20:53:38 <Deewiant> how'd you get that
20:53:38 <AnMaster> on that code
20:53:48 <AnMaster> no brainfucking clue how
20:53:49 <Deewiant> on the second t?
20:54:00 <AnMaster> Deewiant, on;
20:54:02 <AnMaster> tix=1 tid=6 x=11 y=18: @ (64)
20:54:02 <AnMaster> tix=2 tid=0 x=5 y=3: t (116)
20:54:18 <AnMaster> wait a sec
20:54:20 <AnMaster> that makes no sense
20:54:24 <Deewiant> y=3?
20:54:55 <AnMaster> yes indeed makes no sense
20:55:00 * AnMaster gets out valgrind
20:55:01 <Deewiant> :-P
20:55:22 <AnMaster> ==16089== Conditional jump or move depends on uninitialised value(s)
20:55:23 <AnMaster> as I expected
20:55:35 <AnMaster> wth
20:56:28 <Deewiant> of course, valgrind is something you should run on your code before complaining about mycology tests ;-)
20:56:28 <AnMaster> Deewiant, if you want to experiment:
20:56:29 <AnMaster> http://rafb.net/p/tSF4nt31.html
20:56:44 <AnMaster> Deewiant, well valgrind gives no issues when running mycology
20:57:00 <AnMaster> a few memory leaks in funge space as you can't use gc + valgrind at same time
20:57:02 <AnMaster> but that's all
20:57:03 <Deewiant> uh? shouldn't that conditional be entered always?
20:57:15 <Deewiant> in t or @ or wherever that is
20:57:31 <AnMaster> in hash function
20:57:33 <ehird> sill scheme interpreter name: Isch Creme
20:57:35 <AnMaster> not sure
20:57:41 <ehird> or ischcreme
20:58:01 <AnMaster> Deewiant, ==16254== ERROR SUMMARY: 0 errors from 0 contexts
20:58:07 <AnMaster> when running on mycology
20:58:10 <Deewiant> AnMaster: that needs more 'z', prints 3: G4O:O DG here :-)
20:58:18 <Deewiant> AnMaster: odd
20:58:29 <AnMaster> <Deewiant> AnMaster: that needs more 'z', prints 3: G4O:O DG here :-)
20:58:30 <AnMaster> ???
20:58:40 <AnMaster> it should print 3: GOOD
20:58:42 <AnMaster> ??
20:59:13 <Deewiant> 3 and 4 are interspersed here
20:59:20 <AnMaster> Deewiant, aha
20:59:36 <Deewiant> please don't tell me that CCBI on linux behaves differently :-D
21:00:50 <AnMaster> $ ~/funge/ccbi/ccbi_linux/ccbi tests/concurrent-quit.b98
21:00:51 <AnMaster> 1: GOOD
21:00:51 <AnMaster> 2: GOOD
21:00:51 <AnMaster> 3: GOOD
21:00:51 <AnMaster> 4: GOOD
21:00:53 <AnMaster> ?
21:00:58 <AnMaster> Deewiant, that is what happens here
21:01:05 <AnMaster> may not be last version
21:01:15 <AnMaster> oh wait this is a slightly different version
21:01:20 <AnMaster> than the one I pastebinned
21:01:21 <AnMaster> right
21:01:26 <Deewiant> heh
21:01:40 <AnMaster> Deewiant, ok, the first two splits are ok
21:01:44 <AnMaster> 1 and 2 in cfunge
21:01:47 <AnMaster> then issues start
21:01:58 <AnMaster> tix=0 tid=0 x=5 y=17: t (116)
21:02:20 <AnMaster> splitting after the third one in fact
21:08:29 <AnMaster> Deewiant, hm, now by adding a mutex it is "fixed", but now I need to reproduce the issue again
21:11:48 <AnMaster> >@
21:11:49 <AnMaster> >#^tzz@
21:11:49 <AnMaster> > #^tz#vt v
21:11:49 <AnMaster> >zzzz@
21:11:49 <AnMaster> v <
21:11:51 <AnMaster> Deewiant, that does it
21:11:57 <AnMaster> looking at minimizing it
21:12:34 <AnMaster> the upper split can be removed
21:15:20 -!- Corun has joined.
21:18:08 <AnMaster> actually wrong
21:18:13 <AnMaster> it still interacts with previous code
21:19:26 -!- okopol has changed nick to oklopol.
21:23:04 <AnMaster> Deewiant, ok this need a very specific split pattern to trigger
21:23:10 <AnMaster> 1) ip 0 split
21:23:27 <AnMaster> 2) ip 1 just goes on doing z or whatever
21:23:37 <AnMaster> 3) ip 0 split again
21:24:03 <AnMaster> result is that suddenly we got two ip entries but array length of 3
21:38:24 <AnMaster> Deewiant, ^
21:38:34 <AnMaster> Deewiant, I think I am beginning to solve it
21:59:05 -!- calamari has joined.
22:06:12 -!- nice_ka has joined.
22:19:45 -!- RedDak has joined.
22:44:29 -!- pikhq has joined.
22:47:33 -!- Deformative has quit ("Konversation terminated!").
22:48:52 -!- Deformative has joined.
22:50:02 -!- Deformative has quit (Remote closed the connection).
22:51:00 -!- Deformative has joined.
22:58:35 -!- Tritonio_ has joined.
23:13:23 * oklopol made a O(1)-space quicksort
23:13:26 <oklopol> i think...
23:13:38 <oklopol> so hard to know what counts as O(1)
23:14:27 <oklopol> i need to fiddle with the bitstring of len(l) where l is the sorted list, so basically it's O(lg n) space anyway... i'm fairly sure you can't actually manage O(1), although i've been told it exists
23:15:04 <oklopol> err no, i need numbers 0...len(n), so it's O(lg lg n) space, i guess, but still
23:16:54 <ehird> oklopol: O(1) - given any list, uses the asme space
23:16:58 <ehird> a 43593459345435 elm list == same space as 4
23:17:32 <ehird> oklopol: maybe you could use xrange insead of range
23:17:35 <ehird> that calculates it lazily
23:19:29 -!- Deformati has joined.
23:21:02 <oklopol> ...what?
23:21:08 <oklopol> asme?
23:21:43 <ehird> oklopol: thats O(1) space
23:21:54 <ehird> if sort() is O(1)
23:22:08 <oklopol> i use a few iterators where a retard might have used a strictly evaluated list, yes, but xrange doesn't really solve the whole thing
23:22:09 <ehird> sort([45,345,2,34,3]) takes same memory as sort([345345,345,35,24,12,3,7,34,5,7,4,6,7,345,,,67,345,7,,5,345,45])
23:22:16 <oklopol> really?
23:22:18 <oklopol> it does? :O
23:22:32 <ehird> if its O(1)
23:22:37 <oklopol> what do people usually do to get rid of the recursion stack?
23:22:39 <oklopol> oh, right
23:22:44 <oklopol> err not
23:22:46 <oklopol> *no
23:22:50 <oklopol> i specified *quicksort*
23:22:53 <oklopol> so...
23:22:55 <oklopol> enlighten me
23:23:00 <oklopol> my solution isn't all that trivial
23:24:04 <ehird> oklopol: get rid of recursion=manual stack
23:24:22 <oklopol> well, it's kinda trivial, just a certain pattern around the bits of len(l) + calculating in O(n) the median, pivotting perfectly
23:24:33 <oklopol> ehird: how's that O(1) space more than the recursion stack?
23:25:35 <AnMaster> oklopol, care to show the code?
23:25:39 <AnMaster> and in what language?
23:25:40 <oklopol> k
23:25:42 <oklopol> python
23:25:47 <AnMaster> forget it then
23:26:17 <oklopol> http://www.vjn.fi/pb/p531644464.txt
23:26:37 <oklopol> it's prolly like O(lg lg n), but it doesn't use any stack, just a few numbers
23:26:44 <oklopol> dunno
23:27:59 <ehird> oklopol: wow
23:28:38 <oklopol> ehird: now that i understood "asme" in fact means "same", i can answer: indeed, it's definitely not O(1) space then, i need bignums for the length of the list, and the length can be like a quasimagrillion.
23:28:56 <oklopol> ehird: wow as in, CAN PYTHON ACTUALLY BE RAPED THAT BADLY?!?!?
23:28:59 <oklopol> or what :P
23:29:19 <oklopol> skipiter was the hard part
23:30:23 <oklopol> uses O(lg n) space, for a few numbers that is, to get the sequence 0 -> 101 -> 2120212 -> 323132303231323, which i use to get jumps right when traversing the sublists when i've "recursed" onto another level
23:30:28 <oklopol> god i'm bad at explaining this
23:30:54 <oklopol> wish i owned at math, could just prove it, and tell ppl to fuck themselves if they asked for an explanation.
23:30:59 <oklopol> :P
23:34:35 <olsner> I would have attempted an analysis if it wasn't written in python
23:34:41 <oklopol> hmm
23:34:45 <oklopol> what language do you want?
23:34:51 <oklopol> i can rewrite
23:34:58 -!- Deformative has quit (Remote closed the connection).
23:35:27 <olsner> nah, don't bother
23:35:44 <oklopol> (just needs to support mutable lists of course)
23:36:19 <oklopol> (or it'll trivially be at least O(n) space)
23:36:48 <oklopol> olsner: so basically you don't want to, and this was just an excuse? :P
23:36:59 <olsner> something like that, yeah
23:36:59 <oklopol> my time is worthless!
23:37:04 <oklopol> :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
23:37:20 <AnMaster> oklopol, C
23:37:23 <AnMaster> rewrite it in C
23:37:36 <oklopol> the problem with C is, i actually need bignums.
23:37:39 <oklopol> well
23:37:39 <AnMaster> -std=c99 -pedantic -Wall -Wextra -Werror
23:37:43 <oklopol> not really
23:37:57 <AnMaster> actually I use more, too many to paste here
23:38:07 <oklopol> because if a list fits into memory, the pointer size is enough for me
23:38:24 <AnMaster> http://rafb.net/p/326SMd71.html
23:38:33 <AnMaster> that is from my cmake file for a project
23:38:51 <oklopol> i think i could do a fairly straightforward translation from python to C here, if it weren't for that one generator
23:39:18 <oklopol> but it's fairly simple, i now realize, to non-generatorize it
23:40:09 <oklopol> perhaps i'll do it tonight, after my daily south park session
23:40:21 <AnMaster> oklopol, size_t for memory
23:40:25 <AnMaster> I got 64-bit :)
23:40:54 <oklopol> i think the biggest problem will be to get a C compiler to work
23:41:21 <ehird> oklopol: lunix?
23:41:28 <ehird> debian/ewwbuntoo:
23:41:28 <oklopol> as many here already know, i'm the biggest retard in the world when it comes to installing software.
23:41:32 <oklopol> ehird: sadly, no
23:41:33 <ehird> sudo apt-get install build-essential
23:41:36 <olsner> wow, that's a crazy set of warning options! witness of the unsafe properties of C :P
23:41:38 <ehird> oh darn
23:41:39 <ehird> what then
23:41:44 <oklopol> guess ;)
23:41:51 <ehird> cygwin
23:41:53 <ehird> cygwin is yer friend
23:41:55 <ehird> it comes with gcc
23:42:12 <olsner> or mingw
23:42:13 <AnMaster> olsner, hah
23:42:49 <ehird> cygwinnnn
23:42:50 <AnMaster> olsner, don't forget the *need* for valgrind
23:42:53 <oklopol> ehird: perhaps
23:42:58 <AnMaster> ehird, cygfail?
23:43:13 <olsner> AnMaster: well, if you're on windows you can just compile, test and pray
23:43:35 <AnMaster> olsner, I'm not on windows
23:43:46 <AnMaster> I'm on Gentoo Linux x86_64
23:43:47 <AnMaster> :)
23:45:32 <AnMaster> olsner, so what do you use to detect memleaks in windows software?
23:45:39 <olsner> I'm also on linux at home; but not at work since certain of our target platforms have developer tools that are windows-only
23:46:16 <AnMaster> olsner, sure GCC can't compile to those platforms?
23:47:11 <pikhq> Here's a hint: GCC targets *everything*.
23:47:16 <olsner> it can, but produces bigger binaries and requires hacking linker scripts etc no-one's had time to perform
23:47:21 <AnMaster> pikhq, exactly
23:47:33 <pikhq> Hell, I can get GCC to target a fucking PDP-11.
23:47:35 <AnMaster> pikhq, apart from h8300, iirc that port is dead since about gcc 2.95
23:47:39 <AnMaster> or something like that
23:47:54 -!- nice_ka has left (?).
23:47:56 <AnMaster> I wanted to cross compile to it recently
23:47:59 <pikhq> AnMaster: Doesn't mean I can't get GCC to target one.
23:48:11 <pikhq> Granted, porting from 2.95 would be a royal pain.
23:48:20 <AnMaster> pikhq, 8 bit CPU
23:48:24 <pikhq> (did they even use RTL then?)
23:48:25 <ehird> pikhq: if you write a backend, it will compile!
23:48:27 <ehird> wowz
23:48:53 <AnMaster> pikhq, used in some products by Lego
23:48:59 <AnMaster> yeah in toys
23:54:46 -!- Deformati has quit (Remote closed the connection).
23:58:15 -!- Deformative has joined.
2008-03-30
00:00:04 <ehird> so, who here is made out of chicken
00:04:37 <pikhq> Not I.
00:04:53 <ehird> I am
00:04:56 <ehird> and I am playing with squeak
00:04:58 <ehird> Smalltalk is love
00:05:48 -!- vixey has joined.
00:20:17 -!- Deformative has quit (Remote closed the connection).
00:20:55 -!- Deformative has joined.
00:29:00 -!- timotiis has quit ("leaving").
00:46:57 -!- Deformative has quit ("Konversation terminated!").
00:47:39 -!- Tritonio_ has quit (Remote closed the connection).
00:49:38 -!- Deformative has joined.
00:59:24 <AnMaster> Deewiant, minor issue, you know if fungus? while it is not as extensive as mycology I notice ccbi segfaults on it
00:59:28 <AnMaster> Loading module stackstack
00:59:29 <AnMaster> Loading module finghrti
00:59:29 <AnMaster> Segmentation fault
00:59:57 <AnMaster> (while mine get into an infinite loop)
01:00:01 <ehird> AnMaster: He knows of fungus.
01:00:09 <ehird> It's what made him write Mycology. It's bad.
01:00:12 <AnMaster> ehird, yep
01:00:21 <AnMaster> but interpreter should still not segfault on it
01:00:24 <ehird> hardly
01:00:26 <ehird> its broken iirc
01:00:27 <AnMaster> that is the thing I like to point out
01:00:41 <AnMaster> and his binary is stripped
01:00:52 <AnMaster> (gdb) bt
01:00:52 <AnMaster> #0 0x080c4af7 in ?? ()
01:00:52 <AnMaster> #1 0x08109990 in ?? ()
01:00:52 <AnMaster> ......
01:00:52 <AnMaster> #5 0x00000000 in ?? ()
01:01:14 <AnMaster> ehird, point is anything but sefault is fine
01:01:23 <AnMaster> interpreter should never segfault or assert imo
01:01:31 <AnMaster> infinite loop? sure, it's fine
01:01:54 -!- Corun has quit ("Leaving").
01:10:17 <ehird> AnMaster: you know what I want?
01:10:19 <ehird> inline structures
01:13:48 -!- RodgerTheGreat has joined.
01:14:53 <RodgerTheGreat> howdy folks
01:15:15 <vixey> hi
01:15:23 <RodgerTheGreat> 'sup, vixey?
01:16:34 <RodgerTheGreat> I just returned from the NMU programming competition- great fun
01:16:53 <vixey> how did it go?
01:17:06 <RodgerTheGreat> my team did pretty well- 4th place out of about 20 teams
01:17:32 <pikhq> Yo.
01:17:33 <RodgerTheGreat> we all got T-shirts and free food, so I'll chalk it up as a win. :)
01:17:36 <RodgerTheGreat> hey, pikhq
01:18:07 <pikhq> Been a while.
01:18:23 <RodgerTheGreat> yeah, school is getting pretty crazy on my end
01:18:34 <pikhq> I spent the past week with family.
01:18:50 <pikhq> So, not been on much. ;)
01:19:39 <RodgerTheGreat> it's looking like I'll spend the summer taking more classes at MTU- so far I've lined up Coding Theory, an art class and a course on technical writing.
01:21:12 <RodgerTheGreat> vixey: are you new here, or have I been completely out of it?
01:23:27 <ehird> new, afaik
01:24:25 <RodgerTheGreat> ah, well then, welcome to this festering hive of insanity and highly intellectual ranting
01:25:51 -!- RedDak has quit (Remote closed the connection).
01:30:01 <ehird> just in case anyone was wondering..
01:30:09 <ehird> cpp supports circular header definitions, and gets them right.
01:30:09 <ehird> wow.
01:30:24 <RodgerTheGreat> nifty
01:30:32 <RodgerTheGreat> I shudder to consider how you determined this
01:30:40 <ehird> RodgerTheGreat: You don't wanna know.
01:30:48 <ehird> However, I'll tell you anyway.
01:30:50 <RodgerTheGreat> ok
01:32:44 <ehird> schream/value.h includes the definition of scm_tag. A scm_tag (which is the structure identifying the tag for a specific type of object) has a name (i.e. for integers it's 'integer'). This name is of the type I use to represent strings (contains length, allocated, and the string) - (scm_string *), defined in schream/string.h. But scm_string's are valid objects too, and string.h defines a scm_tag for them, so it needs to include the header file defining
01:32:44 <ehird> scm_tag... schream/value.h
01:32:53 <ehird> RodgerTheGreat: Amazingly, cpp figures out what I mean and terminates.
01:33:08 <RodgerTheGreat> Amazing
01:47:40 <RodgerTheGreat> so, what's everyone up to this evening?
01:47:53 <ehird> coding this
01:47:53 <ehird> ;)
01:47:55 <pikhq> Getting a laptop to run Gentoo.
01:47:57 <ehird> and it's 00:47
01:48:06 -!- Tritonio_ has joined.
01:48:10 <vixey> wishing I could think of something good to code..
01:48:19 <RodgerTheGreat> I kinda feel like coding something, but I don't have any immediate goals
01:48:37 <ehird> vixey: embed prolog into $LANGUAGE
01:48:44 <RodgerTheGreat> I have a couple ideas for new game projects, but nothing that I think I can just slam out in an evening
01:49:11 <RodgerTheGreat> vixey: what language(s) do you use?
01:49:20 <RodgerTheGreat> that might suggest appropriate applications
01:50:01 <vixey> I'll use anything
01:50:41 <RodgerTheGreat> hm. well, that doesn't narrow things down much.
01:50:56 <ehird> vixey: Delphi? APL?
01:51:03 <RodgerTheGreat> Java? PHP?
01:51:18 <ehird> RodgerTheGreat: Actually I was suggesting languages I expect vixey would not in fact code in.
01:51:29 <RodgerTheGreat> oh
01:51:35 <ehird> I doubt your two were in the same vein, but I agree! :)
01:52:19 <RodgerTheGreat> then I'll put votes in for Rails and TinyBASIC
01:52:53 <ehird> Rails as in the one on the gem?
01:53:03 <ehird> RoR certainly isn't a language.
01:53:15 <ehird> Ruby is, though. And Rails happens to be a rather badly designed framework built on top of Ruby.
01:53:40 <RodgerTheGreat> Rails adds untold horror to an already hideous language
01:54:06 <RodgerTheGreat> and coding a non-web2.0 app actually *using* rails could be pretty hilariously painful
01:54:19 <ehird> RodgerTheGreat: Ruby is not a hideous language
01:54:40 <ehird> I have heard that from many people and their reasons were all flimsy. Starting to hate Ruby is becoming 'hip' right now and a lot of them just went with the interblags..
01:54:56 <ehird> Also, here's something horrific: the term 'web2.0'
01:55:17 -!- slereah_ has joined.
01:55:54 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
01:56:02 <RodgerTheGreat> wb slereah_
01:56:20 <ehird> (And there is silence!)
01:56:32 <slereah_> Thanks.
02:04:06 <RodgerTheGreat> this is a rather interesting idea: http://www.ansible.co.uk/writing/c-b-faq.html
02:05:51 <ehird> RodgerTheGreat: i didn't realise it was a parody until near the end
02:05:52 <ehird> /sigh
02:06:25 <RodgerTheGreat> hey, it's fiction, but thought-provoking fiction nonetheless
02:06:47 <slereah_> It's old :o
02:07:22 <slereah_> http://en.wikipedia.org/wiki/Motif_of_harmful_sensation
02:07:57 <ehird> I would like to see that 'parrot' distortion.
02:08:10 <ehird> I would gradually undistort it. :p
02:11:00 <RodgerTheGreat> ehird: I have an image- one sec
02:11:30 <RodgerTheGreat> found this a while back, saved it because it was neat: http://www.nonlogic.org/dump/images/1206839450-d66c44db02a18598796ea18e5504d0fdde567d69.jpg
02:13:27 <ehird> RodgerTheGreat: haha, wow
02:13:31 <ehird> is there an undistorted version? ;)
02:13:36 <RodgerTheGreat> har har
02:13:39 <ehird> however, that picture does look like the kind of thing that would break the brain though
02:15:53 <ehird> RodgerTheGreat: Is it specified what kind of distortion is in that?
02:16:04 -!- ihope has joined.
02:16:05 <ehird> oh wait
02:16:10 <ehird> that purports to BE the undistorted version
02:16:16 <ehird> if you read the text
02:16:21 <ehird> well, bye all, i had fun ;)
02:16:32 <RodgerTheGreat> cya
02:17:07 <ehird> that was a joke, RodgerTheGreat
02:17:08 <ehird> :p
02:19:03 <RodgerTheGreat> ?
02:19:14 <RodgerTheGreat> oh, presuming the parrot would kill you
02:20:03 <ehird> RodgerTheGreat: http://www.infinityplus.co.uk/stories/blit.htm
02:20:11 <ehird> that seems to be what that thing draws off
02:20:32 <RodgerTheGreat> neat
02:20:36 * RodgerTheGreat reads
02:22:48 <ehird> actually, if the Parrot ever came into existance that'd be the one time i'd argue for complete government opaquity and censorship
02:22:49 <ehird> ;)
02:23:03 <ehird> however, that seems pretty unlikely to me
02:23:05 <ehird> so my ideals are safe
02:23:43 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
02:24:08 -!- slereah_ has joined.
02:24:19 <vixey> funniest joke in the world trumps the parrot
02:24:42 <RodgerTheGreat> vixey: haha- yeah, that was a great sketch
02:24:47 <ehird> vixey: except that the parrot is legitimately scary ;)
02:24:49 <ehird> parallels i'd say
02:24:57 <ehird> RodgerTheGreat: do you know how this - http://www.nonlogic.org/dump/images/1206839450-d66c44db02a18598796ea18e5504d0fdde567d69.jpg - was made?
02:25:05 <ehird> manually by a human? or some kind of algorithm?
02:25:10 <RodgerTheGreat> nope, I just found it on an image board somewhere
02:25:26 <vixey> looks like someone took fractal render into some image program..
02:27:57 <ehird> this kind of stuff is one of the few themes in horror fiction that actually scares me
02:27:59 <ehird> :p
02:28:03 <ehird> (and even then only marginally)
02:28:08 <ehird> most of the other stuff is just tacky
02:28:23 <ehird> but then the brain is one of the most interesting things i know of :)
02:28:49 <RodgerTheGreat> I think it's just enough on the edge of something that sounds possible to get you paranoid
02:30:01 <ehird> yeah
02:30:22 <ehird> and if it was real, then it'd be *highly* scary, of course
02:30:53 <ehird> i would imagine the suicides from people reading about them and becoming paranoid might exceed the rate of deaths from the image itself
02:31:06 <ehird> (another analogy in comedy: Boite diabolique)
02:32:51 <ehird> it seems this can be either really, really funny or scary
02:41:36 <ehird> http://reddit.com/info/6dw0m/comments/ reddit'd
02:59:14 <RodgerTheGreat> http://www.ansible.co.uk/writing/t3_002.html
03:00:47 <ehird> RodgerTheGreat: same guy who did the faq & wrote that original story
03:01:29 <RodgerTheGreat> yes
03:01:41 <RodgerTheGreat> that's why I thought it would be a good link
03:04:02 <ehird> RodgerTheGreat: it references geb
03:04:03 <ehird> so ++
03:24:50 -!- ihope has quit (Read error: 110 (Connection timed out)).
03:43:05 -!- ehird has quit ("Konversation terminated!").
04:12:03 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
04:14:11 -!- pikhq has joined.
04:33:31 -!- Judofyr has quit.
04:39:50 -!- shinkuzin has joined.
04:44:04 -!- shinkuzin has quit (Read error: 104 (Connection reset by peer)).
04:47:56 -!- shinkuzin has joined.
06:48:08 -!- RodgerTheGreat has quit.
07:08:53 -!- shinkuzin has quit (Read error: 110 (Connection timed out)).
07:10:50 -!- calamari has quit ("Leaving").
07:28:12 -!- spal has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:24:43 -!- spal has quit ("Leaving.").
09:25:42 -!- Sukoshi has joined.
09:35:09 <vixey> hi Sukoshi
09:35:16 <Sukoshi> Heya.
09:35:34 <vixey> how is the nomic stuff going (if it is)?
09:36:02 <Sukoshi> It's not :(
09:36:05 <Sukoshi> Windows Vista is going :(
09:36:11 <Sukoshi> Make that last one a :(((
09:36:22 <vixey> aww
09:36:37 * vixey sends you a get well soon card
09:37:01 <Sukoshi> Objectively speaking, Vista is a leg up from XP. It's more UNIX-like.
09:53:17 -!- RedDak has joined.
10:07:48 -!- RedDak has quit ("Killed (NickServ (Comando GHOST usato da DIO))").
10:57:31 -!- Sukoshi` has joined.
11:12:58 -!- puzzlet_ has quit (Read error: 110 (Connection timed out)).
11:21:02 <Deewiant> AnMaster: yay, that thing with fungus is a compiler bug in GDC
11:21:29 <AnMaster> Deewiant, oh nice to find
11:22:05 <Deewiant> AnMaster: already been reported in november
11:22:20 <AnMaster> no one fixed it since then!?
11:22:48 <Deewiant> GDC development appears to have slowed down
11:23:00 <Deewiant> I don't really follow what's going on with it myself
11:23:22 <Deewiant> it might be fixed in the latest SVN
11:23:42 <Deewiant> but I doubt it, since the bug isn't closed
11:24:08 <Deewiant> AnMaster: the problem is there's only one author, apparently, and he doesn't interact that much with others
11:24:31 -!- Sukoshi has quit (Connection timed out).
11:24:33 <AnMaster> mhm
11:24:34 <Deewiant> I could work around the bug but I think I'll just compile with DMD instead
11:47:34 -!- Judofyr has joined.
11:59:27 <AnMaster> Deewiant, I must have an old ccbi version because it says BAD: J doesn't set delta
11:59:33 <AnMaster> for SUBR
11:59:42 <AnMaster> Deewiant, where is your current binary?
11:59:49 * AnMaster can't find url
11:59:57 <Deewiant> it's being uploaded
12:00:52 <Deewiant> iki.fi/deewiant
12:02:12 <AnMaster> odd, looks like number of env variables differs
12:02:26 * AnMaster goes to cut them out and sort them to make it possible to compare
12:04:53 <AnMaster> Deewiant, http://pastebin.ca/963235 <-- interesting
12:05:40 <AnMaster> Deewiant, seems like ccbi add a env variable there, that is two spaces and is equal to the full path to the interpreter binary?
12:05:47 <AnMaster> err three spaces
12:07:58 <Deewiant> doesn't do it here with y, at least
12:08:33 <Deewiant> ah, no, yes it does
12:08:36 <Deewiant> looks like a DMD quirk
12:09:14 <Deewiant> yep, only the DMD-compiled binary does it
12:09:22 <Deewiant> food now ->
12:10:22 <AnMaster> Deewiant, so compile part with gdc and other part with dmd? ;)
12:11:08 <AnMaster> Deewiant, still says "BAD J doesn't set delta" for ccbi. huh
12:28:14 <Deewiant> AnMaster: won't link together
12:28:22 <Deewiant> singe GDC doesn't respect the D calling convention
12:28:51 <AnMaster> hm ok
12:28:59 <Deewiant> and J works here just fine
12:29:17 <AnMaster> odd, maybe my hg checkout is outdated?
12:29:28 <AnMaster> of mycology
12:29:41 <Deewiant> doubtful
12:29:59 <Deewiant> what does hg identify say
12:30:48 <AnMaster> 7450b1fdaa5d+ tip
12:31:41 <AnMaster> Deewiant, also how do I switch upstream in mercurial now again to point to that domain name instead directly to the ip (and what was the domain name now again?)
12:32:07 <Deewiant> that won't help you since I don't keep the server running :-P
12:32:56 <AnMaster> ah
12:33:42 <Deewiant> and that's the latest myco
12:33:56 <AnMaster> hm... it seems fungus detect a difference that myco doesn't
12:34:00 <AnMaster> with file loading
12:34:14 <AnMaster> because cfunge enters an infinite loop in fungus
12:34:33 <AnMaster> but not on any specific module
12:35:15 <Deewiant> fungus uses o in a way that myco doesn't, at least
12:35:18 <Deewiant> not sure about i
12:36:26 <AnMaster> http://pastebin.ca/963248
12:36:31 <AnMaster> that is at same point
12:36:34 <AnMaster> just after first i
12:36:37 <AnMaster> differs a bit
12:37:53 <AnMaster> oh wait, it loaded negative?
12:38:01 <AnMaster> hm no
12:41:08 <Deewiant> AnMaster: the J thing was a myco bug
12:41:23 <AnMaster> hm?
12:41:27 <AnMaster> you said it worked for you?
12:41:27 <Deewiant> pull from tar.us.to:8000 if you want
12:41:38 <Deewiant> AnMaster: that was against old myco, my bad
12:42:57 <AnMaster> oh wait i wasn't wrong, something else is up
12:43:05 <AnMaster> Deewiant, sure a sec will pull
12:45:21 <AnMaster> v▒22▒▒
12:45:21 <AnMaster> X
12:45:21 <AnMaster> > 091+v
12:45:30 <AnMaster> vs.
12:45:31 <AnMaster> v▒22▒▒ X
12:45:31 <AnMaster> > 091+v
12:45:34 <AnMaster> hm
12:47:07 -!- atsampso1 has quit (Read error: 113 (No route to host)).
12:47:16 <AnMaster> Deewiant, that is just after loading fspace
12:47:21 <AnMaster> that is the actual first difference
12:47:31 <AnMaster> I wonder what this is that mycology doesn't test
12:47:55 -!- atsampson has joined.
12:48:02 -!- atsampso1 has joined.
12:48:08 -!- atsampso1 has quit (Client Quit).
13:00:56 <AnMaster> Deewiant, in D what is "static if"?
13:01:17 <Deewiant> compile-time if
13:01:22 <AnMaster> hm
13:01:24 <Deewiant> kind of like #ifdef but better
13:01:36 <AnMaster> "static if (needBegX) {" depends on from where it is called
13:01:39 <Deewiant> or more like #if rather
13:01:45 <AnMaster> so that means two versions will be output?
13:01:48 <AnMaster> of the routine
13:01:50 <Deewiant> ye
13:01:55 <AnMaster> mhm
13:09:05 <AnMaster> Deewiant, what I don't understand is the way ccbi loads the fspace module in fungus
13:09:07 <AnMaster> that is:
13:09:16 <AnMaster> v▒22▒▒
13:09:16 <AnMaster> X
13:09:16 <AnMaster> > 091+v
13:09:33 <AnMaster> to me it seems like the X should end up on first line
13:10:25 <AnMaster> I can't single step through the ccbi file loading code and I can't see what in the file loading code causes it to be loaded with the X on the second line
13:10:52 <AnMaster> assuming the output from area is correct?
13:12:31 <Deewiant> it might not be
13:13:01 <AnMaster> hm
13:13:17 <Deewiant> especially if it has to output binary
13:13:32 <Deewiant> you know, if the value at (0,0) is 10 for instance
13:13:37 <Deewiant> then it'll output a line break there
13:14:18 <Deewiant> AnMaster: yep, (7,0) is 10
13:14:44 <Deewiant> and (16,0) is the X
13:14:50 <Deewiant> so it is on the first line
13:14:56 <Deewiant> the display is just messed up because of the NL
13:16:22 <AnMaster> hm
13:17:29 * AnMaster again wish for a way to make ccbi output each instruction as it is executed so he can compare
14:46:01 -!- timotiis has joined.
14:59:45 -!- vixey has quit ("Leaving").
15:16:34 -!- ais523 has joined.
15:22:12 -!- Judofyr has quit.
15:32:45 -!- ais523 has quit ("switching to a client that doesn't require me to type in PONGs by hand, because I'll be doing something else for a while").
15:33:26 -!- ais523 has joined.
16:02:35 -!- Tritonio_ has quit (Remote closed the connection).
16:03:53 -!- timotiis_ has joined.
16:09:09 -!- timotiis has quit (Read error: 110 (Connection timed out)).
16:16:26 -!- ihope has joined.
16:17:21 <ihope> ABAABABAABAABABAABABAABAABABAABAABABAABABAABAABABAABABAABAABABAABAABABAABABAABAABABAABAAB!
16:17:25 <ihope> Ello.
16:18:29 <slereah_> Hello sir.
16:19:52 -!- timotiis_ has changed nick to timotiis.
16:21:20 -!- wildhalcyon has joined.
16:21:35 <wildhalcyon> hola
16:22:03 <slereah_> hai
16:22:13 <wildhalcyon> What you up to slereah?
16:24:06 <slereah_> not much.
16:24:22 <slereah_> You?
16:26:25 <wildhalcyon> Work's been draggin me down a lot
16:27:07 <wildhalcyon> Keeping me from my project(s)
16:28:22 -!- ehird has joined.
16:29:35 <ehird> i just had a great idea
16:29:42 <ehird> set that Parrot image to Never Gonna Give You Up
16:29:46 <ehird> put it on youtube as Basiliskroll
16:29:54 <ehird> kill everyone
16:30:01 <ehird> ..., profit
16:30:43 <wildhalcyon> I see a flaw in your plan
16:30:46 <wildhalcyon> Rick Astley
16:31:16 <ehird> wildhalcyon: But if I removed Rick Astley it wouldn't be Basiliskroll :(
16:31:37 <wildhalcyon> more specifically ZOMBIE Rick Astley. The dude said, "NEVER gonna give you up"
16:32:07 <wildhalcyon> you kill Rick Astley with a Basiliskroll and you've got some real trouble on your hands
16:32:22 <slereah_> It wouldn't work.
16:32:32 <slereah_> For Never gonna give you up is a life giver.
16:32:40 <slereah_> It has been shown to cure terminal cancer patients.
16:34:07 <wildhalcyon> are you sure? I thought they did a study that showed Rickrolling to be HIGHLY carcinogenic?
16:34:07 <ehird> wildhalcyon: well, once Never Gonna Give You Up became untrue, everyone would die
16:34:09 <ehird> of shock
16:34:30 <wildhalcyon> Well... that may be the case.
16:34:58 <wildhalcyon> But there's no way I'll be falling for a basiliskroll. I've got some neighborhood kids I've hired to watch all youtube links. You know... just in case.
16:35:25 <ehird> Well, once they see it and die, you won't be able to check further ones
16:35:39 <ehird> Here's basically the mission plan of how that would work: http://www.nonlogic.org/dump/images/1206839450-d66c44db02a18598796ea18e5504d0fdde567d69.jpg
16:35:41 <ihope> Just hire some new ones.
16:36:06 <ehird> ihope: But when they're all gone... http://www.nonlogic.org/dump/images/1206839450-d66c44db02a18598796ea18e5504d0fdde567d69.jpg explains that
16:36:59 <ihope> What are those fractals, anyway?
16:37:01 <wildhalcyon> oh, I thought the action was immediate.
16:37:23 <ehird> wildhalcyon: it depends
16:37:28 <ehird> the original BLIT has it to be pretty much immediate
16:37:32 <ehird> however
16:37:39 <ehird> in BLIT, the main character sees it under protection
16:37:50 <ehird> but eventually submits to it because it had infected his brain due to long exposure
16:37:58 <ehird> & that was not immediate
16:38:13 <ehird> it would seem the immediateness is canon, but i find the delayed idea interesting too
16:38:23 <ehird> ihope: I think it's some fractal edited
16:38:31 <ehird> But hah, now you're both fscked.
16:38:41 <ihope> :-P
16:38:50 <ihope> Looks to me like just two fractals superimposed.
16:38:58 <ihope> Created in UltraFractal, perhaps.
16:39:12 <ehird> No that parrot looks like it was made that way
16:39:23 <ehird> it fits the BLIT description almost perfectly (jagged parrot salami)
16:39:47 <ihope> Ah.
16:40:53 <ehird> oh, and http://www.old-computer-mags.com/Magazine/Your%20Sinclair%20N.23/Your%20Sinclair%20N.23.htm
16:49:08 -!- Tritonio_ has joined.
17:05:16 -!- Judofyr has joined.
17:25:37 -!- RodgerTheGreat has joined.
17:25:51 <RodgerTheGreat> hello everyone
17:27:51 <slereah_> Hulo
17:32:48 <ais523> RodgerTheGreat: hello
17:32:53 <RodgerTheGreat> how's it going, slereah_, ais523?
17:33:04 * ais523 has been implementing INTERCAL all week
17:33:14 <RodgerTheGreat> cool- in what language?
17:33:16 <ais523> hmm... I nearly typed @ical{} rather than INTERCAL then
17:33:20 <ais523> RodgerTheGreat: C
17:33:26 <ais523> I maintain C-INTERCAL, an INTERCAL-to-C compiler
17:33:44 <RodgerTheGreat> I wasn't aware of that- neat
17:33:45 <ais523> and I've been implementing new features in an attempt to do catchup with CLC-INTERCAL and to add some new things
17:33:56 <ehird> ais523: awesome
17:33:56 <ais523> RodgerTheGreat: sudo apt-get install intercal on Debian
17:34:19 <ais523> or http://intercal.freeshell.org is the home page for both of the main INTERCAL implementations
17:34:31 <RodgerTheGreat> think that package is available on Darwinports/Macports?
17:34:51 <ais523> RodgerTheGreat: I don't know, but it isn't all that popular so I doubt it
17:35:02 <RodgerTheGreat> :(
17:36:48 <ais523> it is designed to be portable, though
17:36:58 <ais523> except that some of the newer features require gcc
17:37:21 <ais523> (the INTERCAL to C link code requires gcc because I hook into the compiler between its preprocessing and compilation stages
17:37:34 <ais523> and therefore have to use strange gcc command-line args like -x)
17:38:19 <ais523> I spent ages on the autoconf script a couple of versions ago, so I'd be interested to know how well ./config.sh && make && sudo make install goes
17:38:38 <ais523> but I know how much of a pain it is to get gcc installed on a Mac (I watched a friend do it once), so you might not want to bother
17:43:27 <ehird> ais523: gcc is trivial on a mac
17:43:30 <ehird> 1. put in cd
17:43:36 <ehird> 2. select developer tools
17:43:38 <ehird> 3. hit next a few times
17:43:42 <ehird> 4. there is not step 4
17:43:57 <ais523> ehird: ah, they were trying to do it downloading things from some Apple developer thing over the Internet
17:44:08 <ais523> they got it working, but it took about an hour
17:44:12 <ais523> including manually editing various things
17:45:47 <RodgerTheGreat> wtf?
17:46:12 <RodgerTheGreat> it's really pretty straightforward
17:46:17 <ais523> I think part of the trouble may have been that they were trying to install other things at the same time
17:46:27 <ais523> or maybe they got an unstable release or something by mistake
17:46:45 <ais523> never mind, anyway, if it's easy then that's one less hurdle
17:49:04 <RodgerTheGreat> it's really pretty funny how many "developer tools" come with macs out of the box- the full JDK, python, perl, ruby, vi and nano, tons of the usual unix utilities, etc
17:50:40 <ais523> yes, and pretty ironic how you have to install them on some Linux distributions nowadays
17:51:00 <ais523> (for instance Ubuntu is missing all the C header files unless you specifically request them)
17:54:17 <RodgerTheGreat> I think it meshes with Apple's main goal for the "out of box experience"- yeah, OSX comes with a ton of drivers and things you probably don't need, but by preinstalling them nearly everything "just works" when you plug it in.
17:55:27 <ais523> RodgerTheGreat: agreed. At least Ubuntu does that with drivers, and I suppose the no header files thing is for much the same reason as burying the command line in the menus
17:56:35 <RodgerTheGreat> in general, I think Apple has struck a good balance between making things user-friendly and avoiding "dumbing down" the unix environment for people who want to use it.
17:57:25 <ais523> so, are you going to try to install C-INTERCAL, then?
17:58:34 <ehird> ais523: i think i did c-intercal on os x once
17:58:47 <RodgerTheGreat> I might
17:58:51 <ais523> ehird: It's changed a lot since then, unless you did it recently
17:59:25 <ais523> I redid the build system for version 0.27
17:59:55 <ais523> hmm... pity oerjan isn't here, I found a bug in his INTERCAL Unlambda interpreter that was masked by a bug in the compiler itself
18:00:12 <ais523> and when I fixed the compiler bug, I had to fix the Unlambda interp too
18:01:42 <slereah_> This is madness.
18:02:22 <ais523> slereah_: what is madness?
18:02:35 <slereah_> INTERCAL unlambda
18:02:55 <ais523> slereah_: it works!
18:03:04 <slereah_> But it is madness :o
18:03:19 <ais523> although it must have been doubly difficult for oerjan to write, it served as a useful test case for the new comment-handling system
18:03:26 <slereah_> Then again, my first version of Lazy Bird was tried on the Love Machine 9000
18:03:29 <ais523> because oerjan likes to vary styles of commens a lot
18:03:30 <ehird> ais523: maybe you should write a build system in 5 lines of perl
18:03:31 <ehird> ;)
18:03:31 <slereah_> It didn't work though
18:03:35 <ais523> s/commens/comments/
18:03:42 <ais523> ehird: they'd have to be long lines
18:03:55 <ais523> because there are so many files to sort out and put into various places
18:04:08 <ais523> a C-INTERCAL build system golf would be an interesting challenge, though
18:08:33 -!- oklopol has quit (Remote closed the connection).
18:08:48 -!- okopol has joined.
18:09:44 <ais523> okopol: you've dropped the l again
18:10:19 <ais523> hopefully it isn't with oerjan again, or there'll be a longer wait before you get it back this time because you'll have to wait for them to be online
18:10:31 <ehird> ais523: makeit glob
18:10:31 <ehird> :D
18:10:42 <ehird> as far as the 'what if files are missing'
18:10:44 <ehird> make it check the web
18:10:46 <ehird> for a file list
18:10:48 <ehird> no, not web
18:10:48 <ais523> ehird: the dependencies don't follow a pattern
18:10:49 <ehird> something p2p
18:10:53 <ehird> no single point of failure
18:10:54 <ehird> :D
18:10:59 <ehird> ais523: analyze the header includes, duhh
18:11:05 <ais523> and I often install C-INTERCAL on a computer that isn't connected to the internet
18:11:18 <ais523> ehird: that's dependencies on header files
18:11:26 <ais523> the object files connect together in more than one way
18:11:37 <ais523> so some global variables are used just to transmit which files are connected
18:11:50 <ais523> and as another example, some data files can be read on disk or compiled into the program
18:12:09 <ais523> and which method is used depends on whether you're compiling convickt (a command-line utility) or libick.a (a library)
18:13:41 <ehird> ok, um
18:13:47 <ehird> grab the dependencies from the p2p
18:13:48 <ehird> actually
18:13:55 <ehird> just load a perl file from the web and eval()
18:13:58 <ehird> one line build system
18:13:59 <ehird> ;)
18:14:12 <ais523> ehird: very abusable
18:14:20 <ehird> ais523: oh shush
18:14:21 <ehird> :D
18:14:26 <ais523> and I do not have Internet access ususally when building C-INTERCAL
18:14:34 <ais523> s/ususally/usually/
18:14:51 <ais523> the Windows computer that I test the DOS build on doesn't have Internet access ever
18:15:29 <ehird> 'java for smalltalk programmers': the saddest title article i've seen all day
18:16:01 <ais523> ehird: that's a pretty bad title
18:16:10 <ais523> reversing the language names would make some kind of sense
18:16:34 <ehird> ais523: If you reverse it I don't want to work with any resulting programs
18:16:35 <ehird> :)
18:16:48 <ais523> ehird: agreed
18:17:01 <ehird> it seems sad that someone knows enough smalltalk to know how to tell people how to switch from it to java, and yet still reccomends doing so
18:19:28 <ais523> IMO the only advantage of Java is its ability to do crossplatform GUIs
18:19:42 <ais523> and although that's a massive advantage the rest of the language is so bad as to make me not want to use it again anyway
18:25:30 <ehird> ais523: and the api for the uis is horrible
18:25:34 <ehird> as well as most of the end user experience
18:25:43 <ais523> ehird: I know
18:25:56 <ais523> I had to study it for a semester
18:26:04 <ais523> and in the end we had to produce networked Snakes-and-Ladders programs
18:26:13 <ais523> which is one of the most pointless games ever to run networked
18:26:19 <ehird> Squeak can do cross-platform UIs though. That may have something to do with the fact that it runs in its own window & VM and tries to avoid interacting with anything outside that window. :-)
18:26:28 <ais523> the interaction was just clicking on a button to make your move
18:26:38 <ehird> it's good for development though: the UI is suited to it
18:26:42 <ais523> and a few other controls to set up the network connection in the first place
18:26:59 * ehird has been playing a little with smalltalk recently, currently creating a wiki with Seaside incredibly rapidly
18:27:07 <ehird> the model takes a lot of getting used to
18:27:14 <ehird> but i'm picking it up quickly
18:44:53 -!- jix has joined.
18:46:53 -!- jix has quit (Client Quit).
18:47:16 -!- jix has joined.
18:49:16 <RodgerTheGreat> I think this could make a great desktop: http://upload.wikimedia.org/wikipedia/commons/2/2a/Spider_crab_at_the_Kaiyukan_in_Osaka%2C_Japan.JPG
18:52:00 <ais523> RodgerTheGreat: it's easier on the person following the link to link to the image description page rather than the image itself, so as to be able to see the copyright conditions easily
18:52:12 <ais523> going from the URL back to the description page is annoying to have to do
18:52:28 <ais523> but the other way is just one click
18:52:34 <RodgerTheGreat> oh, sorry: http://en.wikipedia.org/wiki/Image:Spider_crab_at_the_Kaiyukan_in_Osaka%2C_Japan.JPG
18:52:45 <ehird> ais523: 'mediawiki is crap, fix it for me'
18:52:46 <ehird> :)
18:53:15 <ais523> ehird: you really expect MediaWiki to be able to influence the content of a direct link to an image?
18:53:49 <ais523> changing the metadata might be one way to do it, but would be counterintuitive
18:54:17 <ehird> ais523: i expect mediawiki to discourage linking to such direct resources when the common user wants some metadata too
18:54:54 <ais523> ehird: I'd like it to do that too, but having direct links to the images is needed for some purpose too. There needs to be some way to educate users not to post links to them, though.
18:55:15 <ais523> (Worse: most users I come across just post direct links to the /thumbnails/, which is not really useful to anyone)
18:55:48 <ehird> ais523: Just make the inteerface clearer
18:56:06 <ehird> Basic case: don't make the image itself a link on the description page.
18:56:11 <ais523> the problem is people are used to right-clicking on images
18:56:14 <ehird> Put a 'download' link somewhere.
18:56:26 <ais523> but there is currently ongoing work to make the description pages more obvious
18:56:45 <ehird> ais523: are they going to make the code sane after that? :-)
18:56:58 <ehird> MediaWikiBagOStuff, what great OOP design
18:57:01 <ais523> ehird: actually they rewrote the image backend a few months ago
18:57:26 <ehird> ais523: i meant the whole thing
18:57:27 <ehird> heh
18:57:48 <ais523> it seems unlikely that there'll ever be a Phase 4 nowadays
18:58:05 <ais523> (the phase number goes up by 1 with each complete rewrite, it's at 3 at the moment)
18:58:12 <ehird> ais523: enterprisey
18:58:34 <ais523> (but it's relative to what's used on Wikipedia rather than MediaWiki itself)
18:58:48 <ais523> ((Phase 1 wasn't MediaWiki-based at all IIRC))
18:58:54 <ehird> ais523: one problem with mediawiki --
18:59:00 <ehird> the actual core revision system
18:59:11 <ehird> it only handles linear, simple changes
18:59:17 <ehird> and doesn't even store them efficiently
18:59:42 <ehird> ais523: a wiki based on the ideas behind darcs or git will be the future -- no 'LULZ ALREADY EDITED' messages (well, maybe 1 or 2)
18:59:45 <ehird> maybe even USING git or darcs
18:59:46 <ais523> it depends on what you mean by 'efficient'
18:59:59 <ais523> but yes, MediaWiki is bad for edit conflicts
19:00:06 <ais523> mostly because their diff algorithm is rubbish
19:00:43 <ais523> Wikimedia use GNU diff3 noncustomised for edit conflict merges IIRC
19:01:09 <ais523> and the issue is that wikitext rarely contains newlines
19:01:28 <ehird> ais523: mediawiki is a great big hack that has its outsides polished to look modern
19:01:29 <ehird> :)
19:02:41 <ehird> hmm
19:02:49 <ehird> it seems irony is all the range when it comes to web stuff
19:02:51 <ais523> ehird: C-INTERCAL is a great big hack, but that's deliberate
19:03:03 <ehird> Avi Bryant, creator of Seaside, 's blog is powered by typepad
19:03:13 <ehird> The ruby on rails website is powered by PHP
19:03:16 <ehird> I could go on
19:03:17 <ais523> there are things like Perl idioms dropped into the C code that manages CLC-INTERCAL character set translation (because CLC-INTERCAL is written in Perl)
19:03:46 <ehird> ais523: isn't making it a great big hack kinda hard to maintain
19:03:46 <ehird> :)
19:03:57 <ais523> ehird: well, yes
19:04:17 <ais523> but I wouldn't have got into maintaining an INTERCAL compiler in the first place if I was scared of 'hard to maintain'
19:04:57 <ehird> hehe
19:05:13 <ais523> hmm... it's a pity that vim.org doesn't have a 'generator' <meta>
19:05:22 <ais523> I was hoping it would say that it was written in Emacs
19:05:25 <ehird> haha
19:05:35 <ehird> gnu.org might have some vi pages
19:05:38 <ehird> seems pretty likely
19:05:43 -!- RedDak has joined.
19:05:53 <RodgerTheGreat> be jealous of my new T-shirt acquisition: http://www.nonlogic.org/dump/images/1206899749-shirt.png
19:06:18 <ehird> RodgerTheGreat: die
19:06:19 <ehird> now
19:06:21 <ehird> :<
19:06:21 <RodgerTheGreat> the back says "programming enrichment activity test subject"
19:06:31 <RodgerTheGreat> :D
19:06:49 <slereah_> Delicious cake.
19:06:52 <ehird> RodgerTheGreat: was there cake, and was it delicious
19:06:58 <ehird> more importantly
19:06:59 <ehird> was it moist
19:07:02 <RodgerTheGreat> unfortunately, it was a lie
19:07:07 <ais523> ehird: I checked the Emacs page there, and there was no note of a generator anyway
19:07:10 <ehird> did you refrain from crying over every mistake?
19:07:15 <ehird> typos are inevitable, you know.
19:07:18 <ais523> s/anyway/anywhere/
19:07:33 * ais523 notes another example of comic timing in the last two comments
19:08:01 <ais523> ehird: your QDB should have an IRC logger
19:08:01 <Sukoshi`> How do people develop on Vista?
19:08:11 <ais523> so we can just say $$QDBTHIS$$ or some other special token
19:08:17 <ehird> ais523: haha
19:08:20 <RodgerTheGreat> The Computer Science got done, and we made a neat gun for the people who are still alive.
19:08:21 <ais523> and the QDB will automatically add the quote
19:08:26 <ehird> ais523: well i'll probably get a logger in here sometime
19:08:29 <ehird> because ircbrowse's interface sucks
19:08:40 <ais523> Sukoshi`: with difficulty, and by paying a lot of money for MS development tools
19:08:52 <ehird> the logger will probably plug into the bot which will be done at the same time (jesus, second coming thereof)
19:08:56 <RodgerTheGreat> oh, hi Sukoshi`
19:08:58 <Sukoshi`> I hear the MS development tools are free these days.
19:08:58 <ehird> so it'll be @remember
19:09:00 <ehird> or soemthing
19:09:08 <ehird> but.. how does it know how many lines to quote?
19:09:15 <ais523>
19:09:19 <ehird> and mostly you want to cut out irrelevent lines
19:09:33 <ais523> ehird: it would have to be manually edited
19:09:48 <ais523> either that, or just use a stream editor language, like sed or TECO, but with the lines numbered in the reverse direction
19:10:26 <ais523> so to quote the exchange above, I could write $$QDBTHIS:1,21d;24,$d$$
19:10:43 <ais523> (that's sed by the way, I don't know TECO)
19:11:01 <ehird> ais523: it would seem that exchange is less efficient than using the mouse
19:11:10 <ais523> ehird: to do what?
19:11:14 <ehird> you swipe over the lines you want, type 'qdb.eso-std.org/submit'
19:11:16 <ehird> paste it
19:11:17 <ais523> my mouse can't send emails by itself
19:11:23 <ehird> delete the lines
19:11:24 <ehird> click submit
19:11:28 <ais523> oh
19:11:49 <Sukoshi`> But I'm serious here.
19:11:51 <ais523> but I want to be able to do things entirely over IRC
19:12:11 <ais523> Sukoshi`: I'd probably use cygwin or DJGPP if I had to do development on Vista
19:12:11 <Sukoshi`> I'm on Vista, and I'd like to be able to do Windows development and cross-platfom development.
19:12:21 <Sukoshi`> Yeah, I've been looking into Cygwin and MinGW.
19:12:22 <ehird> Sukoshi`: mingw
19:12:22 <ais523> but that doesn't do Windows development
19:12:35 <ehird> never do plain windows dev, btw
19:12:39 <ehird> i will murder you in your sleep.
19:12:41 <ais523> at least, not plain Windows dev
19:12:51 <ais523> but that should be completely avoided because the Windows API is so strange
19:12:51 <ehird> heh
19:13:00 <ehird> ais523: we're like soulmates!
19:13:01 <ehird> kind of.
19:13:03 <ehird> without the soul part
19:13:04 <ais523> Last I checked, the Windows equivalent to fork() had 11 parameters
19:13:04 <ehird> or the mate part
19:13:12 <ais523> and that was back for Windows 95
19:13:14 <Sukoshi`> That's scary.
19:13:45 <ais523> fortunately, I can't remember what they were all for, or I'd have gone mad by now
19:13:53 <ais523> and I never tried to use it
19:14:12 <ais523> I just used the Windows equivalent of system(), which is not the right way to do things but is good enough sometimes and easier to understand
19:14:28 <Sukoshi`> Heh.
19:14:40 * ais523 used to do Windows development back sufficiently long ago that they usually targeted Windows 3.1
19:15:29 <ehird> hmm
19:15:35 <ehird> there should be a list of languages with continuations
19:15:38 <ehird> there just aren't enough of them
19:16:05 <ais523> ehird: depends on what you mean by 'continuation'
19:16:14 <ais523> does setjmp produce a continuation, for instance?
19:16:21 <ais523> what about try/catch/throw?
19:16:28 <ehird> ais523: definately not
19:16:29 <ais523> what about C-INTERCAL's MAYBE?
19:16:32 <ehird> those are not continuations
19:16:36 <ehird> those 'continuations' are downwards-only
19:16:50 <ehird> once dropping below their creation point on the stack, you cannot call them
19:17:01 <ehird> and the second criterion: reusable
19:17:01 <ais523> the INTERCAL one can be used both ways
19:17:06 <ais523> but is not reusable
19:17:06 <ehird> continuations can be called multiple times
19:17:14 <ehird> ais523: then it's not a continuation
19:17:24 <ehird> well, it's a continuation in a loose sense
19:17:29 <ehird> but a thoroughly useless one
19:17:30 <ais523> you can make a reusable version by putting MAYBE in a loop
19:17:44 -!- Judofyr has quit.
19:17:49 <ais523> hmm... maybe I should write an INTERCAL program that CREATEs genuine continuations using MAYBE
19:17:55 <ehird> ais523: http://en.wikipedia.org/wiki/Continuation#Example
19:18:06 <ehird> if you can do that with MAYBE and a loop then yeah C-INTERCAL has real continuations
19:18:17 <ehird> and that tempts me to write a continuation-based web app in it
19:18:19 <ehird> that would just be hilarious
19:18:38 <ais523> one issue is that the continuations return void, which makes things harder than normal
19:18:53 <ais523> you do have a programmer-specified finite supply of global continuation-unaffected variables, though
19:18:56 <ehird> ais523: can you pass values to the continuations?
19:19:04 <ais523> but each of them is a single bit and hard to read
19:19:05 <ais523> ehird: no
19:19:07 <ehird> in scheme,
19:19:23 <ehird> (call/cc (lambda (k) ;; k is a procedure. when called with X, this call/cc returns X
19:19:29 <ais523> ehird: I know
19:19:41 <ais523> INTERCAL doesn't have first-class functions
19:19:45 <ais523> just first-class integers
19:19:50 <ais523> so all you could pass back would be an integer
19:20:04 -!- oklopol has joined.
19:20:19 <ais523> come to think of it, they aren't true continuations simply because you have no way to store them
19:20:41 <ais523> as in, if you go back to an earlier continuation, you lose all the continuations made since then because you had nowhere to put them
19:21:09 <ais523> (you reference a continuation by counting back how long ago a particular continuation was created)
19:21:41 <ais523> however, the whole MAYBE thing is just a special case of the threader, so you could still get true continuations by defining something that worked like MAYBE but acted differently
19:22:06 <ais523> however, it wouldn't get the special optimisation the compiler does on MAYBE, so your program would get slower the more continuations were in existence
19:22:48 * ais523 has even more insane plans to extend the threader to be able to do lambdas too, but that's still an early-stage concept
19:23:19 * ais523 gets to work on an INTERCAL continuation library, just for fun
19:23:46 <ais523> hmm... INTERCAL has variables. Should INTERCAL continuations record and restore those? The problem doesn't come up in Scheme.
19:23:54 -!- okopol has quit (No route to host).
19:23:55 <ehird> ais523: scheme has variables.
19:23:55 <ais523> I'd be inclined to say that they should
19:24:01 <ehird> ais523: here, i'll define a continuation:
19:24:06 <ehird> you copy the call stack, not the heap
19:24:09 <ehird> so you get local variables etc
19:24:13 <ehird> but not globals
19:24:13 <ehird> AND
19:24:25 <ehird> if you store a reference into a local, the object referenced is changed later on, then you jump back
19:24:29 <ehird> then the object in the reference has changed
19:24:37 <ehird> so: a continuation is a copy of the call stack.
19:24:45 <ehird> calling it just wipes the call stack and replaces it with the copy
19:24:47 <ais523> ehird: INTERCAL doesn't store 'auto' variables on the call stack
19:24:51 <ais523> instead each variable has its own stack
19:24:59 <ehird> ais523: dynamic scoping?
19:25:03 <ehird> then continuations will be hard
19:25:19 <ehird> ais523: but, just copy every variable
19:25:21 <ehird> it SHOULD work
19:25:22 <ais523> it's more that you can change the scoping mechanism at will, even during the execution of a program
19:25:31 <ehird> http://en.wikipedia.org/wiki/Continuation#Example just get that working
19:25:32 <ehird> ;)
19:25:47 <ais523> but I'll store all the variables and the stashes inside the continuations, because that's what the compiler currently does
19:26:29 <ais523> except the top STASH element for .1, so you can send a 16-bit integer back
19:27:03 <ehird> ais523: is there anything that comppiles down to intercal?
19:27:15 <ehird> actually, wait
19:27:22 <ehird> ais523: the only way you can do continuations when using the c stack
19:27:27 <ehird> is copying the c stack's memory
19:27:37 <ehird> ais523: i'll make it easy for you
19:27:38 <ehird> http://homepage.mac.com/sigfpe/Computing/continuations.html
19:27:41 <ehird> there's continuations for pure c
19:27:48 <ehird> older-style c though
19:27:53 <ehird> but you should be able to utilize it
19:27:59 <ais523> ehird: I already have code that copies memory around
19:28:09 <ais523> and I'm not writing a C library to give continuations to INTERCAL
19:28:20 <ais523> but instead writing the code to give continuations to INTERCAL entirely in INTERCAL itself
19:28:23 <ehird> ais523: ok then
19:28:27 <ais523> the latest version is self-extending
19:28:27 <ehird> ais523: but look at that c code
19:28:28 <ehird> it may hhelp
19:29:06 <ais523> ehird: I have done
19:31:54 <ehird> ais523: makecontext/setcontext may be proper continuations in c
19:31:55 <ehird> i am testing
19:32:57 -!- ihope_ has joined.
19:33:34 <ehird> char func1_stack[16384];
19:33:34 <ehird> heh
19:41:54 <ehird> ais523: challenge - once doing the continuations, implement prolog in it
19:41:55 <ehird> :)
19:42:18 <ais523> ehird: look at pit/tests/permute.i in the C-INTERCAL distributions
19:42:30 <ais523> it uses backtracking to write out all permutations of I-VI
19:42:48 <ais523> the backtracking already exists, it's just continuations that need to be written
19:43:00 <ais523> and I have plans for a Prolog to INTERCAL compiler already
19:43:16 -!- wildhalcyon has quit (brown.freenode.net irc.freenode.net).
19:43:16 -!- pikhq has quit (brown.freenode.net irc.freenode.net).
19:43:17 -!- sekhmet has quit (brown.freenode.net irc.freenode.net).
19:46:11 <ais523> hmm... netsplits are interesting things, especially as I seem to get a different server at Freenode every time I connect to it
19:46:41 <ais523> maybe clients should just try disconnect/reconnect if they aren't voiced or opped in the hope that they end up on the large side of the netsplit at random
19:46:42 -!- Judofyr has joined.
19:47:44 -!- wildhalcyon has joined.
19:48:42 <ais523> heh, wildhalcyon did
19:49:48 <wildhalcyon> Did what?
19:49:55 -!- pikhq has joined.
19:49:57 <ais523> <ais523> maybe clients should just try disconnect/reconnect if they aren't voiced or opped in the hope that they end up on the large side of the netsplit at random
19:50:01 -!- ihope has quit (Read error: 110 (Connection timed out)).
19:50:05 <Deewiant> ais523: you might have only one server reasonably close by
19:50:15 <ais523> Deewiant: yes
19:50:33 <ais523> but I tend to get a different server every time I connect, so maybe it should be a preference, or the client should experiment and find out
19:50:34 <Deewiant> in which case, reconnecting across the world just to bypass a netsplit seems a bit.. pointless
19:51:00 <Deewiant> well, if you connect to the generic irc.freenode.net or whatever they usually dole out servers at random
19:51:21 <Deewiant> I don't know, maybe it tries to give a fast server
19:52:10 <Deewiant> but I find that I usually connect to a server on the west coast of the USA (I'm in Europe) if I connect to the 'generic server'
19:53:24 <ehird> i get kubrick often
19:53:33 <ehird> [16:28] [MOTD] - kubrick.freenode.net Message of the Day -
19:53:33 <ehird> [16:28] [MOTD] - Welcome to kubrick.freenode.net in Los Angeles, CA, USA! Thanks to
19:53:33 <ehird> [16:28] [MOTD] - Velocity Networks (www.vel.net) for sponsoring this server!
19:53:33 <ehird> [16:28] [MOTD] -
19:59:26 -!- sekhmet has joined.
19:59:47 * ais523 is on leguin at the moment, which is in Sweden
20:12:49 <ehird> hm
20:12:55 <ehird> i really DO want a list of languages with continuations
20:12:55 <ehird> :-)
20:15:10 <ais523> well, INTERCAL once I finish this, Unlambda, Underlambda, Subtle Cough, that's about it for esolangs (from memory)
20:15:31 <slereah_> Subtle Cough has a whole lot of it.
20:15:54 * slereah_ does not know what continuation is.
20:16:02 <ais523> slereah_: pity it's an unusable language, oerjan and I independently proved that there are only three non-equivalent programs, two of which just end and one of which is an infinite loop
20:16:25 <olsner> you're working on continuations for intercal?
20:16:30 <ais523> olsner: yes
20:16:40 <ais523> I'm actually implementing them in INTERCAL itself, just to show that it's possible
20:16:42 <slereah_> Heh.
20:17:16 <olsner> so you're extending some intercal compiler/interpreter written in intercal?
20:17:18 <ais523> (the upcoming C-INTERCAL 0.28 has a CREATE statement that allows you to create new syntax on the fly; CLC-INTERCAL has had a similar statement with different syntax for a while)
20:17:24 <ehird> didn't mean esolangs, hehe
20:17:31 <slereah_> I wonder if SKI + c is equivalent to lambda-mu calculus.
20:17:33 <ehird> ais523: i proved that independantly too
20:17:39 <ais523> olsner: the compiler is written in C, and compiles to C
20:17:49 <ais523> but you can write extensions to it in either C or INTERCAL
20:17:53 <ehird> olsner: ais523 maintains C-INTERCAL
20:18:01 <ehird> he recently added a way to write extensions to it in INTERCAL itself
20:18:12 <ais523> so recently it hasn't been publically released yet
20:18:22 <ais523> it was on Thursday IIRC, or possibly Friday
20:18:23 <olsner> I hadn't imagined actual users of intercal actually existed
20:18:34 <ehird> ais523: here's one for the qdb -- Chirpy, on approval of a quote, sends a trackback/pingback to every URL in the quote which takes them
20:18:37 <ehird> cool
20:18:54 <ehird> olsner: certainly there aren't many intercal programs
20:19:07 <ehird> but the implementations do sure support a lot of advanced stuff that no program will ever utilize ;)
20:20:40 <ais523> ehird: I count 62 INTERCAL programs as examples supplied with C-INTERCAL, many of which aren't very interesting
20:20:56 <ais523> and we add any INTERCAL programs we find as examples, as long as the licences are compatible
20:21:12 <ais523> (CLC has its own examples too, some of which are just tests)
20:21:29 <ehird> ais523: I want a combination of Prolog, ML and INTERCAL
20:21:31 <ehird> in one thing
20:21:34 <ehird> I don't know how
20:21:37 <ehird> but it should look crazy
20:21:42 <ais523> (but the infamous CLC-INTERCAL 'Hello, world' isn't in the C-INTERCAL example repository because it doesn't work on C-INTERCAL)
20:22:03 <ais523> ehird: Prolog+INTERCAL's more or less been done; you'll have to tell me about ML, though, because I know the name but no more than that
20:22:21 <ehird> ais523: ML inspired Haskell
20:22:25 <ehird> It's strict and non-pure though
20:22:29 <ais523> ah
20:22:31 <ehird> ais523: Ocaml descends from it
20:22:35 <ehird> Wikipedia it, the article's good
20:22:43 <ehird> (ML & Ocaml are notorious for being crazy fast)
20:23:00 * ais523 will have to actually implement their plans for Functional INTERCAL some time
20:23:49 <ais523> I think it only needs one tiny extra ability, the ability to create a woven thread but with some variables' read-only statuses themselves made read-only
20:24:12 <olsner> I should take the time to learn intercal some day...
20:24:36 <ais523> the woven threads would be dormant, but could NEXT FROM the current thread if no other threads wanted to
20:25:18 <ais523> olsner: when you do, read the C-INTERCAL and CLC-INTERCAL docs for a perspective on what the language is like nowadays (http://intercal.freeshell.net), most docs are out of date
20:25:40 <ais523> I meant http://intercal.freeshell.org
20:25:56 * ais523 managed to get freeshell and freenode confused again
20:27:51 <ais523> DO CREATE (8200) GET CONTINUATION IN .1 RECEIVING .2
20:27:56 <ais523> DO CREATE (8250) CONTINUE WITH .1 SENDING .2
20:28:14 <ais523> ehird: how's that for syntax for INTERCAL continuation statements?
20:28:34 <ehird> ais523: no, sorry
20:28:37 <ais523> (ignore the bits from the line label and earlier, the bit after the line label is the syntax that's created)
20:28:37 <ehird> those continuations are useless
20:28:42 <ais523> ehird: why
20:28:51 <ehird> ais523: it's (call/cc (lambda (k) (set! .2 k))
20:28:56 <ais523> INTERCAL doesn't have first-class functions, remember
20:28:57 <ehird> you need (call/cc (lambda (k) ...))
20:29:00 <ehird> ais523: yes
20:29:03 <ehird> ais523: but
20:29:07 <ehird> just allow a check:
20:29:12 <ehird> 'have i just thawed out of a continuation?'
20:29:15 <ehird> if so, then ..., else ...
20:29:35 <ais523> I was planning to use the second arg for a check, the same way C does it with setjmp/longjmp
20:29:44 <ehird> ais523: then you can't recv some values
20:29:50 <ais523> so you get 0 if you are receiving from a continuation, and >0 otherwise
20:30:14 <ais523> ehird: first, you can't send a 0 in C either, and second, what's wrong with not being able to receive some values (remember this is INTERCAL we're talking about)
20:30:18 <ehird> 'get cont in .1 recv .2; if thawed? ...; else !!!' --> '(set! .2 (call/cc (lambda (k) (set! .1 k) !!!))) ...'
20:30:32 <ehird> ais523: first, C doesn't have continuations, and second I guess not but still..
20:30:35 <ehird> 0 isn't an uncommon value.
20:30:40 <ais523> but maybe I should get it to ABSTAIN #1 FROM NEXTING instead as a notification
20:30:58 <ais523> in other words, if you've just thawed, turn off procedure calls until the user turns them back on
20:31:12 <ais523> that way you wouldn't need to do an if, you'd just do the call and if you'd just thawed, nothing would happen
20:31:18 <ais523> then you'd turn them back on on the next line
20:31:37 <ais523> that's more INTERCAL-style, I'll do that and it still has the same syntax
20:31:48 <ehird> ais523: you'll need closures
20:31:51 <ehird> hmm
20:31:51 <ehird> maybe not
20:32:03 <ehird> ais523: ah, wait
20:32:11 <ehird> ais523: it's useful for a continuation-using procedure to be able to return after a call/cc
20:32:16 <ehird> if you can just call a procedure it's not that useful
20:32:25 <ais523> ehird: but you can return
20:32:40 <ais523> why do you think you wouldn't be able to?
20:33:01 <ais523> in INTERCAL it's even possible to return from a different procedure than the one you're in at the moment, which causes hilarity to ensue
20:33:08 <ehird> ais523: oh, good.
20:33:14 <ehird> then you just have to return 2 levels down
20:33:18 <ehird> very good
20:33:19 <ais523> DO RESUME #2
20:33:31 <ehird> ais523: what's the syntax for intercal procedure calls?
20:33:36 <ais523> DO (1000) NEXT
20:33:49 <ais523> but the same syntax is also used for GOTOs
20:34:04 <ais523> you just have to discard the return address immediately afterwards with DO FORGET #1
20:35:00 <olsner> lol, ick and yuk
20:35:35 <ehird> ais523: what about a string with 'hello world' in it
20:35:37 <ehird> 100231238123 lines? ;)
20:35:57 <ais523> it's nontrivial, but I've got a copy lying around somewhere, I'll paste it if you like
20:36:25 <ehird> ais523: not a printing one
20:36:28 <ehird> i mean something i can give to a procedure
20:36:44 <ais523> ehird: I know
20:36:53 * ehird is thinking of a page that displays 'Hello, world!' and an OK box, then 'Goodbye, world!' and an OK box, then loops
20:36:54 <ehird> :D
20:36:57 <ehird> so, in pseudocode
20:37:11 <ehird> while 1: show_msg('Hello, world!'); show_msg('Goodbye, world!')
20:37:21 <ais523> DO;1<-#3
20:37:23 <ais523> DO;1SUB#1<-#48376$#10752
20:37:23 <ais523> DO;1SUB#2<-#28676$#2836
20:37:23 <ais523> PLEASE;1SUB#3<-#61120$#896
20:37:24 <ehird> where, of course, show_msg stores a continuation then kills off the current execution thread
20:37:38 <ehird> ais523: oh, that's not too bad
20:37:55 <ais523> (that's machine-generated of course, and is compressed as 4 bytes to the array element and so needs to be unpacked before printing)
20:43:48 <ais523> hmm... I need to generate unique numbers for each continuation
20:44:08 <ais523> that means storing the lowest unused number somewhere were it won't be affected by continuation resumes
20:44:15 <olsner> hmm, maybe intercal should have a module system for registering line numbers
20:44:22 <ais523> maybe I can store it in a separate thread
20:44:29 <olsner> or some kind of tree structure rather than line numbers at all
20:44:53 <ais523> olsner: we have something 'better', in a twisted sense of the word. Because all known INTERCAL programs are stored in the same place, you can just look at them and pick a line number that doesn't conflict
20:45:03 <ais523> however I admit that that isn't ideal
20:46:01 <ais523> ehird: correction, that Hello, world! string was obviously packed 8-to-the-element, or there's no way it would fit in just 3 elements
20:49:05 <ehird> ais523: ah
20:49:14 <ehird> ais523: maybe there should be a string library
20:49:15 <ehird> that lets you do that
20:49:16 <ehird> ;)
20:49:28 <ais523> ehird: generally we use yapp.i in the INTERCAL distribution
20:49:45 <ais523> it's a filter that reads in a string on stdin and outputs an INTERCAL program that prints that string on stdout
20:50:33 <ais523> you can then just extract the relevant parts, allowing for the Turing Tape pointer (that is, C-INTERCAL string I/O specifies characters to output as offsets mod 256 from the previous character output, so you need to keep a state variable to do I/O correctly)
20:51:44 <ehird> ais523: ah, but the concisity would help
20:51:51 <ehird> & the fact that it would be less manual
20:52:05 <ais523> ehird: yes, it would be useful to have a string library
20:52:22 <ais523> a program for producing packed strings, and subroutines for printing them
20:52:30 <ehird> ais523: well, printing them and unpacking them and..
20:52:30 <ais523> maybe some things for input too
20:52:50 <ais523> extract individual characters, substring match...
20:52:56 <ais523> maybe even regexps while we're at it
20:58:36 <ehird> ais523: heh
21:01:26 * ais523 just found this in the Emacs changelog: "The old bindings C-M-delete and C-M-backspace have been deleted"
21:01:37 <ais523> I wonder how many people got caught out trying to use them before?
21:03:08 <SimonRC> lol
21:21:31 -!- ais523 has quit (""Going home"").
21:21:38 <pikhq> LMAO
21:22:45 <Sukoshi`> I use those bindings all the time!
21:23:51 <olsner> much simpler than good old M-x reboot and M-x kill-x-server
21:28:38 -!- RedDak has quit (Remote closed the connection).
21:29:59 <SimonRC> j0
21:38:41 * pikhq mutters at #gsoc
21:38:56 <pikhq> There may or may not be a deadline extension for Google Summer of Code applications.
21:39:29 <SimonRC> hm
21:43:25 <olsner> "may or may not"? what's the use of having that information?
21:43:41 <pikhq> olsner: None.
21:43:48 <pikhq> It's just irritating as fuck.
21:44:03 <pikhq> The deadline, BTW, is tomorrow.
21:44:09 <pikhq> (5:00 PST)
21:44:25 <slereah_> olsner: Maybe you're an intuitionist, and doesn't believe in the excluded middle :o
21:44:32 <slereah_> So there's a third option or something
21:45:53 <olsner> ah yes, a v \+a /= T if the middle is not excluded
21:47:38 -!- slereah_ has quit ("Konversation terminated!").
22:07:50 -!- RedDak has joined.
22:21:39 -!- RedDak has quit (Remote closed the connection).
22:33:00 -!- ehird has changed nick to ehirDoxCoding.
22:33:17 -!- ehirDoxCoding has changed nick to ehird.
22:37:51 <wildhalcyon> Hmm, people aren't warming up to my idea
22:37:53 <wildhalcyon> :-(
22:38:22 <ehird> what was it
22:39:10 <wildhalcyon> http://www.osdev.org/phpBB2/viewtopic.php?t=16641&sid=fc48cb502be44b2cb268e10886963cb7
22:39:26 <wildhalcyon> You can ignore the session id I suppose
22:39:31 <ehird> osdev.org? neat
22:40:17 <wildhalcyon> yeah, its a neat site
22:40:39 <ehird> i know it
22:43:09 <wildhalcyon> It seems like there's some people who just don't get my idea, and some people who don't think its worthwhile. No one says "Hmm, that might have real-world applicability!"
22:44:20 <ehird> wildhalcyon: it seems to be a good debate
22:44:27 <ehird> wildhalcyon: but your idea has no real-world applicability
22:44:29 <ehird> that is true
22:44:33 <wildhalcyon> Its a great debate, actually.
22:44:33 <ehird> interesting in theory
22:45:01 <wildhalcyon> "interesting" is the best response I've received so far.
22:47:21 <SimonRC> Surely this is not for Real World systems but is supposed to be esoteric?
22:47:29 <ehird> SimonRC: I sure hope so
22:48:21 <wildhalcyon> Well, its not meant to be quite as esoteric as you might think.
22:48:51 <wildhalcyon> Remove the 2D spatial programming language (fungeoid) and replace it with something more conventional. That's really the only esoteric part about it
22:49:04 <ehird> http://www.osdev.org/phpBB2/viewtopic.php?t=16587 lollynoob is more like lollyidiot
22:49:05 <ehird> :p
22:51:49 <ehird> wildhalcyon: Dex is funny
22:52:09 <ehird> did you see when he left the forum dramatically and said he was going to get rich from a web os?
22:52:34 <wildhalcyon> The problem is that lollynoob starts with a bad argument, makes a good point, then screws up with the rest of it.
22:52:50 <wildhalcyon> Who is dex?
22:53:24 <ehird> wildhalcyon: osdev.org user
22:53:45 <wildhalcyon> I haven't seen anything of him. But I just joined the site this week
22:55:04 <ehird> wildhalcyon: I visited the old osdev.org a few times
22:55:36 <ehird> it was a forum on mega-tokyo.com: http://www.mega-tokyo.com/forum/
22:55:46 <ehird> which also housed stuff for agi development
22:55:55 <ehird> (agi = sierra adventure game engine)
22:56:00 <wildhalcyon> ehird, it seems like it has potential, but I don't know if OS development is quite the right forum for this anyways
22:56:30 <ehird> & the best users on osdev.org are the ones from mt
22:56:34 <ehird> Brendan, etc
22:56:51 <wildhalcyon> Im starting the idea off as a simulation anyways. gamedev.net is probably better suited.
23:22:17 -!- Sukoshi` has changed nick to Sukoshi.
23:26:43 -!- jix has quit ("CommandQ").
23:41:50 -!- timotiis has quit ("leaving").
2008-03-31
00:52:05 -!- ihope__ has joined.
00:52:07 -!- ihope__ has changed nick to ihope.
01:02:32 -!- cherez has joined.
01:10:08 -!- ihope_ has quit (Read error: 110 (Connection timed out)).
01:22:02 -!- wildhalcyon has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.13/2008031114]").
01:52:54 -!- EgoBot has joined.
02:07:44 -!- vixey has joined.
02:14:01 -!- Sukoshi has quit ("Leaving").
02:17:09 -!- ihope__ has joined.
02:24:33 -!- Tritonio__ has joined.
02:24:47 -!- Tritonio_ has quit (Read error: 104 (Connection reset by peer)).
02:25:30 <oklopol> okokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokoko
02:25:35 <oklopol> okokokokokokokokokokoko
02:25:37 <oklopol> that is all
02:26:26 <vixey> ok
02:27:40 <ehird> oklopol: oko
02:34:44 -!- ihope has quit (Read error: 110 (Connection timed out)).
02:53:24 -!- Tritonio_ has joined.
02:53:51 -!- Tritonio__ has quit (Read error: 104 (Connection reset by peer)).
03:00:47 <ihope__> ehird: I agree.
03:13:00 <vixey> what language is it that takes the fewest line to write a mini-schime, prolog, mini-haskell and metainterpreter in?
03:13:18 <vixey> I want to mimimize the sum of lines of code of all those programs
03:14:19 <vixey> (level of abstraction of the metainterpreter would be that it actually describes every feature of the language, doesn't just call eval or whatever)
03:14:28 -!- ehird has quit ("Konversation terminated!").
03:14:32 <vixey> right now I am guessing Scheme
03:15:06 -!- ihope___ has joined.
03:15:08 -!- ihope___ has changed nick to ihope.
03:26:49 <oklopol> oklotalk!
03:27:34 <vixey> **which have an actual implementation
03:27:59 <oklopol> oklotalk has an implementation!
03:28:03 <oklopol> well, almost
03:28:05 <oklopol> :D
03:28:13 <oklopol> it doesn't have a parser
03:28:20 <oklopol> maybe some day...
03:30:22 -!- atsampson has quit (Read error: 113 (No route to host)).
03:35:58 -!- ihope__ has quit (Read error: 110 (Connection timed out)).
03:58:54 <lament> vixey: i'm guessing scheme too
03:59:36 <lament> because of the metainterpreter part
04:01:14 <RodgerTheGreat> vixey: Scheme sounds like a good theory, but it might be more interesting to design a language with creating these types of interpreters in mind
04:04:51 <lament> RodgerTheGreat: haskell :)
04:07:32 <lament> scheme is pretty much designed for that
04:07:51 <lament> except instead of "interpreters", it's designed to extend scheme itself to become any of those languages
04:35:53 <vixey> ok
04:35:53 <vixey> http://rafb.net/p/dT236x14.txt
04:35:56 <vixey> idea..
04:36:22 <vixey> it's scheme and prolog like, 'function' calls can return multiple times and backtrack but they also return values (loose use of 'return' since you could often supply the return value of a function to generate its parameters like in any logic language)
04:36:43 <lament> and i have to add that mandolin is a really awesome instrument
04:36:49 <lament> (to play)
04:40:09 <vixey> any remarks?
04:40:20 <lament> your scheme is very simple :)
04:40:29 <lament> and you kinda need to parse stuff
04:40:38 <lament> or it's cheating!
04:40:45 <vixey> oops there is at least one mistake, I meant to write (conj (= #t result) (eval this env))
04:42:24 <vixey> if I was going to tack on a parser the language would have to support strings..
04:42:48 <vixey> I guess syntax sugar for lists of atoms it ok
04:43:04 <vixey> is*
04:53:24 <lament> sure
05:09:11 <RodgerTheGreat> vixey: nifty
05:11:16 <RodgerTheGreat> what flavor of scheme is that written for? MzScheme?
05:11:43 <vixey> none really
05:11:56 <RodgerTheGreat> r5s5?
05:12:42 <vixey> well it would hopefully be a subset of macroexpanded R5RS
05:37:49 <RodgerTheGreat> this is really interesting: http://www.firstsounds.org/sounds/
06:41:00 <RodgerTheGreat> good night everyone
06:41:08 <vixey> night
06:41:33 -!- RodgerTheGreat has quit.
07:13:16 -!- Tritonio_ has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- Judofyr has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- oklopol has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- bsmntbombdood has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- Deformative has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- Quendus has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- GregorR has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- olsner has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- AnMaster has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- SimonRC has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- cmeme has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- EgoBot has quit (brown.freenode.net irc.freenode.net).
07:13:16 -!- sekhmet has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- cherez has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- pikhq has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- vixey has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- tejeez has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- Deewiant has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- sebbu has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- lament has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- lifthrasiir has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- Overand has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- ihope has quit (brown.freenode.net irc.freenode.net).
07:13:17 -!- mtve has quit (brown.freenode.net irc.freenode.net).
07:14:00 -!- ihope has joined.
07:14:00 -!- Tritonio_ has joined.
07:14:00 -!- vixey has joined.
07:14:00 -!- EgoBot has joined.
07:14:00 -!- cherez has joined.
07:14:00 -!- sekhmet has joined.
07:14:00 -!- pikhq has joined.
07:14:00 -!- Judofyr has joined.
07:14:00 -!- oklopol has joined.
07:14:00 -!- Deformative has joined.
07:14:00 -!- bsmntbombdood has joined.
07:14:00 -!- sebbu has joined.
07:14:00 -!- lifthrasiir has joined.
07:14:00 -!- olsner has joined.
07:14:00 -!- Overand has joined.
07:14:00 -!- AnMaster has joined.
07:14:00 -!- SimonRC has joined.
07:14:00 -!- Quendus has joined.
07:14:00 -!- GregorR has joined.
07:14:00 -!- cmeme has joined.
07:14:00 -!- lament has joined.
07:14:00 -!- tejeez has joined.
07:14:00 -!- Deewiant has joined.
07:14:00 -!- mtve has joined.
07:41:20 -!- atsampson has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:04:21 -!- GreaseMonkey has joined.
08:17:17 -!- Judofyr_ has joined.
08:17:17 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
08:50:35 -!- olsner has quit ("Leaving").
08:57:06 -!- EgoBot has quit (brown.freenode.net irc.freenode.net).
08:57:06 -!- sekhmet has quit (brown.freenode.net irc.freenode.net).
09:09:32 -!- EgoBot has joined.
09:09:40 -!- sekhmet has joined.
09:11:56 -!- EgoBot has quit (Read error: 110 (Connection timed out)).
09:12:56 -!- EgoBot has joined.
09:18:37 -!- sekhmet has quit (brown.freenode.net irc.freenode.net).
09:19:22 -!- sekhmet has joined.
09:44:55 -!- GreaseMonkey has quit ("gnihgt").
10:41:36 <AnMaster> Deewiant, was just implementing FPSP, and the mycology output is confusing
10:41:45 <AnMaster> "UNDEF: cFP outputs never mind, BAD: P reflects"
10:41:50 <AnMaster> that's all from FPSP atm
10:51:32 <Deewiant> that's the way it has to be done
10:51:36 <Deewiant> with all output instructions
10:51:49 <Deewiant> i.e. first output "UNDEF: cFP outputs"
10:51:52 <Deewiant> and then call P
10:52:02 <Deewiant> and then if it outputs, it outputs what it outputs
10:52:12 <Deewiant> but if it reflects, "never mind, BAD: P reflects"
10:54:06 -!- Judofyr has joined.
10:54:06 -!- Judofyr_ has quit (Read error: 104 (Connection reset by peer)).
11:54:08 -!- vixey has quit ("Leaving").
13:14:54 -!- ihope has quit (Read error: 110 (Connection timed out)).
14:14:10 -!- RodgerTheGreat has joined.
14:14:24 <RodgerTheGreat> 'morning, everyone
14:26:31 -!- jix has joined.
14:26:43 <RodgerTheGreat> hey, jix
14:33:06 <jix> hey
14:46:44 -!- ais523 has joined.
14:52:28 <oklopol> mrning
14:52:43 <RodgerTheGreat> howdy oklopol, ais523
14:52:50 <ais523> hi RodgerTheGreat
14:53:19 * ais523 did finish that INTERCAL continuation library that was being discussed yesterday
14:53:37 <ais523> at about 6am this morning, because I couldn't sleep and started working on it again at about 5am
14:55:00 <AnMaster> Deewiant, the issue was "cFP outputs never mind"
14:55:12 <AnMaster> Deewiant, what did it say "never mind" or ?
14:55:31 <AnMaster> it was confusing
14:56:07 <AnMaster> maybe a comma before never mind would help with grammer ;)
14:57:11 <RodgerTheGreat> "grammar"
14:57:54 <ais523> AnMaster: what licence is cfunge under?
14:58:23 <ais523> I ask because I have an INTERCAL/Befunge link-together in mind as the next thing to do now I have INTERCAL/C
14:58:41 <ais523> although writing COME FROMs in Befunge would be a little strange
14:59:43 <ais523> as far as I can tell, you'd have to have them read their arguments from the playfield rather than the stack
15:03:18 -!- marshmallows has joined.
15:14:52 <AnMaster> ais523, GPL3
15:15:03 <ais523> ah, OK
15:15:09 <AnMaster> ais523, is it a problem?
15:15:19 <ais523> C-INTERCAL is GPL2
15:15:23 <ais523> but that's not really a problem
15:15:29 <AnMaster> not "2 or later"?
15:15:34 <ais523> 2+, sorry
15:15:38 <AnMaster> right
15:15:47 <AnMaster> ais523, well, it is also C99
15:15:56 <ais523> yes, that could also be a problem
15:15:57 <AnMaster> so not sure how well it would work on old systems
15:16:09 <AnMaster> ais523, it currently uses boehm-gc but it is not hard to change that
15:16:09 <ais523> if you use VLAs then it would be right out, because C-INTERCAL doesn't like linking to them
15:16:38 <AnMaster> ais523, I don't use VLA I think, but I use "dynamic sized array at end of struct"
15:16:50 <AnMaster> which is a bit different
15:16:53 <ais523> that shouldn't be a problem as long as you're storing them on the heap
15:17:07 <AnMaster> ais523, well yes I malloc them
15:17:13 <ais523> it's just that C-INTERCAL does crazy stack tricks to to handle communication between processes
15:17:26 <ais523> so you can do just about anything you like on the heap, but you have to be a lot more careful on the stack
15:17:32 <AnMaster> well I do push some structs on stack
15:17:51 <AnMaster> ie, returning a struct, not a reference to one in one place
15:18:19 <ais523> that's fine, as long as they're fixed-size
15:18:25 <ais523> and you don't leave them there too long
15:18:39 <ais523> (as in, you don't try to FORGET stack elements with useful data still in them)
15:18:49 <AnMaster> ais523, well also you will need to fix a few mem leaks, while I do offer a way to compile without boehm-gc, I only use it to be able to run valgrind for detecting stuff like "invalid read"
15:19:01 <AnMaster> it does have a few mem leaks without boehm-gc
15:19:11 <AnMaster> patches are welcome of course
15:19:14 <ais523> C-INTERCAL's compiler is full of memleaks, but the programs it produces are leak-free as far as I can tell
15:19:40 <AnMaster> ais523, basically it allocates cells in chunks for fungespace, but it throws away references to old chunks
15:20:03 <AnMaster> depending on the garbage collector to remove them if/when the chunk is no longer used
15:20:13 <ais523> would refcounting work?
15:20:27 <AnMaster> ais523, well boehm-gc is a mark-and-sweep
15:20:28 <ais523> (in INTERCAL, the garbage-collector actually affects the semantics of the language)
15:20:47 <ais523> AnMaster: I know, I was just wondering if it was a simple enough problem that refcounting would work instead
15:20:58 <AnMaster> ais523, maybe
15:20:59 <ais523> or whether you have more complicated problems like circular dependencies
15:21:44 <AnMaster> ais523, anyway the funge-space stuff is one of the few thing with a good abstraction around, so should be possible to just replace it, with something else implementing the same basic stuff
15:22:14 <AnMaster> ie, get/set cell, load file, write out to file, get bounds, do wrapping
15:22:39 <ais523> as for how an INTERCAL/Befunge link would work from the Befunge end, I've so far been doing links by implementing INTERCAL flow control operations
15:22:50 <AnMaster> ais523, until recently I even had two different versions, one for befunge93 that used a static array and one with hash library for befunge98
15:22:52 <ais523> that's NEXT, NEXT FROM, COME FROM, RESUME, and FORGET
15:23:08 <AnMaster> ais523, fingerprints are easy to code I think
15:23:10 <AnMaster> or hope
15:23:10 <ais523> some of them would be easy to implement with a fingerprint; COME FROM and NEXT FROM would be harder
15:23:16 <AnMaster> tell me if I need to write more docs
15:23:25 <ais523> because they have an effect even when the IP isn't there
15:23:35 <AnMaster> ais523, I do plan loading of fingerprints with dlopen in future
15:23:39 <AnMaster> to make it even easier
15:23:44 <AnMaster> currently just must compile it in
15:24:09 <AnMaster> also, I depend on POSIX, I don't think it would run under windows or such
15:24:09 <ais523> heh, all the INTERCAL expansions are compile-in, so you'd have to hack the source code to anything you wanted to compile into it anyway
15:24:19 <ais523> either that, or abstract main() away to be a small part of the program
15:24:23 <AnMaster> last I tried it *did* run under freebsd
15:24:40 <AnMaster> ais523, well main, for correct funge98 I need argc/argv
15:24:41 <ais523> (because C-INTERCAL deletes main()s in programs it links against because it already has its own)
15:24:46 <AnMaster> due to y (sysinfo)
15:24:59 <ais523> AnMaster: you can store them in globals
15:25:05 <AnMaster> ais523, I do, in main
15:25:12 <ais523> I'll gladly try to work out a way to pass command-line args around
15:25:31 <AnMaster> ais523, well command line arguments for interpreter options too
15:25:54 <AnMaster> ais523, oh and you probably want to remove -fvisibility=hidden heh that I got in my cmake file for levels above DEBUG
15:26:18 <ais523> AnMaster: what does that do?
15:26:25 <AnMaster> ais523, man gcc? ;P
15:26:35 <AnMaster> basically it hides symbols
15:26:40 <AnMaster> to reduce file size
15:26:45 <ais523> AnMaster: have you seen how long man gcc is? I'll try to find it in the info index, though
15:26:53 <AnMaster> ais523, / searches in man page
15:26:55 <AnMaster> man gcc
15:26:56 <AnMaster> type:
15:27:02 <AnMaster> /-fvisibility
15:27:09 <AnMaster> press n for next match
15:27:09 <AnMaster> :)
15:27:13 <AnMaster> ais523, wait, I *may* do VLA in one place
15:27:15 * AnMaster looks
15:27:45 <AnMaster> ais523, oh yes, but can be worked around quite easily
15:27:49 <AnMaster> just used inside one function
15:27:55 <AnMaster> not passed around or anything
15:28:12 <AnMaster> http://rafb.net/p/hlgy6w58.html
15:28:23 <ais523> AnMaster: in that case it's probably OK
15:28:51 <AnMaster> ais523, also non-boehm-gc code may be suboptimal in places
15:29:09 <AnMaster> http://rafb.net/p/IbsRCM89.html
15:29:11 <AnMaster> that is one example
15:29:38 <ais523> AnMaster: that VLA's fine
15:29:38 <AnMaster> ec_cord is a string that is very fast to append do, provided with boehm-gc
15:29:54 <ais523> how much storing things in globals do you do, by the way, and how much on the stack?
15:30:21 <AnMaster> ais523, well not globals, mostly static, and that isn't global
15:30:35 <ais523> statics are heap storage, so that's good enough
15:30:44 <ais523> well, not exactly heap, but not stack either
15:30:46 <AnMaster> ais523, but well store depends on what you mean, ie storing a pointer to a HUGE object in a static variable
15:30:52 <ais523> I think they have their own static space
15:30:54 <AnMaster> like the funge space
15:31:08 <ais523> and the issue for C-INTERCAL linking is a very simple stack vs. not stack
15:31:21 <ais523> because I merged the C and INTERCAL call stacks together into one massive confusing stack
15:31:25 <AnMaster> if you want to have several funge programs at once you need some substantial redesign
15:31:33 <AnMaster> as in different funge spaces
15:31:40 <AnMaster> if you just want concurrent funge that works of course
15:32:12 <AnMaster> ais523, also I'm working on a draft for a debugging protocol
15:32:20 <AnMaster> would be all ifdef anyway
15:32:23 <AnMaster> for speed
15:32:43 <ais523> the INTERCAL debugger is linked into the object program, which has function calls to the debugger added by the compiler
15:32:55 <ais523> it was the strangest way I could think of to do it while still being practical
15:33:03 <AnMaster> nah I would use tcp socket or unix socket to talk to the debugger
15:33:11 * AnMaster looks for the first (now outdated) draft
15:33:16 <AnMaster> the second isn't yet redy
15:33:26 <AnMaster> http://rage.kuonet.org/~anmaster/tmp/frontend-prococol.pdf
15:33:52 <AnMaster> oh and another thing
15:34:20 <AnMaster> I plan so substantial redesign of interface in the near future, ie parameter order, to make it more unified
15:34:44 <AnMaster> atm I think StackPush(value, stackpointer) other things take the "me" pointer first
15:34:49 <AnMaster> so I plan to clean that up
15:34:54 <ais523> I'll leave it for a while, anyway, because there's going to be a major release of C-INTERCAL tomorrow
15:35:01 <AnMaster> cool
15:35:02 <ais523> April 1 is a good day to release INTERCAL compilers on
15:35:07 <AnMaster> ais523, note I don't know intercal at all heh
15:35:16 <ais523> partly because nobody believes you until they've seen the code
15:35:18 <AnMaster> well beoynd that you use PLEASE a lot
15:35:22 <ais523> not a lot
15:35:26 <ais523> 1/4 of the time, on average
15:35:30 <AnMaster> but not to much
15:35:50 <AnMaster> ais523, not sure how you plan the integration thing?
15:35:55 <AnMaster> that is how it would work?
15:36:09 <ais523> basically, you add INTERCAL control flow operators as a loaded-by-default fingerprint
15:36:20 <ais523> (the loaded-by-default is so that you can access the Befunge code at all)
15:36:28 <AnMaster> hm
15:36:45 <ais523> there are 6 main control flow commands/objects/etc that you need to implement
15:36:49 <AnMaster> well loaded by default, won't be in my code, but I guess you can implement that yourself
15:37:04 <ais523> AnMaster: yes, it would be a compiler-specific addition
15:37:10 <AnMaster> interpreter
15:37:19 <AnMaster> there is no way you can sanely compile befunge
15:37:38 <ais523> AnMaster: C-INTERCAL is always compiled, but I was planning to go along the bundle-an-interpreter route
15:37:49 <AnMaster> ok
15:37:58 <AnMaster> oh and don't break mycology ;P
15:38:26 <ais523> it shouldn't do, unless it checks for reflections with no fingerprints loaded, but I'm deliberately breaking the spec there
15:38:34 <AnMaster> aye it does check that iirc
15:38:40 <ais523> just like I had to invent some new syntax for the C to INTERCAL link
15:38:50 <AnMaster> mhm
15:39:01 <ais523> besides, I could always invent some sort of specifically-fooling-Mycology loader problem
15:39:07 <ais523> s/problem/program/
15:39:27 <ais523> anyway, the six commands that would need implementing:
15:39:33 <AnMaster> ais523, anyway I'll aim for free standing code to work well, don't blame me if a new feature I add break stuff for you
15:39:35 <AnMaster> just a warning ;P
15:39:41 <ais523> - line label, which is easy in most languages but much harder in Befunge
15:39:48 <ais523> AnMaster: I don't mind at all
15:39:55 <ais523> even I often add new features that break stuff for me
15:39:59 <AnMaster> ais523, also, I do stuff like
15:40:00 <AnMaster> #define VectorCreateRef(a, b) (& (fungeVector) { .x = (a), .y = (b) })
15:40:10 <AnMaster> then I can create a vector on stack in the parameter list
15:40:17 <AnMaster> no idea if that feature would break intercal?
15:40:21 <ais523> doubt it
15:40:31 <ais523> as long as it doesn't stay there between commands
15:40:47 <AnMaster> um, well you would need to hack the main loop anywya
15:40:49 <AnMaster> anyway*
15:40:58 <AnMaster> interpreter.c
15:41:08 <AnMaster> though interpreter.c contains mor
15:41:09 <AnMaster> more*
15:42:44 <ais523> if you want to see some never-before-seen won't-even-run-on-released-compilers-yet INTERCAL, there's http://filebin.ca/xwthjm/continuation.i which is one of the example programs I'll be releasing tomorrow
15:43:09 <AnMaster> um
15:43:17 <AnMaster> hm
15:43:21 <AnMaster> what is it highlightning it as
15:43:38 -!- ehird has joined.
15:43:45 <AnMaster> Database/Progress?
15:43:49 * AnMaster pokes kate
15:44:02 <ais523> AnMaster: Kate recognises INTERCAL as some sort of obscure database script
15:44:11 <ais523> ehird: http://filebin.ca/xwthjm/continuation.i
15:44:16 <ais523> continuations in INTERCAL
15:44:35 <ais523> (the Wikipedia article example doesn't work because it assumes interactive input of commands, impossible in a compiled language)
15:44:35 <AnMaster> bbl food
15:44:44 -!- ehird has quit (Read error: 104 (Connection reset by peer)).
15:44:56 -!- ehird has joined.
15:44:57 <ais523> oh dear, I scared away ehird
15:45:22 <ehird> sowwy
15:45:24 <ehird> :p
15:45:29 <ehird> this is the lame computer
15:45:31 <ehird> the crashy one
15:45:38 <ehird> takes a few startups to get going..
15:46:14 <ais523> ehird: did you see the link I posted?
15:46:53 <ehird> ais523: no, checknig logs now
15:48:22 <ehird> ais523: heh, at 6am...
15:48:31 <ehird> i have finished software projects at 8am
15:48:34 <ais523> I couldn't sleep last night, so I spent the time doing something useful
15:48:37 <ehird> having started working on them 2pm the earlier day
15:48:42 <ais523> I was trying to sleep from about 1am to 5am, though
15:48:44 <ehird> with no sleep in between, of course :-)
15:48:57 <ehird> actually, that's pretty much the only software i DO finish
15:50:01 <ehird> ais523: suggestion - use boehm gc in C-INTERCAL's compiler (not the output)
15:50:03 <ehird> gcc does that
15:50:11 <ehird> but, still keep using free() (well, the gc equivs)
15:50:16 <ehird> it's just there to tidy up every now and then
15:50:18 <ehird> seems to work well in gcc
15:50:32 <ais523> ehird: I can't think of any particular reason why it's leaking, probably just oversights every now and again
15:50:45 <ais523> and the fact that the memory allocation pattern is so complex that Splint can't follow it
15:52:01 <ehird> because i was up late yesterday and the clock said 31st
15:52:08 <ehird> when i woke up today i thought it was internet jackass day
15:52:12 <ehird> i was sorely disappointed
15:53:17 <ais523> ehird: that's tomorrow, which is statistically the most likely day for an INTERCAL compile to be released on
15:53:25 <ais523> mostly because we keep aiming for it deliberately
15:53:32 <ehird> ais523: bah, but that's being KIND on internet jackass day
15:53:40 <ehird> or maybe an intercal compiler is in fact a very horrible thing to give
15:53:41 <ehird> probably.
15:53:45 <ais523> ehird: what's wrong with a little kindness?
15:54:47 <ehird> ais523: insert grouchy commnet
15:54:48 <AnMaster> ais523, that http://filebin.ca/xwthjm/continuation.i
15:54:50 <ehird> *comment
15:54:53 <AnMaster> don't really understand it
15:55:01 <ais523> I doubt many people do
15:55:03 <ehird> AnMaster: INTERCAL code is not easily understandable! Suprise!
15:55:07 <AnMaster> ais523, btw where does C-INTERCAL have it's svn/cvs/whatever?
15:55:11 <ais523> AnMaster: it doesn't
15:55:15 <ais523> I don't own a web server
15:55:20 <AnMaster> oh? cathedral?
15:55:22 <ehird> ais523: you don't need a web server for a distributed system ;)
15:55:30 <ais523> AnMaster: yes, it's cathedral at the moment
15:55:37 <ehird> 'git/hg/darcs init', 'git/hg/darcs add ...'
15:55:49 <ais523> ehird: I don't even have an Internet connection most of the time
15:55:50 <AnMaster> ais523, try lauchpad for bzr, I think there exist similar got git and hg
15:55:58 <ehird> ais523: all of those need no internet connection
15:56:15 <ehird> ais523: they're 100% offline unless you tell them to push/pull
15:56:20 <ais523> the other thing is that I like to do massive breaking changes
15:56:28 <ehird> ais523: that's why branches were invented
15:56:29 <ais523> such as renaming all the variables in the entire program
15:56:34 <AnMaster> ais523, yes that works well with distributed version control
15:56:39 <ehird> make a new branch 'rename-all-variables'
15:56:42 <ehird> do it
15:56:49 <ehird> keep making changes in the main branch if you want
15:56:49 <AnMaster> ais523, yes something like that is what is happening in cfunge atm
15:56:50 <ehird> finally, merge it
15:56:58 <ehird> mostly the VCSs can merge all the changes together
15:57:04 <ais523> can merge algorithms really handle that sort of change?
15:57:11 <AnMaster> ais523, more or less yes
15:57:13 <ehird> ais523: more or less
15:57:17 <ehird> it will come into conflicts ofc
15:57:21 <AnMaster> ais523, maybe a few conflicts
15:57:23 <AnMaster> not much
15:57:24 <ehird> but it can start up a nice graphical tool to let you select what you want
15:57:32 <ehird> so it's mostly point-n-click for when it can't work it out
15:57:36 <ais523> do any of them also run on DOS?
15:57:41 <AnMaster> -_-
15:57:47 <ais523> I do development there too, for the Windows version of C-INTERCAL
15:57:52 <ehird> ais523: git runs via cygwin but i don't think cygwin runs on DOS
15:57:56 <ehird> I think darcs might run on DOS
15:58:04 <ehird> hg is written in Python, so if you can get a Python to run on DOS it's likely
15:58:08 <ais523> (targetting DOS + POSIX manages to cover most of the world's commonly used OSs)
15:58:09 <AnMaster> ehird, doesn't darcs need haskell?
15:58:19 <ehird> AnMaster: You can cross-compile
15:58:23 <AnMaster> hm
15:58:23 <ehird> Or get a binary
15:58:24 <ais523> AnMaster: Haskell can be compiled into C IIRC
15:58:29 <ehird> ais523: Into C? no
15:58:32 <ehird> haskell isn't interpreted
15:58:37 <ehird> There are interpreters, but it's mainly compiled to native code
15:58:45 <ehird> Most things use GHC extensions, including darcs.
15:58:49 <ehird> GHC compiles into native code via C--
15:58:54 <ehird> (C-- is related to the GHC project, same people)
15:58:58 <ais523> ah, so it's bundle-an-interpreter-style compilation
15:59:03 <ehird> ais523: Uhh, no?
15:59:06 <ehird> Haskell has no 'eval'
15:59:08 <ehird> It is 100% compiled
15:59:18 <ais523> ehird: bytecode interp, not Haskell interp?
15:59:19 <ehird> It just seems dynamic because of all the type inferrence
15:59:27 <ehird> ais523: No. C-- then compiles to native code
15:59:37 <ais523> OK
15:59:39 <ehird> Haskell -> Core (GHC's internal functional language) -> C-- -> native
15:59:44 <ais523> that's how I thought it worked, but you were confusing me
15:59:50 <ehird> sorry:)
15:59:56 <marshmallows> GHC can generate C code
15:59:58 <ehird> i'll go and ask in #haskell about darcs
16:00:00 <ehird> marshmallows: If you tell it to
16:00:05 <ehird> Funny thing about GHC's C backend:
16:00:09 <ehird> It requires a perl script.
16:00:19 <ehird> This perl script looks at the assembly output of ghc, and turns tail calls into JMPs
16:00:28 <marshmallows> cool
16:00:30 <ehird> This perl script is a 'literate perl' script
16:00:38 <ehird> And has to be processed to remove the comments.
16:00:42 <AnMaster> oh my
16:00:43 <ehird> It is called the Evil Mangler.
16:00:44 <ais523> =pod
16:00:45 <ais523> =cut
16:00:49 <ehird> ais523: No, it's custom
16:00:53 <AnMaster> ehird, Knuth infected?
16:00:56 <AnMaster> ;)
16:00:58 <ais523> why not do it the standard way?
16:01:01 <ehird> AnMaster: Literate Haskell is popular
16:01:09 <ehird> ais523: because it's Evil, and iirc very old
16:01:10 <AnMaster> yes I like LaTeX, but I don't like literate programming
16:01:22 <ehird> GHC was around before the Monad typeclass came about.
16:01:24 <marshmallows> That's totally awesome ehird
16:01:35 <ehird> There's even GHC code which uses monads without using the Monad typeclass because it wasn't invented yet
16:01:38 <marshmallows> I never knew the evil mangler was in perl
16:01:53 <ehird> ais523: Those continuations are really concise, btw. Impressive.
16:02:03 <ehird> INTERCAL: Flexible, and concise1
16:02:04 <ehird> *!
16:02:08 <ehird> it's like Lisp++++
16:02:29 <ais523> ehird: especially as CREATE has some similarities to macro definition, but the C-INTERCAL version is rather limited at the moment
16:02:51 <ehird> [16:02] <Lycurgus> "DOS" ?
16:02:52 <ehird> [16:02] <Lycurgus> do you mean Windows?
16:03:00 <ehird> ais523: which DOS version?
16:03:15 <ais523> I mainly test it on NTVDM, as that's where it'll be run in practice
16:03:21 <AnMaster> um
16:03:28 <ais523> although I have DOS system disks for versions 4 and 6 knocking around somewhere
16:03:35 <ais523> AnMaster: yes, NTVDM is crap
16:03:51 <AnMaster> I got to watch the fun, going to join #haskel
16:03:57 <AnMaster> ll*
16:04:01 <ais523> for some reason, tar crashes it 100% of the time and autoconf crashes it about 30% of t he time
16:04:01 <ehird> ais523: these people are retarded
16:04:02 <ehird> [16:03] <quicksilver> he's talking about the windows command shel
16:04:21 * AnMaster watches both side with amusement
16:04:30 <AnMaster> ais523, you know NTVDM is gone in 64-bit windows
16:04:39 <ais523> does anything replace it?
16:04:42 <ehird> AnMaster: ais523 still supports systems with 8mb of ram.
16:04:48 <ehird> I don't think 64-bit is on the horizon ;)
16:05:01 <AnMaster> ais523, no x86_64 system that has gone into 64-bit mode can run 16-bit code any longer
16:05:06 <AnMaster> you need something like dosbox then
16:05:07 <ais523> I've heard that the Vista version of NTVDM is actually better than the XP version, but have never had the opportunity or inclination to check
16:05:36 <AnMaster> ais523, oh and that reminds me, cfunge by default use 64-bit integers for it's data
16:05:43 <AnMaster> but you can select 32-bit at compile time
16:05:48 <AnMaster> it need to be at least 32-bit
16:05:53 <AnMaster> or stuff *WILL* break
16:06:11 <AnMaster> fingerprints will fail and everything will come crashing down
16:06:14 <ais523> of course
16:06:27 <ais523> In unrelated news, I've actually read the API for DOS 1
16:06:30 <AnMaster> I have toyed with the idea of 128 bits however
16:06:32 <ais523> it didn't even support directories
16:06:38 <AnMaster> using gcc __int128_t iirc
16:06:44 <AnMaster> haven't tried it yet
16:06:47 <AnMaster> but easy to test
16:07:02 <ehird> oh well..
16:07:04 <ehird> darcs is out of the qusetion
16:07:06 <ehird> ais523: Try git.
16:07:12 <ehird> AnMaster: Before you but in..
16:07:18 <ehird> I don't think your precious bzr works on 16bit systems.
16:07:28 <AnMaster> I was going to say git works on DOS
16:07:32 <AnMaster> doesnt'*
16:07:38 <ehird> i think you could get it to
16:07:38 <AnMaster> it hardly works on windows
16:07:40 <ehird> through some posix stuffs
16:07:42 <AnMaster> so dos...
16:07:44 <AnMaster> huh
16:07:48 <ehird> hmm wait
16:07:51 <ehird> I'm going to try python
16:07:56 <ehird> and ask which version of python will run on DOS
16:08:01 <ehird> #python for laffs
16:08:10 <ais523> DJGPP generally does a very good job of pretending to be POSIX, given the circumstances it has to deal with
16:08:17 <ehird> ais523: wait, that's a good point
16:08:28 <ehird> ais523: http://git.or.cz/ maybe you could give it a try
16:08:28 <ais523> although I recently discovered that ulimit is implemented the same way as fork
16:08:44 <ais523> as in, always fail but with a plausible error message that /could/ have happened in practice
16:09:19 <ehird> ais523: btw, git is a little lower level as far as merging goes
16:09:21 <AnMaster> hm can't you compile haskell to C, and I'm quite sure GCC can compile to 16-bit, I even used gcc for 8-bit
16:09:22 <AnMaster> ehird, ^
16:09:27 <ehird> it WILL do the auto merging thing
16:09:36 <ehird> but if it fails you'll have to start the graphical tool yourself
16:09:37 <ehird> :p
16:09:55 <AnMaster> ehird, graphical tool? dos?
16:09:58 <ehird> AnMaster: but the generated c code won't work ..
16:10:00 <AnMaster> ERR_NOTREALISTIC
16:10:05 <ehird> AnMaster: Uhm, he doesn't develop solely on DOS
16:10:10 <AnMaster> ehird, oh, why won't it work?
16:10:18 <ehird> AnMaster: because it's low-level :)
16:10:25 <ehird> closures and thunks and all that mean it's pretty hack
16:10:26 <ehird> y
16:10:29 <AnMaster> you mean, depends on endianness?
16:10:30 <AnMaster> and such?
16:10:39 <ehird> oh looky..
16:10:42 <ehird> darcs WILL work, probably
16:10:44 <ehird> via go32
16:10:51 <AnMaster> go32?
16:10:58 <ais523> DOS 32-bit extender
16:11:00 <AnMaster> is this about unreal mode hack thing?
16:11:04 <ais523> yes
16:11:08 <AnMaster> oh my
16:11:09 <ais523> it makes I/O incredibly slow
16:11:09 <ehird> AnMaster: it should make ghc work
16:11:11 <ehird> and so darcs
16:11:24 <ehird> ais523: darcs is molasses slow anyway so you shouldn't worry!
16:11:27 <ehird> usable, but slow :)
16:11:28 <AnMaster> ais523, that is one thing, I don't know if cfunge will work on 16-bit or even big endian
16:11:30 <ehird> very usable in fact
16:11:33 <ehird> it's highly user friendly
16:11:39 <AnMaster> in fact I have doubts about big endian
16:11:43 <ehird> & is based on a Theory of Patches written by a physicist
16:12:07 <AnMaster> ais523, some hacks I need to do for the floating point fingerprints may not work on big endian
16:12:09 <AnMaster> not sure
16:12:14 <AnMaster> typedef union u_doubleint {
16:12:15 <AnMaster> double d;
16:12:15 <AnMaster> struct { int32_t high; int32_t low; } i;
16:12:15 <AnMaster> } doubleint;
16:12:17 <AnMaster> yes sucks
16:12:27 <ais523> oh, and if you leave a program producing too much output without pressing a key, the program slows down to very slow speeds
16:12:27 <AnMaster> but I need to for FPDP
16:12:33 <ais523> but I'm not sure if that's a bug in go32 or NTVDM
16:12:42 <AnMaster> ais523, tried dosbox?
16:13:05 <ais523> AnMaster: no
16:13:09 <AnMaster> also if you run it under NTVDM, why not just run the version control under windows, as you already use windows then?
16:13:34 <ais523> I was just teasing really, as I can always run it on Linux and copy the files across via USB
16:13:39 <AnMaster> also does C-INTERCAL work on x86_64 linux?
16:13:45 <ais523> AnMaster: it should do
16:13:50 <ehird> C-INTERCAL probably works on the C64
16:13:52 <ais523> might need to change a define somewhere
16:13:53 <AnMaster> ais523, eh, no network for dos?
16:14:05 <ais523> AnMaster: nor Windows, nor Linux more than half the time
16:14:24 <AnMaster> yeah but LAN I mean
16:14:37 <ais523> AnMaster: don't have that either
16:14:38 <AnMaster> or if you use qemu or such for windows, local simulated network
16:14:48 <ais523> the Windows 95 box won't shut down properly if it's connected to a network
16:14:50 <AnMaster> ais523, right, distributed version control is for you
16:14:57 <ais523> and my only Ethernet cable's about 50 cm long
16:14:58 <ehird> yeah, darcs seems the right one
16:15:01 <AnMaster> windown 95? :(
16:15:02 <ehird> since if you're going to change every variable name
16:15:05 <ehird> then wanting to merge
16:15:09 <ehird> you need something that's really really clever at merging
16:15:13 <ehird> even if it's a little slow in the process
16:15:33 <AnMaster> yeah darcs I guess
16:15:54 <AnMaster> ehird, can you push to a usb memory with darcs?
16:16:01 <AnMaster> seems like ais523 need that
16:16:04 <ehird> AnMaster: push == 'cp .darcs'
16:16:09 <ehird> as a last resort.
16:16:13 <AnMaster> ok true..
16:16:14 <ais523> I seriously doubt it would be a problem
16:16:17 <ehird> yeah
16:16:19 <ehird> just copy over the repository
16:16:29 <AnMaster> ehird, except, windows HATE things starting with .
16:16:31 <ehird> ais523: each copy, branch etc you have contains the whole history for the whole repository
16:16:33 <ehird> AnMaster: err, wait
16:16:35 <ehird> it's called _darcs
16:16:36 <ehird> just because of that
16:16:39 <AnMaster> ie, you can create them in some apps, but it won't work in others
16:16:45 <ais523> ah yes, 8.3 filenames
16:16:49 <ehird> my mistake
16:16:50 <ais523> in DOS it would be _darcs.
16:16:52 <AnMaster> ehird, ah, but will it use 8.3 filenames everywhere?
16:16:56 <ehird> ais523: no, it's _darcs everywhere
16:17:05 <AnMaster> ais523, it is a directory I suspect
16:17:06 <ais523> DOS requires at least one . in a filename
16:17:07 <ehird> AnMaster: _darcs/ should be 8.3-safe
16:17:13 <AnMaster> ais523, not a file
16:17:17 <ais523> even a directory name, but that's normally hidden from the user
16:17:18 <ehird> _darcs is a directory
16:17:19 <ais523> by the OS
16:17:22 <AnMaster> oh
16:17:25 <AnMaster> interesting
16:17:26 <ais523> directory names follow the same rules as filenames
16:17:38 <ais523> so I call the INTERCAL install directory ick-0.28
16:17:42 <ehird> ais523: darcs should work fine if you can get it to compile
16:17:50 <ais523> which looks perfectly natural, but technically speaking .28 is the extension
16:18:07 <AnMaster> ais523, not when extracted on linux or so
16:18:21 <ehird> ais523: btw, with a dvcs, transitioning from cathedral to bazarr is simple
16:18:27 * ais523 downloaded the source for darcs
16:18:31 <ehird> the 'let everyone see the source' part is trivial
16:18:40 <ehird> you just 'darcs push' onto a public server
16:18:50 <ehird> letting people submit patches is built in--
16:18:53 <ehird> 'darcs send' goes through email
16:18:55 <ehird> then you can 'darcs apply'
16:19:08 <ehird> and, other people can 'darcs get' your public repository, and fork it
16:19:16 <ehird> then if you want you can 'darcs pull' from theirs and merge their changes at any point
16:19:24 <ehird> but, if you want, you can just keep track of your own changes
16:19:25 <AnMaster> ais523, one thing, I got no clue how cfunge would work out under DOS, in fact I suspect it won't work on windows even. it depends on recent POSIX in many case, as in POSIX 2001
16:19:27 <ehird> and publish a tarball
16:19:55 <marshmallows> everyone here hsould publish some unreleased bit of code
16:19:58 <ais523> AnMaster: I don't support all features on all platforms
16:20:05 <AnMaster> ais523, ah good for you
16:20:08 <ais523> marshmallows: I did already, or did you want something else?
16:20:17 <marshmallows> I missed it
16:20:23 <AnMaster> ais523, I only test cfunge on gentoo linux and freebsd, because that is all I got
16:20:30 <AnMaster> x86 and x86_64
16:20:36 <AnMaster> no clue about how it works on other stuff
16:20:46 <AnMaster> I hope it works as I use size_t and so on where it should be used
16:20:49 <ehird> marshmallows: ais523 posted continuations in intercal
16:20:52 <ehird> well, C-INTERCAL
16:20:55 <ehird> since he added an extension mechanism
16:21:02 <ehird> http://filebin.ca/xwthjm/continuation.i
16:21:35 <ais523> CLC-INTERCAL has a CREATE statement too, which is actually used to implement the entire compiler
16:21:45 <ais523> but the statement you're creating is written in bytecode not INTERCAL
16:21:55 <AnMaster> ais523, another thing: you will need to have a different fingerprint if you do stuff like pre-loading custom fingerprint
16:22:07 <AnMaster> eh
16:22:12 <AnMaster> different handprint
16:22:14 <ais523> different handprint, you mean
16:22:17 <AnMaster> yeah
16:22:19 <AnMaster> exactly
16:22:27 <ais523> it would be
16:22:33 <AnMaster> ais523, also, a custom fingerprint can be overridden, so I guess things may break? also easy to unload a fingerprint
16:22:37 <AnMaster> just unload NULL
16:22:38 <ehird> hahahah, i love smalltalk
16:22:47 <ehird> i just started up yesterday's image i was developing a seaside wiki
16:22:49 <AnMaster> that will unload the top item from every opcode stack
16:22:52 <ehird> and i loaded my browser from history
16:22:56 <ehird> and the session is EXACTLY as i left it
16:23:10 <ehird> smalltalk is infectious, it magically makes everything running on it suspendable & resuable
16:23:11 <ehird> :p
16:23:12 <ehird> *resumably
16:23:26 <AnMaster> ais523, maybe you want to provide some hard coded specific ones in the range ASCII 127-255, unlike fingerprints
16:23:37 <AnMaster> depends on what you need/want
16:23:37 <ais523> that could be an idea
16:23:46 <ais523> hmm... ABSTAIN and ONCE could be quite useful in Befunge
16:24:04 <ais523> COME FROM/NEXT FROM/labels would have to read data from the playfield somehow, though
16:24:17 <AnMaster> ais523, "However, a Funge-98 interpreter may also expose any number of proprietary instructions above ASCII 127 or below ASCII 0."
16:24:24 <AnMaster> that you could exploit
16:24:39 <ais523> INTERCAL uses various characters above 127 anyway
16:24:42 <ais523> at least in some character sets
16:24:51 <AnMaster> ais523, hm?
16:25:07 <AnMaster> "Funge-98 source files are made up of Funge characters. The Funge-98 character set overlays the ASCII subset used by Befunge-93 and may have characters greater than 127 present in it (and greater than 255 on systems where characters are stored in multiple bytes; but no greater than 2,147,483,647.) The Funge character set is 'display-independent.' That is to say, character #417 may look like a squiggle
16:25:08 <AnMaster> on system Foo and a happy face on system Bar, but the meaning is always the same to Funge, 'character #417', regardless of what it looks like."
16:25:12 <AnMaster> "In other words, what Funge characters look like on a particular computer or OS depends entirely on that computer or OS."
16:25:14 <ais523> with Princeton syntax, then you either need Latin-1, Unicode, or the ability to overpunch
16:25:30 -!- shinkuzin_ has joined.
16:25:38 <Deewiant> AnMaster: maybe I should add punctuation there: "cFP outputs - never mind, P reflects" i.e. P didn't output anything, reflected instead
16:25:41 <ais523> (backspace is part of the character set in INTERCAL, and used as a compose character)
16:25:46 <AnMaster> Deewiant, yeah
16:26:03 <Deewiant> AnMaster: but then, you have the source for your interpreter so you know that it reflects and doesn't output anything
16:26:14 <AnMaster> ais523, um you know, I will watch your stuff with interest, because I think it is crazy
16:26:17 <AnMaster> ;P
16:26:36 <ais523> AnMaster: craziness is what it's all about with INTERCAL
16:26:45 <ais523> or to be precise being unlike any other language
16:26:46 <AnMaster> Deewiant, indeed, but was confusing me, as in "oh no, yet another cryptic error"
16:26:55 <ais523> although it manages to subtly parody most languages you're likely to have heard of
16:26:59 <AnMaster> as I started implementing A
16:27:22 <AnMaster> I generally do the instructions from A-Z heh
16:27:37 <AnMaster> ais523, even on befunge?
16:27:52 <ais523> it doesn't have much in common with Befunge yet
16:27:55 <AnMaster> also I don't see how the the interface would work
16:27:58 <ais523> although the threading model is similar
16:28:07 <ais523> AnMaster: are you aware of the concept of a COME FROM?
16:28:31 <ais523> that's the main INTERCAL control flow statement
16:28:35 <AnMaster> ais523, I know it exists, and what it does, but well I do not wish to be affiliated with it ;P
16:28:50 <ais523> well, my idea was that you could drop them into your Befunge code
16:29:06 <marshmallows> wow.. I can't read intercal at all though
16:29:11 <AnMaster> ais523, in cfunge there are NO goto, except in library code, ie code I took from gnulib (like GNU's getline()
16:29:23 <AnMaster> ais523, maybe hash library got some goto, not sure
16:29:30 <ehird> marshmallows: barely anyone can
16:29:33 <AnMaster> but no code I wrote has any goto
16:29:51 <ais523> well, you use function calls, don't you?
16:29:55 <ais523> that's NEXT in INTERCAL
16:29:59 <ehird> i think ais523 and the CLC-INTERCAL maintainer are the only people who can program INTERCAL proficiently
16:30:05 <ais523> ehird: wrong
16:30:06 <AnMaster> ais523, well functions I use. but I try to mark stuff as inline ;)
16:30:08 <ehird> maybe a few others
16:30:15 <ais523> maybe about 10 by my count
16:30:22 <ais523> remember that oerjan wrote an Unlambda interp in it
16:30:39 <ehird> ais523: OK, but I assume it took him ages and a lot of pain
16:30:46 <ehird> I mean, you wrote that continuation library in a day
16:30:56 <ais523> ehird: it wasn't very difficult
16:31:02 <ais523> most of the groundwork was there already
16:31:08 <AnMaster> ais523, but still I would like to know more about how the befunge <-> intercal interface would work
16:31:18 <AnMaster> something like evalasbefuge(some code)?
16:31:20 <AnMaster> or what?
16:31:23 <ais523> OK, lets use printable characters for now
16:31:30 <ais523> you write an INTERCAL program, and a Befunge program
16:31:37 <AnMaster> right
16:31:49 <ais523> the compiler creates a combined executable using the compiled INTERCAL, and Befunge with a bundled interp
16:32:04 <AnMaster> mhm ok, cfunge is in no way small though
16:32:08 <ais523> then the IP can move from the INTERCAL code to the Befunge code and back using several techniques
16:32:37 <ais523> you put markers in the code, like COME FROMs, which enable programs to steal control from each other or to give control to each other
16:32:37 <AnMaster> 71K for a dynamically linked binary at -O3, stripped
16:32:46 <ais523> AnMaster: that's not too bad
16:33:08 <ais523> although I'd abstract the Befunge interp into the runtime libraries to avoid bloating things, probably
16:33:15 <AnMaster> ais523, also likely to grow, as I add more fingerprints
16:33:21 <ais523> however, the runtime's statically-linked at the moment
16:33:29 <ais523> and I don't care too much about output file size
16:33:40 <ais523> INTERCAL's pretty resource-hungry as it is
16:33:53 <AnMaster> ais523, the binary in question is one without boehm-gc so just libm.so.6 and libc.so.6
16:33:54 <ais523> although with many of the advanced features turned off C-INTERCAL can be quite lean too
16:35:05 <AnMaster> ais523, not sure about heap size, but I normally slightly favour speed rather than memory usage when I have to choose
16:36:14 <ais523> C-INTERCAL has the -F optimisation, which analyses your program to see if it's deterministic and terminating (the termination check's achieved by running it for 4 billion threading ticks to see if it's ended), and if it is just records the output it produces and gives you a shell script as the 'executable'
16:36:22 <ais523> it was added for a joke, of course
16:36:37 <AnMaster> XD
16:36:44 <AnMaster> but that ignores file IO?
16:36:54 <AnMaster> or any input in fact
16:36:54 <ais523> there is no file IO in INTERCAL core
16:37:06 <ais523> and input's detected as marking the program as nondeterministic
16:37:33 <ais523> there's probably a hole in it somewhere, thoguh
16:38:31 <AnMaster> ais523, according to massif the heap profiler, part of valgrind, the binary I mentioned above uses 8 MB memory at most when running mycology
16:38:37 <AnMaster> note that cell size was 32-bit in it
16:38:41 <ehird> ais523: you should optimize all constant bits
16:38:41 * AnMaster tries with -DUSE64
16:38:48 <ehird> try to analyze which bits don't utilize non-deterministic things
16:38:51 <ehird> and printf-them
16:38:55 <ais523> ehird: constants are a moving target in INTERCAL
16:39:03 <ehird> ais523: yeah, but you could do some kind of static analysis
16:39:05 <ais523> you can even assign to them if you have the right compiler options set
16:39:14 <ais523> ehird: I do do some static analysis
16:39:32 <ais523> mostly to see when multiple commands can be strung together in a row without needing full guarding
16:39:46 <ais523> but checking to see if code always does the same thing is really hard
16:39:57 <ehird> ais523: run it a few times
16:39:57 <ehird> ;)
16:40:01 <marshmallows> that dd/sh stuff is so cool
16:40:07 <ehird> http://www.google.com/search?hl=en&client=firefox-a&rls=com.ubuntu%3Aen-GB%3Aofficial&hs=Hog&q=%22HTTP+considered+harmful%22&btnG=Search <-- this should have more results
16:40:11 <ais523> marshmallows: yep
16:40:28 <AnMaster> ais523, now this is odd, with 64-bit cells it uses 8.474 MB, so most data isn't cell data? then wtf is it
16:40:35 <ais523> ehird: most INTERCAL code is /designed/ to have exceptional cases
16:40:44 <ais523> AnMaster: pointers? Malloc minimum block sizes?
16:40:55 <ehird> ais523: use a fuzzing program
16:41:07 <ehird> (generates craploads of random data, shoves it at the app at high speeds)
16:41:09 <AnMaster> ais523, hm, pointers maybe yes, the funge-space code is kind of messy in that aspect
16:41:31 <ehird> http://en.wikipedia.org/wiki/Fuzz_testing
16:41:35 <AnMaster> valgrind doesn't want to work on -m32 binaries however, so don't know
16:42:13 <ais523> ehird: you just know that people will use obscure features like symlinked variables in order to confuse the fuzz tester
16:42:16 <AnMaster> ehird,
16:42:18 <AnMaster> Your search - "gopher considered harmful" - did not match any documents.
16:42:19 <AnMaster> :)
16:42:26 <AnMaster> therefore gopher is better than http
16:42:28 <AnMaster> :D
16:42:31 <AnMaster> logic is great
16:42:52 <ehird> ais523: isn't that a good thing?
16:42:59 <ehird> a program that behaves differently on -FF
16:43:16 <AnMaster> <ais523> ehird: you just know that people will use obscure features like symlinked variables in order to confuse the fuzz tester
16:43:19 <ais523> ehird: I tend to consider optimisation changing the behaviour of a program to be a bug
16:43:21 <AnMaster> wtf is a symlinked variable?
16:43:31 <ais523> AnMaster: it's normally called operand overloading
16:43:37 <AnMaster> oh C++?
16:43:44 <ais523> AnMaster: that's operator overloading
16:43:52 <AnMaster> hm
16:43:59 <AnMaster> what is operand overloading then?
16:44:06 <ais523> Operand overloading: if I do .1/.2 then all references to .1 from then on actually refer to .2
16:44:27 <ehird> ais523: if the magic text is in the program output -F already breaks
16:44:37 <AnMaster> ais523, eww
16:44:38 <ais523> so in the continuation code, for instance, if I assign to or read :1601 I'm actually assigning to or reading the first arg of the CREATE statement
16:44:39 <ehird> sketch for an intercal program:
16:44:42 <AnMaster> ais523, what languages got that?
16:44:46 <ais523> ehird: no it doesn't, I grep for the magic text
16:44:50 <ais523> AnMaster: just INTERCAL
16:44:51 <ehird> output the magic text, output 'echo "Hello, world!"'
16:44:54 <AnMaster> ah
16:44:58 <ais523> although unification in Prolog is vaguely similar
16:44:58 <ehird> -F and no -F are different
16:45:01 <ehird> one is:
16:45:07 <ehird> <magic>echo "Hello, world!"
16:45:08 <ehird> one is:
16:45:16 <ehird> Hello, world! <UNEXPECTED COMMAND <magic>>
16:45:28 <ais523> ehird: I just use the non--F executable if I spot the magic word in the output
16:45:37 <AnMaster> eh?
16:45:39 <AnMaster> magic?
16:45:46 <ais523> AnMaster: end of a shell heredoc
16:45:47 <ehird> AnMaster: it generates:
16:45:50 <ehird> cat <<-F*ICK*
16:45:51 <ehird> ...
16:45:53 <AnMaster> xxyz? (wild guess)
16:45:54 <ehird> F*ICK*
16:45:55 <ehird> or similar
16:46:01 <AnMaster> ehird, ah
16:46:03 <AnMaster> that
16:46:20 <ais523> AnMaster: 'twould be xyzzy, but actually I use ickTERM with some weird capitalisation mix followed by a long string of punctuation
16:46:31 <AnMaster> ah
16:46:36 <AnMaster> ais523, why heredoc at all?
16:46:40 <ais523> on the basis that anyone who actually generates output to produce that likely deserves what they get
16:46:44 <ais523> AnMaster: twisted optimisation technique
16:46:47 <AnMaster> ais523, heredoc actually create a temp file
16:46:50 <AnMaster> in bash
16:46:55 <ehird> AnMaster: bash sucks, suprise
16:46:55 <AnMaster> when it reads the heredoc
16:46:58 <ehird> zsh &co don't do that
16:46:59 <ehird> they are Sane
16:47:24 <ais523> AnMaster: DOS implements pipes using tempfiles between the commands
16:47:32 <AnMaster> :(
16:47:43 <ais523> so trying to cut off a pipe from an infinite loop using head actually causes your computer's disk to fill up
16:47:54 <AnMaster> ais523, I can tell you right away that there is *no way* you would get cfunge to run on DOS
16:48:12 <ais523> AnMaster: oh dear, you might cause me to take that as a challenge
16:48:30 <AnMaster> ais523, of course if you rewrite large parts it may work
16:48:54 <ais523> AnMaster: even Emacs runs on DOS nowadays, and it's terribly bloated
16:48:58 <AnMaster> ais523, but nothing will stop my code from depending on POSIX when I feel that I have a reason to
16:49:03 <AnMaster> ais523, :(
16:49:06 <ais523> AnMaster: POSIX dependencies are fine
16:49:26 <ais523> DJGPP implements all of the POSIX functions, by returning plausible output, or when that's impossible, plausible error codes
16:49:44 <ais523> so fork is basically implemented as pid_t fork(void) {errno=ENOMEM; return -errno;}
16:50:32 <ehird> languages are so broken
16:50:34 <ehird> they have no call/cc
16:50:43 <AnMaster> ais523, I may decide to depend on a working fork if you try to make it run on dos ;)
16:50:54 <AnMaster> ehird, what languages?
16:51:05 <ais523> AnMaster: then I'd link it up to a custom version of the INTERCAL threader just to annoy you
16:51:09 <AnMaster> ais523, can DJGPP do pthreads?
16:51:13 <ais523> AnMaster: no idea
16:51:30 <AnMaster> ais523, because one thing I pondered is a fingerprint for "true" concurrency
16:51:36 <AnMaster> as in really using threads
16:51:39 <AnMaster> just a wild idea
16:51:44 <AnMaster> along with the ipv6 sockets one
16:51:52 <AnMaster> there is a fingerprint for ipv6 sockets
16:51:58 <ais523> AnMaster: then you'd lose the thread speed guarantees
16:51:58 <AnMaster> SOCK and/or SCKE
16:52:05 <AnMaster> ais523, yeah
16:52:20 <ais523> my C-INTERCAL continuation program depends on them
16:52:22 <AnMaster> ais523, but a fingerprint for such threads, if anyone wants
16:52:30 <AnMaster> would have compare and exchange and so on of course
16:53:44 <ais523> AnMaster: INTERCAL has ONCE and AGAIN, which are some of the most flexibile thread-sync mechanisms I've seen yet
16:54:03 <AnMaster> how do they work?
16:54:07 <ais523> with computed ABSTAIN, ONCE and AGAIN, there are several mutexes, spinlocks, and semaphores in the INTERCAL continuation program
16:54:30 <ais523> AnMaster: DO COMMAND ONCE changes into DON'T COMMAND AGAIN when executed, atomically with its execution
16:54:35 <ais523> so only one thread is allowed through it
16:54:44 <ais523> and REINSTATE changes it back to the original form
16:54:53 <AnMaster> ais523, yes right, but that would not allow multi cpu
16:55:14 <ais523> AnMaster: the semantics work fine with multi CPU, just that implementing it might be a bit tricky
16:55:17 <AnMaster> that is the reason I'm interested in a fingerprint for "real" threads
16:56:17 <AnMaster> basically: since everyone is going multicore today, befunge's t is no longer effective, therefore I add this fingerprint to make befunge attractive to the enterprise market ;)
16:56:19 <AnMaster> or something like that
16:57:39 <ehird> AnMaster: tons of languages
16:57:45 <ais523> AnMaster: that sounds just like the sort of justification people use for INTERCAL features
16:57:46 <AnMaster> hm
16:57:51 <AnMaster> ais523, indeed heh
16:57:59 <AnMaster> ais523, take a look at the TOYS fingerprint
16:58:05 <AnMaster> you will feel at home
16:58:09 <ais523> AnMaster: I have done
16:58:48 <ehird> my firefox is borken
16:58:56 <AnMaster> ais523, some of those I can see the cause of the names for, but well, M - kittycat I just don't get
16:58:57 <ehird> sometimes when loading a page it finishes loading but does not render the new page
16:58:59 <ehird> and stays at the old one
16:59:02 <ehird> but e.g. can't select text
16:59:03 <AnMaster> ehird, try konqueror
16:59:04 <ehird> and links don't work
16:59:09 <ehird> even though the text cursor appears
16:59:16 <ehird> AnMaster: unacceptable, it doesn't work with anything
16:59:18 <ais523> AnMaster: it's a cat's ears
16:59:32 <AnMaster> hm
16:59:42 <ais523> konqueror's really good on some sites, but it screws up on anagolf for some reason
16:59:44 <AnMaster> ais523, well the middle of my M doesn't touch the base of the line
16:59:51 <ehird> AnMaster: its cats ears + top of head
16:59:53 <ais523> it's fine on first viewing, but deteriorates on refreshes
16:59:57 <ehird> besides
17:00:03 <AnMaster> ais523, also: S - chicane U - tumbler
17:00:07 <ehird> maybe princeton's M looked ok
17:00:11 <AnMaster> I don't even know what a "chicane" is
17:00:12 <ehird> their U was probably more spiky
17:00:20 <ais523> AnMaster: a bend in a road shaped like the letter S
17:00:24 <AnMaster> ah
17:00:29 <AnMaster> ais523, and what is a tumbler?
17:00:33 <ehird> ais523: so, a chicane is a bend in a road shaped like a chicane
17:00:34 <AnMaster> "V - dixiecup" yet another odd one
17:00:39 <ais523> AnMaster: it's a glass you drink water out of
17:00:43 <AnMaster> ah I see
17:00:43 <ais523> I don't get the V, though
17:00:50 <ais523> the character's called 'book' in INTERCAL
17:01:36 <ehird> ais523: look at it on the side
17:01:41 <ehird> it's a slightly-open book
17:01:42 <ehird> like
17:01:45 <ehird> put a book down
17:01:48 <ehird> but it won't fully close
17:02:03 <ais523> ehird: I understand why 'book', just not why 'dixiecup'
17:02:04 <ehird> thingy.
17:02:11 <ehird> ah
17:02:21 <ehird> http://www.ideafinder.com/history/inventions/dixiecup.htm
17:02:21 <ehird> ?
17:02:32 <ehird> made to look like a flimsy plastic cup
17:02:33 <ehird> i guess
17:06:19 <ehird> ais523: http://acarol.woz.org/ When will C-INTERCAL work on this?
17:06:41 <ehird> Oh, and are mirrors for C/CLC-INTERCAL appreciated?
17:06:47 <ehird> i have a whole VPS server
17:06:48 <ehird> being useless
17:07:32 <ais523> ehird: about that link: when it becomes Turing-complete, I'll be on the task
17:07:48 <ehird> ais523: Who needs TC?
17:08:05 <ais523> ehird: yes for C-INTERCAL, although it's the CLC-INTERCAL maintainer who hosts both compilers and mirrors them too, you might want to ask them
17:08:48 <ehird> ais523: Oh, and if you eve do need hosting for a darcs repository or similar, the same server will still be sitting around doing nothing
17:09:06 <ehird> (I consider eso-std.org and elliotthird.org close to 'nothing' as they will haev basially no overhead :p)
17:09:28 <ais523> ehird: it's probably also worth pointing out that your mirroring capabilities will be nowhere near Debian's
17:09:28 <ehird> ais523: Hmm. parser.y looks like Perl.
17:09:44 <ehird> ais523: Perhaps, but my updating capabilities will far exceed it.
17:09:56 <ehird> Also, when e.g. patches are released I'd probably make a pre-patched version for convenience
17:10:29 <ais523> ehird: it's Bison
17:10:35 <ais523> also meant to be yacc-compatible
17:10:44 <ais523> it's probably all the % signs that are throwing you
17:10:53 <ais523> ehird: Debian do that too
17:11:03 <ehird> ais523: no, the indentation style and the $x stuff
17:11:09 <ehird> ais523: but do they update regularly :)
17:11:17 <ais523> ehird: yes
17:11:19 <ehird> Besides, debian do stuff to their packages.
17:11:21 <ais523> within days, often
17:11:28 <ehird> I just mirror stuff.
17:11:36 <ais523> and the Debian repos host the original, and a patch to Debianise it
17:11:41 <ais523> so you can download either separately
17:11:44 <ehird> ais523: Days, bah. I offer 3 days max wait ;)
17:11:59 <ais523> ehird: then they'd have been faster than you in some cases
17:12:10 <ais523> Ubuntu, on the other hand, never even replied to my emails
17:12:39 <ehird> ais523: Normally it'd take me a day or less.
17:12:52 <ehird> Since I'd see it the day or the next day, and upgrade it.
17:13:02 <ehird> By the way, patch(1) doesn't like your patch
17:13:39 <AnMaster> ehird, tried different -p?
17:14:04 <ais523> ehird: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=459577 (look at the email timestamps)
17:14:07 <AnMaster> -p0, -p1 and so on
17:14:16 <ais523> ehird: check the newlines
17:14:32 <ais523> DOS newlines crept into 0.27 in idiotism.oil by mistake
17:14:39 <ais523> but the patch has Unix newlines
17:14:43 <ais523> and that's enough to confuse patch
17:15:09 <ais523> that's what the email exchange I linked was about, actually
17:15:52 <ehird> patching file src/idiotism.oil
17:15:53 <ehird> Hunk #1 FAILED at 207.
17:15:53 <ehird> Hunk #2 FAILED at 480.
17:15:53 <ehird> 2 out of 2 hunks FAILED -- saving rejects to file src/idiotism.oil.rej
17:15:57 <ehird> so yeah
17:16:22 <ais523> ehird: OTOH, unlike the Debian maintainer, you wouldn't be too scared to merge the patch by hand, right?
17:17:22 <ehird> ais523: Most certainly not
17:17:23 <ehird> :)
17:17:59 <ehird> Gosh, patch is such an arcane format
17:17:59 <ehird> :P
17:18:29 <ehird> ais523: Just replace all the DOS with UNIX, right?
17:18:59 <ais523> ehird: yes, that's how I fixed it
17:19:00 <ehird> tofrodos will be quicker then
17:19:08 <ais523> in fact, that's the reason that the patch is confused like that
17:19:33 <ais523> one of the first things I did when I started work on 0.28 was to notice that the newlines in idiotism.oil were wrong, and ran tofrodos on it...
17:19:45 <ehird> 'And for probably obvious reasons I don't want to hand-merge it.' --> 'I am a delicate soul and I never use a keyboard. I love my mouse. Please don't make me do scary things.'
17:19:49 <ehird> harsh? maybe ;)
17:20:03 <ais523> ehird: to be honest, I'm not sure if anyone in the world but me knows OIL
17:20:09 <ais523> it doesn't even qualify as a proper esolang
17:20:19 <ais523> although I suspect it's TC for the same reasons that Thue is
17:20:55 <ehird> This implementation was created by Eric S. Raymond <esr@snark.thyrsus.com> during a fit of lunacy from which he has since mostly recovered.
17:20:58 <ais523> (Joris Huizer, who has contributed so many patches to C-INTERCAL recently that there's a Joris-specific changelog section, sent a few OIL corrections in, but confessed to not really understanding the syntax)
17:21:04 <ehird> first comes denial..
17:22:13 <ehird> ais523: eek, no manpage
17:22:14 <ehird> :D
17:22:18 <ais523> ehird: there is a man page
17:22:20 <ais523> doc/ick.1
17:22:38 <ais523> also an info page doc/ick.info (requires compilation, source in doc/ick.txi)
17:22:45 <ehird> '-b option that disables the INTERCAL-72 random-bug feature' <-- commonly used, I assume
17:22:55 <ais523> you'd be surprised how often I forget
17:23:05 <ais523> but 90% of the time it doesn't matter
17:24:25 <ais523> incidentally, the next version is adding -w, -a, -e, and -E to that manpage
17:25:06 <ais523> -a = enable CREATE, -e = enable external calls and expansion libraries, the other two aren't very interesting
17:26:01 <ehird> ais523: /* AIS:
17:26:03 <ehird> that must get tedious
17:26:09 <ais523> ehird: not really
17:26:15 <ais523> it helps when grepping
17:26:18 <ehird> replacing everyone else's comments with something similar would be simpler :P
17:26:41 <ais523> ehird: the unattributed bits belong to the top-of-file copyright holder in most cases
17:26:51 <ais523> you'll see other people's initials scattered around too, just not as much as mine
17:26:54 <ehird> ais523: hmm.
17:26:55 <ehird> $ ick; echo $?
17:26:56 <ehird> 0
17:27:05 <ais523> ehird: that's correct
17:27:06 <ehird> best true(1) ever
17:27:11 <ais523> you told it to do nothing, and it did
17:27:57 <ehird> ais523: does it ever exit(1)?
17:28:01 <ehird> just seems to do 1241 and similar
17:28:32 <ais523> ehird: I don't know of a way to get an exit code of precisely 1
17:28:32 <ais523> there are a lot of other nonzero exit codes available, though
17:28:44 <ais523> try compiling an invalid INTERCAL program (DO(1)NEXT will do), and look at the exit code then
17:29:13 <ehird> $ echo 'DO(1)NEXT' |ick ; echo $?
17:29:13 <ehird> bash: echo: write error: Broken pipe
17:29:23 <ehird> need to pipe to a file
17:29:23 <ehird> :)
17:29:26 <ais523> ehird: ick doesn't accept files on stdin
17:29:41 <ehird> invalid: 230
17:29:41 <ais523> however, I have a symlink tty.i to /dev/tty in my INTERCAL programs directory
17:30:06 <ais523> ehird: C-INTERCAL sends back the error number as the exit code
17:30:13 <ais523> but the OS will normally modulo-256 it
17:30:50 <ais523> so I get 129 on that program, for instance
17:30:54 <ehird> ais523: no output file option? :(
17:31:03 <ais523> ehird: at present, no
17:31:11 <ais523> because none of the options take arguments
17:31:17 <ais523> you have -o to pipe the output C to stdout, though
17:31:24 <ehird> 34
17:31:24 <ehird> ICL579I WHAT BASE AND/OR LANGUAGE INCLUDES 34?
17:31:25 <ais523> and you can redirect it elsewhere from there
17:31:31 <ehird> i know that shouldn't work
17:31:34 <ais523> ehird: that's not how you input numbers in INTERCAL
17:31:34 <ehird> but the error is amusing
17:31:37 <ais523> try THREE FOUR
17:31:38 <ehird> WHAT BASE INCLUDES 34?!
17:31:40 <ehird> ais523: yes, yes, i know
17:32:16 <ehird> ais523: any base-12 names? :P
17:32:38 <ais523> ehird: input is in spelt-out decimal, in a variety of languages
17:32:47 <ais523> but programs internally can use any base from 2 to 7
17:33:01 <ais523> according to the file extension (.i, .3i, .4i, ..., .7i)
17:38:57 <ehird> ais523: yes, i know
17:39:00 <ehird> it's just an amusing error
17:39:45 <ehird> now... to use continuations.i to make a continuation-based web framework, plug it into fastcgi, and write the world's second web intercal program: a wiki for INTERCAL information
17:39:48 <ehird> or am i just silly
17:39:59 <ais523> ehird: entirely possible
17:40:11 <ais523> but it'll take several days even for someone used to INTERCAL, at least
17:40:40 <ehird> ais523: yes, probably the best route is:
17:40:54 <ehird> 1. write a fastcgi/scgi thingy for intercal
17:41:12 <ehird> 2. get continuations working OK with it, do sample HELLO WORLD app
17:41:24 <ehird> 3. translate some of the stuff here http://www.double.co.nz/scheme/modal-web-server.html (just the ideas, not the actual functions, of course)
17:41:34 <ehird> 4. write basic things like the 'counter with ++ and -- buttons'
17:41:41 <ais523> oh, it's probably worth pointing out that that continuation library slows down the program by a factor of n+2 if you've created n continuations
17:41:42 <ehird> 5. build it up to a 'you can change this page' thing
17:41:45 <ehird> then add a formatter
17:41:51 <ehird> then add multiple pages
17:41:54 <ehird> then add revisions
17:41:57 <ehird> and voila
17:41:57 <ais523> so unless you find some way to reuse them, the whole thing will ground to a halt
17:41:57 <ehird> ;)
17:42:05 <ehird> ais523: can you delete continuations?
17:42:18 <ais523> ehird: at the moment, no
17:42:22 <ehird> the standard practice for continuation web servers is that after a while you expire old continuatins
17:42:25 <ais523> well, unless you hook into the internals
17:42:29 <ehird> for the purposes of this they'll not be used often
17:42:35 <ais523> it shouldn't be ridiculously hard to do, though
17:42:38 <ehird> so i guess once every hour purging them would work
17:43:15 <AnMaster> lol
17:43:16 <ais523> ehird: INTERCAL doesn't have a current-time function, but I suppose you could deduce it from incoming HTTP headers if they happened to contain something time-related
17:43:19 <AnMaster> you are insane
17:43:33 <ehird> ais523: one http request = one tick
17:43:40 <AnMaster> ais523, well if it doesn't have current time, befunge does
17:43:41 <AnMaster> ;P
17:43:48 <ehird> every N ticks, expire continuations not used for M ticks (where M>N)
17:44:06 <AnMaster> ais523, there is even a "high resolution timer" fingerprint
17:44:11 <ais523> AnMaster: unfortunately, the threader and external calls system conflict with each other
17:44:16 <ehird> ais523: since it'll mostly be in a nop busyloop when not handling requests
17:44:19 <AnMaster> ais523, eh?
17:44:20 <ais523> so you couldn't have continuations And befunge
17:44:20 <ehird> obviously i won't try and thread it
17:44:23 <ehird> so it'll handle one request at a time
17:44:26 <AnMaster> ais523, oh you mean non-reentrant?
17:44:28 <ais523> AnMaster: they both do entirely different unusual stack things
17:44:40 <ais523> and are both heavily setjmpy, but in different ways
17:44:40 <AnMaster> I see
17:44:49 <AnMaster> ugh
17:45:03 <ehird> AnMaster: CONT fingerprint for cfunge please
17:45:13 <ehird> AnMaster: :D
17:45:15 <AnMaster> ehird, not sure how it would work
17:45:22 <ais523> hmm... maybe you could do something using TRDS
17:45:30 <AnMaster> ais523, I will NOT implement TRDS
17:45:32 <ais523> that's pretty continuation-like
17:45:33 <AnMaster> I just won't
17:45:34 <ehird> AnMaster: you know what continuations are right?
17:45:47 <AnMaster> ehird, I think I know, if they are what I think
17:45:52 <AnMaster> ie, anonymous method
17:45:58 <AnMaster> that can be passed around
17:45:59 <ais523> no, that's a lambda
17:46:04 <AnMaster> hm?
17:46:17 <ais523> lambda = anonymous method that can be passed around, and can be filled out at runtime
17:46:27 <ehird> he's thinking of closures
17:46:28 <ais523> continuation = snapshot of the state of the program that can be restored at a later time
17:46:32 <AnMaster> ehird, ah yes
17:46:34 <ais523> ehird: ah
17:46:36 <AnMaster> ehird, that's the one
17:46:39 <ehird> i'll explain continuations to AnMaster trivially
17:46:44 <AnMaster> well then I don't know what a continuation is no
17:46:50 <ehird> AnMaster: you know the call stack? it includes the return addresses, local variables, etc
17:46:56 <AnMaster> aye yes
17:47:03 <ehird> well, a continuation is a copy of that call stack
17:47:04 <ehird> but not the heap
17:47:10 <ehird> and then you can resume the continuatoin
17:47:10 <AnMaster> call and ret in asm iirc
17:47:17 <ehird> and it replaces the stack with theo ne in the continuation
17:47:39 <AnMaster> ehird, so you are trying to sneak in that back tracking stuff that's soooo slow?
17:47:40 <ehird> AnMaster: basically, you need these:
17:47:43 <ehird> and no
17:47:47 <ehird> continuations are useful besides
17:47:49 <AnMaster> hm
17:47:50 <ehird> e.g. seaside web framework
17:47:51 <ehird> uses them
17:47:59 <ehird> ofc the Copy Whole Stack method is inefficient
17:48:01 <ehird> but easy to implement
17:48:04 <AnMaster> ehird, so a saved state?
17:48:04 <ehird> anyway
17:48:10 <ehird> AnMaster: kind of, but the heap stays the same
17:48:11 <ais523> ehird: use Underlambda, then you can store continuations in the URL
17:48:12 <AnMaster> of the call stack but nothing else?
17:48:16 <AnMaster> or the normal stack too?
17:48:24 <ehird> ais523: that's true.. but then you can hijack the app
17:48:26 <ais523> AnMaster: in the case of Befunge, both
17:48:32 <ehird> AnMaster: for befunge you will wont both, i guess
17:48:34 <AnMaster> ais523, well there is no call stack
17:48:35 <AnMaster> really
17:48:39 <ehird> AnMaster: your C call stack
17:48:42 <ehird> copy the c call stack
17:48:43 <AnMaster> ah yes
17:48:51 <ehird> yes you have to do some weird memcpy stuff
17:48:53 <AnMaster> ehird, how on earth would I access the C call stack?
17:48:53 <ehird> involving things like
17:48:56 <ehird> int xyzzy;
17:48:59 <AnMaster> I got no idea where it is
17:49:01 <ehird> int *stack = &xyzzy-1;
17:49:03 <ehird> stuff like that
17:49:06 <AnMaster> err
17:49:11 <ais523> ehird: that's nonportable
17:49:13 <AnMaster> ehird, that sounds non-portable
17:49:17 <ehird> it's kind of nonportable
17:49:18 <ais523> but you can get round that by implementing your own stack
17:49:22 <ehird> but you can get it working semi-reasonably
17:49:25 <ehird> ais523: that would be tricky in this case
17:49:31 <AnMaster> ugh
17:49:34 <ais523> ehird: or use CPS
17:49:39 <ehird> ais523: unworkable in C
17:49:40 <ehird> it has no closures
17:49:43 <ehird> you'd have to drop local vars
17:49:47 <AnMaster> ais523, ehird: I'm not going to do that you know
17:49:47 <ehird> and pass around structures
17:49:55 <ehird> AnMaster: fine, implement your own call stack
17:49:58 <ehird> but here's what you need:
17:50:08 <ais523> ehird: you could use STASHes rather than local vars, so it isn't completely ridiculous
17:50:16 <ais523> but it is still somewhat ridiculous
17:50:38 <AnMaster> ehird, I'm not going to do any setjmp or similar either
17:50:47 <ehird> C -- Makes a continuation whose return point is here. If we've just created the continuation, push 0 on to the stack. Otherwise, push the value we got and then 1 on to the stack.
17:50:48 <AnMaster> I prefer clean code
17:50:54 <AnMaster> when doing C
17:51:02 <ehird> R -- Takes a continuation and a value off the stack, and returns to the continuation passing the value.
17:51:05 <ehird> there
17:51:06 <ehird> that's it
17:51:09 <ehird> that's the CONT fingerprint
17:51:27 <AnMaster> ehird, sounds like a feral fingerprint?
17:51:35 <ehird> AnMaster: but note...
17:51:38 <ais523> AnMaster: tame continuations would be a contradiction
17:51:39 <ehird> continuations must be reusable
17:51:44 <AnMaster> ais523, indeed
17:51:46 <ehird> if i store a continuation somewhere
17:51:49 <ehird> then i can use R as many times as i awnt
17:51:51 <ehird> *want
17:52:07 <AnMaster> ais523, and that is where I say no. I have decided to not implement MODE because it isn't tame
17:52:09 <ais523> ehird: you can make reusable continuations out of non-reusable continuations
17:52:18 <ehird> ais523: kind of
17:52:21 <ehird> not always though
17:52:27 <ais523> that's what I did in the INTERCAL continuation library
17:52:30 <ehird> AnMaster: you are so uptight regarding esolangs
17:52:38 <AnMaster> ehird, well I may do MODE
17:52:46 <ais523> whenever a continuation is spent, I generate another identical one with the same number
17:52:48 <AnMaster> but not TRDS and CONT, sure if someone makes a patch
17:52:49 <ehird> i'm not implementing this feature because i value MAINTAINABILITY and READABILITY and PORTABILITY
17:52:57 <ehird> even though it's BEFUNGE
17:53:08 <ehird> anyway, http://www.intertwingly.net/blog/2005/04/13/Continuations-for-Curmudgeons
17:53:12 <ehird> explains it simpl;y
17:53:18 <AnMaster> ehird, right, befunge is turing complete, you can simulate the continuations in it!
17:54:24 <ais523> Befunge-98, you mean
17:54:30 <AnMaster> ais523, right indeed
17:54:53 <AnMaster> ais523, though, Befunge-93 with BIGNUM would be turning complete too I think?
17:55:01 <ais523> AnMaster: yes
17:55:11 <ehird> uhm, you couldn't simulate continuations reasonably
17:55:14 <ehird> without fisrt-class functions
17:55:16 <ais523> you could simulate a Minsky machine using the playfield or the swap instruction
17:55:19 <ehird> its totally useless
17:55:24 <ais523> it wouldn't be very befunge-like, though
17:55:27 <AnMaster> ehird, you could simulate first-class functions
17:55:39 <ehird> AnMaster: the point is it's nigh-on impossible
17:55:40 <ais523> ehird: INTERCAL doesn't have first-class functions, yet I programmed continuations in it
17:55:47 <ehird> unless you make a compiler do it = more work than implementing CONT
17:55:51 <ehird> ais523: intercal != befunge
17:56:36 <AnMaster> Deewiant said he wouldn't have done TRDS if he knew how messy it was iirc
17:57:07 <AnMaster> what I *may* do is add a full blown libffi
17:57:07 <ais523> it's pretty like continuations, though
17:57:19 <AnMaster> then you can do whatever you want basically
17:57:26 <AnMaster> assuming non-sandbox mode
17:57:50 <ehird> ooh
17:57:53 <ehird> a new funge98 impl
17:57:57 <AnMaster> ehird, hm?
17:57:58 <ehird> in the infocom Zmachine no less
17:57:59 <ehird> http://mbays.freeshell.org/zedfunge.html
17:58:51 <Deewiant> AnMaster: well, I probably would have anyway, and then said that anyway ;-)
17:59:18 <ais523> Deewiant: you've worked with TRDS, how continuation-like is it?
17:59:21 <AnMaster> Deewiant, hm?
17:59:41 <Deewiant> ais523: continuation-like? what exactly do you mean?
17:59:52 <ais523> Deewiant: we were discussing continuations in Befunge
18:00:00 <ais523> I was wondering whether TRDS already provided a way to do that
18:00:06 <ais523> because it acts in a similar manner
18:00:07 <ehird> you can't
18:00:08 <Deewiant> AnMaster: I mean, I'm stubborn enough to have probably done it anyway :-P
18:00:09 <ehird> it isn't reusable
18:00:14 <ehird> and you cannot send values back
18:00:17 <ehird> and it does IO
18:00:19 <ehird> and changes the heap
18:00:26 <ehird> IO and heap must never be modified for continuations
18:00:34 <ais523> ehird: so not continuation-like enough
18:00:34 <ehird> it makes them useles
18:00:35 <ehird> s
18:00:36 <Deewiant> it doesn't do IO, necessarily
18:00:41 <Deewiant> or what did you mean by that
18:00:53 <ais523> Deewiant: ehird means that continuations don't reset the input stream
18:00:56 <ais523> but TRDS does
18:00:57 <Deewiant> or are you talking about something else
18:01:11 <ehird> Deewiant: it rewinds stdout
18:01:18 <ehird> & stidn
18:01:21 <Deewiant> you mean, if there's a getchar() or putchar() somewhere
18:01:24 <Deewiant> then TRDS would rerun it?
18:01:27 <Deewiant> if so, that's false
18:01:29 <Deewiant> because it doesn't
18:01:43 <ehird> no
18:01:46 <ehird> but it would remove it from the screen
18:01:53 <ehird> also
18:01:55 <ehird> it SHOULD rerun it
18:01:56 <Deewiant> hm? that's impossible :-P
18:01:57 <ehird> if it was a continuation
18:02:17 <Deewiant> in all honesty the IO semantics of TRDS are 100% unspecified
18:02:22 -!- timotiis has joined.
18:02:26 <ehird> AnMaster: put your files in a top-level directory when you make tarballs fck sake
18:02:28 <Deewiant> the original implementation doesn't do getchar() and putchar()
18:02:34 <AnMaster> ehird, hm?
18:02:34 <Deewiant> when time traveling
18:02:37 <ehird> you just defecated on my ~/
18:02:38 <AnMaster> ehird, what do you mean?
18:02:38 <Deewiant> but it would do file input and output
18:02:45 <AnMaster> ehird, I do use a subdir
18:02:47 <AnMaster> -_-
18:02:57 <AnMaster> unless tar is doing something messy?
18:02:58 <Deewiant> AnMaster: http://en.wikipedia.org/wiki/Tarball#Tarbombs
18:03:11 <ais523> ehird: ccbi does that to me when I try to unpack it
18:03:17 <ais523> maybe you've got the wrong interp
18:03:20 <AnMaster> I don't tar bomb
18:03:28 <ais523> or maybe there's a worldwide tar conspiracy against Befunge
18:03:34 <Deewiant> CCBI is in a zip file, and a subdir of its own O_o
18:03:52 <AnMaster> http://rafb.net/p/fTreKx91.html
18:03:58 <AnMaster> ehird, wtf are you talking about?
18:03:59 <ais523> Deewiant: I thought it would be
18:04:11 <ais523> maybe there's something wrong with the way tar handles 7zip, or something
18:04:14 <AnMaster> it is always subdir of it's own
18:04:23 <Deewiant> ais523: possibly
18:04:51 <AnMaster> ehird, what exact tar ball is it you have an issue with?
18:04:55 <AnMaster> link please
18:05:15 <ehird> meh
18:05:23 <AnMaster> ehird, waiting
18:05:34 <AnMaster> because I can't see any tar file I made got that problem
18:06:54 <ehird> it was my mistake
18:06:55 <ehird> sorry
18:06:58 <AnMaster> ah
18:07:03 <AnMaster> ehird, so what did you do?
18:07:12 <ehird> long story
18:07:12 <ehird> :)
18:07:18 <AnMaster> ehird, I would like to know
18:07:53 <ais523> heh, I have an entire section about extracting tarballs in the C-INTERCAL docs on the basis that some Windows users might not understand it, so I'd like to know too
18:10:01 <ehird> i had some directories called things like 'src' in ~/
18:10:56 * ais523 has an idea for a really mean way to confuse a user: create a symlink from every possible valid filename to the user's home directory into the user's home directory itself
18:11:14 <ais523> unfortunately, that would use excessive disk space unless your filesystem optimised it
18:11:27 <ehird> ais523: most filesystems can handle infinite length filenames nowadays
18:11:42 <ais523> well, you could invent one that couldn't
18:11:50 <ais523> limit it to 8.3, for instance
18:11:58 <ais523> yet still have it capable of optimising vast symlink farms
18:12:49 <ehird> Hmm
18:12:53 <ehird> Could you do continuations in sh?
18:13:09 <ais523> ehird: it's a bit hard to get at internal state
18:13:23 <ais523> so you'd probably have to implement your own stack system, etc
18:13:25 <ehird> ais523: i'm sure you could do SOMETHING though..
18:13:29 <ehird> like.. use &&
18:13:31 <ehird> foo && bar && xyz
18:13:36 <ehird> and use exit codes and stuff
18:13:37 <ehird> or something
18:13:48 <ais523> ehird: oh, sh's Turing-complete, so it's possible somehow, the interesting question is how easy it is
18:14:22 <AnMaster> ehird, <ehird> i had some directories called things like 'src' in ~/ <-- yes and?
18:14:28 <AnMaster> how did it happen
18:14:33 <AnMaster> I would like to know
18:14:41 <AnMaster> I got ~/src too
18:14:52 <AnMaster> ~/src/cfunge/trunk is where I keep cfunge
18:15:02 <ehird> AnMaster: i create directories all the time
18:15:08 <AnMaster> yes and?
18:15:15 <ehird> so i thought your tarball did it
18:15:22 <ehird> but i did
18:15:29 <AnMaster> I see, you didn't look for a "cfunge" there?
18:15:34 <ehird> i did
18:15:37 <ehird> it's a long story
18:15:39 <AnMaster> ah ok
18:16:02 <ehird> ais523: you cast printf calls to void
18:16:02 <ehird> wtf
18:16:19 <ais523> ehird: for linting
18:16:36 <ais523> actually, the version of lint I used doesn't care, but some older ones that other people delinted with do
18:16:45 <ais523> after all, it has a return value...
18:17:07 <ehird> ais523: i think i want to die
18:17:12 <ehird> :p
18:17:15 <Deewiant> I'd do #define Printf(x) (void)printf(x) if I were you...
18:17:28 <ais523> ehird: lint can be useful, but can also be annoying
18:17:30 <Deewiant> or, if you prefer, the variadic function version and call vprintf
18:17:39 <ehird> #define LintSucksSoGodDamnMuch (void)printf
18:17:41 <ais523> but being far too false-positivy is useful
18:17:48 <Deewiant> but yes, further, I'd just shut lint up :-P
18:17:58 <ehird> #define LintSucksSoGodDamnMuch (void)
18:18:05 <ehird> LintSucksSoGodDamnMuch printf("really\n");
18:18:10 <ais523> at least there are lots of comments now where I explain things to humans that Splint flagged up as being suspicious
18:18:24 <ais523> and added in a /*@-something@*/ comment to let Splint know I really meant it
18:19:26 <ehird> ais523: is your template engine custom?
18:19:42 <ais523> ehird: what do you mean by 'template engine' in this context?
18:19:56 <ehird> the template
18:20:03 <ehird> c fiel thingy
18:20:05 <ehird> the $ instructions
18:20:11 <AnMaster> <ais523> ehird: for linting
18:20:17 <AnMaster> yeah that is why I don't use splint
18:20:27 <ais523> ehird: which file?
18:20:28 <AnMaster> it's a good idea but not properly implemented
18:20:32 <ehird> ais523: the template c file
18:20:34 <ehird> for the output
18:20:38 <ais523> it's custom
18:20:47 <ais523> the substitutions are done in a massive switch near the bottom of perpet.c
18:20:52 <ehird> heh
18:20:55 <ais523> just before the bit that calls system() a lot
18:21:19 <ais523> not mine, though, it was there when I started working on the compiler
18:21:59 <ehird> http://golf.shinh.org/p.rb?nop Seperates the usable languages from the toy ones
18:22:00 <ehird> ;)
18:22:30 <ais523> ehird: more to the point, separates the compilers from the interpreters
18:22:51 <ais523> because a compiler erroring out is generally 'failed' on anagolf, but an interp erroring out is generally 'success' if the right output's on stdout
18:22:54 <ehird> ohoooo
18:22:55 <ehird> http://golf.shinh.org/reveal.rb?nop/irori/1204644403&hs
18:22:56 <ehird> cleverrr
18:23:03 <ehird> ais523: hardly
18:23:11 <ehird> it seperates the things taht require verbosity and those that don't
18:23:12 <ehird> :)
18:23:16 <ais523> I contributed ; as a program to every single language, and it 'worked' on most of them
18:23:21 <AnMaster> <ehird> http://golf.shinh.org/reveal.rb?nop/irori/1204644403&hs
18:23:26 <AnMaster> that site is just odd?
18:23:28 <ehird> e.g. Ada and Erlang fails
18:23:30 <AnMaster> lots of errors?
18:23:35 <AnMaster> or maybe I should blame firefox?
18:23:39 <ais523> ehird: what does @ do in Python again?
18:23:41 <ehird> AnMaster: blame firefox
18:23:44 <ehird> ais523: that's haskell
18:23:53 <ehird> in a pattern match,
18:23:55 <ais523> sorry, I said the wrong language for some reason
18:24:03 <ehird> X@Y means that 'match X like normal, but bind Y to the whole thing'
18:24:07 <ehird> (x:xs)@xss
18:24:09 <ais523> I was busy reading Perl documentation at the time, and got confused
18:24:09 <ehird> xss is (x:xs)
18:24:21 <ehird> haskell lets you do patterns on the LHS apparently
18:24:22 <ehird> so main@a=a
18:24:23 <ehird> is main = main
18:24:26 <ehird> so an infinite loop
18:24:32 <ehird> that, obviously, outputs fine
18:24:49 <ais523> main=main errors out in ghc, at least, because it detects the loop
18:24:55 <ehird> ais523: in ghci
18:24:56 <ehird> not ghc
18:25:05 <ehird> in fact
18:25:06 <ehird> not even ghci
18:25:07 <ehird> jus tlambdabot
18:25:07 -!- cherez has quit (Read error: 113 (No route to host)).
18:25:45 <ehird> $ echo 'main=main'>foo.hs&&ghc foo.hs -o loop&&rm foo.hs&&./loop
18:25:49 <ehird> though it might pick up on it eventually
18:25:54 <ehird> but anagolf only runs for ~2 seconds
18:26:37 <ehird> ais523: http://golf.shinh.org/reveal.rb?nop/ais523/1204732604&m4
18:26:40 <ehird> did you not consider a newline?
18:26:41 <ais523> ehird: you're right, but I'm sure I have a memory of the loop being detected somewhere
18:26:49 <ehird> or perhaps a space
18:26:51 <Deewiant> ehird: you can view solutions there? where's the link to reveal.rb?
18:26:57 <ais523> ehird: I forgot about the trailing-whitespace thing
18:27:01 <ehird> ais523: it is if you run it for a while
18:27:09 <ehird> Deewiant: only on closed problems
18:27:09 <ais523> Deewiant: on the contest page, after the deadline
18:27:14 <ehird> the name becomes a link
18:27:15 <ais523> the solutions aren't shown before the deadline
18:27:22 <ehird> some deadlines are infinite
18:27:27 <ehird> and since there's a random number at the end
18:27:31 <ehird> it won't be trivial to guess
18:27:34 <Deewiant> I see
18:27:49 <ais523> ehird: presumably the links wouldn't work even if you did guess them?
18:27:50 <Deewiant> and evidently there's no indication of the deadline in the main listing :-/
18:28:30 <ais523> well, contests that are before the deadline are listed at the top, but unless a contest ended recently there's no after-deadline vs. no-deadline notification
18:29:05 -!- shinkuzin_ has quit (Read error: 113 (No route to host)).
18:29:56 <Deewiant> ew, topological sorting with regex
18:30:27 <ais523> I hacked up a solution in bash that used tsort, but it doesn't give the first answer in alphabetical order, so it was rejected
18:32:25 <ais523> Deewiant: some Perl golfers will try to do anything with regex
18:32:26 <ehird> i am adding an odd challenge
18:32:33 <ais523> normally because it often ends up shortest
18:32:34 <ehird> because only compiled languages will probably manage
18:32:39 <ehird> print 0 .. 99999
18:32:44 <ehird> that normally takes a while
18:32:51 <ais523> ehird: the binary, alnum, symbol is mine, BTW
18:33:19 <AnMaster> ehird, with leading 0 or not?
18:33:24 <ehird> Print out a lot _56K BEWARE_
18:33:28 <ehird> 56k beware, amusing
18:33:32 <ehird> AnMaster: with leading 0 and 99999
18:33:48 <ehird> http://golf.shinh.org/p.rb?Print+out+a+lot+_56K+BEWARE_
18:33:52 <ehird> may crash $BROWSER
18:34:09 <ehird> esp. don't try resizing
18:35:41 <ais523> Firefox managed fine for me
18:36:39 <ehird> heh
18:36:41 <ehird> haskell times out
18:36:45 <ehird> even the one i used to generate
18:37:05 <AnMaster> <ehird> print 0 .. 99999
18:37:08 <AnMaster> mh
18:37:10 * AnMaster tries
18:37:47 <ais523> ehird: even C times out for me
18:37:51 <ehird> does it?
18:37:56 <ehird> maybe a bad example
18:38:06 <ehird> :(
18:38:09 <ais523> I/O-bound would be my guess
18:38:18 <ais523> leave it there and see if anyone finds a solution
18:38:37 <ais523> after all, I was using printf, which is slow
18:38:47 <ehird> real 0m0.424s
18:38:49 <ehird> not too bad..
18:39:13 <ehird> ais523: maybe storing as an array of chars would work better
18:39:14 <ehird> then just puts
18:39:45 <AnMaster> damn
18:39:50 <AnMaster> ehird, what is the time limit?
18:39:56 <ais523> ehird: that would go over the input size limit
18:40:07 <AnMaster> real 0m2.625s
18:40:09 <AnMaster> locally
18:40:14 <AnMaster> is what my code in bash takes
18:40:15 <ais523> unless you compressed
18:40:20 <AnMaster> ehird, ^
18:40:26 <AnMaster> so that server must suck
18:40:31 <ehird> ais523: i meant
18:40:34 <ehird> operate on an array of chars
18:40:44 <ehird> char a[6];
18:40:45 <ais523> ehird: then you'd hit the memory limit
18:40:56 <AnMaster> ehird, what is the time limit
18:40:57 <ehird> you don't get it
18:40:58 <ehird> i mean
18:41:01 <AnMaster> because it fails at 2 seconds
18:41:02 <ehird> char a[6]="0";
18:41:03 <AnMaster> or so
18:41:06 <AnMaster> ehird, ...?
18:41:06 <ehird> then do arithmetic on that
18:41:09 <ehird> and just puts() when required
18:41:15 <ehird> jeez
18:42:23 <AnMaster> ehird, no?
18:42:33 <AnMaster> how long is timeout on that site?
18:42:37 <ehird> AnMaster: don't ask me!!
18:42:46 <ehird> few seconds
18:43:15 <AnMaster> ehird, then it got a sucky CPU
18:43:36 <ehird> AnMaster: like 1.5 seconds
18:43:41 <AnMaster> ...
18:43:42 <ehird> and its run under limits
18:43:42 <ehird> duh
18:43:49 <ehird> so it cant use resourcse
18:43:58 <ehird> its in the arbitary code execution business
18:44:02 <ehird> it's not gonna let you do just anything
18:44:08 <AnMaster> indeed
18:44:49 <SimonRC> hi
18:46:02 <ais523> ehird: really interesting problem, though, I wonder if anyone will manage to produce that output by any means at all
18:46:08 <ehird> ais523: does underlambda have continuations?
18:46:20 <ehird> if not, you should add 'em :)
18:46:26 <ehird> well, i mean call/cc of course
18:46:43 <AnMaster> real 0m0.335s
18:46:43 <ehird> writing a client-side continuation wiki will be hilarious
18:46:45 <AnMaster> locally
18:46:48 <ehird> you'll get hidden input form fields
18:46:52 <ehird> AnMaster: fisrt-time always lasts more
18:46:52 <AnMaster> ehird, yet it fails due to timeout on server
18:46:56 <ehird> with loads of underload code in it
18:47:01 <AnMaster> ehird, ?
18:47:05 <ehird> AnMaster: running a program the fisrt time always takes longer
18:47:16 <AnMaster> ehird, it tool less than a second locally
18:47:24 <AnMaster> yet that site fails due to timeout
18:47:31 <ehird> AnMaster: running a program the fisrt time always takes longer
18:47:31 <ehird> AnMaster: running a program the fisrt time always takes longer
18:47:33 <AnMaster> every time
18:47:37 <AnMaster> I tried several times
18:47:38 <AnMaster> so...
18:48:14 <AnMaster> ehird, IO on that site sucks, basically?
18:48:24 <ais523> probably due to all the sandboxing
18:48:31 <ehird> AnMaster: no, it redoes the program
18:48:35 <ais523> it overrides syscall IIRC
18:48:35 <ehird> try running a program just installed
18:48:41 <ehird> ais523: anyway, main(_,a){system(gets(a));}
18:48:44 <lament> IO sucks, there's no transformer for it!
18:48:46 <AnMaster> hm
18:48:46 <ehird> why does that timeout for the system challenge?
18:48:51 <ehird> it works on the second
18:48:54 <ehird> but none other
18:49:12 <ais523> ehird: timeouts depend on how many entries there are
18:49:25 <ais523> s/entries/examples/
18:49:33 <ais523> but I don't think that's the problem here
18:49:37 <ehird> hmm
18:49:40 <ehird> i really want test scripts
18:49:44 <ehird> i'd write one in bash:
18:49:51 <ehird> ./prog; echo $?
18:49:58 <ehird> and expect a number for the output
18:50:01 <ehird> would be fun
18:51:41 <ehird> http://golf.shinh.org/p.rb?Encoder+decoder I love this encoding method
18:51:42 <ehird> :D
18:51:47 <ehird> its just so obvious
18:52:44 <ehird> ,>,,,,,[-<->],[-]+[->,+]<[<]<[>>[.[-]>[>]<[.[-]]<[<]>]]>>[.>>]<<<[.<<] wow
18:53:02 <ehird> ais523: but yeah, underlambda continuations?
18:53:15 <ais523> ehird: C
18:53:27 <AnMaster> ehird, so why does it fail so much at IO?
18:53:33 <ais523> you get the call stack and value stack in one listy thing
18:53:48 <ais523> that you can adapt to become a continuation with a few commands
18:54:04 <ehird> ais523: can you define a command to make that convenient?
18:54:05 <AnMaster> ehird, I tried to make gcc compile a unrolled version to C, it did pretty well here, blazing fast 0.3 seconds,
18:54:13 <ais523> c is going to be a synonym for traditional call/cc, but there are a lot of other sorts of continuation you can make
18:54:13 <AnMaster> yet that server says timout
18:54:16 <AnMaster> timeout*
18:54:26 <ehird> ais523: can you define commands, though?
18:54:30 <ais523> AnMaster: I get 0.01 seconds for a Perl program that goes up to 9999
18:54:37 <ais523> but 29999 times out
18:54:43 <ais523> ehird: I'm not really sure, yet
18:54:52 <ais523> I think so but I haven't worked out the details
18:54:54 <ehird> ais523: btw, the magic line thinig -- i suggest seperating it from the specification
18:54:57 <AnMaster> hm
18:54:58 <ehird> i suggest:
18:55:07 <ehird> if the program starts with #!, interpreters must ignore everything up to the next newline
18:55:24 <ehird> then the actual programming language is all platonic and pure and that's just a nice helper for scripts
18:55:33 <ehird> that doesn't specify interpreter executable name or anything
18:55:38 <ais523> ehird: the whole point of the magic line was actually to make it possible to write an Underlambda interp in m4
18:56:03 -!- jix has quit (Nick collision from services.).
18:56:13 -!- jix has joined.
18:56:14 <ehird> ais523: well, maybe just drop the magic line thing altogether then :-)
18:56:18 <ehird> it's not as if 'underlambda file' is hard
18:56:23 <ehird> it would just make it 'cleaner' imo
18:56:31 <ais523> ehird: I like to have delimiters
18:57:04 <ais523> the | also gives you a way to do program/output separation for interps with one input stream
18:57:35 <ehird> ais523: ok, but the problem is that it's not quite the 'ultimate functional/stack/rewrite language'
18:57:38 <ehird> because it has that kludge
18:57:51 <ais523> it doesn't strike me as being a kludge
18:58:04 <ais523> but it's optional except for primitive interps anyway
18:58:30 <ais523> # is an illegal char in Underlambda, so it's easy enough to tell whether it was given or not
18:58:34 <ehird> ais523: it's a kludge because it brings things like UNIX into the picture
18:58:43 <ehird> and assumes that interpreters are called 'underlambda'
18:58:49 <ehird> and that /usr/bin/env does what you want
18:59:00 <ais523> well, I don't care too much about the script thing
18:59:08 <ais523> #underlambda would almost do just as well
18:59:18 <ais523> but why not make it scriptable if you have the chance?
18:59:33 <ehird> ais523: here's an idea..
18:59:39 <ehird> make # a comment character to end-of-line
18:59:42 <ehird> yes you can already do that with (...)!
18:59:50 <ehird> but it would provide that script thing without being a kludge
19:00:10 <ais523> comment-to-end-of-line would be a huge kludge
19:00:23 <ehird> ais523: ok, then just make the #! thing an implementation detail
19:00:26 <ais523> however, I'm toying with the idea of a comment-backwards-to-start-of-file syntax
19:00:28 <ehird> same with the m4-required-delimiters
19:00:48 <ehird> then the language itself is pure, platonic, ideal, etc
19:00:55 <ehird> and it's just the interpreter syntax
19:01:49 <ais523> yes
19:02:04 <ais523> there should be separate syntax for the program
19:02:13 <ais523> and what goes on around it to separate things for the interp
19:02:29 <ais523> the #! stuff can just be a recommended method of encapsulating a program for storage in a file system
19:02:36 <ehird> ais523: yes, in a little footnote
19:02:44 <ehird> it's also worth noting that yours sucks for irc bots
19:02:52 <ehird> since you have to input invalid programs and let the irc bot add the magic
19:02:52 <ehird> :)
19:03:04 <ais523> no, you just input program fragments
19:03:18 <ehird> ais523: even so, it would be nicer to be able to input a whole program
19:03:41 <SimonRC> how do you view the actual programs for that golf site?
19:03:50 <ais523> SimonRC: click on a username after the deadline
19:04:27 * SimonRC tries to figure out how it works
19:04:54 <ehird> SimonRC: how what works
19:05:03 <SimonRC> http://golf.shinh.org/reveal.rb?Encoder+decoder/nuko/1202353533&bf
19:05:03 <ehird> its open source
19:05:15 <ehird> ah
19:05:51 <SimonRC> wait, it can't work
19:05:58 <SimonRC> it throws away some of the input it needs
19:06:10 <AnMaster> real 0m0.722s
19:06:15 <AnMaster> for a bash version locally
19:06:17 <AnMaster> ehird, ^
19:06:35 <AnMaster> ehird, I'd say that server is rather broken
19:06:38 <ehird> SimonRC: well it does work
19:06:40 <ehird> AnMaster: it's not
19:06:47 <ehird> AnMaster: but complaining about it to me won't help. contact shinh
19:06:52 <AnMaster> ehird, it is very very slow
19:06:56 <ehird> ais523: remember that BLIT story I linked?
19:06:58 <AnMaster> ehird, is he on irc?
19:07:07 <ais523> ehird: which one?
19:07:17 <ehird> AnMaster: no. You'll have to use the electronic transmission framework over addresses before a domain name
19:07:18 <ehird> also known as email
19:07:22 <ais523> AnMaster: yes he is, #codegolf on this server
19:07:26 <ehird> ais523: http://www.infinityplus.co.uk/stories/blit.htm
19:07:29 <ehird> ais523: ooh, is he?
19:07:29 <ais523> and is online right now
19:07:35 <AnMaster> well sod it then
19:07:38 <ais523> that's what /whois is for, right?
19:07:43 <ehird> i guess so
19:07:43 <ehird> :D
19:07:44 <SimonRC> oh, wait I can see
19:07:51 <SimonRC> the "encode" is part of the input
19:08:04 <ehird> ais523: well, it occurs to me that BLITs do exist..
19:08:26 <ehird> the videos which induce seizures in people suffering from epilepsy
19:08:41 <SimonRC> like that pokémon episode
19:09:05 <ehird> yes!
19:09:09 <ehird> did it involve parrots?
19:09:17 <SimonRC> no
19:09:31 <ehird> :(
19:09:32 <SimonRC> that is mentionned here: http://en.wikipedia.org/wiki/Motif_of_harmful_sensation
19:09:38 <ehird> yep
19:09:42 <ehird> AnMaster: bugged shinh yet?
19:09:46 <SimonRC> IIRC there is an explosion and Pikachu's eye's flash
19:09:50 <AnMaster> ehird, too lazy
19:09:52 <SimonRC> only a fe were hurt
19:09:54 <ehird> SimonRC: i know of it
19:10:06 <ehird> denshi something porygon, I believe
19:10:10 <ehird> oh
19:10:11 <ehird> kind of
19:10:17 <ehird> Dennō Senshi Porygon sez wikipedia
19:10:18 <AnMaster> ehird, also the "gas" alternative refuses code that work locally, it should mention it is x86 not x86_64
19:10:19 <AnMaster> .....
19:10:41 <ehird> offending frame #1: http://upload.wikimedia.org/wikipedia/en/b/b4/Pikachu_seizure-2.jpg
19:10:50 <ehird> AnMaster: well duhhhh
19:10:56 <ehird> because everyone uses x86_64 and x86 is sooo rare
19:11:25 <AnMaster> ehird, well x86_64 is getting more common
19:11:41 <SimonRC> of course, being a harmful video, it is on Youtube
19:11:47 <ehird> SimonRC: heh
19:11:54 <SimonRC> Monroe was right
19:12:19 <ehird> the promotional video for this horrid olympics logo: http://upload.wikimedia.org/wikipedia/en/e/e4/All_London_2012_logos.PNG
19:12:22 <ehird> caused some seizures, iirc
19:12:34 <Deewiant> how timely, I just watched that pokemon scene a week or two ago
19:12:45 <Deewiant> I recall being surprised at how easily people get seizures
19:12:52 -!- marshmallows has quit ("Leaving").
19:12:58 <ais523> yes, I remember the news reports, they had to show the olympics video at 1/10 speed on the news so as not to cause seizures in people
19:13:13 <ehird> ais523: yep
19:13:15 <ehird> it was hilarious
19:13:28 <ehird> perhaps they had seizures from the shock of how crap the logo was
19:14:22 <ehird> Deewiant: just watched it
19:14:25 <ehird> was that *it*?
19:14:32 <Deewiant> exactly
19:14:35 <Deewiant> I suppose it was
19:14:40 <SimonRC> on a big TV though
19:14:50 <SimonRC> with a the kid sitting 1m away
19:14:52 <ehird> SimonRC: i guess so
19:14:56 <ehird> hmm, 1m
19:14:58 <SimonRC> in a dark room
19:15:01 <ehird> you give too much credit to little kids
19:15:08 <SimonRC> when they are naturally epileptic
19:15:24 <SimonRC> + usual hysteria
19:15:33 <SimonRC> it's a popular show
19:15:35 <lament> that logo is embarassingly bad
19:15:39 <ehird> lament: you bet..
19:16:03 <SimonRC> Then, there was the case of Ecky Thump
19:16:14 <ehird> lament: as usual, wikipedia says it best:
19:16:16 <ehird> why is there no logo at the top!? —Preceding unsigned comment added by 86.160.179.159 (talk) 20:22, 30 October 2007 (UTC)
19:16:16 <ehird> It's hidden halfway through the article because everybody's ashamed of it. --67.160.32.3 (talk) 00:02, 27 November 2007 (UTC)
19:16:18 <SimonRC> The sketch in one episode of the Goodies that made a guy die laughing
19:16:32 <ehird> http://en.wikipedia.org/wiki/Fatal_hilarity
19:17:27 <ais523> ehird: that's a great Wikipedia article title
19:17:48 <lament> "London 2012 has stated that the new logo is aimed at reaching young people. "
19:18:10 <ehird> http://www.albinoblacksheep.com/flash/rgb my favourite seizure flash
19:18:33 <ehird> i think it should be my 'under construction' page
19:18:34 <ehird> :D
19:18:47 <lament> "It was widely commented that the logo resembles an image of the cartoon character Lisa Simpson performing fellatio[22] and others have complained that it looks like a distorted Swastika."
19:18:56 <Deewiant> I wonder how people who get seizures from stuff like that pokemon manage on the internet
19:18:59 <ehird> lament: it's true!
19:19:14 <Deewiant> you'd expect them to be dropping like flies
19:19:31 <ehird> Deewiant: well, that WOULD kind of solve the problem..
19:19:38 <ehird> :p
19:19:56 <lament> now that i look at it, it does look exactly like lisa simpson performing fellatio.
19:20:02 <SimonRC> ehird: ouch my eyes
19:20:05 <lament> amazing that i haven't noticed it before
19:20:11 <ehird> SimonRC: hee
19:20:13 <SimonRC> jesus christ that is bad to look at
19:20:15 <ehird> dudududadadaddudu
19:20:17 <ehird> dudududadadadu
19:20:24 <ehird> dududududududududududududududu
19:21:00 <SimonRC> Surely that was developed for use at Gitmo?
19:21:32 <SimonRC> OTOH, the shot where there are just the three stripes that don't flash ruins the effect
19:21:35 <SimonRC> maybe
19:22:43 <ehird> speaking of epilepsy
19:22:43 <ehird> http://www.theinquirer.net/gb/inquirer/news/2008/03/31/epilepsy
19:22:49 -!- olsner has joined.
19:22:53 <SimonRC> hi
19:23:03 <ehird> i love the jump from 'The site linked to ebaumsworld' to 'anonymous did it'
19:23:32 <SimonRC> heh
19:23:38 <olsner> heh, I love how people are treating "anonymous" as if it was a single organized entity
19:23:41 <SimonRC> as if Anonymous were an organisation
19:24:12 <SimonRC> the whole fucking point is that not only do they not have names, they do not have authewntication or authorisation
19:24:39 <ehird> SimonRC: to be honest they do it themselves
19:24:46 <SimonRC> there can't be any leadership as they cannot tell one another apart and cannot tell "members" from non-"members"
19:24:46 <ehird> I'm talking about the 7chan&co that are attacking CoS
19:25:14 <ehird> SimonRC: Well, they do all use one wiki & irc channel... They have unintentionally created an entity out of themselves
19:25:26 <SimonRC> kinda
19:25:53 <lament> at least my city has a nice logo for its upcoming olympics: http://en.wikipedia.org/wiki/Image:2010_Winter_Olympics_logo.svg
19:26:37 <ehird> stonehenge robot
19:26:44 <SimonRC> yup
19:27:52 <lament> it's a statue that's standing on the beach downtown
19:28:27 <ehird> bullcrap
19:29:35 <ehird> ais523: is there an underlambda that works Right Now and you can write stuff in?
19:29:44 <ais523> yes
19:29:48 <ehird> ais523: heh: 'I feel we have too many problems these days. Please make some time delay before adding problem. I personally think ~5 active problems are enough to work hard for each problem.'
19:29:49 <ehird> poor shinh
19:29:52 <ehird> can't keep up
19:29:52 <ehird> ;)
19:29:54 <ais523> I think I pasted it already, though
19:30:01 <ais523> I can dig it out again if you like
19:30:16 <ais523> (it's only half-complete, but what's implemented works, and I haven't written the rest of the implementation)
19:30:26 <ais523> s/implementation/specification/
19:31:19 <AnMaster> who was it that said were were out of over/under/un/whatever lambda names?
19:31:25 <AnMaster> a few days ago
19:31:55 <ais523> ehird said it
19:32:06 <AnMaster> well I just came up with a name
19:32:11 <AnMaster> uberlambda
19:32:14 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
19:32:16 <AnMaster> sounds fun
19:32:52 -!- Judofyr has joined.
19:34:12 <ais523> ehird: http://pastebin.ca/965007 if you're interested
19:34:24 <ais523> well, it's there even if you aren't interested
19:34:39 <SimonRC> hmm
19:34:46 <ehird> ais523: that is redundant
19:34:56 <ehird> you said 'if' not 'iff'
19:34:56 <ais523> ehird: in what way?
19:35:10 <ehird> if (you.interested) { exists = true; } /* exists may be true anyway */
19:35:12 <ais523> ehird: if doesn't imply not-fi
19:35:15 <ehird> what you said is like:
19:35:23 <ehird> if (you.interested) { exists = true; } else { exists = true; }
19:35:30 <ais523> I stated that exists was true anyway, not merely that it may be true anyway
19:35:50 <ais523> so yes, redundant, but only because my second statement was a generalisation of the first
19:36:22 <ehird> ais523: is that as usable as Underload/more usable/what?
19:36:24 <ehird> or is it less
19:36:33 <ais523> it's more usable than Underload
19:36:38 <ais523> it has arithmetic, if you've noticed
19:36:52 <ais523> (it's meant to be able to divide too but I couldn't figure out the rewrite rule)
19:37:16 <ais523> the idea is that although you /can/ write the lower-tiered things with rewrite rules, any sane implementation should optimise things like addition
19:37:22 <ais523> (although that one doesn't)
19:37:23 <ehird> ais523: any eaxmples?
19:37:35 <ais523> not really
19:37:44 <ais523> I have a few files I've been working on
19:38:22 <ais523> ((::**:*:*:*:*)((:)~*(*)*:o(h)~^^O):::**::***^!)::*::***^ohhhhhhhhhhhO(
19:38:22 <ais523> )!()i((o(h):*::**::*::***^hO^)~HI:^):^^uhhhhhhhhhhhO
19:38:31 <ais523> that's a test of tier 1a
19:38:35 <AnMaster> wtf
19:38:37 <AnMaster> is that
19:38:46 <ais523> low-tier Underlambda
19:38:50 <AnMaster> oh god
19:38:55 <ais523> the sort which is easy to implement, but hard to write
19:39:07 <ais523> as you get into higher tiers it becomes easier to write and more readable, but harder to implement
19:39:14 <ais523> but the high tiers compile into the low ones
19:39:43 <ehird> (Hello, world!)S doesn't work
19:39:44 <ehird> :(
19:39:52 <ehird> (hello)S outputs (hello)
19:39:53 <ais523> ehird: no
19:40:09 <ais523> and (hello)S outputting (hello) is unreliable and shouldn't be guaranteed
19:40:21 <ais523> you see, Underlambda has first-class functions, rather than first-class strings
19:40:37 <ais523> there'll be some syntax like "Hello, world!"somethinggoeshere in a higher tier, though
19:41:20 <ehird> ais523: so right now i cannot write real programs
19:41:20 <ehird> great
19:41:21 <ehird> :)
19:41:30 <ais523> ehird: that's why it's a work in process
19:41:39 <ais523> s/process/progress/
19:41:55 <ehird> ais523: C doesnt' work yet
19:41:59 <ais523> BTW, it will eventually be the case that Brainfuck minus comments is also legal Underlambda
19:42:03 <ais523> ehird: C ought to work
19:42:11 <ais523> but remember that it isn't call/cc, but a precursor to it
19:43:35 <ehird> ais523: (a)(b)CS
19:43:36 <ehird> outputs nothng
19:43:41 <ais523> call/cc can be implemented in terms of it; prepend an A and append ^Q works as long as you don't want to send a payload, if you want to send payloads it's slightly more complicated
19:43:57 <ais523> ehird: it works for me
19:44:28 <ais523> I get ((a)(b)(S)) mixed in with the debug output
19:45:44 <ais523> you can turn the debug output off by commenting one of the lines out for a cleaner view
19:45:51 <ehird> ais523: make it:
19:45:57 <ehird> ((STACK)(CONT))
19:46:01 <ehird> otherwise it's a bit fiddly
19:46:12 <ais523> ehird: no, you're defeating the whole point of C
19:46:16 <ais523> that sort of thing is what c is for
19:46:28 <ais523> C is the low-tier accessor routine that lets you implement it
19:46:33 <ehird> ais523: well, even so
19:46:36 <ehird> it's (STACK(CONT))
19:46:38 <ehird> which is silly
19:46:40 <ehird> whichever way you look at it
19:46:59 <ais523> ehird: not when you take into account how Underlambda lists work
19:47:24 <ais523> it's just ((a)(b)(c)) and you use continuations and all sorts of fancy tier 3 stuff to process them (or alternatively, an optimising interp that does it sanely)
19:47:37 <ehird> eh. ais523: nice quine: C:^^
19:47:39 <ehird> err
19:47:40 <ehird> not quine
19:47:43 <ehird> infini loop
19:48:01 <ais523> why the colon?
19:48:10 <ehird> ais523: to duplicate the continuation
19:48:16 <ehird> otherwise, once we ^^, the program becomes '^^'
19:48:56 <ais523> OK, I see
19:50:01 <ehird> CC^^ also works
19:50:51 <ais523> that one's cooler
19:51:20 <ais523> there's a stack element that's apparently doing nothing but is in fact providing input to the second C
19:53:42 <ehird> ais523: C^C^C^C^
19:53:47 <ehird> keep adding more ^s, get more stuff
19:54:19 <ais523> that's a nice recursive pattern there
19:54:30 <ais523> oh dear, are we going to end up with a new rival to Subtle Cough?
19:55:47 <ais523> somehow I doubt that C and ^ are TC by themselves
19:55:50 <ehird> heh
19:56:03 <ehird> well its certainly more powerful than subtle cough
19:56:29 <ais523> it's a bit louder than a subtle cough
19:56:39 <ais523> but not quite an obvious cough
19:57:21 <ais523> wow, CCC^^ made Perl segfault
19:58:01 <ehird> me too
19:58:05 <ehird> its pretty though
19:58:23 <ais523> I wonder why it segfaults on something as innocent-looking as that?
19:58:30 <ais523> it's not as if the strings got very long
19:59:31 <ehird> ais523: report it as a bug
19:59:53 <ais523> I'd have to pin it down first
20:00:09 <ais523> and anyway, I'm tired after a night of no sleep, so I think I'll go home now
20:00:12 -!- ais523 has quit ("bye!").
20:00:22 <ehird> i was just about to ask something
20:00:23 <ehird> :<
20:17:08 <SimonRC> through lack of inspiration, I decided to re-write the team whiteboard upside-down
20:18:10 <AnMaster> SimonRC, eh?
20:18:35 <SimonRC> FDJ
20:18:39 <AnMaster> ???????????
20:18:39 <SimonRC> um,
20:18:42 <SimonRC> AFJ
20:18:50 <AnMaster> what are you talking about?
20:19:18 <SimonRC> tomorrow
20:24:08 <AnMaster> ????
20:24:10 <AnMaster> whatever
20:24:14 <ehird> AnMaster: april fools day
20:24:14 <ehird> duh
20:24:26 <AnMaster> ehird, that is several hours left
20:24:34 <ehird> its not even april 1st yet..
20:24:39 <ehird> 20:24 31 march
20:24:44 <AnMaster> mn mar 31 21:24:44 CEST 2008
20:24:45 <AnMaster> here
20:24:54 <ehird> SimonRC did it for TOMORROW
20:25:00 <AnMaster> ah right
20:25:00 <ehird> i.e. the next time people will see it is toorrow
20:25:01 <RodgerTheGreat> oh, man- I need to plan some kind of brilliant april fools day joke
20:25:02 <ehird> *tomorrow
20:25:12 <ehird> RodgerTheGreat: get a BLIT onto some high-profile website
20:25:17 <AnMaster> I wonder what the RFC ppl will come up with
20:26:26 * AnMaster writes a note to himself so he won't get fooled by other family members in the morning
20:26:26 <SimonRC> RodgerTheGreat: how about the old staples of turning shit upside-down, and related ones
20:26:36 <AnMaster> I'm always so sleepy in the mornings
20:26:40 <SimonRC> or post-its on the bottom of the mice
20:26:57 <RodgerTheGreat> SimonRC: nah, but coming up with something *involving* staples could be fun
20:27:12 <RodgerTheGreat> maybe I'll burn all my roommate's possessions
20:27:17 <AnMaster> nah
20:27:22 <AnMaster> that would be too evil
20:27:39 <AnMaster> at least if you did it
20:27:39 <RodgerTheGreat> better:
20:27:52 <olsner> april's fools would be to make your roommate *believe* you've burned all her possessions
20:28:02 <AnMaster> indeed
20:28:34 <ehird> RodgerTheGreat: i still say BLIT
20:28:41 <RodgerTheGreat> "steal" everything. He wigs out like "where's all my stuff?" "Ahahaha- just kidding. I took all the stuff and just hid it" "Oh- heh. Where is it?" "In this small box. I burned everything to make sure you wouldn't find it by accident."
20:28:49 <SimonRC> heh
20:31:06 -!- cherez has joined.
20:31:06 <olsner> lossy compression
20:31:27 <RodgerTheGreat> olsner: exactly! :D
20:31:28 <SimonRC> I wonder if there is something funny I could do with the book-case...
20:31:42 <olsner> turn it around, so that the books are facing the wall
20:31:57 <SimonRC> that just feels unfunny though
20:32:01 <RodgerTheGreat> SimonRC: scan every book, mirror all the pages, reprint and rebind them all.
20:32:11 <SimonRC> too difficult
20:32:19 <RodgerTheGreat> but just imagine the effect
20:32:23 <SimonRC> um, yeah
20:32:34 <RodgerTheGreat> if I had the proper equipment, I'd totally do it
20:32:39 <olsner> you could reverse someone's desk, like put the monitor facing backwards, with all the cables hanging down the front
20:32:53 <SimonRC> not possible with these desks
20:33:02 <olsner> grmbl
20:33:23 <RodgerTheGreat> how about just editing people's config files to mirror the stereo to their speakers. See how long, if ever, it takes for them to notice.
20:33:23 <SimonRC> and that just sounds like a way to waste people's time without being funny
20:33:33 <SimonRC> no speakers
20:33:36 <SimonRC> and no root
20:33:37 <RodgerTheGreat> fuck
20:33:41 <RodgerTheGreat> double fuck
20:33:52 <olsner> kind of unfunny waste of someone's time, yeah
20:34:00 <SimonRC> I could swap people's monitors though
20:34:04 <SimonRC> we get 2 each here
20:34:11 <ehird> its very simple
20:34:13 <ehird> the best thing to do is
20:34:17 <ehird> take someone's monitor away
20:34:21 <ehird> make a photo of the screen behind them
20:34:22 <olsner> "Cake in the canteen!" -> "Fooled ya!" note instead of cake
20:34:22 <ehird> then
20:34:26 <ehird> claer off the desktop
20:34:26 <ehird> 100%
20:34:30 <ehird> so that its just the bg image
20:34:35 <ehird> and set that picture to the background
20:34:43 <ehird> 'who the hell took away my monitor's screen?!?!?!?!'
20:34:49 <olsner> heh, wonder if that fool's anyone though
20:34:53 <RodgerTheGreat> "invisible monitor lol"
20:34:56 <SimonRC> haven't6 got the equipment
20:34:57 <olsner> *fools
20:34:58 <ehird> olsner: people do it just as a regular desktop
20:35:02 <ehird> but as a prank it woudl work great
20:35:16 <sekhmet> Could take a screenshot of the person's desktop, set that as the background, then remove all their actual icons
20:35:18 <oklopol> i vote for a shot in the head
20:35:23 <SimonRC> sekhmet: boring
20:35:24 <ehird> http://www.flickr.com/photos/w00kie/7234920/in/set-180637/
20:35:32 <ehird> that, but without the menus etc
20:35:33 <sekhmet> SimonRC: Yeah, I lose.
20:35:33 <sekhmet> :/
20:35:35 <ehird> sekhmet: too common
20:35:36 <oklopol> ...or what were we talking about?
20:36:32 <olsner> oklopol: check the date of today or tomorrow (depending on time zone)
20:36:35 <ehird> more: http://www.flickr.com/photos/w00kie/sets/180637/
20:36:45 <oklopol> olsner: check my nick, i'm never serious
20:37:00 <oklopol> ...assuming you recall me telling that to you earlier
20:37:36 <oklopol> well i guess in the usual case i have no idea what day it is
20:37:44 <olsner> never serious? not even when saying you're never serious?
20:37:53 <oklopol> but it's pretty simple to guess from what you're ...swiggling
20:37:57 <oklopol> i'm not a man of words
20:38:13 <oklopol> olsner: when saying that, i'm the least serious ever
20:38:20 <olsner> from my viewpoint, however, you're made entirely of words
20:38:36 <olsner> oklopol :: [String]
20:45:39 <ehird> oh wow
20:45:39 <ehird> http://www.flickr.com/photos/w00kie/11033741/in/set-180637/
20:48:09 <SimonRC> kewl
20:48:14 <ehird> yeah
20:48:21 -!- wildhalcyon has joined.
20:48:23 <ehird> (trick: the sleeve is the only thing outside the pic)
20:48:31 <SimonRC> I guessed
20:48:38 <wildhalcyon> hola
20:49:15 <olsner> I read the second comment and figured it out instantly
20:52:56 <SimonRC> well, the next thing to do is set up two screens to look like the two portals from Portal.
20:55:06 <ehird> SimonRC: wait, how about
20:55:09 <ehird> two screens back to back
20:55:15 <ehird> one looks through to the wall
20:55:17 <ehird> and so does the other
20:55:21 <ehird> :D
20:55:30 <ehird> so it seems like there's TWO empty screens
20:55:32 <ehird> from both sidse
20:55:36 <ehird> actually, wait, no
20:55:37 <SimonRC> which one?
20:55:39 <ehird> one screen looks to the wall
20:55:42 <ehird> the other one sees the other screen
20:55:43 <ehird> :D
20:58:17 <wildhalcyon> So, ehird, I took what you said yesterday and spent some time looking at my project.
20:59:51 <ehird> and ate it
20:59:52 <ehird> ?
21:00:16 <wildhalcyon> No, I thought about how I might tweak it to make it more... real world applicable.
21:00:19 <ehird> :)
21:00:35 <wildhalcyon> I didn't have any access to outside communication, I was very bored.
21:00:42 <wildhalcyon> I came up with a design I thought was pretty neat
21:01:32 <wildhalcyon> I wanted to look at a couple things first - to really flesh out the idea, y'know?
21:02:15 <wildhalcyon> Unfortunately, what I implemented was very, very close to Smalltalk. :-(
21:04:45 <wildhalcyon> There are some differences - I've made processes and interfaces part of the language structure, but otherwise its very similar.
21:05:20 <ehird> wildhalcyon: So use smalltalk!
21:06:15 <wildhalcyon> But I was trying to create something different. Unique. I kind of feel like I failed in that endeavor
21:17:30 <ehird> wildhalcyon: You independantly invented Smalltalk.
21:17:44 <ehird> Many people have started at a basis and arrived at something terrible.
21:17:51 <ehird> But you're clever enough to come up with Smalltalk.
21:17:54 <ehird> That's pretty good, I'd say.
21:20:04 <GregorR> This is simply a sign that Smalltalk is the messiah.
21:22:41 -!- RedDak has joined.
21:23:56 -!- wildhalcyon has quit (Read error: 104 (Connection reset by peer)).
21:25:19 -!- wildhalcyon has joined.
21:25:26 <wildhalcyon> Sorry, back
21:26:29 <wildhalcyon> I don't want to say I implemented Smalltalk, or wrote a smalltalk specification, but all the ideas I had were ideas that were written into Smalltalk - including some things such as what questions an object should be able to ask - or even the concept of objects asking questions
21:32:43 <SimonRC> wildhalcyon: have you looked at colorforth?
21:32:52 <wildhalcyon> I've glanced at it once, why?
21:33:01 <SimonRC> I thought it might give you ideas
21:33:05 <SimonRC> like the color
21:33:16 <SimonRC> or the minimalism
21:33:31 <lament> or the insanity?
21:33:40 <SimonRC> that too
21:34:12 <wildhalcyon> I'm down with the last two
21:34:12 <lament> also, smalltalk IS the messiah.
21:34:14 <wildhalcyon> color too, alright
21:34:19 <wildhalcyon> I don't know abotu that lament.
21:34:26 <wildhalcyon> I'm not crazy about the syntax
21:34:32 <SimonRC> wildhalcyon: more generally, the pre-parsing
21:34:33 <lament> wildhalcyon: well, why did you invent it and not something else? :{
21:35:04 <wildhalcyon> I didn't invent the syntax, just the language itself
21:35:06 <wildhalcyon> and the internet
21:35:12 <wildhalcyon> and color.
21:35:24 <lament> the syntax is a very small part of smalltalk.
21:35:30 <lament> it's superficial.
21:35:55 <lament> Squeak has several alternate syntaxes
21:36:04 <lament> you can switch from one to another in the editor
21:36:16 <wildhalcyon> For real?
21:36:19 <wildhalcyon> alternative syntaxes?
21:36:26 <lament> you can probably add your own fairly easily
21:37:09 <lament> too bad it's squeak :(
21:37:35 <ehird> squeak sucks because of its UI
21:37:39 <ehird> and its closed-world view
21:37:41 <lament> (also, what's wrong with the syntax? the method calls in particular are awesome)
21:37:45 <wildhalcyon> well, I could write my own UI too
21:37:46 <ehird> i don't mind the vm + custom ui view
21:37:48 <ehird> but plz make it not as ugly
21:37:55 <ehird> and plz make outside-world interaction easy
21:37:55 <lament> ehird: the ui's allright
21:38:05 <wildhalcyon> lament - its weird how sometimes the variables go in front, sometimes in back. And they're addicted to colons
21:38:09 <lament> but the closed world thing kinda kills it :(
21:38:13 <lament> wildhalcyon: ??????
21:38:16 <lament> what?
21:38:34 <ehird> wildhalcyon: you sound like everyone who has never programmed in smalltalk
21:38:46 <wildhalcyon> I never have programmed in smalltalk
21:38:47 <ehird> & only superficially understands it
21:39:09 <lament> wildhalcyon: perhaps you should. It is the messiah after all.
21:39:10 <ehird> suprise!
21:39:18 <ehird> wildhalcyon: then you don't know if you invented smalltalk or not
21:39:20 <wildhalcyon> I'm only complaining about the syntax, not the deeper structure
21:39:31 <lament> yeah, but it looks you don't know/don't understand the syntax
21:39:59 <wildhalcyon> Well, maybe I don't I guess.
21:40:04 <GregorR> Smalltalk's syntax is simple and elegant.
21:40:22 <lament> heh : http://www.esug.org/whyusesmalltalktoteachoop/smalltalksyntaxonapostcard/
21:40:44 <wildhalcyon> thanks for that
21:41:09 <ehird> #(..) sucks though
21:41:18 <ehird> you should be able to do expressions in it
21:41:19 <ehird> not just constants
21:42:24 <SimonRC> bah, real Smalltalks use _ for assignment, and render it as left-arrow
21:42:27 <SimonRC> :-)
21:42:29 <ehird> SimonRC: :)
21:42:36 <ehird> Squeak renders ^ as up-arrow
21:42:37 <ehird> i love it
21:42:46 <SimonRC> _ was originally left-arrow, to go with ^ as up-arrow
21:43:02 <lament> i'd prefer <-
21:43:04 <SimonRC> squeakhas both of those
21:43:19 <SimonRC> a<-b a < (-b)
21:43:25 * SimonRC goes to bed
21:43:34 <ehird> byebye SimonRC :-)
21:43:34 <wildhalcyon> Well, this turned out worthwhile then
21:43:44 <wildhalcyon> bye SimonRC
21:43:47 <ehird> wildhalcyon: try programmign in smalltalk :)
21:43:48 <lament> of course, the idea of arbitrarily replacing characters with other characters fits nicely with smalltalk's idea of a closed world
21:44:02 <wildhalcyon> what do you mean by closed world?
21:44:03 <lament> or at least, squeak's
21:44:14 <ehird> wildhalcyon: when you start squeak
21:44:17 <ehird> you get one window
21:44:20 <ehird> where its own graphics engine runs
21:44:26 <ehird> and its own windows, font rendering, mouse handling etc
21:44:30 <lament> wildhalcyon: many smalltalks, including squeak, try to be an operating system instead of just an interpreter
21:44:37 <ehird> and generally you are encouraged to stay out of things like the filesystem
21:44:41 <ehird> and handle everything in the VM
21:44:46 <ehird> the VM can be stored and reloaded from a single file
21:45:03 <lament> squeak is an operating system for its VM
21:45:15 <ehird> lament: the reason of course is that smalltalk WAS an operating system
21:45:31 <wildhalcyon> Oh, okay
21:45:36 <lament> sure, and that's fine, but these days it's a pretty dumb approach
21:45:48 <lament> on the other hand, gnu smalltalk seems to be under active development :)
21:45:48 <wildhalcyon> so its closed in the sense that it keeps you out of the rest of your machine?
21:45:54 <ehird> wildhalcyon: not keep you out
21:45:59 <ehird> just nudge you in the other direction
21:46:00 <ehird> hard.
21:46:43 <wildhalcyon> ok
21:46:43 <lament> the real issue is that the concept of a "program" makes a lot sense in smalltalk than it does in, say, java
21:46:48 <lament> er
21:46:51 <lament> *a lot LESS sense
21:46:56 <ehird> yeah
21:47:03 <ehird> smalltalk is a bunch of objects
21:47:05 <wildhalcyon> Well, maybe I can still implement my design in Smalltalk. That might still be interesting.
21:47:12 <ehird> and an app is nothing
21:47:13 <lament> which is really fun one on hand, but absolutely painful and retarded on the other.
21:47:17 <ehird> you just create objects and tell them to do stuf
21:47:19 <ehird> f
21:47:21 <ehird> just like an OS
21:47:28 <lament> and likely one of the main reasons why smalltalk died
21:47:29 <ehird> lament: you CAN do headless stuff with squeak iirc
21:47:32 <ehird> there's even gtk bindings and stuff
21:48:19 <lament> ehird: sure but i don't even want to think about the terrible dependency hell that results due to everything being together as one Big Ball Of Mud while you're developing it.
21:48:31 <wildhalcyon> Can you spawn additional processes in smalltalk from a single process?
21:48:32 <ehird> lament: yeah
21:48:34 <ehird> it's not ideal
21:48:42 <ehird> lament: what do you think about Factor?
21:48:48 <ehird> its listener/IDE thing is custom ui
21:48:50 <ehird> but it supports scripting
21:48:54 <lament> i haven't seen it
21:49:00 <ehird> its like Squeak lite that hugs the outside world
21:49:11 <lament> i think stack based languages are stupid
21:49:29 <wildhalcyon> Why? (I agree, but just curious what you think)
21:49:41 <ehird> lament: not stack-based
21:49:42 <ehird> concatenative
21:49:42 <lament> because a stack is a very unnatural abstraction
21:49:43 <ehird> :)
21:50:01 <ehird> lament: so unix pipes are unnatural?
21:50:04 <wildhalcyon> Lament, only if you're not talking about a stack of books, or papers, or anything else that appears naturally as a stack
21:50:22 <lament> ehird: unix pipes are dataflow
21:50:29 <ehird> lament: so is a stack language
21:50:44 <lament> ehird: how do you do "rot" in unix?
21:51:08 <ehird> lament: you don't because unix pipes are crippled dataflow
21:51:19 <lament> ehird: no, you don't because it's not stack-based
21:51:21 <ehird> (languages (applicative (in (backwards (is (composition (function))))))) -- Slava Pestov, creator of Factor
21:51:44 <ehird> to be honest most functions i write are function composition with a little bit of application
21:51:52 <ehird> so that seems reasonable
21:57:03 -!- jix has quit ("CommandQ").
22:04:52 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
22:06:19 -!- Judofyr has joined.
22:10:40 <lament> ehird: a program (a function) should deal with the stuff in the domain of the problem it is solving.
22:10:58 <lament> ehird: and not with the stuff which is completely irrelevant to the problem it is solving.
22:11:18 <lament> "A programming language is low level when its programs require attention to the irrelevant."
22:11:41 <lament> stack management is exactly this type of low-level irrelevant stuff.
22:12:28 <lament> also, remember the whole conversation in #haskell from yesterday about how good names are and how silly Peaker is for trying to get rid of them. Having a stack means exactly that - you get rid of names.
22:13:40 <wildhalcyon> Smalltalk is pretty cool
22:13:50 <wildhalcyon> I read the design principles document
22:13:56 <ehird> lament: well, the idea is making it high-level enough through defining words that you don't see the stack manip
22:14:01 <ehird> & providing combinators to hide it
22:14:03 <ehird> like recursion in haskell.
22:14:22 <lament> ehird: that doesn't solve the loss-of-names problem
22:14:27 <lament> which also happens in haskell a lot
22:14:33 <lament> (esp. with pointfree style)
22:14:57 <lament> compare and contrast with the wonderful magical smalltalk method call syntax :)
22:15:00 <ehird> lament: but haskell is restricted to one return value
22:15:10 <ehird> and using (.) the rightmost can only consume one value
22:15:16 <ehird> and also since haskell isn't designed for that
22:15:17 <lament> ehird: right, which makes the problem a little less important
22:15:20 <ehird> it doesn't have a lot of the useful combinators
22:15:36 <ehird> real concatenative languages have useful combinators and none of those restrictions
22:16:16 <lament> you still have to keep track of the stack (i'm guessing)
22:17:32 <lament> hell, 'dup' is the first word introduced
22:17:48 <lament> in the cookbook
22:18:29 <lament> also, the argument about function application being backwards looks completely retarded given code like this:
22:18:33 <lament> [ drop "negative" ] [ zero? [ "zero" ] [ "positive" ] if ]
22:19:12 <ehird> lament: you don't have to keep track of the stack because there are high-level combinators doing it for you
22:19:20 <ehird> and introducing 'dup' is just like introducing recursion in a haskell tutorial
22:19:28 <ehird> you rarely use it
22:20:03 <lament> honestly this single defn is enough to make me never look at Factor again
22:20:04 <lament> : sign-test ( n -- ) dup 0 < [ drop "negative" ] [ zero? [ "zero" ] [ "positive" ] if ] if print ;
22:20:14 <ehird> lament: it's a COOKBOOK
22:20:19 <ehird> also, that word definition is horible
22:20:24 <ehird> that is true
22:20:27 <ehird> 'Shuffle word and definition cookbook'
22:20:29 <ehird> that's 'reference'
22:20:31 <ehird> not tutorial
22:20:37 <lament> ehird: can you give a good-looking definition for sign-test?
22:20:56 <ehird> lament: you would rarely want to write a function like that
22:21:05 <ehird> #concatenative is the factor channel. ask them. i don't code in factor much
22:21:10 <lament> i see :)
22:21:29 <lament> i don't want to go there, it would come across as trolling
22:21:55 <ehird> lament: they're very friendly
22:22:07 <ehird> just say that you were wondering if this looks ugly to anyone else
22:22:08 <wildhalcyon> alright, I need to get out of here. Thanks for the help ehird and lament
22:22:08 <ehird> or something
22:22:13 <ehird> bye wildhalcyon :)
22:22:47 -!- wildhalcyon has left (?).
22:22:48 <lament> aha, here it is in a different part in the cookbook, using a different combinator:
22:22:51 <lament> { { [ dup 0 > ] [ "positive" ] } { [ dup 0 < ] [ "negative" ] } { [ dup zero? ] [ "zero" ] } } cond
22:23:13 <ehird> lament: that will look better on multi lines
22:23:20 <ehird> { { [ dup 0 > ] [ "positive" ] }
22:23:20 <lament> why the 'dup's everywhere? because stack-based languages suck
22:23:25 <ehird> lament: err no
22:23:28 <ehird> because that's not typical code
22:23:29 <ehird> seriously
22:23:32 <ehird> #concatenative
22:23:49 <lament> also, the 'cond' at the end is just so ugly
22:23:57 <lament> maybe i'm not Japanese enough
22:23:58 <lament> to appreciate it
22:24:13 <ehird> lament: Slava Pestov is certainly not japanese..
22:24:16 <ehird> #concatenative
22:24:29 <lament> you're reading the program top to bottom. If the cond body is two pages long, you have to scroll down first to see that it's a cond, then scroll back up.
22:24:40 <ehird> #concatenative
22:24:45 <ehird> also
22:24:49 <lament> if it's not two pages long, you still have to do it mentally
22:24:49 <ehird> if you hae a two-page long cond body
22:24:52 <ehird> your code is fucked
22:25:23 <lament> if it's two lines long, you still have to glance at the end of the thing to see that it's a cond. The point is, you just can't read the code in order that it's written.
22:25:58 <lament> anyway, you don't program in Factor so i don't have to convince you of anything :)
22:26:00 <ehird> #concatenative
22:26:01 <ehird> #concatenative
22:26:01 <ehird> #concatenative
22:26:06 <ehird> lament: i do occasionally
22:27:06 <lament> you suggest me to go to #concatenative just to tell them "hey, your language sucks"?
22:27:47 <ehird> no
22:27:53 <ehird> to ask them about your queries in a reasoned manner
22:27:59 <ehird> and debate the plusses and minuses
22:28:07 <lament> as far as i can see, they're not queries.
22:28:08 <lament> :)
22:28:25 <ehird> lament: they are, they have the implicit 'Am I wrong?'
22:28:34 <ehird> you are new to factor, you are unconvinced. of course they'll be friendly
22:28:37 <lament> i'm just saying it sucks, and i think i have explained why. I'm not wrong. :)
22:28:55 -!- RedDak has quit (Remote closed the connection).
22:29:06 <ehird> lament: you are wrong, and #concatenative will tell you why
22:29:17 <lament> (not factor, which i'm sure is awesome. Just the idea of stack-based languages)
22:29:21 <ehird> being 100% sure that you are correct without asking the people who can truly tell you why they think you are wrong is just idiotic
22:29:57 <lament> well, i'm clearly right about the difficult-to-read word order
22:30:14 <ehird> lament: just ask
22:30:17 <ehird> and no
22:30:19 <lament> about what???
22:30:20 <ehird> you are not clearly right
22:30:25 <ehird> #concatenative. seriously
22:30:31 <lament> yes, i'm clearly right
22:30:40 <lament> just like i'd be clearly right if i said "lisp has lots of parentheses"
22:31:06 <ehird> #concatenativeeeeee
22:36:42 <ehird> lament: just joining doesn'tt help, i imagine
22:36:42 <ehird> :p
22:37:14 <lament> fine
22:38:47 <ehird> lament: neither does leaving again
22:38:48 <ehird> :p
22:39:34 <lament> since you do program in factor, feel free to tell me how i'm wrong if you ever find out :)
22:47:58 <lament> haha "While there is a very nice slope of indentation as one follows code down into the depths of nesting, that is about the only notion of elegance that could possibly come to one's mind when considering this code."
23:32:36 -!- ehird_ has joined.
23:33:32 -!- ehird has quit (Read error: 113 (No route to host)).
23:34:17 <ehird_> bye ghost
23:35:00 -!- ihope has joined.
23:35:08 <ihope> Ello.
23:48:32 -!- timotiis has quit ("leaving").
23:54:58 -!- wildhalcyon has joined.
←2008-02 2008-03 2008-04→ ↑2008 ↑all