00:18:48 -!- sebbu has quit ("@+").
00:22:53 -!- puzzlet_ has joined.
00:28:36 -!- olsner has quit ("Leaving").
00:29:50 <MizardX> ehird: I think I managed to make functions in JumpFuck. http://pastie.org/317387
00:30:34 <ehird> wow, that looks really neat
00:31:04 <ehird> i think it'd actuallly be very easy to convert that to normal BF; you're doing most of the continuationy stuff yourself
00:32:24 -!- puzzlet_ has quit (Read error: 60 (Operation timed out)).
00:34:03 -!- puzzlet_ has joined.
00:34:32 <MizardX> either lyrics, or "sångtext(er)"...
00:34:57 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
00:40:12 <GregorR> That looks like it sounds like "song text"
00:44:18 <ehird> I have a very nice picture of a lighthouse.
00:47:57 -!- metazilla has quit ("- nbs-irc 2.37 - www.nbs-irc.net -").
00:48:26 <ehird> No. My mother would not enjoy a picture of a lighthouse.
00:49:29 <ehird> GregorR: Would you?
01:36:18 -!- Sgeo has joined.
01:48:25 -!- GreaseMonkey has joined.
02:29:20 -!- psygnisfive has quit ("Leaving...").
04:00:42 -!- CakeProphet has quit (Read error: 110 (Connection timed out)).
04:04:32 -!- Slereah has joined.
04:17:54 -!- Slereah_ has quit (Read error: 110 (Connection timed out)).
05:27:18 <GregorR> http://home.codu.org/5ctj/
05:28:28 <oerjan> hm Catholic bishop - shouldn't be too hard
05:29:29 <oerjan> actually i forgot to check if there was a 1 click
05:31:51 <oerjan> "St. Ignatius Mission"?
05:31:57 <oerjan> it's not even trying :D
05:33:29 <oerjan> oops this one looks harder
05:37:23 <GregorR> No, but I just broke it again X-P
05:37:35 <GregorR> Sorry, I'm trying to add logic so it won't allow you to fake links.
05:38:26 * GregorR starts modifying it in a new file :P
05:39:23 -!- psygnisfive has joined.
05:40:48 <GregorR> OK, now I'm going to replace it and you will have to restart if you're in the middle of a game.
05:41:57 <GregorR> psygnisfive: http://home.codu.org/5ctj/
05:42:41 <GregorR> psygnisfive: Five clicks to Jesus. Find Jesus ... in five clicks or less :P
05:42:53 <oerjan> and i had just found "Christianity" :(
05:43:16 <GregorR> psygnisfive: It gives you a random Wikipedia page, and you try to get to Jesus in five clicks or less.
05:45:14 <oerjan> oh it fixed when i went back in history
05:45:50 <GregorR> So far I haven't found a single page that I can't make it in five, so it may be worthwhile to reduce the limit to four, maybe even three.
05:46:03 <GregorR> (Five is just the way I'd heard the game formalized)
05:51:55 <GregorR> Now I need to make a database so it can compare your result to others.
05:51:55 <oerjan> not necessarily, let me jump straight USA
05:53:44 <oerjan> and from there to Roman Catholicism which i've used before
05:54:22 <oerjan> it was not the global one, but Roman Catholicism in the United States
05:54:35 <GregorR> Make sure to hover over the links ;)
05:56:13 -!- GreaseMonkey has quit ("So, how much do you love noodles?").
05:56:19 -!- Sgeo has quit ("Ex-Chat").
05:57:39 <GregorR> Anything that lets you get to a country is a free three-clicker.
05:57:57 <oerjan> Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 508361 bytes) in /home/gregor/5ctj/index.php on line 98
05:58:05 <GregorR> Country -> Christianity -> Jesus
05:58:40 <GregorR> Does it happen consistently?
05:59:01 <oerjan> let me go back in history
05:59:17 <GregorR> Don't go that far back X-P
05:59:24 <GregorR> It keeps your session on the server to dissuade cheating :P
05:59:40 <oerjan> but it's worked before, but then i may have gone to the bottom link
05:59:59 <GregorR> Hrm, shouldn't work at all >_>
06:00:37 <oerjan> ok let me try that country method again
06:01:46 <oerjan> liar! Croatia doesn't contain Christianity
06:02:03 <oerjan> although surely it's roman catholic, hm
06:02:34 <GregorR> OK, MOST countries work that way X-P
06:03:49 <oerjan> the article has no religion section :D
06:03:54 <GregorR> You'd think the page "Church of England" would mention Jesus somewhere.
06:05:49 <oerjan> oh well i'll go on to hungary
06:07:21 <oerjan> a nice country with a link to Christianity
06:15:48 <oerjan> Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 516520 bytes) in /home/gregor/5ctj/index.php on line 103
06:18:45 <oerjan> apparently London works as a country :)
07:23:00 -!- GreaseMonkey has joined.
07:24:44 <fizzie> "Congratulations! You found Jesus in 3 clicks!"
07:24:47 <fizzie> Just to be contrary, I went France -> Judaism -> Jesus instead of Christianity in the middle.
07:30:34 <fizzie> Going through Main Page feels a bit cheatery.
07:31:57 <fizzie> As does using http://www.netsoc.tcd.ie/~mu/wiki/, obviously, even though it gives interesting routes. "Kyle & Jackie O -> Musical ensemble -> The Beatles -> Jesus" instead of going through a country.
07:36:12 -!- olsner has joined.
07:39:55 <oklopol> Congratulations! You found Jesus in 3 clicks!
07:43:42 <olsner> then, why all the happy!?
07:44:37 <oklopol> fizzie: the real problem with utu is not the course descriptions, but the fact exams simply never get graded; i had an exam 13.10., sent an e-mail to the lecturer too, no answer
07:44:47 <oklopol> olsner: well all the jesus!
07:46:15 <oklopol> that's the worst i've had sofar, but that's probably only because that was the first exam i took :P
07:46:39 <fizzie> oklopol: Officially we have a rule that all our exams get graded within a month of submitting; usually that means it always takes almost exactly a month to get results. Sometimes it's longer, though.
07:46:52 <oklopol> our official rule is two weeks.
07:47:10 <oklopol> well guess it's not that bad then.
07:47:14 <oklopol> it's fucking annoying though.
07:47:31 <fizzie> Sometimes I've gotten results the same day the exam was; there's a large variance.
07:47:41 <fizzie> "Congratulations! You found Jesus in 2 clicks!" That was fast!
07:48:01 <fizzie> 323 BC -> Alexander the Great -> Jesus.
07:48:10 <fizzie> I got a good starting point that time.
07:48:34 <olsner> did you know, if you read to the end of the book of mormon, you will see god?
07:49:30 <oklopol> olsner: now if only the religious people told stuff we could actually check
07:49:37 <oklopol> would be easier to tell who's right
07:49:51 <oklopol> but noooo, you'd have to read something
07:51:05 <olsner> "95% of the test subjects reported experiencing auditory and visual hallucinations after completion of the text"
07:52:06 <Corun> Are you trying to get to jesus from random wiki articles?
07:53:34 <oklopol> well rather well-known game he implemented i think
07:54:26 <oklopol> because my backlog is only a page long.
07:54:45 <Corun> Oh don't you just LOVE terminals?
07:54:48 <fizzie> http://home.codu.org/5ctj/
07:56:43 <oklopol> it's not a terminal, it's mirc.
07:57:14 <oklopol> it just decided, one day, that the backlog needs to be short because i wasn't using the handy "logviewer" functionality enough.
07:57:30 <Corun> Sigh, I'm failin' at this
07:57:36 <oklopol> god that's retarded, wish it was physical so i could punch it.
07:59:11 <Corun> Thai_Braille -> Thai_Language (THE ONLY LINK ON THE BRAILLE PAGE :/) -> English Language -> Republic of Ireland -> Roman Catholic -> Jesus
07:59:32 <Corun> I expected/hoped for a jesus link on both the eng lang page AND the rep ire page, oh wells.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:01:05 <Corun> List of Child Prodigies -> Akiane_Kramarik -> Christian_God -> Jesus
08:01:49 <lament> Thai Language->Buddhism->Christianity->Jesus
08:01:59 <Corun> Yeah, I considered that
08:02:18 <lament> dude, of course buddhism is more likely than english language
08:02:30 <lament> why would you expect jesus on the english language page
08:02:46 <fizzie> lament: Because Jesus invented the English language!
08:03:48 <fizzie> Yes; it's clearly in English, and clearly also exactly what he said.
08:04:13 <Corun> I was expecting: History of English Language, something about, I dunno, how it relates to christianity in some way. I guess it's not likely to have Jesus in it :-P
08:04:23 <Corun> I know it doesn't relate :-P
08:04:31 <Corun> But wikipedia pages have _a lot_ of shiz on them
08:05:06 <Corun> I figured English Language was bound to have a link to christianity some where, if it didn't have jesus
08:05:40 <Corun> Doesn't help that I'm not used to playing lowest number of links
08:06:44 <fizzie> Back in March 2008, you could've gone "English Language -> Beowulf -> Jesus", but that link doesn't seem to be there anymore.
08:06:46 <Corun> We used to play the wikipedia game at school (find a random destination article (not allowed to be a stub) and both start from the same article and first to get to the other article without using catagories wins)
08:08:02 <Corun> Doing it by time makes it more frantic :-D
09:05:21 -!- MizardX has quit (Read error: 54 (Connection reset by peer)).
09:09:24 -!- GreaseMonkey has quit ("So, how much do you love noodles?").
09:11:05 -!- MizardX has joined.
09:20:03 -!- Corun has quit ("This computer has gone to sleep").
09:36:03 -!- Corun has joined.
09:46:58 -!- Corun has quit ("This computer has gone to sleep").
09:50:08 -!- Slereah_ has joined.
09:54:22 -!- oerjan has quit ("leaving").
09:54:28 -!- Slereah has quit (Read error: 60 (Operation timed out)).
10:49:04 -!- puzzlet_ has quit (Remote closed the connection).
10:49:12 -!- puzzlet has joined.
10:59:17 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
10:59:57 -!- jix has joined.
11:00:22 -!- puzzlet has joined.
11:42:24 -!- Slereah has joined.
11:42:28 <MizardX> heh, breaks on invalid input
11:44:39 -!- Slereah_ has quit (Read error: 60 (Operation timed out)).
11:48:22 <fizzie> Usually thutubot's error messages are better than fungot's, though; it even says which instruction stack-underflowed. (Though I could add that one too.)
11:48:23 <fungot> fizzie: appendix a character to the debugger needs to have the same identifiers as the two characters have the extension `.i', `:1601' ( note that it can be set up for your operating system you're using it, it had some obvious deficiences ( such as the above example shows, the first line of code might never be executed with e633, so the next character. there isn't a thread; attempting to `go back' as input ( if an expression as
11:48:31 <fungot> Selected style: wp (1/256th of all Wikipedia "Talk:" namespace pages)
11:48:41 <fizzie> That intercal manual style is so verbose.
11:50:32 -!- Slereah_ has joined.
11:55:21 <MizardX> http://esoteric.voxelperfect.net/wiki/Redivider/Underload_Interpreter :)
12:04:21 -!- Slereah has quit (Read error: 110 (Connection timed out)).
12:13:06 -!- Slereah_ has quit (Read error: 113 (No route to host)).
12:30:51 -!- Slereah_ has joined.
12:37:13 <fizzie> I just realized there are probably people for whom the primary meaning of the word "string" is "a piece of cord" instead of "a sequence of characters". That's strange.
12:38:17 -!- Hiato has joined.
12:41:47 <Slereah_> Isn't that the original meanin
12:42:53 <fizzie> Sure, but, you know, strings. Strings are made out of characters.
12:43:06 -!- ais523_ has joined.
12:43:34 <ais523_> can't this time, I'm on Mibbit, although I'll see it when I'm back on my laptop
12:43:47 -!- Slereah has joined.
12:51:53 -!- Slereah_ has quit (Read error: 145 (Connection timed out)).
13:10:14 -!- Hiato has quit (Read error: 110 (Connection timed out)).
13:21:50 <ais523_> hmm... that must have been manual
13:22:00 <ais523_> unless you've improved your script somewhat
13:24:41 <ehird> the bouncer, remember?
13:24:43 <ehird> it played back the hi
13:24:46 <ehird> played back the join
13:24:54 <ehird> so my script responded t o it...
13:25:29 <ais523_> would it respond multiple times if I cyclespammed from mibbit while you weren't online?
13:33:15 <ehird> ais523_: do you want a nice picture of a lighthouse that I scaled and cropped?
13:33:32 <ehird> I'm beginning to think that cropped-resized lighthouses are just a thing of the past.
13:33:58 <GregorR> Does this happen to be a gummy lighthouse? :P
13:34:38 <ehird> No. The lighthouse in question is neither phallic nor gelatin-based.
13:35:10 <GregorR> If it's not phallic then it's not a lighthouse.
13:35:22 -!- ais523_ has quit ("http://www.mibbit.com ajax IRC Client").
13:35:36 <ehird> It's an unphallic lighthouse.
13:36:05 <ehird> Would you like to see this non-phallic lighthouse?
13:38:05 <ehird> GregorR: Welp, here you go. http://xs133.xs.to/xs133/08472/lighthouse157.png
13:38:24 <ehird> I posted the lighthouse two messages up.
13:38:35 <ehird> It is scaled and cropped from http://commons.wikimedia.org/wiki/Image:Crown_Point_Light_House.jpg.
13:38:41 <ehird> Or rather, from http://upload.wikimedia.org/wikipedia/commons/8/85/Crown_Point_Light_House.jpg.
13:38:58 <ais523> ehird: why are you posting pictures of lighthouses?
13:39:12 <ehird> Only various versions of one lighthouse.
13:39:24 <ehird> http://xs133.xs.to/xs133/08472/lighthouse157.png is the main one up for grabs, post-processing.
13:44:23 <ehird> I hope you have enjoyed it.
13:44:34 <ais523> ehird: I'm using w3m as my primary browser atm
13:44:41 <ehird> w3m can display images here.
13:44:44 <ais523> atm meaning over a very short period of time
13:44:54 <ais523> I've been messing around with powertop, you see
13:45:03 <ehird> Perhaps you should use it from the console, like real men.
13:59:10 <AnMaster> ais523, http://kuonet.org/~anmaster/c-intercal/
14:14:10 <ehird> 60-70% CPU usage process of tcl installign texlive. Wonderful.
14:28:08 -!- Asztal has joined.
14:34:48 <ehird> http://github.com/rails/rails/commit/22af62cf486721ee2e45bb720c42ac2f4121faf4 wat
14:37:12 <fizzie> Well, common lisp also has the functions "first", "second", "third", "fourth", ..., "tenth" for getting elements of a list.
14:39:41 <fizzie> Scheme doesn't, although car, cadr, caddr and cadddr work as first .. fourth.
15:24:38 -!- sebbu has joined.
15:25:50 <GregorR> ehird: That lighthouse is undeniably phallic.
15:26:08 <ehird> You see phalluses in too many things, GregorR.
15:26:45 <GregorR> The rule is that if it's at least double as long as it is wide, and is either round or has more than five sides, it's phallic.
15:28:27 <GregorR> Furthermore, some friends of mine have determined that all things are one of phallic, mammary or concave.
15:28:43 <GregorR> It's only a matter of determining which :P
15:32:11 * ehird tries to figure out how to keep a website and its apache config file in a single git repo nicely while still not exposing the config file via the site
15:39:54 -!- pinkillo has joined.
15:40:47 -!- pinkillo has quit (Client Quit).
15:46:31 -!- warrie has quit (Read error: 110 (Connection timed out)).
16:20:34 <ehird> Suggestions welcome :-P
16:25:23 <Slereah> Could you simulate logic gates with missiles/anti-missiles missiles/ and so on?
16:44:16 -!- Mony has joined.
16:48:18 <ais523> yay, the first part of gcc-bf's new build system seems to be working
16:58:34 <AnMaster> ais523, added even more patches
17:26:17 <oklopol> get used to seeing even more of me from now on. i'm never going out again
17:27:05 <fizzie> Oh yes; it is quite windy here too.
17:27:29 <oklopol> walked the way from band training backwards, i just couldn't ride my bike or walk normally.
17:27:50 <oklopol> my head is a bit sensitive
17:27:57 -!- pinkillo has joined.
17:28:04 -!- pinkillo has left (?).
17:28:25 <fizzie> Oh, again a real storm (>21 m/s) on the sea nearby, and 19 m/s right around here. Not bad.
17:35:53 -!- Asztal has quit ("ChatZilla 0.9.84 [Firefox 3.0.4/2008102920]").
17:42:38 <ais523> fizzie: I didn't know you lived near the sea
17:44:59 <fizzie> Helsinki (and Espoo too) is on the coast of the Gulf of Finland. Although my actual apartment is some 5 km from the sea, I guess.
17:45:07 <ais523> btw, my department now has a second Door I think
17:45:23 <ais523> the original one still exists, and even has been working recently
17:45:26 <ais523> but the new one is fun
17:45:29 <fizzie> (Or 2 km if you could that one bay, but...)
17:45:30 <ais523> it got into an infinite loop the other day
17:45:32 <oklopol> i'm less than 5 km away from the sea
17:45:38 <ais523> and ended up opening and closing alternately for several hours
17:45:44 <ais523> until security came and forcibly locked it
17:46:17 <fizzie> Do you think the door is TC?
17:46:44 <fizzie> Maybe you could get a brainfuck interp running by opening and closing it in the right pattern.
17:46:50 <oklopol> well, it has one bit of storage
17:48:43 <ais523> fizzie: I don't believe my department's Doors are TC yet, but suspect it's only a matter of time
17:50:34 <oklopol> perhaps i should take MizardX off ignore
17:50:49 <oklopol> how is that done i wonder :P
17:51:23 <ehird> oklopol: why did you ignore him?
17:51:39 <ehird> he made recursive functions in jumpfuck
17:51:49 <oklopol> yes, but i didn't tell python that, just the nicks.
17:52:14 <oklopol> how do you usually unignore in clients?
17:53:05 <oklopol> and he got them recursive huh? last i heard that was something they *didn't* support yet
17:54:37 <ais523> oklopol: /unignore is the usual command
17:54:38 <MizardX> Just need to keep track of the recursion level, and set the continuation-id accordingly. Each function gets the continuation-id as argument, so just use that plus one.
17:55:21 <oklopol> seems you have to give it the "-r" flag
17:56:24 <oklopol> /unignore i naturally tried, but it doesn't exist
17:56:50 <ehird> it changed its mind
17:56:58 <ehird> was for the episode
17:57:02 <fungot> ehird: to be neutral so i accept differing view points. i want to defend measurements. there is no
17:57:09 <oklopol> can it have changed its mind about the reading?
17:57:15 <ehird> fungot: are you sure?
17:57:16 <fungot> ehird: b. greed and fnord produce the bonds i.e fnord between the karma and our fnord causeway. the scene uses hare coursing as a metaphor and may be fnord to other military units ( normal infantry, rangers, ect.) during the current writers guild strike, but the link kept being removed. small—preceding wikipedia:signaturesunsigned comment added by fnord ( user fnord)
17:57:18 <oklopol> i mean, that's what i wanna do.
17:58:07 <oklopol> should i ignore someone else now?
18:00:05 <ehird> http://esolangs.org/wiki/Redivider/Underload_Interpreter
18:00:19 <ais523> also warrie isn't here atm
18:00:22 <ehird> redivider looks lovely
18:00:36 <ehird> I'ma write a compiler
18:00:52 <ais523> wait, that looks buggy
18:01:00 <ais523> AFAICT ~ isn't fully implemented
18:01:20 <ehird> ais523: e wasn't told about ^
18:01:25 <ehird> yesterday he listed the commands he thought
18:01:31 <ehird> rest: tail[stack];
18:01:32 <ehird> run(rest)[fst + /.*/] }
18:01:39 <ais523> ehird: I was referring to ~ not working
18:01:45 <ais523> and used ^ to nickping the previous line
18:02:57 -!- Corun has joined.
18:02:58 <ehird> oklopol: i helped make its syntax!
18:03:05 <ehird> originally it had a lot of pointless empty ()s and []s
18:03:15 <ehird> I told ihope to remove them and voila, redivider is pretty.
18:04:36 <oklopol> hmm, redivider is a palindrome. i wonder how many times i've realized that...
18:09:34 <MizardX> Regexes as a sub-language. It is the only way match input/substrings.
18:11:27 <oklopol> okay *this* is pretty http://esolangs.org/wiki/Redivider/Brainfuck_Interpreter
18:13:12 <MizardX> The underload interpreter was much easier to write. It doesn't require implementing any new arithmetic operation.
18:21:21 <ehird> [[\X, where X is an ASCII character mnemonic (NUL through US and DEL)]]
18:21:22 <ehird> fuck you redivider
18:23:37 -!- Sgeo has joined.
18:34:03 <MizardX> Geh, bug in my interpreter then. It uses \n \r etc.
18:36:04 <MizardX> should I still allow the short, well-established form? (\n and \NL)
18:37:04 * ehird got his parser parsing strings
18:37:12 <ehird> it will compile to python
18:37:27 <ehird> <stringguts> consists of ASCII characters other than " and \ as well as escape codes. Escape codes must include \\, representing \; \", representing "; \n, representing the newline character; \0nnn where n is an octal digit, representing the character with code nnn; \0xnn where n is a hexadecimal digit, representing the character with code nn; and \X, where X is an ASCII character mnemonic (NUL through US and DEL). The set of escape codes must be prefix-free a
18:38:19 <ehird> This is a valid redivider program:
18:38:27 <ehird> A program consists of <token>s separated by whitespace
18:38:29 <ehird> <token> ::= <word> | "(" | "," | ")" | ":" | "|" | "+" | "{" | ";" | "}" | "."
18:38:29 <ehird> | <string> | <regex> | "#" anything newline
18:38:36 <ais523> does it mean anything?
18:38:41 <ehird> BUG BUG BUG BUG ALL ONBOARD THE BUG TRAIN
18:38:46 <ehird> SPEC GOT A BUGGY BUG WOOOOOOOOOOO!
18:39:02 <ehird> it makes sense if you interpret it like an idiot
18:39:06 <MizardX> ok, \n is given. How about \r, \f, \t etc?
18:39:30 <ehird> it's undefined so you can
18:40:22 -!- kt3k has joined.
18:41:01 <ehird> Nothing actually _uses_ <token>
18:41:18 -!- kt3k has quit (Client Quit).
18:43:16 <ehird> It's almost impossible to parse the regexes
18:43:22 <ehird> as you have to parse all regex escapes too
18:43:37 <ais523> ehird: reminds me of Perl
18:43:57 <ehird> MizardX: how do you do it?
18:44:12 <ehird> you can't parse regexes with regex.
18:44:57 <ehird> does not match /[abc/def/] properly.
18:45:38 <MizardX> No, you need to escape the /
18:46:13 <ehird> iirc, perl disagrees with me.
18:46:36 <ais523> ehird: you need to escape / in [] in Perl m// I think
18:46:47 <ais523> because it finds the end of the regex first
18:46:50 <ais523> then parses its insides
18:48:05 <ehird> i should probably do like MizardX's interp and lex it all first.
18:49:02 -!- KingOfKarlsruhe has joined.
18:52:10 -!- Corun has quit ("HAMMER POWER").
19:01:49 <ehird> (?:(/(?:(?:\\.|[^/])*)/|#[^\n]+|{|\)|}|;|([a-zA-Z]+)|\||,|\+|\(|:|\.|"(?:(?:\\.|[^"])*)")\s*)
19:01:54 <ehird> MizardX: think that'll parse redivider? :D
19:02:04 <ehird> needs ordering ofc
19:02:19 <oklopol> making redevider in redevider?
19:02:27 <ehird> just making lexing easy
19:03:10 <ehird> (?:(([a-zA-Z]+)|[(,):|+{;}.]|"(?:(?:\\.|[^"])*)"|/(?:(?:\\.|[^/])*)/|#[^\n]+)\s*)
19:04:25 <MizardX> <word> ::= {letter or digit}
19:05:02 <ehird> ([a-zA-Z]+|[(,):|+{;}.]|"(?:(?:\\.|[^"])*)"|/(?:(?:\\.|[^/])*)/|#[^\n]+)
19:05:05 <ehird> final version, probably
19:05:07 <ehird> as long as it works
19:06:34 -!- nooga has joined.
19:07:43 <ehird> MizardX: I see no _
19:08:25 <MizardX> \w = [^\W] = [A-Za-z0-9_]; [^\W_] = [A-Za-z0-9]
19:08:38 <ehird> very clever & evil
19:14:16 <fizzie> [[:alnum:]] is also very obvious, though a couple of letters longer.
19:14:45 <nooga> i wonder if it's possible to generate a tiny bit of x86 machine code, place it in the char array and then call it as a C function, all in runtime ofc
19:14:54 <nooga> stupid queston, it is possible
19:15:02 <nooga> though i never tried ;|
19:15:05 <fizzie> I do that in jitfunge.
19:15:16 <fizzie> (Although it's a mmap()'d block with PROT_EXEC privileges.)
19:15:29 <fizzie> (A general malloc()d block might not be suitable for executing code.)
19:15:51 <ais523> nooga: it might be placed somewhere marked nonexecutable
19:16:00 <ais523> as an anti-buffer-overflow message
19:16:55 <nooga> can i read some sources with such neat trickz? :>
19:17:21 <fizzie> I have a very preliminary tarball of jitfunge in the web, but that's really not a pleasant thing to read.
19:17:22 <ais523> fizzie: doesn't jitfunge do something like that?
19:18:50 <ehird> nooga: perhaps a quicker response could be gained by using english
19:19:03 <fizzie> http://zem.fi/~fis/jitfunge-export.tar.gz if I recall the URL correctly.
19:19:18 <fizzie> That version is somewhat buggy, though.
19:19:38 <fizzie> (That is not to imply that I'd actually *have* a bug-free version; I don't.)
19:20:13 <nooga> ehird: yea, currently i'm fascinated by speech used by 4chan retards
19:21:24 <nooga> fizzie: i just need the runtime execution schema
19:21:46 <ehird> nooga: so you want fizzie to do all the work for you
19:22:22 <fizzie> mmap(..., PROT_READ|PROT_WRITE|PROT_EXEC, ...); -- then just write there, cast it to a function pointer and call it.
19:23:14 <fizzie> It's there in the "AsmFunction" class if you want to look at how jitfunge does it.
19:23:28 <fizzie> Not too tricky, anyway.
19:24:23 <nooga> + i must generate all that stuff that gcc does in functions to seamlessly imitate a 'real' function
19:25:01 <fizzie> Well, sure, you need to know your platform's and compiler's calling conventions.
19:25:31 <nooga> what is that SConstruct file?
19:25:49 <fizzie> It's a scons build file.
19:26:07 <fizzie> (And SCons is a make-replacement.)
19:26:33 <MizardX> Can you declare a function-pointer as __stdcall, __cdecl or __fastcall ?
19:27:21 <fizzie> I assume you could; at least it sounds useful.
19:28:07 <nooga> Assembler class looks nice :>~~~
19:28:34 <fizzie> It's just a x86 code generation tool. Very idiosyncratic, too; probably not too friendly to use.
19:29:56 <fizzie> The put_call methods do only calls to the specific types of function pointers I use, and sp_load/sp_store are about moving the Befunge stack pointer I keep in the ESI register... it's not really very generic. And it only contains those x86 opcodes I've happened to use.
19:31:22 <nooga> but i will need to write something more or less similar
19:31:49 <fizzie> LLVM might be worth thinking about for code generation, too.
19:32:23 <fizzie> I did all that stuff from scratch just for fun.
19:32:24 <oklopol> watching python try out all self-avoiding paths.
19:33:17 <oklopol> all paths on NWSE where the path doesn't intersect itself.
19:33:18 <nooga> oh, didn't knew that LLVM exists
19:37:43 <oklopol> it's a bit unfortunate the little guy will never grow up to be much more than 15 :<
19:38:19 <oklopol> my self-avoiding path wormy, it'll never grow up to be even 15 cells long
19:38:29 <oklopol> because that'd take ages :|
19:38:46 <oklopol> i made it skip every 200th iteration
19:38:59 <oklopol> but that didn't look nearly as cute
19:39:08 <oklopol> also it starts to get stuck then.
19:39:20 <oklopol> because there are, occasionally, big gaps between two self-avoiding paths
19:43:49 <nooga> http://www.hacker.org/hvm/ seen this?
19:44:02 <nooga> a bit lame i'd say
19:44:28 <nooga> i have developed a compiler targeting that
19:44:40 <nooga> though loops are a bit tricky
19:47:56 <nooga> jump instructions must jump over corelated jump instruction + literals of variable length = tricky part
19:48:33 <oklopol> yeah but isn't it enough to push the amount of jumps just before the jump instructions
19:49:00 <oklopol> doesn't sound too hard if you're making a compiler, might be annoying manually, if you were programming directly in the lang
19:49:47 <oklopol> i meant the length of the jump
19:49:58 <fizzie> Since it's obviously not trying to be an especially hard-to-program language, it really could have a "push literal" instruction instead of just 0-9.
19:50:27 <oklopol> it's probably designed to be a trivial to implement langauge.
19:52:42 <nooga> compiling while is like: <beginning><adress of end><!condition test><jump?> <blah blah> <adress of beginning><jump> <end>
19:53:32 <nooga> adress of end must include length of adress of beggining and vice versa
19:54:02 <oklopol> yes, but that's not too hard, you can just pad the computation to be the same length everywhere.
19:54:09 <fizzie> It's still trivial if you're not a perfectionist and can stand a couple of nops here and there when your literals happen to be unexpectedly short.
19:54:14 <nooga> that's what i've done
19:56:41 <fizzie> Do you use something clever to find the shortest way of pushing a particular literal, or just something boring like base-9 numbers with x+9*y+9*z+...?
19:57:05 <nooga> you can call it clever
19:57:20 <nooga> let me refresh my memory and explain
19:57:47 <fizzie> (I'm partially away, so I may not respond with the appropriate "um"s and "oh"s. Hopefully someone else is willing to do that part.)
19:59:48 <ehird> >>> parse(lex('abc(a,b)'))
19:59:48 <ehird> [('decl', 'abc', ['a', 'b'])]
20:00:18 -!- KingOfKarlsruhe has quit (Remote closed the connection).
20:00:47 <nooga> it's an uuuuuuuuuuugly ruby function :D
20:00:52 <nooga> http://rafb.net/p/GlTDVw34.html
20:01:28 <nooga> ruby multiplies strings
20:03:57 <nooga> irb(main):025:0> literal(43629)
20:03:58 <nooga> => "99996*5+*7+*5+*6+"
20:05:09 <fizzie> That looks like a base-9 number to me, really.
20:06:15 -!- Asztal has joined.
20:06:18 <fizzie> 6*9^4+5*9^3+7*9^2+5*9+6
20:06:24 <fizzie> What else is it than a base-9 number?
20:06:56 <nooga> that cannot beeee.... noooooooo :C
20:07:20 <nooga> but seems to be shorter than normal base 9 notation
20:09:09 <fizzie> You could still write it as "69*5+9*7+9*5+9*6+", which is the base-9 notation (in a stack-based language) that I first thought of.
20:10:09 <fizzie> Obviously no-one would write it as 69999****5999***+799**+59*+6+.
20:11:06 <nooga> 99*29*1++ vs 992+*1+
20:12:25 <nooga> so it's just base 9 in written in a bit more intelligent form
20:12:37 -!- Mony has quit ("Join the Damnation now !").
20:16:00 <fizzie> Anyway, I was just hoping for something that'd give "88*0^*" instead of "9995*5+*5+*1+" to push 4096. Not that I'd probably have bothered either.
20:18:13 -!- Deewiant has quit (Read error: 60 (Operation timed out)).
20:18:33 <nooga> it shouldn't be so hard
20:21:14 <nooga> factorize, build a tree, find identical nodes or try to optimize and generate the code
20:21:16 <fizzie> Sure it should. It's pretty close to the Kolmogorov complexity.
20:21:33 <fizzie> Well, I guess it shouldn't be hard to get *something* that might work.
20:21:43 <fizzie> But that sort of thing won't use loops at all.
20:22:22 <nooga> cig break, need to think about my lameness
20:24:14 <fizzie> Let's say you want to push A(4,4) or something; it's quite likely that the shortest way (or at least a good way) to do that is the recursive definition of A, but I wouldn't want to have to write some code that'd grok things like that.
20:24:25 <fizzie> Well, given the size of A(4,4) maybe you don't need to push it often.
20:25:23 <oklopol> yeah it's basically kolmogorov complexity.
20:26:11 <fizzie> That c/$ pair is a bit silly; why does it push the program counter and not the program counter +1?
20:26:32 -!- Deewiant has joined.
20:27:29 <fizzie> Well, maybe it's because $ increments afterwards. Okay, then it makes sense.
20:28:42 <nooga> it's sooo hackerish
20:29:13 <fizzie> Personally I think it's a bit boring; it's like unefunge with SUBR.
20:29:24 <fizzie> And no going backwards, either.
20:29:40 <fizzie> Of course I guess it's not trying to be especially interesting, but still.
20:29:42 <nooga> implementation of && || and < > >= <= == was somewhat entertaining
20:30:27 <nooga> ah, the whole hvm thingy is just a platform for problems like floodfill etc
20:30:37 <fizzie> My implementation of Funge-98's ` (which is basically >) uses no conditional jumps. (Just a conditional set.)
20:38:24 -!- ehird has left (?).
20:38:28 -!- ehird has joined.
20:39:04 -!- kar8nga has joined.
20:40:12 <nooga> i need to code something at least a bit hacky
20:40:25 <nooga> my skills are getting worse and worse
20:40:37 <ais523> nooga: write an INTERCAL to Malbolge compiler
20:47:43 -!- Asztal has quit (Read error: 110 (Connection timed out)).
20:55:57 -!- oerjan has joined.
20:57:47 <nooga> i'd build a processor from transsistors or sth
21:00:02 <ehird> __main__.RedividerSyntaxError: Around line 1, column 11: Expected rparen, got string
21:07:52 <oerjan> <Slereah> Could you simulate logic gates with missiles/anti-missiles missiles/ and so on?
21:08:12 <oerjan> i have this feeling this would be a once-only simulation
21:11:34 <oerjan> <ais523> and ended up opening and closing alternately for several hours
21:11:56 <ais523> it's an automatic Door
21:12:10 <ais523> and when it closed it triggered the someone's trapped behind the door sensor
21:12:17 <ais523> so it opened again for health and safery reasons
21:12:18 <oerjan> your department sounds like it has a door curse, or a ghost. try an exorcist :D
21:26:19 <oerjan> The set of escape codes must be prefix-free and all other escape codes are undefined. <-- ahem, i see both \SO and \SOH in the python code
21:26:46 <ehird> nd \X, where X is an ASCII character mnemonic (NUL through US and DEL).
21:26:49 <ehird> ITT: We read the specs
21:26:56 <ehird> now, who wants to debug my parser
21:27:17 <oerjan> ehird: the spec is contradicting itself
21:27:52 <oerjan> because the mnemonics are _not_ prefix free. both SO and SOH are mnemonics (assuming MizardX has them right)
21:29:11 <ais523> yep, Shift Out and Start of Header
21:30:56 <oerjan> MizardX: also you forgot DEL one way in http://paste.eso-std.org/v
21:31:03 <ehird> in mine, SOH wouldn't work
21:31:05 <ehird> it'd be SO, then H
21:31:56 <oerjan> which was the point of trying to require prefix freeness in the first place, i assume
21:32:41 <oerjan> MizardX: (in escapes_re)
21:33:37 <ais523> clearly \SOH should have the same effect as . . in HOMESPRING
21:34:53 <ais523> oerjan: it causes a temporal paradox
21:35:03 <ais523> the reason is that dot space is an escape for space
21:35:08 <ais523> space dot is an escape for dot
21:35:50 <ais523> and dot space dot is ambiguous, and instead of addressing this problem the person who specced out HOMESPRING said that conforming implementations had to cause a temporal paradox if this happened, and as a result there are no conforming implementations
21:36:13 -!- KingOfKarlsruhe has joined.
21:36:15 <ehird> write it in twoducks
21:37:28 <MizardX> Added DEL, and switched SO/SOH. It'll get uploaded on next version
21:38:28 <ehird> MizardX: wanna debug my parser? :}
21:39:37 <MizardX> I could look at it... but not right now.
21:40:16 <oerjan> i guess the prefix free part of the spec will just have to be removed
21:41:55 <ehird> remove the stupid mnemonic thing
21:42:36 * oerjan makes it parse greedily
21:49:37 <oerjan> <nooga> i wonder if it's possible to generate a tiny bit of x86 machine code, place it in the char array and then call it as a C function, all in runtime ofc
21:50:56 <oerjan> i recall reading that the ghc haskell compiler uses that for it's ffi interface, and that this gave trouble when trying to use it with a secure linux implementation
21:51:59 <oerjan> because the security includes disallowing self-modifying code
21:53:38 <fizzie> Making stack and heap non-executable is quite common, but I would think at least some systems still allow executing code from memory area that's been explicitly requested for that purpose.
21:54:28 <oerjan> yeah, this was about security-enhanced linux
21:55:04 <fizzie> (About that in SELinux:) "If the program really needs this behavior there is no really easy way out. One possibility is to create an anonymous file (just unlink it after creation), size the file using ftrunctate, and then map the file in two places. In one place map it with MAP_SHARED and write permission but without execution. For the second mapping use execution permissions but no write permissions. This might be a bit confusing at first but can be handled."
21:55:38 <ehird> someone fix my parser
21:57:31 <fizzie> Parsing is a solved problem, as someone famous said.
21:59:05 <lament> solving problems is a solved problem.
21:59:28 -!- kar8nga has left (?).
22:14:06 <MizardX> ehird: Give me a link. I'll look at it now.
22:14:20 <ehird> I'll paste the relevant part
22:14:41 <ehird> MizardX: http://paste.eso-std.org/w
22:14:47 <ehird> with some inspiration from yours :)
22:15:24 <ehird> that's just the parser
22:16:14 <MizardX> token.match(code[index:]) == token.match(code,index)
22:16:28 <ehird> i was not aware that existed.
22:18:08 <ehird> MizardX: um, isn't del 127?
22:18:27 <ehird> MizardX: python \n is decimal
22:18:38 -!- KingOfKarlsruhe has quit (Remote closed the connection).
22:19:23 <ehird> ok, parser all done
22:19:26 <ehird> now for the compiler!!
22:19:33 <MizardX> you don't allow whitespace before the first token :P
22:19:56 <ehird> MizardX: that's why you .strip() the input string.
22:20:04 <fizzie> What were you compiling it to?
22:20:08 <ehird> i could put that in parse :P
22:20:13 <ehird> fizzie: python first, then c if that goes well
22:20:37 <ehird> oerjan: pun alert!
22:25:38 <oerjan> YOU KNOW I HATE PUNS ----###
22:26:38 <MizardX> ehird: "A name without the list of parameters denotes the variable if it is in scope, the parser otherwise.". You threat all names without parens as variables.
22:26:39 <oerjan> CRUSH THEM LIKE FLIES, I SAY
22:27:00 <ehird> MizardX: that's handled by the runtime.
22:27:06 <ehird> (the variable will override the parser)
22:27:16 <ehird> and calling will be done in a way specialcasing that
22:27:35 <ehird> i hope i dont have to do scope analysis at compile time
22:28:16 <MizardX> variable names are static, so they will always only refer to the previous declaration.
22:28:26 <ehird> still means i have to do analysis
22:32:27 <MizardX> Well... I didn't spot any other bugs. Good job so far.
22:33:33 * ehird makes all regex's precompiled in the output
22:36:36 <MizardX> Precompiled regex'es in python?
22:37:55 <fizzie> I assume that means "will be compiled when the Python script starts", not "precompiled" in the most strictestest sense.
22:41:10 <ehird> it returns the result of b, right?
22:41:19 <ehird> i.e. when giving it stuff, it throws the result of that fed through a away
22:41:36 -!- jix has quit ("...").
22:42:41 <ais523> I think it's them concatenated, based on the Underload interp MizardX pasted
22:42:55 <ehird> Can't parsers return things other than strings?
22:43:57 <MizardX> The plus sign denotes concatenation. First, the input string is fed into the left parser. If it succeeds, then the new input string is fed into the right parser. If it succeeds, the concatenation also succeeds, returning the string concatenation of the two result strings as the result and the input string of the right parser as the new input string.
22:44:29 <MizardX> They can only return strings. Though they can also both soft and hard fail.
22:44:35 <ehird> Soft/hard fail is confusing, yeah.
22:44:43 <ehird> I'm representing it as two seperate python exceptions, is that right?
22:44:55 <MizardX> Soft fail is like a null result. Hard fail is like an exception.
22:45:15 <ehird> So a parser returning "" soft fails?
22:45:33 <fizzie> "" sounds like succeeding to me.
22:45:40 <fizzie> It's just an empty string.
22:45:54 <ehird> [[soft fail is like a null result]]
22:46:01 <fizzie> But "" is not like a null result.
22:46:08 <MizardX> A soft fail in the middle of a block, argument list or concatenation results in a hard fail.
22:46:22 <ehird> MizardX: does this parser soft fail:
22:46:39 <MizardX> succeeds with an empty string result.
22:46:42 <ehird> im just finding it hard to distinguish between hard/soft failing
22:47:25 <MizardX> Soft fails becomes important for alternations. A soft fail for the left child results in that the right child gets parsed instead.
22:47:40 <ehird> why not just a regular fail?
22:47:44 <ehird> fail for left child -> right child
22:48:20 <MizardX> Strings always succeeds. Regexes can either succeed or soft fail.
22:48:29 <ehird> why not just have one type of fail
22:49:09 <ehird> What's the problem with no hard fail?
22:49:31 <fizzie> My guess is that you might want to have a "this failed completely, don't even try to continue messing around" type of failure.
22:49:45 <MizardX> I guess it so it could potentionally be run on input with no back-tracking capabilities.
22:51:42 <ehird> + and | are... whatever the word is for not mattering about left/rightness, right?
22:51:48 <ehird> (a + b) + c == a + (b + c)
22:51:53 <ehird> and (a | b) | c == a | (b | c)
22:52:26 <ehird> MizardX: except... if the first hard/soft fails
22:52:28 <ehird> it fails the same way
22:52:30 <ehird> but if the second does
22:52:40 <ehird> so, it matters what exactly the escond is
22:52:51 <ehird> so they aren't, are they?
22:53:03 <ehird> it's a + (b + c) in the spec, anyway
22:53:28 <MizardX> if b or c soft fails in either case, the whole expression hard fails.
22:55:28 <MizardX> Soft fail no the last branch on the alternation on the other hand, only causes the whole expression to soft fail.
22:55:54 * ehird has to structure, oops.
22:56:04 <ehird> can't do a + b without each subparser being a seperate function
22:56:09 <ehird> so i need to do that for a | b too
23:00:45 <oklopol> i think i should have some breakfast.
23:00:52 <oklopol> since it's tomorrow already
23:01:40 <oklopol> is it? what's weird about eating
23:09:11 <MizardX> I'll go to sleep now. Need to get up in a few hours. :S
23:10:43 <MizardX> ehird: One problem for you; How to check if two strings are equal in Redivider, without hard-failing.
23:11:04 <ehird> MizardX: is that even possible
23:11:38 <ehird> MizardX: got it, i think:
23:13:55 <ais523> yay, gcc-bf's build system works
23:14:04 <ais523> at least for an initial compile
23:14:08 <ais523> next step: make it work as a Makefile
23:23:16 <fizzie> Hum, if you've got a string in variable 'a' and another in variable 'b', and you want to test for their equality, and you happen to know X's not in the string, can't you just do /([^X]*)X\1/ a + "X" + b ?
23:23:24 <fizzie> Not quite generic, of course.
23:25:56 <fizzie> Uh, meaning /([^X]*)X\1/ [ a + "X" + b ] there, of course. For some reason read the "parser_1 [ parser_2 ]" without the brackets.
23:26:13 <fizzie> I've never done anything with that language.
23:26:31 <MizardX> if the regular expression fails, then re[...] will hard fail
23:26:45 <pikhq> heheheh... Nice work, ais523.
23:26:57 <ehird> MizardX: btw, i think i have an idea for the comparer
23:27:26 <GregorR> I have an idea: Call it the "comparator" :P
23:28:30 <ehird> equal(a, b): { /$/[a]; /$/[b]; "equal" } | { /$/[a]; "not equal" } | { /$/[b]; "not equal" } | { ha: head[a]; hb: head[b]; equal(ha, hb); equal(tail[a], tail[b]) }.
23:28:35 <ehird> needs the one-character case, but still
23:29:14 <MizardX> /regex/[input] will hard fail if the regex soft-fails
23:29:37 <fizzie> Causing the whole | to hard-fail. That's one tricky language.
23:30:37 <MizardX> one way would be {/regex/; body}[input]
23:31:22 <MizardX> as long as body doesn't fail
23:31:53 <MizardX> or ({/regex/;body}|alt)[input]
23:32:04 <fizzie> How would that work? Won't the block instantly hard-fail if the regex fails?
23:32:33 <fizzie> "If the first parser soft fails, the block soft fails. If any other parser fails, or the first parser hard fails, then the block hard fails."
23:32:57 <fizzie> The regex will only soft-fail there.
23:35:47 <ehird> anyone who knows about prolog:
23:35:55 <ehird> is it possible for a predicate to cause a new statement (axiom, whatever?)
23:36:00 <ehird> pred(X) :- condition
23:36:02 <ehird> can another predicate
23:36:12 <ehird> so that even if the condition it was stated on becomes false, the axiom remains?
23:36:50 <ehird> oerjan: so I can do
23:36:57 <ehird> makeFoo(X) :- assert(foo(X))
23:37:22 <ehird> | ?- assert(foo('hi')).
23:37:22 <ehird> uncaught exception: error(existence_error(procedure,assert/1),top_level/0)
23:37:54 <oerjan> oh right there are some technicals
23:37:55 <fizzie> You can also retract/1 things.
23:38:07 <ehird> my game of prolog in nomic shall pwnz0r!!11
23:38:11 <oerjan> you may need to declare foo first in some implementations
23:38:30 <ehird> if i want no defaulted predicates...
23:38:32 <nooga> did someone ever implemented something like esoteric prolog?
23:38:42 <ehird> nooga: no, btu ais523 designed Proud or was it Pound
23:38:44 <ehird> which is uncomputable
23:38:45 <oerjan> i don't quite recall how
23:40:02 <ehird> foo(X) :- not(bar(X)), assert(...)
23:40:03 <fizzie> I've done a Scheme interpreter in Prolog; it felt a tiny bit esoteric-y, even if both involved languages are so mainstream. It's not "esoteric prolog" in the sense you meant, though.
23:40:07 <ehird> youre not meant to use not in prolog are you?
23:40:16 <ehird> you're meant to use cut aren't you
23:41:40 <fizzie> Maybe you could just foo(X) :- bar(X), !, fail. foo(X) :- assert(...). or something, but I'm not sure if that's any nicer. Not a Prologer, though.
23:41:57 <oerjan> ehird: ah you declare it with dynamic
23:42:21 <oerjan> http://gollem.science.uva.nl/SWI-Prolog/Manual/dynamic.html
23:42:52 <ehird> register(email, name) :- not(player(email, N)), assert(player(email, name)).
23:43:20 <ehird> No permission to modify static_procedure `(dynamic)/1'
23:43:24 <oerjan> ehird: dynamic player/2, actually
23:43:41 <ehird> ERROR: (/Users/ehird/Documents/Code/nomic.pl:1):
23:43:41 <ehird> No permission to modify static_procedure `(dynamic)/1'
23:44:20 <ehird> needs to be Email, Name
23:44:49 <ehird> dynamic no worky :(
23:45:00 <nooga> i saw prolog implementation in ruby that permitted using prolog inline
23:45:17 <nooga> bcs it was coded using ruby's syntax awesomness
23:46:01 <ehird> nooga: yeah, seen it
23:47:25 * ehird wonders if you can dump the state of the prolog world to a file
23:48:56 <oerjan> ehird: you need :- dynamic player/2. see the link above
23:49:30 * ehird tries to remember the if/else syntax in prolog
23:51:55 <ehird> i wonder how you give a reason for failing?
23:51:58 <ehird> there's just fail/0
23:56:44 <oerjan> i'm not sure that makes sense
23:57:07 <ehird> i'll just build it into the infrastructure
23:57:13 <ehird> as in, commands can be replied to
23:57:16 <ehird> so i'll just make it part of the reply
23:58:54 <oerjan> there are exceptions though
23:58:54 <ehird> how come the format predicate always outputs, isn't there a way to get it to put the output in an atom?
23:59:42 <ehird> format(atom(Foo), ...)