00:05:16 -!- _D6Gregor1RFeZi has changed nick to GregorR. 
00:24:07 -!- nazgjunk has joined. 
00:35:57 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
00:36:08 -!- UpTheDownstair has joined. 
00:37:44 -!- UpTheDownstair has quit (Client Quit). 
00:38:06 -!- digital_me has quit ("Lost terminal"). 
00:38:36 -!- digital_me has joined. 
00:43:12 -!- digital_me has quit (Client Quit). 
00:47:20 -!- digital_me has joined. 
01:12:03 -!- nazgjunk has joined. 
01:20:49 -!- crathman has joined. 
01:26:24 -!- digital_me has quit ("leaving"). 
01:27:27 -!- wooby has quit. 
01:29:49 -!- nazgjunk has quit ("Leaving"). 
01:58:23 -!- digital_me has joined. 
02:18:02 -!- tgwizard has quit (Remote closed the connection). 
03:01:12 -!- SevenInchBread has joined. 
03:23:46 -!- wooby has joined. 
03:33:01 -!- digital_me has quit ("leaving"). 
03:38:22 -!- SevenInchBread has quit (Read error: 104 (Connection reset by peer)). 
03:38:31 -!- SevenInchBread_ has joined. 
03:39:36 -!- SevenInchBread_ has changed nick to SevenInchBread. 
04:02:16 -!- crathman has quit (Read error: 104 (Connection reset by peer)). 
04:02:38 -!- crathman has joined. 
04:18:43 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.2/2007021917]"). 
04:22:28 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 
05:15:54 -!- ShadowHntr has joined. 
05:24:05 -!- ShadowHntr has quit ("End of line."). 
05:27:58 -!- ShadowHntr has joined. 
06:17:04 -!- RodgerTheGreat has quit. 
06:17:21 -!- oerjan has quit ("leaving"). 
06:35:40 -!- GreaseMonkey has joined. 
06:44:36 -!- ShadowHntr has quit ("End of line."). 
07:30:16 -!- wooby has quit. 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:14:15 -!- GreaseMonkey has quit ("gnight0r"). 
08:20:53 -!- anonfunc has quit (Read error: 145 (Connection timed out)). 
08:22:41 -!- bsmnt_bot has quit (Read error: 145 (Connection timed out)). 
08:31:37 -!- Sukoshi` has joined. 
08:32:31 -!- kxspxr has joined. 
08:34:27 -!- kxspxr has quit (Client Quit). 
08:34:32 -!- kxspxr has joined. 
08:34:38 -!- kxspxr has quit (Remote closed the connection). 
08:50:33 -!- oklofok has joined. 
09:00:01 -!- oklopol has quit (Read error: 110 (Connection timed out)). 
09:01:38 -!- AfterDeath has quit (Read error: 104 (Connection reset by peer)). 
09:02:35 -!- AfterDeath has joined. 
09:31:15 -!- sebbu has joined. 
10:07:12 -!- Sukoshi` has quit ("Neh."). 
10:13:17 -!- AfterDeath has quit (Read error: 104 (Connection reset by peer)). 
10:14:24 -!- AfterDeath has joined. 
10:14:50 -!- nazgjunk has joined. 
10:35:08 -!- pgimeno has quit (Read error: 104 (Connection reset by peer)). 
10:35:25 -!- pgimeno has joined. 
10:43:08 -!- jix__ has joined. 
10:52:40 -!- nazgjunk has quit (Read error: 131 (Connection reset by peer)). 
10:53:01 -!- nazgjunk has joined. 
10:57:21 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 
10:57:51 -!- nazgjunk has joined. 
11:20:33 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
11:20:57 -!- nazgjunk has joined. 
12:34:16 -!- tgwizard has joined. 
13:39:39 -!- goban has joined. 
14:00:24 -!- jix__ has quit (Read error: 110 (Connection timed out)). 
14:00:43 -!- jix__ has joined. 
14:27:46 -!- oerjan has joined. 
14:37:01 -!- goban has quit (Connection timed out). 
14:37:11 -!- goban has joined. 
15:40:15 -!- goban has quit (Connection timed out). 
15:52:18 -!- crathman has joined. 
16:01:19 -!- sebbu2 has joined. 
16:20:00 -!- sebbu has quit (Read error: 110 (Connection timed out)). 
16:20:00 -!- sebbu2 has changed nick to sebbu. 
17:08:49 -!- RodgerTheGreat has joined. 
17:11:31 <oerjan> writing a Forte interpreter 
17:13:05 <oerjan> using a purely functional parsing library to parse an interactive interpreter with continuation lines has its, ahem, issues. 
17:14:31 <oerjan> well - there are many esoteric languages that are much easier to implement than to use. 
17:19:59 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 
17:20:01 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 
17:33:09 -!- oerjan has quit ("leaving"). 
17:55:32 -!- goban has joined. 
19:13:43 -!- ShadowHntr has joined. 
19:24:03 -!- UpTheDownstair has joined. 
19:24:16 -!- UpTheDownstair has quit (Client Quit). 
19:41:55 -!- ShadowHntr has quit (Client Quit). 
19:45:03 -!- Arrogant has joined. 
19:57:01 -!- nazgjunk has quit (Connection reset by peer). 
19:57:07 -!- UpTheDownstair has joined. 
19:57:59 -!- UpTheDownstair has changed nick to nazgjunk. 
20:04:04 -!- Arrogant_ has joined. 
20:12:04 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
20:12:25 -!- goban has joined. 
20:21:33 -!- UpTheDownstair has joined. 
20:21:52 -!- nazgjunk has quit (Read error: 131 (Connection reset by peer)). 
20:23:17 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
20:23:36 -!- goban has joined. 
20:25:39 -!- Arrogant has quit (Read error: 113 (No route to host)). 
20:35:27 -!- UpTheDownstair has quit ("Leaving"). 
21:19:52 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
21:20:04 -!- goban has joined. 
21:23:00 -!- Arrogant_ has quit ("Leaving"). 
21:27:24 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
21:27:39 -!- goban has joined. 
21:32:55 -!- oerjan has joined. 
21:35:07 -!- nazgjunk has joined. 
21:40:11 -!- wooby has joined. 
21:44:28 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
21:47:12 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
21:47:27 -!- goban has joined. 
22:23:37 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
22:23:49 -!- goban has joined. 
22:41:30 -!- goban has quit (Connection timed out). 
22:44:11 -!- nazgjunk has quit ("sleep :/"). 
22:44:58 -!- goban has joined. 
23:17:37 -!- goban has quit (Connection timed out). 
23:17:55 -!- goban has joined. 
23:25:29 -!- sebbu has quit ("@+"). 
23:29:29 -!- crathman has quit (Read error: 113 (No route to host)). 
23:36:27 -!- tgwizard has quit (Read error: 110 (Connection timed out)). 
23:59:38 -!- crathman has joined. 
00:04:13 -!- crathman has quit (Read error: 104 (Connection reset by peer)). 
01:00:10 -!- lament has joined. 
01:02:30 <fizzie> I guess I'm left with /, then. 
01:07:32 <fizzie> I hope my character was a correct U+205D TRICOLON (also called "Epidaurean acrophonic symbol three"); it looks correct elsewhere but not in this terminal. :/ 
01:08:44 <oerjan> i'm afraid even on second attempt I just got the usual square... 
01:42:19 <oerjan> well it's simple in lambda calculus, but i don't know about SKI. 
01:58:59 <oerjan> and of course ``S`KxI = x 
02:08:43 -!- SevenInchBread has joined. 
02:09:41 <SevenInchBread> I accidentally created an algorithm that produces (I think) a circle or maybe an ellipsis (I could only see half of it because the turtle window wasn't big enough) 
02:10:01 <SevenInchBread> I'll pastebin it so someone can explain the math behind it. 
02:14:49 <bsmntbombdood> what are some multiple argument extensional simplifications? 
02:16:26 <oerjan> i think it may be simpler to convert to lambda calculus, eta-reduce, then convert back. 
02:17:24 <oerjan> \x.fx = f where f does not contain x 
02:18:33 <oerjan> plus some beta-reductions too, i guess. 
02:18:37 <SevenInchBread> so... any clue why the numbers behave in such a way to create a circle(like) shape? 
02:19:48 <bsmntbombdood> But a SKI interpreter shouldn't need a lambda calculus interpreter 
02:19:50 <SevenInchBread> hmm... changing the right() method call to left() simply makes a smaller circle... weird 
02:20:38 <oerjan> the only changing parameter is dist. 
02:22:09 <SevenInchBread> yup... it just goes back and forth betwen true and false. 
02:22:56 <oerjan> essentially dict just fluctuates in some interval. 
02:24:18 <SevenInchBread> I looks almost like a perfect circle to me... although it could be oblongated mathematically. 
02:24:54 <oerjan> _anything_ that goes through a lot of identical small turtle movements must create a circle. 
02:25:30 <oerjan> because each cycle will move by the same amount, then turn the same amount. 
02:26:38 <SevenInchBread> darn... I thought I might have found some weird mathematical pattern. 
02:27:11 <SevenInchBread> ... 8, 3, and 5 (the only numbers I used other than phi) are all heavily related with phi. 
02:27:28 <SevenInchBread> ...I picked them mainly because they're a few of my favorite numbers. 
02:27:57 <oerjan> i believe any change in the constants which doesn't cause dist to diverge will still produce a circle. 
02:28:51 <SevenInchBread> until then I just got freaky scribble patterns... for an unrelated alg using a bunch of randomly pieced together computations. 
02:29:11 <oerjan> you might change dist by functions that don't match quite as well as *= prod and /= prod 
02:29:56 <oerjan> then dist could change in a more complicated pattern. 
02:31:09 <SevenInchBread> changing it to exponentiation makes the circle spin in a very tight spiral to the right... like the original except veering to the right very slightly each loop. 
02:31:50 <SevenInchBread> still a cyclic interval though... the distance is simply being gradually altered. 
02:32:35 <oerjan> i think that must be roundoff errors in the Turtle graphics. It they were perfect you couldn't go in a particular direction. 
02:33:28 -!- crathman has joined. 
02:36:40 <SevenInchBread> hmm... switching to decimal representation made exponentiation no longer work with phi as the exponent. 
02:42:20 <SevenInchBread> bah... using Decimal just makes the floating point math done in the turtle module screw up. 
02:44:44 <SevenInchBread> hmmm... is decimal arithmetic considerably slower than good ol' floating point? 
03:08:29 <SevenInchBread> I was thinking for Sophia I could automatically convert between floating point, long intergers, short integers, and decimally-represented numbers without having to worry about it. 
03:09:21 <SevenInchBread> ...as long as there's a way to predict which floating point operations won't be accurate... you could convert to decimal format for the operations. 
03:12:04 <SevenInchBread> it basically mimics "schoolhouse" algorithms for doing math... so it's more accurate but takes more time 
03:12:25 <oerjan> decimal format is not that much better. 
03:13:00 <oerjan> you'll have to round off eventually, in any case. 
03:15:11 <oerjan> adding more bits increases accuracy just as much as adding more decimals. 
03:15:43 <SevenInchBread> It's mostly used in  nitpicky computations... like finance and science... 
03:15:53 <oerjan> yeah, but even they only work for arithmetic 
03:16:03 <oerjan> just finance, i think. 
03:16:29 <oerjan> and that's not really because decimals are more accurate. 
03:17:22 <oerjan> it's because financial calculations are strictly defined by old traditions from before there were binary computers. 
03:19:05 <SevenInchBread> aaah.... legal standardization more so than any gains in accuracy. 
03:19:30 <bsmntbombdood> ``````````aaaaaaaaaaa takes like 5 minutes to return 
03:19:44 <oerjan> the more simplifications you try to catch the closer you get to having to solve the halting problem :) 
03:20:15 <oerjan> although that does sound like maybe you need a better algorithm 
03:20:22 <oerjan> or maybe you have bugs. 
03:20:43 <oerjan> as in, repeating work bugs 
03:40:05 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 
04:04:08 -!- oerjan has quit ("Good night"). 
04:46:05 -!- crathman has quit (Read error: 131 (Connection reset by peer)). 
04:47:21 -!- crathman has joined. 
04:51:34 -!- crathman has quit (Client Quit). 
04:59:03 -!- Arrogant has joined. 
06:18:45 -!- anonfunc has joined. 
06:19:05 -!- ShadowHntr has joined. 
06:19:06 -!- anonfunc has quit (Remote closed the connection). 
07:32:34 -!- goban has quit (Remote closed the connection). 
07:33:12 -!- goban has joined. 
07:34:55 -!- wooby has quit. 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:01:29 -!- Sukoshi` has joined. 
08:04:42 -!- Sukoshi has changed nick to Sukoshi``. 
08:04:47 -!- Sukoshi` has changed nick to Sukoshi. 
08:08:48 -!- ShadowHntr has quit (Read error: 110 (Connection timed out)). 
09:20:20 -!- Sukoshi has quit ("Bleh. Go time."). 
09:21:24 -!- sebbu has joined. 
10:18:18 -!- Arrogant has quit ("Leaving"). 
10:27:16 -!- ShadowHntr has joined. 
10:59:51 -!- ShadowHntr has quit ("End of line."). 
13:21:03 -!- clog has joined. 
13:21:03 -!- clog has joined. 
13:30:48 -!- sebbu2 has joined. 
13:36:24 -!- sebbu has quit (Nick collision from services.). 
13:37:07 -!- sebbu2 has changed nick to sebbu. 
13:50:28 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
13:50:31 -!- goban has joined. 
14:11:10 -!- ais523 has quit. 
14:29:04 -!- oklofok has changed nick to oklopol. 
14:39:51 -!- nazgjunk has joined. 
15:17:14 -!- goban has quit (Read error: 110 (Connection timed out)). 
15:17:26 -!- goban has joined. 
15:37:16 -!- goban has quit (Connection timed out). 
15:38:01 -!- goban has joined. 
15:44:24 -!- UpTheDownstair has joined. 
15:45:56 -!- nazgjunk has quit (Read error: 110 (Connection timed out)). 
15:46:36 -!- UpTheDownstair has changed nick to nazgjunk. 
16:53:20 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
16:53:50 -!- nazgjunk has joined. 
18:53:32 -!- clog has joined. 
18:53:32 -!- clog has joined. 
19:18:12 -!- nazgjunk has quit ("Leaving"). 
19:37:52 -!- ShadowHntr has joined. 
20:29:05 -!- ShadowHntr has quit ("End of line."). 
21:00:32 -!- jix__ has joined. 
21:09:33 -!- jix has quit (Read error: 113 (No route to host)). 
21:49:47 -!- ShadowHntr has joined. 
22:39:06 -!- ShadowHntr has quit (Client Quit). 
22:54:36 -!- wooby has joined. 
23:00:18 <GregorR> I wrote a runtime ELF loader 8-D 
23:00:35 <GregorR> It segfaults mysteriously >_> ... but only after the program has finished. 
23:04:01 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
23:08:31 -!- kxspxr has joined. 
23:32:06 -!- sebbu2 has joined. 
23:34:18 -!- kxspxr has quit. 
23:39:34 -!- sebbu has quit (Read error: 145 (Connection timed out)). 
23:40:48 -!- wooby has quit. 
00:46:17 -!- tgwizard has quit (Remote closed the connection). 
00:56:51 -!- sebbu2 has quit ("@+"). 
01:41:13 -!- nazgjunk has joined. 
01:46:34 -!- EgoBot has quit (calvino.freenode.net irc.freenode.net). 
01:46:34 -!- tokigun has quit (calvino.freenode.net irc.freenode.net). 
01:46:34 -!- Sukoshi`` has quit (calvino.freenode.net irc.freenode.net). 
01:46:34 -!- GregorR has quit (calvino.freenode.net irc.freenode.net). 
01:46:35 -!- oklopol has quit (calvino.freenode.net irc.freenode.net). 
01:46:35 -!- SimonRC has quit (calvino.freenode.net irc.freenode.net). 
01:46:35 -!- NK` has quit (calvino.freenode.net irc.freenode.net). 
01:46:35 -!- sekhmet has quit (calvino.freenode.net irc.freenode.net). 
01:46:37 -!- nooga has quit (calvino.freenode.net irc.freenode.net). 
01:46:37 -!- mtve has quit (calvino.freenode.net irc.freenode.net). 
01:46:55 -!- wooby has joined. 
01:47:12 -!- SimonRC has joined. 
01:47:12 -!- NK` has joined. 
01:47:12 -!- sekhmet has joined. 
01:47:12 -!- oklopol has joined. 
01:47:12 -!- GregorR has joined. 
01:47:12 -!- EgoBot has joined. 
01:47:12 -!- tokigun has joined. 
01:47:12 -!- Sukoshi`` has joined. 
01:47:12 -!- nooga has joined. 
01:47:12 -!- mtve has joined. 
02:02:51 -!- nazgjunk has quit ("Leaving"). 
03:14:21 -!- nooga_ has joined. 
03:22:59 -!- nooga has quit (Read error: 110 (Connection timed out)). 
03:31:38 -!- ShadowHntr has joined. 
04:35:50 -!- oerjan has quit ("Good night"). 
05:17:10 -!- Remi__ has joined. 
05:20:03 -!- Remi__ has quit ("Ex-Chat"). 
07:56:03 -!- ShadowHntr has quit (Read error: 145 (Connection timed out)). 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:35:44 -!- jix__ has joined. 
08:51:38 -!- jix__ has quit (Read error: 104 (Connection reset by peer)). 
08:52:06 -!- jix__ has joined. 
09:02:56 -!- sebbu has joined. 
10:11:45 -!- wooby has quit. 
11:19:39 -!- goban has joined. 
12:01:45 -!- UnrelatedToQaz has joined. 
12:02:15 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 
12:02:18 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 
12:06:48 <EgoBot> To use an interpreter: <interpreter> <program>  Note: <program> can be the actual program, an http:// URL, or a file:// URL which refers to my pseudofilesystem. 
12:07:21 <EgoBot> To use an interpreter: <interpreter> <program>  Note: <program> can be the actual program, an http:// URL, or a file:// URL which refers to my pseudofilesystem. 
12:08:17 -!- UnrelatedToQaz has left (?). 
12:39:00 -!- tgwizard has joined. 
12:56:00 -!- sebbu2 has joined. 
13:14:36 -!- sebbu has quit (Read error: 110 (Connection timed out)). 
13:16:32 -!- nazgjunk has joined. 
14:30:33 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
14:33:58 -!- nazgjunk has joined. 
14:46:23 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
14:46:54 -!- nazgjunk has joined. 
15:04:52 -!- goban has quit (Read error: 110 (Connection timed out)). 
15:05:06 -!- goban has joined. 
15:10:15 -!- nazgjunk has quit ("Leaving"). 
15:22:14 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
15:22:28 -!- goban has joined. 
15:35:38 -!- nooga_ has quit ("leaving"). 
15:39:36 -!- goban has quit (Connection timed out). 
15:42:50 -!- goban has joined. 
15:59:51 -!- helios24 has quit (Read error: 60 (Operation timed out)). 
16:13:58 -!- nazgjunk has joined. 
16:22:02 -!- goban has quit (Success). 
16:22:37 -!- oerjan has joined. 
16:35:58 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
16:41:30 -!- goban has joined. 
16:43:37 -!- nazgjunk has joined. 
16:58:07 -!- nazgjunk has quit (Connection reset by peer). 
17:00:52 -!- goban has quit (Connection timed out). 
17:00:54 -!- goban has joined. 
17:04:49 -!- UpTheDownstair has joined. 
17:04:51 -!- UpTheDownstair has quit (Client Quit). 
17:18:17 -!- wooby has joined. 
17:22:11 -!- wooby has quit (Client Quit). 
17:22:32 -!- nazgjunk has joined. 
17:33:18 -!- UpTheDownstair has joined. 
17:33:26 -!- nazgjunk has quit (Read error: 131 (Connection reset by peer)). 
17:34:07 -!- goban has quit (Connection timed out). 
17:44:41 -!- goban has joined. 
17:56:43 -!- UpTheDownstair has changed nick to nazgjunk. 
18:49:32 -!- nazgjunk has quit ("Leaving"). 
19:00:48 -!- oerjan has quit ("leaving"). 
19:03:27 -!- nazgjunk has joined. 
19:56:59 -!- tgwizard has quit (Remote closed the connection). 
20:04:37 <GregorR> bsmntbombdood: Well, there's a nasty trick to it. 
20:04:56 <GregorR> bsmntbombdood: The only place that you can count on /not/ clobbering while loading a program is the stack. 
20:05:09 <GregorR> bsmntbombdood: So ... I copy all the code I need to the stack before loading ^^ 
20:05:46 <GregorR> bsmntbombdood: The threat of stack-smashing arbitrary code execution is moot, since the purpose of a binary loader is to execute arbitrary code *shrugs* 
20:08:18 <GregorR> mmap is your friend - it allows you to map anonymous memory /anywhere/, including areas inhabited by the text or data segment. 
20:13:56 -!- SevenInchBread has joined. 
20:24:49 -!- UpTheDownstair has joined. 
20:24:50 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
20:25:04 -!- UpTheDownstair has changed nick to nazgjunk. 
20:53:18 <SevenInchBread> I'm not sure what specifies one "statement" from another.. 
20:53:34 <SevenInchBread> I don't want to use newlines... but I don't want semicolons either. 
20:53:55 <SevenInchBread> I was kind of hoping something could just implicitly separate lines. 
20:59:14 -!- jix__ has quit (Read error: 145 (Connection timed out)). 
20:59:45 -!- jix__ has joined. 
21:06:00 <SevenInchBread> Lisp using parenthesis to know when to split from the expression yeah? 
21:08:59 <SevenInchBread> you've got    expression := "(" expression* ")" | word | StringLiteral | NumberLiteral 
21:09:53 <SevenInchBread> but it's OO... instead of  (func arg1 arg2 ...)   you've got  (object message arg) 
21:13:49 <SevenInchBread> I'll do the implicit-line-continuation-on-parenthesis thing... like Python. 
21:34:28 -!- SevenInchBread has quit ("haaaaaaaaaa"). 
21:34:53 -!- SevenInchBread has joined. 
22:18:45 -!- sekhmet has quit (Read error: 104 (Connection reset by peer)). 
22:18:47 -!- sekhmet has joined. 
22:25:44 <bsmntbombdood> <SevenInchBread> I'll do the implicit-line-continuation-on-parenthesis thing... like Python. 
22:27:06 <SevenInchBread> well... lisp uses -only- parenthesis... where I'll be using newlines-but-only-if-no-parenthesis-are-open. 
22:31:11 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 
22:31:28 -!- SevenInchBread has joined. 
22:45:16 <SevenInchBread> method calls sort of skew the syntax away from being Lispable. 
22:47:04 <SevenInchBread> parenthesis don't signify the start and end of an expression. 
22:47:18 -!- GreaseMonkey has joined. 
22:56:56 -!- Rugxulo has joined. 
22:57:05 -!- Rugxulo has quit (Remote closed the connection). 
22:59:29 <SevenInchBread> see.... parenthesis don't signify a call in Sophia... they just group expressions. 
23:00:32 <SevenInchBread> I like just using newlines unless there's an open parenthesis 
23:01:38 <SevenInchBread> or I could change the syntax to  object (message arg ...)   and say that each line is a message to the module. :) 
23:02:45 <bsmntbombdood> or you could change the syntax to object.message(arg) and just use python 
23:03:29 <SevenInchBread> nope... the semantics are totally different from Python. :P 
23:03:54 <SevenInchBread> it's a bastard mix of Lisp, Smalltalk, and my own doing. 
23:05:10 -!- ShadowHntr has joined. 
23:09:03 <SimonRC> bsmntbombdood: No you twallock I was talking about the eclipse. 
23:09:47 <SimonRC> http://news.bbc.co.uk/1/hi/sci/tech/6411991.stm 
23:20:41 -!- sebbu has joined. 
23:20:52 <SimonRC> sebbu: have you been watching? 
23:21:25 -!- bsmnt_bot has joined. 
23:39:20 -!- sebbu2 has quit (Connection timed out). 
00:05:32 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
00:05:36 -!- UpTheDownstair has joined. 
00:05:46 -!- UpTheDownstair has changed nick to nazgjunk. 
00:27:46 <bsmntbombdood> I have a great urge to do something incredibly esoteric with pointers right now 
00:30:41 <SevenInchBread> not much you can do with an integer pointer to make it esoteric... floating point, imaginary, rational? 
00:31:05 <bsmntbombdood> The actual pointer doesn't have to be esoteric, just its use 
00:31:38 <SevenInchBread> that points to an integer, which becomes to pointers new value. 
00:31:51 <sebbu> SimonRC, watching what ? 
00:32:22 <SevenInchBread> well... it gives you some moderate form of control flow. 
00:32:52 <SimonRC> the eclipse is nearly over now 
00:33:43 <SimonRC> bsmntbombdood: you can use pointers as your only primitive type? 
00:33:56 <SimonRC> actually, make that cons cells as your only primitive type 
00:34:11 <SimonRC> nil is a cons cell that points to itself twice 
00:35:23 <SimonRC> a number might become a listy-kinda thing 
00:35:49 <SimonRC> with clever sharing, a number could easily be a tree with NILs at the leaves 
00:36:08 <SevenInchBread> so then concatenation of the trees would be like addition. 
00:36:50 <SimonRC> 1 = a pair of differnt NILs 
00:36:55 <SimonRC> or maybe that would be 1 and 2 
00:37:10 <SimonRC> 2 would be two pointers to the same copy of 1 
00:37:21 <SimonRC> 3 would be a pointer to one and 2 
00:37:30 <SimonRC> I am sure you can think of a way 
00:37:52 <SevenInchBread> (cons (cons (cons (cons (cons nil)))))      ...5, and then use the properties of lists to do arithmetic. 
00:38:26 <SevenInchBread> ... just assume all of those have nill on them or whatever :P 
00:38:56 <SimonRC> because all pointer have to be valid 
00:39:15 <SimonRC> actually, you can do this a better way... 
00:39:27 * SimonRC searches for the thing he needs 
00:39:58 <SevenInchBread> yeah, I'm pretty sure nil is a null pointer by itself. 
00:40:20 <SevenInchBread> not a pointer to nils... that's a recursive definition and you'd never be able to end a list. :) 
00:40:32 <bsmntbombdood> if the value of a node is the sum of its children... 
00:41:01 <SimonRC> here we go:   http://www.cs.st-andrews.ac.uk/~eb/writings/bignums.ps 
00:41:07 <SimonRC> "Every Number Has At Most Two Digits" 
00:42:26 <SimonRC> just tell your viewer to turn it the right way up 
00:42:34 <SevenInchBread> 0 = nil    1 = (0 nil)  2 = (1 nil)  3 = (2 nil)  4 = (3 nil)   etc 
00:44:15 -!- thematrixeatsyou has joined. 
00:44:37 -!- GreaseMonkey has quit (Nick collision from services.). 
00:44:44 -!- thematrixeatsyou has changed nick to GreaseMonkey. 
00:45:57 <SimonRC> bsmntbombdood: basically, a number is either: all zero or first half zero + second half non-zero, or first half non-zero + second half anything. 
00:47:10 <SimonRC> ah, that's the magic type theory notation 
00:47:21 <SimonRC> it comes from the types-as-proof-specifications thingy 
00:47:58 <SimonRC> the things on top are the data and types you start off with, and the bit at the bottom is the data or type that you can construct 
00:48:19 <SimonRC> it's not really much beyond Haskell's GADTs 
00:48:55 <SevenInchBread> I really wish OSes had some easy way for languages to easily communicate without whole processes. 
00:49:04 <SimonRC> if we represent a zero in either half as a pointer to the cons cell itself, we have a high-efficiency representation not only for small numbers, but also for sparse bit vectors (if we are clever when the first half is non-zero and the second half is zero). 
00:49:43 <SimonRC> If we are not clever in that latter case, we get an efficient notation for small numbers but not for all sparse ones 
00:49:59 <SimonRC> SevenInchBread: it's called "threads" 
00:50:10 -!- oerjan has joined. 
00:50:19 <SevenInchBread> ...I've never actually figured out what threads are...  
00:50:32 <SimonRC> like processes, but they share an address space 
00:50:49 <bsmntbombdood> http://en.wikipedia.org/wiki/Image:PM1%2B1%3D2lemma.jpg 
00:51:36 <SimonRC> nonono, I mean they share a heap and globals between them 
00:52:17 <SevenInchBread> yeah... they share a heap... so in order to communicate they need to alter data on the heap yeah? 
00:53:02 <SimonRC> of course, properly you should not share address space without a proper shared-address-space system.  Channels from Erlang are good, STM from Haskell is good, even though they got it from the database world, and locks and monitors suck with a suckage of several Lovelace. 
00:53:14 -!- sebbu has quit (Client Quit). 
00:53:45 <SimonRC> Channels are good if you know how the data will flow, and STM (transactions) is good if you don't care much about the exact order updates happen. 
00:54:29 <SimonRC> STM has a horrible overhead sometimes, but it is still a win if it lets you use 8 cores rather than 1. 
00:56:26 <bsmntbombdood> pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg); 
00:56:49 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
00:57:21 <SimonRC> Then you give up and write it in a language with some actual concurrency *support* rather than a concurrency *burden*. 
01:00:04 <SimonRC> like I said, C=bad for this 
01:00:35 * oerjan wonders if you could do reverse pointers - like COME FROM. 
01:01:06 <SimonRC> you might be able to do some dreadful hashing trick 
01:01:15 <oerjan> in INTERCAL, but that is for program flow. 
01:01:37 <SimonRC> some Fortrans had an "AT", which was like a COME FROM 
01:01:54 <SimonRC> and of course COME FROM is back in fasion with the emergence of AOP. 
01:06:11 <fizzie> FORTRAN's DO loop is somewhat come-from-y, since you just give the line number where the loop ends, and there's nothing at that line marking the end of the loop. (Most people would probably stick a CONTINUE statement there, though.) 
01:06:35 * SimonRC lols at the "reverse-find" algorithm 
01:07:23 <SimonRC> It's complexity bound has possibly the world's slowest-growing function that tends to infinity and is yet useful for something. 
01:07:41 <SimonRC> it contains the inverse of the ackermann function 
01:09:28 <oerjan> hm... googling reverse-find + ackermann gives me nothing 
01:09:55 <oerjan> or more precisely, one page in Hebrew. 
01:10:11 <oerjan> which is about equivalent. :) 
01:11:22 -!- ihope_ has joined. 
01:11:34 <ihope_> ~ctcp #esoteric ACTION ACTION ACTION 
01:11:51 <oerjan> SimonRC: That was supposed to be a hint to get a URL, btw :) 
01:12:01 <ihope_> ~exec self.raw("PRIVMSG #esoteric :\001ACTION ACTION\001") 
01:12:10 <SimonRC> http://www.scottaaronson.com/writings/bignumbers.html 
01:17:36 <ihope_> ~exec self.raw("PRIVMSG #esoteric :Foobar\001") 
01:17:48 <ihope_> ~exec self.raw("PRIVMSG #esoteric :Foo\001ACTION bar\001") 
01:18:19 <ihope_> My client failed to display that one. 
01:18:40 <oerjan> Mine too.  Not quite RFC-compliant. 
01:19:07 <oerjan> But then the RFC doesn't seem very useful in this case. 
01:20:07 <oerjan> did anyone see it properly? 
01:20:35 <oerjan> (I.e. Foo and bar on separate lines, the last as an emote) 
01:22:26 <ihope_> Is it supposed to do that? 
01:22:34 <ihope_> Mine didn't show it at all. 
01:22:42 <ihope_> ~exec self.raw("PRIVMSG #esoteric :\001ACTION bar\001"Foo) 
01:22:50 <ihope_> ~exec self.raw("PRIVMSG #esoteric :\001ACTION bar\001Foo") 
01:22:59 <ihope_> Didn't see that either. 
01:23:27 <oerjan> That one came out as an emote to me, but with an \A inside. 
01:23:30 <ihope_> ~exec self.raw("PRIVMSG #esoteric :foo\001bar\001\r\nPRIVMSG #esoteric :\001bar\001foo") 
01:23:45 <ihope_> I didn't see anything there either. 
01:24:06 <oerjan> you mean you saw absolutely nothing? 
01:24:30 <ihope_> I didn't realize bsmnt_bot replied at all until I read the logs. 
01:25:00 <ihope_> ~exec self.raw("PRIVMSG #esoteric :foo\001\001bar") 
01:25:07 <ihope_> ~exec self.raw("PRIVMSG #esoteric :foo\001\001") 
01:25:15 <ihope_> ~exec self.raw("PRIVMSG #esoteric :\001\001bar") 
01:25:34 -!- ihope_ has quit ("Reconnecting..."). 
01:25:48 -!- ihope_ has joined. 
01:25:59 <oerjan> it seems my client uses the first character to decide whether it is an emote, but then ignores anything inside. 
01:26:05 <ihope_> ~exec self.raw("PRIVMSG #esoteric :\001\001bar") 
01:26:35 <oerjan> bsmnt_bot [i=gavin@abacus.kwzs.be] requested unknown CTCP Abar from #esoteric: 
01:26:45 <ihope_> ~exec self.raw("PRIVMSG #esoteric :\001\001") 
01:27:10 <ihope_> ~exec self.raw("PRIVMSG #esoteric :\001ACTION throws a \001 at ihope_\001") 
01:27:19 <ihope_> ~exec self.raw("PRIVMSG #esoteric :\001\001\001") 
01:28:06 <oerjan> (I am using \A for inverted A on my screen) 
01:28:18 <ihope_> === Unknown CTCP [\0x01] () from bsmnt_bot 
01:28:41 <oerjan> that seems standard-compliant, at least. 
01:29:27 <oerjan> it should have been unknown CTCP "" followed by a single \A in a message, I think. 
01:30:03 <oerjan> anyhow, the conclusion is that you can count on \A working only at the ends of messages. 
01:30:43 <ihope_> It looks to me that if there's more than one \1 in a message, it fails to show. 
01:30:52 <ihope_> Naturally, our clients are different... 
01:30:57 -!- GreaseMonkey has quit (Read error: 60 (Operation timed out)). 
01:31:22 <ihope_> Do most clients implement CTCP as "if it starts with \1 and ends with \1 then the first word of what's in between is the command and everything else is the parameters"? 
01:31:40 <oerjan> mine seems to only look at "starts with \1" 
01:32:24 <ihope_> Maybe #tapthru would be a better place to ask... 
01:34:12 <oerjan> it occurs to me that it is reasonable to ignore multiple CTCPs, since they could be used to flood your screen. 
01:48:14 <oerjan> anything in particular? 
01:49:38 <oerjan> eh, the pages aren't numbered 
01:51:00 <oerjan> oh. i don't think we are reading the same URL... 
01:51:16 <bsmntbombdood> http://www.cs.st-andrews.ac.uk/~eb/writings/bignums.ps 
01:51:56 -!- manveru has left (?). 
02:16:43 -!- nazgjunk has quit ("Leaving"). 
02:23:52 -!- GreaseMonkey has joined. 
02:28:52 -!- ihope_ has changed nick to ihope^. 
02:32:13 -!- ihope^ has changed nick to ihope_. 
02:43:37 <SimonRC> the solution is the Use a parser-generator or a monadic parsing library 
02:44:11 <SimonRC> the latter give you unbelievably awful code but you never have to look at it. 
02:44:38 <SimonRC> the latter give you nice lear code, though it might be fiddly to use sometimes 
02:49:45 <SevenInchBread> I'm just using a... class-with-some-event-methods approach. 
02:52:38 <oerjan> hm... do the methods correspond to tokens of the grammar? 
02:53:34 <oerjan> otherwise you might indeed end up messy, if you try to make it input-driven rather than grammar-driven. 
02:55:20 <oerjan> but recursive descent can be simple if the grammar is suitable for it. 
02:57:59 <SimonRC> predictive is trivial even in Pascal 
03:04:18 <SevenInchBread> this part of it is building the AST by just finding literal characters and reacting to them. 
03:09:14 -!- GreaseMonkey has quit (Nick collision from services.). 
03:09:20 -!- thematrixeatsyou has joined. 
03:13:54 <oerjan> the typical way is to make the parser call the input routines rather than the other way around. 
03:14:25 <oerjan> and to let the parser branch and do recursive calls to sub-parsers based on what was read. 
03:15:07 <SevenInchBread> oooh... I've got a really good way to implement that... 
03:15:59 <oerjan> (sometimes it would be useful to recurse even before anything was read) 
03:16:15 <oerjan> like with operator precedence. 
03:17:06 <oerjan> oh, and usually you need lookahead for input, since sub-parsers and post-parsers may need to look at a token again. 
03:17:31 <SevenInchBread> yeah... I used that... having a readuntil() makes things way less messy. :) 
03:19:35 <oerjan> incidentally the parser generators mentioned before are input-driven, and as SimonRC said, the resulting code is horribly messy (but efficient) 
03:20:50 <SevenInchBread> well... that's a bad demostration of it... since it just shows thei internals... lemme find where I used it. 
03:21:02 <oerjan> being based around a constructed finite automaton which few would want to create by hand. 
03:22:18 <SevenInchBread> basically you give it a coroutine that yields output and will be sent input. 
03:23:06 <SevenInchBread> if it yields a string, the string if outputted... if it yields another coroutine, it'll make that coroutine the "sub-reader" for as long as its active.. 
03:24:14 <SevenInchBread> you'd need to modify the concept some... but it could effectively be the basis for a parser. 
03:24:59 <oerjan> except that it is the coroutine that is the real parser. 
03:25:51 <SevenInchBread> you could have the parser do an event-based call thing... and take the return value of the callback as its yield. 
03:26:07 <oerjan> so this is exactly the opposite of what i suggested. 
03:26:26 <oerjan> if you let the parser do the calling, you don't need coroutines. 
03:28:06 <oerjan> ok to be more precise: if you let the parser do the calling and let the result be passed as the return value of the call. 
03:31:19 -!- calamari has joined. 
03:34:42 <ihope_> I suddenly want to see the results of one of those "uptime games" in this channel. 
03:34:52 <ihope_> Voice everybody, see who stays voiced the longest. 
03:35:09 <ihope_> And hope the network doesn't catastrophic(al)ly fail. 
03:35:15 <calamari> wouldn't be me.. I shut down every night 
03:35:46 <ihope_> Who'd last the longest? 
04:01:34 -!- GreaseMonkey has joined. 
04:01:50 -!- thematrixeatsyou has quit (Nick collision from services.). 
04:31:28 <bsmntbombdood>  9:28PM  up 83 days,  4:38, 1 user, load averages: 0.10, 0.09, 0.08 
04:37:54 -!- oerjan has quit ("leaving"). 
04:52:15 -!- GreaseMonkey has quit (Nick collision from services.). 
04:52:33 -!- GreaseMonkey has joined. 
05:44:17 -!- ihope_ has changed nick to ihope. 
06:18:43 -!- calamari has quit ("Leaving"). 
07:43:48 -!- GreaseMonkey has quit (Read error: 110 (Connection timed out)). 
07:50:35 -!- RodgerTheGreat has quit. 
07:55:22 -!- RodgerTheGreat has joined. 
07:55:34 -!- RodgerTheGreat has quit (Client Quit). 
07:56:32 -!- RodgerTheGreat has joined. 
07:56:44 -!- RodgerTheGreat has quit (Client Quit). 
07:57:15 -!- RodgerTheGreat has joined. 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:05:35 -!- ShadowHntr has quit (Read error: 110 (Connection timed out)). 
08:15:06 -!- helios24 has joined. 
09:13:24 -!- wooby has joined. 
09:22:30 -!- Sukoshi has joined. 
09:28:14 -!- sebbu has joined. 
09:45:10 -!- sebbu2 has joined. 
10:04:18 -!- sebbu has quit (Connection timed out). 
10:13:58 -!- ShadowHntr has joined. 
10:22:37 -!- Sukoshi has quit ("ERC Version 5.1 (CVS) $Revision: 1.796 $ (IRC client for Emacs)"). 
10:29:04 -!- wooby has quit. 
10:42:05 -!- ihope_ has joined. 
10:45:45 -!- nazgjunk has joined. 
10:47:15 -!- cmeme has quit (Remote closed the connection). 
10:59:39 -!- ihope has quit (Read error: 110 (Connection timed out)). 
11:06:56 -!- cmeme has joined. 
12:03:18 -!- ShadowHntr has quit ("End of line."). 
12:12:22 -!- jix__ has joined. 
12:43:16 -!- Sukoshi`` has quit (Read error: 110 (Connection timed out)). 
12:46:11 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
12:46:43 -!- nazgjunk has joined. 
13:04:16 -!- jix__ has changed nick to jix. 
13:08:43 -!- tgwizard has joined. 
13:12:01 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
13:28:28 -!- nazgjunk has joined. 
13:31:49 -!- sebbu has joined. 
13:47:10 -!- nazgjunk has quit ("Leaving"). 
13:51:13 -!- sebbu2 has quit (Read error: 110 (Connection timed out)). 
14:22:57 -!- ihope_ has quit (Connection timed out). 
14:28:02 -!- nazgjunk has joined. 
15:01:10 -!- nazgjunk has quit ("Leaving"). 
15:02:18 -!- helios24 has quit ("Leaving"). 
15:15:19 -!- nazgjunk has joined. 
15:34:41 -!- oerjan has joined. 
16:11:45 -!- tgwizard has quit (Connection timed out). 
16:12:15 -!- tgwizard has joined. 
16:16:03 <oerjan> you better get it changed then. 
16:25:45 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 
16:27:52 -!- nazgjunk has joined. 
16:28:19 <oklopol> yeah... just had to read the logs first 
16:28:27 -!- oklopol has left (?). 
16:28:31 -!- oklopol has joined. 
16:28:52 * oklopol enjoys his brand new window <3 
16:31:01 <oerjan> is it made with Glass? 
16:31:25 <oerjan> indeed, why doesn't Glass have a window system? 
16:31:33 <oklopol> yep, wondering the same thing 
16:31:49 <oklopol> it should have a lot of inbuilt window stuff 
16:33:10 <RodgerTheGreat> it'd be poor object-oriented design. Windows should extend glass, adding special properties, while Glass is a more general case, also extended by classes like PetriDish and MagnifyingGlass 
16:34:07 <oerjan> the windows system has to be made out of Glass, not just written in C++. 
16:36:43 <RodgerTheGreat> it'd be difficult to make anything mechanical entirely out of glass 
16:39:11 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
16:39:44 -!- nazgjunk has joined. 
16:41:09 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 
16:41:17 <oerjan> right... we need an F class for fibers. 
16:41:56 -!- nazgjunk has joined. 
16:49:28 <oklopol> are fibers just faster threads? 
16:49:56 <RodgerTheGreat> they also have less overhead, I believe, unless that's what you mean by "faster" 
16:52:12 -!- UpTheDownstair has joined. 
16:53:00 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
17:06:08 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 
17:06:47 -!- UpTheDownstair has joined. 
17:07:49 -!- UpTheDownstair has quit (Read error: 54 (Connection reset by peer)). 
17:08:14 -!- UpTheDownstair has joined. 
17:11:11 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 
17:16:06 -!- nazgjunk has joined. 
17:38:13 -!- digital_me has joined. 
17:59:18 -!- SevenInchBread has quit (Read error: 104 (Connection reset by peer)). 
18:11:05 -!- digital_me has quit ("Lost terminal"). 
18:26:03 -!- helios24 has joined. 
18:32:58 -!- ShadowHntr has joined. 
18:39:24 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
18:39:39 -!- goban has joined. 
18:45:34 -!- helios24 has quit ("Leaving"). 
18:48:42 -!- helios24 has joined. 
18:56:01 -!- jix__ has joined. 
18:59:54 -!- jix has quit (Nick collision from services.). 
18:59:56 -!- jix__ has changed nick to jix. 
19:23:28 -!- kxspxr has joined. 
19:24:27 -!- kxspxr has quit (Client Quit). 
19:27:00 -!- pgimeno has left (?). 
19:35:45 -!- ihope has joined. 
19:35:53 <ihope> ~ctcp #esoteric Foo 
19:37:25 <jix> ~ctcp #esoteric Version 
19:37:42 <jix> ~ctcp #ruby-de Version 
19:38:56 <ihope> ...I could have just used /names, eh? 
19:55:27 <oerjan> hint: add bounds checks 
19:55:30 <bsmntbombdood> it segfaults at cur = code[state.pc], saying "Cannot access memory at address &cur" 
19:55:39 * SimonRC sends oerjan to get the keys to the spin-lock. 
19:56:31 <oerjan> now that does sound strange 
19:56:50 <oerjan> maybe cur is the result of a cast? 
19:56:59 <SimonRC> And while you're there, could you kill the idle process? 
19:57:46 <SimonRC> Sorry, I've just been reading about fictional objects and tasks that noobs are sent to fetch/do. 
19:58:09 <SimonRC> bsmntbombdood: some architectures pass structs by reference in C. 
19:58:15 <SimonRC> I have read about such things. 
19:58:27 -!- SevenInchBread has joined. 
19:58:43 <SimonRC> But you'd only be able to break that by writing an ill-typed program. 
20:00:17 <ihope> Wait... is this Python or no? 
20:00:22 * SimonRC asks bsmntbombdood to find out the password for the root window. 
20:00:47 <oerjan> have you set any strange options? 
20:01:31 <SimonRC> (The root window in X Windows is "root" in the graph theory sense, not like the "root user".) 
20:02:04 * SimonRC asks ihope to fetch an optical mouse ball from the cupboard. 
20:02:17 <SimonRC> sorry, i am having an attack of silly creativity. 
20:03:32 <oerjan> what other variables are broken? 
20:03:49 <SevenInchBread> hmmm... bugSophia actuallys looks pretty fun... I should implement it. 
20:04:33 <SimonRC> maybe your linker fucked up 
20:08:47 <oerjan> immediately, or does it go throught the loop? 
20:09:42 <oerjan> what happens if you make cur global? 
20:11:39 -!- ShadowHntr has quit ("End of line."). 
20:12:39 -!- helios24 has quit ("Leaving"). 
20:25:34 -!- oerjan has quit ("leaving"). 
20:28:06 * jix is writing a compiler 
20:28:13 <jix> but it's for a non esoteric language 
20:28:17 <jix> so it's a bit offtopic 
20:28:38 <oklopol> i just coded a working game ai in python 
20:28:56 <jix> how could that happen?! 
20:29:13 <oklopol> i opened the file and it loaded a 4 hour old version 
20:29:28 <oklopol> maybe python doesn't save on alt-f-s 
20:30:08 <oklopol> hmm... maybe i'll rewrite it... what could be more fun 
20:30:17 <jix> uhm how could python save? 
20:30:51 -!- sebbu2 has joined. 
20:31:27 <jix> i'm writing my compiler using test driven development 
20:31:55 <oklopol> i don't really feel like coding anymore... i'll go kill myself or something -> 
20:32:04 <jix> oklopol: nah don't do that 
20:32:26 <jix> oh and i don't have a girlfriend anymore! 
20:32:41 <jix> oklopol: you have one? 
20:32:47 <jix> i got one a month ago 
20:33:08 <jix> so you know what will happen to you in a month 
20:33:10 <oklopol> i don't agree with your "prefer spending time with her over programming" though 
20:33:42 <ihope> oklopol: you'll turn into jix, of course. 
20:33:45 <ihope> You know German, right? 
20:33:54 <lament> If not, you have a month to learn it. 
20:34:05 <ihope> And to move to Germany. 
20:34:16 <ihope> Or at least proxy through Germany, or something. 
20:34:29 <jix> oklopol: no i don't hope those things will happen to me... i got really depressed and everything before we decided to uhm ... "break up" (sais my dictionary) 
20:34:30 <oklopol> hmm... i'm not sure if that's what jix was about to say 
20:35:05 <ihope> SevenInchBread: is it always done in COBOL? 
20:35:06 <jix> *will happen to you 
20:35:22 <oklopol> jix i'm not that social... i think i'll manage a break-up 
20:35:33 <jix> oklopol: no the break-up wasn't the problem 
20:35:46 <SevenInchBread> but... taking 3 hours to type out the (truncated) 99 bottles of beer song in a language that doesn't even have an implementation... is the kind that gets me excited. 
20:35:47 <jix> the time before that 
20:35:57 <jix> 1.5 weeks before that 
20:36:15 <lament> one would think being social makes it _easier_ to manage a break-up 
20:36:31 <oklopol> hmm... social is not the word 
20:39:34 <jix> well but now i have time to code :) 
20:40:41 <oklopol> i'm pretty furious now, fuck this 
20:43:29 -!- sebbu3 has joined. 
20:50:26 -!- sebbu has quit (Connection timed out). 
21:02:02 -!- sebbu2 has quit (Read error: 110 (Connection timed out)). 
21:34:32 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
21:34:37 -!- goban has joined. 
21:42:47 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
21:43:02 -!- goban has joined. 
21:50:04 <SevenInchBread> mmm...  http://esolangs.org/wiki/BugSophia#99_bottles_of_beer_.28truncated_lytics.29   <--coolest looking 99BoB ever. 
21:54:37 <bsmntbombdood> Can't figure out how to return values from subroutines 
21:56:19 <SevenInchBread> I've never figured out what a vm was other than some kind of abstract-assembly type thing. 
21:57:09 <SevenInchBread> either way... your system architecture needs to be able to work with the vm... so I don't get how it's any better than without it. :P 
21:58:45 <SevenInchBread> that's supposed to be the advantage of a VM right? You don't need to be compatable with the architecture underneath. 
21:59:34 <SevenInchBread> hmmm.... once I make a bS interpreter... I should give it a count mode so that it'll keep track of how many "threads" were created during execution. 
22:00:37 <SevenInchBread> they're not really threads to the OS... but they work concurrently... 
22:04:07 <oklopol> i remade the ai :DDDDDDDDDDDDDDDDDD 
22:04:16 <oklopol> was a 20 min job on the second attempt :P 
22:04:32 <SevenInchBread> bsmntbombdood,  but doesn't the VM have to be compatable with the architecture? 
22:04:45 <SevenInchBread> -nod- things are way easier once you know how you're going to do them. :) 
22:05:24 <SevenInchBread> let's see.... the minimum amount of threads the 99 bottles program would create is.... 
22:06:32 <bsmntbombdood> SevenInchBread: The point of a vm is to play with it's assembly language 
22:06:44 <bsmntbombdood> It's nothing more than an implementation of a language 
22:08:00 <SevenInchBread> (25 * 99)   for the strings....   1 for the counter...  and   1 + (27 * 99)   for the main loop 
22:08:11 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
22:09:29 <SevenInchBread> 2 + (52 * 99)         ...mmm,   -opens up Python to do the next bit- 
22:11:31 <bsmntbombdood> zomg, that's the sum of all numbers below 100, + 200 
22:13:30 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
22:13:39 -!- goban has joined. 
22:20:36 <SevenInchBread> oklopol,  What kind of ai? I admit I'm a little curious... I wouldn't know where to begin with ai. 
22:20:51 -!- sebbu has joined. 
22:21:46 <oklopol> the game's rules are somewhat complicated... i took the short road 
22:22:27 <oklopol> just a board game by me and a friend... would have rules online, but once again in finnish 
22:22:28 <SevenInchBread> brute force... that's where the ai simply simulate every possible situation that could occur and determine which is best? 
22:23:12 <oklopol> you can specify it for the 
22:23:32 <oklopol> but, the problem is never depth, it's width 
22:24:15 <SevenInchBread> O think a fun game to play would be like "befunge hockey chess"... where you have two goals and take turns placing befunge characters on the field inbetween instruction ticks or something. 
22:24:45 <oklopol> because a human will easily recognize it does not matter in which order he does some 20 moves... while it's very hard to make the computer do the same 
22:24:54 <SevenInchBread> and try to be the first to complete the specified object and output the results to your output stream. :) 
22:25:27 <oklopol> the game is kinda sick, every turn means putting a piece on the board and doing a lot of recursive jumping... 
22:25:53 <oklopol> i wish i had irl friends who could program befunge... 
22:26:25 <SevenInchBread> could rig up some over-the-network thing with a basic GUI 
22:26:38 <oklopol> yeah, actually not that hard 
22:26:45 <oklopol> do it and well have fun together ;D 
22:27:21 <SevenInchBread> ...I really don't want to have to swap IP addresses... not for security or anything... I'm just really lazy 
22:34:14 -!- UpTheDownstair has joined. 
22:34:35 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
22:35:30 -!- UpTheDownstair has changed nick to nazgjunk. 
22:40:12 -!- sebbu3 has quit (Connection timed out). 
22:41:55 <oklopol> okay... anybody wanna explain something to me 
22:42:27 <oklopol> i made a timeout for my algo, it only does 300000 iterations before terminating 
22:42:46 <oklopol> this way i get 35 moves (the algo tries to find the longest combo) 
22:43:49 <oklopol> okay, i have no idea why, but i put if iterations>100000 and random.random()<0.1: return combo << a short termination randomly in every 10th recursive call 
22:44:23 <oklopol> and suddenly it finds length 50 combos 
22:44:58 <oklopol> (i have manually archieved a 15 combo from that starting point :P) 
22:46:37 * SevenInchBread got a subdomain... now just needs to figure out how to access it. 
22:46:41 <oklopol> actually... it of course does the 300000 iterations anyway, because i just increase the counter when i call the function... so it won't be increased when short terminating 
22:47:25 <oklopol> you gotta love it when you get a feeling you should do something no matter if it seems not to make sence... and it doubles the capability of your program 
22:48:55 <SevenInchBread> hmm... now I need to find a decent befunge interpret that works incrementally instead of all at once. 
22:51:30 * oklopol loves torturing his computer 
22:52:11 <SevenInchBread> ...I wonder how terrible of a server my computer makes. :) 
22:53:31 -!- tgwizard has quit (Remote closed the connection). 
22:53:43 <oklopol> muahaha! two million iterations! 
22:54:01 <SevenInchBread> hmmm... usually servers are designed to have a lot of storage space and RAM right? 
22:54:17 <oklopol> i don't play with hardware 
22:54:21 <oklopol> never seen a computer naked 
22:54:35 <SevenInchBread> I doubt you'd design one with high-end graphics cards. ;) 
22:55:10 <oklopol> true, might be kinda redundant 
22:56:41 <oklopol> i've done 3 semesters of cisco ccna... but i have no idea how to set up a server 
23:03:25 <SevenInchBread> a large website would want a lot of disk space... while a search engine would want massive massive hoards of anything good. 
23:14:35 <oklopol> kay... a combo of 901 moves... record move is 35 from last night... 
23:14:57 <oklopol> i don't think this is such a good training opponent after all -______- 
23:25:54 * SimonRC procedes to write a program with a runtime that explodes like ackermann's function. 
23:26:11 <SimonRC> It is only for the purpose of writing a proof, though. 
23:26:20 <SimonRC> I just need to show something is copmputable. 
23:27:03 <SimonRC> nonono, a particular thing 
23:27:36 <oklopol> i misread your typo, sorry 
23:39:20 -!- oerjan has joined. 
23:39:50 -!- nazgjunk has quit ("Leaving"). 
23:53:03 -!- Asztal has joined. 
23:56:02 <oerjan> bsmntbombdood: in general, or in SimonRC's program? 
23:56:56 <oerjan> it was invented in order to show that there are functions that can be computed with general recursion but not with primitive recursion. 
23:57:39 <SevenInchBread> now I just need to flesh out the GUI and an interpreter thing. 
23:58:17 <oerjan> in order to do this, it had to grow at a whopping speed. 
23:58:18 -!- RobHu has joined. 
23:58:19 <SevenInchBread> in the meantime... I shall turn my domain name into AN AWESOME WEBSITE. 
23:58:31 <SevenInchBread> where's a lazy-to-use HTML server program I could use. 
23:59:37 <oerjan> Asztal: Here?  And did you bring a tent? 
00:05:22 <Asztal> well, actually, camping is a nice little 4kB framework on top of acres of other code ¬_¬ 
00:05:22 -!- lupine_85 has joined. 
00:05:22 <Asztal> http://code.whytheluckystiff.net/camping/browser/trunk/lib/camping.rb <- that's pretty much why I like it 
00:05:22 <RobHu> please print the sequence 1 to 10 
00:05:22 <RobHu> lupine_85: http://esoteric.voxelperfect.net/wiki/IRP 
00:05:22 <Asztal> that's most of the code, there's a bit more to run it as a standalone server (via Mongrel, FastCGI or Webrick) :P 
00:05:22 <Asztal> it's more of a joke framework, I think, but I love it 
00:05:22 <RobHu> people write real stuff in camping 
00:05:22 <Asztal> Do you know any Ruby? That would be a nice start. 
00:05:34 * SevenInchBread is on Windows... probably doesn't have a Ruby interpreter thing. 
00:06:53 <oerjan> bsmntbombdood: Sorry, that question is undecidable.  Of course that cannot be proved. 
00:08:39 <oklopol> bsmntbombdood no you don't 
00:10:15 <SevenInchBread> hmmm... I wonder if you could use division by zero to do computations. 
00:10:17 <SimonRC> It's ok to divide by zero if you are working in an appropriately defined superset of Q or R. 
00:12:18 <SimonRC> It's also possible (with the right flags set) to divide by zero in F, though F is not a ring, field, or anything nice like that. 
00:12:42 <SimonRC> F being the set and operations of IEEE floating point numbers. 
00:14:04 <SimonRC> BTW, you know that primality-testing is in P, right? 
00:14:18 <SimonRC> it was proven a few years ago, with a rather simple algorithm. 
00:14:55 <bsmntbombdood> I just know of the probabalistic primality testing algorithms 
00:15:48 <SimonRC> just because it's in P doesn't mean it's fast. 
00:16:17 <SimonRC> The probabilistic ones are actually fast, rather than just being in P. 
00:16:34 <SimonRC> I am, of course, considering the length of teh prime, not its value. 
00:19:10 <oklopol> someday i'll understand p/np 
00:19:44 * SevenInchBread has been procrastinating geting other language interpreters... now he'll have more incentive to try out Ruby. 
00:19:49 <oerjan> someday the world might understand p/np. 
00:20:25 <oklopol> oerjan i don't even understand what's there to understand 
00:21:37 <oerjan> well p/np is about _how_ much harder it is to check a solution than to find it in the first place. 
00:21:50 <oerjan> eh, the other way around. 
00:22:59 <Asztal> Ruby is OK, as long as you don't try to interop with it. It's C API is so horribly mangled... 
00:23:42 <SevenInchBread> It looks a lot less conservative than Python... which is kinda good... I'm starting to get bored with Python. 
00:26:41 <SevenInchBread> ...wow... rubygems is the easiest thing I've used ever. 
00:27:54 <oklopol> oerjan i know it's something like that... but is it just that? 
00:30:26 <SevenInchBread> hmmm... so... I'll need to brush up on some Ruby to use camping nyah? 
00:30:36 <lament> doesn't ruby kinda suck? 
00:31:53 <oerjan> well you have to define it precisely mathematically of course.  And then there are the NP-complete problems, which are the hardest among those that have easy to check solutions. 
00:33:11 <Asztal> how so, lament? I'd say the C side of things does suffer from quite a bit of suckage, but the language ideas seem quite nice. 
00:35:16 <SevenInchBread> heh... if Ruby sucks the tuitorial reading sure shows some convincing examples. 
00:36:20 <SimonRC> Does ruby have an interactive prompt? 
00:36:50 <oerjan> in a sense the most fundamental NP-complete problem is this:  Given a Turing-machine with input, does it halt in a "yes" state after a polynomially bounded number of steps? 
00:38:19 <lament> Asztal: Perl heritage. 
00:39:28 <Asztal> It's a lot more usable than Perl, if you ask me (which for me, was the main problem) 
00:39:39 <Asztal> %@$£@£x means what exactly? 
00:40:00 <SevenInchBread> I always thought Ruby inherited a lot from Smalltalk and Eiffel? 
00:40:13 <oerjan> or maybe an other equivalent definition: Given a Turing-machine with _part_ of its input specified, is there an assignment for the rest of its input that makes it halt yadda yadda. 
00:40:18 <lament> Asztal: sure it's more usable, but i'm talking about the heritage. 
00:40:34 <lament> Asztal: the conscious decision on the part of the language designers to borrow from Perl. 
00:40:50 <lament> Asztal: that is a sign of deep brain damage 
00:42:01 <oerjan> And then Cook's theorem shows that you can reduce all that to the much simpler SAT problem. 
00:42:29 <Asztal> I'd agree that many parts of Perl (esp. its syntax and reference semantics) are brain damaging, but it wasn't all bad, was it? 
00:50:09 <SevenInchBread> Ruby looks cool so far... I like the non-symboly syntax so far... but the "end" thing might be annoying. :P 
00:54:23 <Asztal> I wish they wouldn't use => for hashes though. That's so annoying to type! 
00:56:06 <Asztal> I'd just use : like normal people :) 
00:57:36 <SevenInchBread> It's pretty rare that you use that syntax unless you're just making a really simple lookup table. 
00:57:47 <oklopol> a is for apple, b is for banana 
00:58:42 <SevenInchBread> ...the quotes get kind of tiring when you're a lazy bastard. 
01:01:39 <SevenInchBread> I like the ! and ? convients too... with Python you just have to know from experience. 
01:02:57 <oklopol> why do i have my greatest programming urges at 3 o'clock in the morning?!?! :< 
01:03:04 <oklopol> i gotta sleep... --------> 
01:06:48 <Asztal> this ruby code is valid:  
01:07:03 <Asztal> wait, that wasn't all of it,  wazup?!!!?!??1:!!?? 
01:10:29 <lament> the strange range syntax? 
01:13:12 <oerjan> better than deranged syntax. 
01:18:03 <Asztal> wazup? is a function name, ?? is equal to the character literal '?' (so !!?? == 1), I don't know about the rest, I'm very sleepy >_< 
01:18:53 -!- sebbu2 has joined. 
01:26:17 <Asztal> here, they do different things in different places :/ 
01:27:22 <Asztal> it calls wazup?(true), eventually 
01:30:27 <Asztal> oh, you mean inside the name, yes, they are 
01:31:27 <Asztal> ! is generally applied to mutator methods,, and ? to question-like methods ( "flibble".empty?() ) 
01:32:55 -!- Asztal has quit ("+++ Insufficient cheese error +++"). 
01:37:19 -!- sebbu has quit (Connection timed out). 
01:37:25 <oerjan> a convention borrowed from scheme. 
01:39:50 -!- sebbu2 has quit (Read error: 110 (Connection timed out)). 
01:42:05 <lament>  both conventions are fairly easy to actually enforce 
01:42:30 -!- pikhq has joined. 
01:46:08 * pikhq returns, not wishing to declare his ressurection. . . 
02:01:33 * oerjan stealthily calls the pope. 
02:03:44 * pikhq stealthily calls protestantism 
02:04:54 * oerjan stealthily calls the Russian patriarch. 
02:05:40 * pikhq stealthily calls in the Chewbacca Defense 
02:07:12 <SevenInchBread> I find it easier to play with the glue before I make the parts... I'll call a bunch of methods I haven't defined yet. 
02:08:02 <oerjan> with this Forte interpreter I started bottom-up but now i am doing top-down. 
02:08:40 <SevenInchBread> I'll make a few little parts to begin with... but later on I start going the other way.. 
02:08:52 <SevenInchBread> heh... so I guess I "meet in the middle" when I'm done. 
02:13:23 <bsmntbombdood> n is a charmicheal number iff n is not prime and a^(n-1) cong 1 (mod n) for-all integers a that are relatively prime to n 
02:14:39 <SimonRC> Ah, they are to do with a quick test for primality that occasionally flags a composite as prime, right? 
02:15:47 <SimonRC> I guessed that from "n is not prime" and the fact the the number you named was so large 
02:16:33 <bsmntbombdood> http://www.research.att.com/~njas/sequences/?q=id%3aA002997&p=1&n=10&hl=0 
02:30:17 * ihope stealthily and unexpectedly calls the Spanish Inquisition 
02:30:46 <oerjan> that second part is redundant, ihope. 
02:32:24 <pikhq> NOBODY expects the Spanish Inquisition! 
02:45:53 <pikhq> Yes. We're a bunch of geeks who need lives. . . 
02:46:31 <pikhq> Why else would we know what the hell an infinite tape allows us to do? 
02:47:50 <bsmntbombdood> n is a fibonacci number if the intersection of [phi*n - 1/n, phi*n + 1/n] and the set of positive integers is not empty 
02:48:40 <pikhq> And that demonstrates what I'm talking about quite well. :) 
02:50:01 <oerjan> what if you take negative integers? do you get the continuation of fibonacci numbers to the left? 
02:51:04 <oerjan> hm, somewhat dubious ...,8,-5,3,-2,1,-1,0,1,1, 
02:52:28 <oerjan> not much better ...,-8,5,-3,2,-1,1,0,1,1, 
02:53:27 <oerjan> every number is the sum of the two left ones. 
02:54:16 <oerjan> so the continuation is not quite the same as the negatives. 
02:54:36 <pikhq> I'm rather positive that one couldn't extend the fibonacci sequence purely to the negatives. . . 
02:54:43 <pikhq> It'd be a different sequence. 
02:56:16 <oerjan> another sequence of the form a*phi^n + b/phi^n. 
02:59:33 <oerjan>  eh, a*phi^n + b/(-phi)^n, I think. 
03:07:34 <pikhq> 2 2 20^^p20^p20^p20^p20^p20^p is better still. 
03:07:42 <pikhq> More abuse of RPN! MORE!!! 
03:09:12 <pikhq> No it's not. Seems pretty clean to me unless you try to use it as a Turing machine. :p 
03:20:04 <bsmntbombdood> and it can pretty easily be used as a turing machine 
03:30:51 <pikhq> Now implement regexps in it. 
03:35:53 <pikhq> Or else it has infinite storage. 
03:48:29 -!- GreaseMonkey has joined. 
03:48:34 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 
03:54:25 -!- oerjan has quit ("leaving"). 
04:30:22 -!- chuckfromchan has joined. 
04:30:28 -!- chuckfromchan has left (?). 
04:30:46 -!- pikhq has quit (Read error: 110 (Connection timed out)). 
04:39:03 <bsmntbombdood> http://www.gnu.org/software/bc/manual/dc-1.05/html_mono/dc.html 
05:04:53 <bsmntbombdood> funny how long it took for me to come up with those few characters 
07:18:11 -!- GreaseMonkey has changed nick to ^_`. 
07:50:11 -!- RodgerTheGreat has quit. 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:25:21 -!- Sukoshi` has joined. 
08:34:39 -!- Sukoshi has joined. 
08:35:02 -!- ^_` has quit ("gtg gnight"). 
08:35:40 -!- RodgerTheGreat has joined. 
08:45:50 -!- jix has joined. 
08:55:53 -!- ome has joined. 
08:56:19 -!- ome has quit (Client Quit). 
09:01:29 -!- helios24 has joined. 
09:21:23 -!- nazgjunk has joined. 
09:35:42 -!- sebbu has joined. 
09:37:36 -!- Sukoshi has quit ("ERC Version 5.1 (CVS) $Revision: 1.796 $ (IRC client for Emacs)"). 
09:42:43 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
09:48:11 -!- nazgjunk has joined. 
09:50:45 -!- anonfunc has joined. 
09:52:36 -!- nazgjunk has quit (Client Quit). 
10:09:33 -!- sebbu2 has joined. 
10:28:44 -!- sebbu has quit (Read error: 110 (Connection timed out)). 
10:30:30 -!- Sukoshi` has quit (Read error: 110 (Connection timed out)). 
10:42:20 -!- ihope_ has joined. 
10:59:26 -!- ihope has quit (Read error: 110 (Connection timed out)). 
11:04:05 -!- oerjan has joined. 
12:55:01 -!- nazgjunk has joined. 
13:16:04 -!- pikhq has joined. 
13:29:46 -!- oerjan has quit ("leaving"). 
13:49:37 -!- sebbu2 has changed nick to sebbu. 
14:04:13 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
15:58:32 -!- Asztal has joined. 
16:04:29 -!- anonfunc has quit. 
16:21:19 -!- Asztal has quit (Remote closed the connection). 
16:28:24 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
16:28:42 -!- goban has joined. 
16:54:36 -!- crathman has joined. 
17:32:16 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
17:32:47 -!- goban has joined. 
17:45:38 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
17:45:51 -!- goban has joined. 
17:49:58 -!- goban has quit (Remote closed the connection). 
17:50:14 -!- goban has joined. 
17:53:02 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
17:53:28 -!- goban has joined. 
17:58:27 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
17:58:41 -!- goban has joined. 
18:29:54 -!- tgwizard has joined. 
18:30:23 <lament> goban: get a better ISP! 
18:35:38 <goban> lament: i will :( comcast discconnects me all the time 
18:37:39 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.2/2007021917]"). 
18:47:07 * lament throws stones at goban  
18:47:41 -!- jix__ has joined. 
18:57:41 -!- sebbu2 has joined. 
19:01:34 -!- kxspxr has joined. 
19:02:23 -!- kxspxr has quit (Client Quit). 
19:04:27 <lament> that's why i don't like chess 
19:04:49 -!- jix has quit (Read error: 110 (Connection timed out)). 
19:04:55 <goban> yeah, thats why computers are better than humans now 
19:05:41 <goban> hey i just had an idea for a really pathological language 
19:06:16 <goban> make it so each of the tokens have to be moves in a legal chess game! 
19:16:48 -!- sebbu has quit (Connection timed out). 
19:20:45 <lament> goban: i suppose it's not that bad if we waive the 50-turn rule or whatever it is 
19:21:14 <lament> goban: then we can get into the endgame with just a couple pieces left and hope that the moves of those pieces are enough for TC 
19:23:09 <goban> lament: go would be SOOO Much easier! 
19:23:47 <goban> well there are many more possible moves, and captures make more space 
19:23:53 <lament> in chess, once you have a few pieces left, it's very easy to move the remaining ones forever without ever interfering 
19:24:15 <goban> you have to worry about the same position existing 3 times in chess 
19:24:19 <goban> no unbounded memory 
19:24:34 <goban> same with go, but its 19x19 so much more :) 
19:29:22 <goban> you could have the chess game terminate with checkmate (or a drawn position) too :) 
19:52:19 -!- crathman has joined. 
21:18:20 -!- nazgjunk has joined. 
21:23:05 -!- GreaseMonkey has joined. 
21:28:21 -!- Rugxulo has joined. 
21:29:02 -!- Rugxulo has left (?). 
21:29:13 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
21:31:35 -!- nazgjunk has quit ("Leaving"). 
22:13:25 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
22:13:40 -!- goban has joined. 
22:34:49 -!- sebbu has joined. 
22:41:44 -!- sebbu2 has quit (Read error: 145 (Connection timed out)). 
22:42:01 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
22:42:13 -!- goban has joined. 
23:06:54 <bsmntbombdood> using the stack is slower than using registers in dc 
23:07:14 <lament> how is that disappointing? 
23:08:26 <bsmntbombdood> time dc -e "10 4^3*sc 0 1[dSa+Lar lc1-dsc 1!=b]dsbx" 
23:08:44 <bsmntbombdood> time dc -e "10 4^3*sa 0sb 1sc [lb d lc + sb sc la1-dsa0!=f]dsfx" 
23:09:22 <bsmntbombdood> both of those calculate the 30000 fibonacci number, the first with the stack and the second with registers 
23:10:19 <bsmntbombdood> those times were with the implementation that came with openbsd 
23:10:38 <bsmntbombdood> the gnu implementation running on a faster box takes 2s for both 
23:22:44 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
23:22:50 -!- goban has joined. 
23:26:38 -!- ShadowHntr has joined. 
23:46:28 <SimonRC> I thought there was a drop or discard command 
23:58:03 -!- crathman has quit (Read error: 148 (No route to host)). 
00:03:16 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
00:03:27 -!- goban has joined. 
00:43:45 -!- sebbu2 has joined. 
00:45:34 -!- pikhq has quit (Remote closed the connection). 
01:02:56 -!- sebbu has quit (Read error: 110 (Connection timed out)). 
01:06:08 -!- lament has quit ("I lost an eye in a drunken ko fight!"). 
01:13:34 -!- crathman has joined. 
01:13:49 -!- crathman has quit (Remote closed the connection). 
01:15:22 <bsmntbombdood> I'd write a brainfuck interpreter in dc if its string manipulations weren't so crappy 
01:15:29 -!- tgwizard has quit (Remote closed the connection). 
01:19:08 <SimonRC> bsmntbombdood: just tokenise everything as numbers and use a few register-stacks. 
01:25:14 <bsmntbombdood> i think [<code>] goes to [<code> LrdSr 0!=f] Sf LrdSr 0!=f LfSz 
01:25:34 <bsmntbombdood> assuming l and r are used as the tape, and z is only used to throw away values 
01:31:44 -!- oerjan has joined. 
01:42:25 -!- sebbu2 has quit ("Leaving"). 
01:48:05 <oerjan> i see how to pop a string in dc but only if what's below is a number. 
01:49:18 <oerjan> use Z to turn anything into a length 
01:51:47 <oerjan> hm, and then you can use something like d>r I think. 
01:52:49 <oerjan> any register name. it is not used, since the test always fails. 
01:56:37 <oerjan> But input still looks like a bitch. I guess you do need to convert characters to numbers on I/O. 
02:05:14 <oerjan> Indeed. Also, it looks like only the main stack has a depth command. 
02:05:58 <oerjan> Although that is OK if you use an array that is only infinite to the right. 
02:06:27 <oerjan> Which is enough for TC brainfuck. 
02:07:25 <oerjan> by using the main stack for the right part. 
02:10:35 <oerjan> you could make it twosided with more work, if you are willing to add flags to the stacks. 
02:11:05 <oerjan> or rather, keep track of the depth yourself. 
02:11:48 <bsmntbombdood> or fill it with zeros 30000st [0Sr lt 1- d st 0!=f]dsfx 
02:12:50 <oerjan> well if you want fixed size it would be easier to use arrays, wouldn't it? I don't know how big they are.  Or the stacks for that matter. 
02:31:22 <oerjan> I presume a contains [0]. 
02:31:46 <oerjan> You need to invoke it at the beginning of the program too. 
02:32:38 <oerjan> So I assume it is ] that isn't working, then? 
02:36:36 <oerjan> oh. because what you pasted seems right to me. 
02:38:11 <bsmntbombdood> hello world prints hello world, after a few "stack empty" errors 
02:39:55 <oerjan> did you forget the prefix [0]sa0? 
02:41:10 <bsmntbombdood> I was thinking that the ] rule needed some z0=a, but that doesn't change anything 
02:42:01 <oerjan> The main stack should never be empty. 
02:43:05 <oerjan> right. > is slightly wrong. 
02:43:19 <oerjan> It should be Sr first. 
02:43:44 <oerjan> You don't need the first z0=a 
02:44:04 <oerjan> Of course, but it is redundant. 
02:44:13 <oerjan> It will never be triggered. 
02:51:28 <oerjan> i don't think you need z0=a in . 
02:58:04 -!- SevenInchBread has joined. 
03:07:07 -!- SevenInchBread has quit (Read error: 104 (Connection reset by peer)). 
03:07:21 -!- SevenInchBread has joined. 
03:10:45 <oklopol> fell asleep in my armchair and woke up now... 10 hours later 
03:11:49 <oerjan> sounds like you are ready for a new day :) 
03:13:31 <oklopol> and my back hurts like hell 
03:34:33 <SimonRC> :-S  !!!  http://en.wikipedia.org/wiki/House_of_Leaves#Format 
04:01:45 -!- lament has joined. 
04:09:40 -!- ShadowHntr has quit ("End of line."). 
04:20:51 <AfterDeath> I think i'm going to get a new screen name and say I got a "gnu screen name" 
04:23:52 <oerjan> Ha. BTW do you know that all GNU programs must terminate? 
04:25:37 <oerjan> Because they are antiloops. 
04:42:14 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 
04:48:02 <oklopol> i'm very disappointed, my ai just discovered eternal loops were possible in the game 
04:49:04 <oklopol> i spent an hour figuring out how it did it... quite trivial but requires a lot of moves before the loop can be done 
04:50:19 <oerjan> there is only one possibility - turn your game into a Turing-complete esoteric language! 
04:50:41 <oklopol> i've been thinking about that 
04:51:12 <oklopol> it's just you can always choose which triggers to use and in which order... that has to be dropped 
04:51:43 <oklopol> plus it should still be playable by humans in situation created with humans playing 
04:52:03 <oklopol> or it kinda loses the coolness of being a turing complete game 
04:52:46 <oklopol> because first i thought threads for each trigger..... it's kinda impossible to actually use 
05:27:48 -!- ShadowHntr has joined. 
05:34:39 <oerjan> too many esolangs are minor variations on the same plot. 
05:35:28 <GregorR> Not enough esolangs are Perl. 
05:38:00 <GreaseMonkey> oh, the other way is to have as many instructions as you can ;D 
05:38:05 <oerjan> nah perl is at _least_ two esolangs. 
05:40:50 <oerjan> the third way would be having an unusual basic concept. 
06:32:04 -!- RodgerTheGreat has quit. 
06:33:52 -!- RodgerTheGreat has joined. 
06:46:04 <GreaseMonkey> hey guys, are any of you in an aware state when the mention of esoteric english is presented? 
06:47:07 <GreaseMonkey> that's a sentence in eso-english, which is the more esoteric side of english 
06:47:56 <oerjan> well in that case it looks like a kind of buzzword speak. 
07:06:11 <GreaseMonkey> there is a high degree of the cool factor which tarpits are allocated 
07:28:06 -!- ShadowHntr has quit ("End of line."). 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:33:01 -!- GreaseMonkey has quit ("Site updated, and a blog post: http://greasemonkey.nonlogic.org"). 
08:52:55 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 
08:56:22 -!- oklofok has joined. 
09:13:03 -!- Sukoshi has joined. 
09:37:45 -!- sebbu has joined. 
09:55:48 -!- jix has joined. 
09:58:05 -!- nazgjunk has joined. 
10:00:38 -!- jix has quit (Client Quit). 
10:19:08 -!- Sukoshi has quit (Read error: 110 (Connection timed out)). 
10:19:36 -!- ihope__ has joined. 
10:21:55 -!- jix has joined. 
10:37:07 -!- ihope_ has quit (Read error: 110 (Connection timed out)). 
10:39:01 -!- jix has quit ("This computer has gone to sleep"). 
11:03:39 -!- oklofok has quit (Read error: 104 (Connection reset by peer)). 
11:06:15 -!- oklopol has joined. 
11:18:52 -!- jix has joined. 
11:35:54 -!- ihope__ has quit (Client Quit). 
12:02:01 -!- jix has quit ("This computer has gone to sleep"). 
12:34:36 -!- jix has joined. 
12:47:12 -!- UpTheDownstair has joined. 
13:00:48 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 
13:01:57 -!- UpTheDownstair has joined. 
13:04:07 -!- nazgjunk has quit (Connection timed out). 
13:09:04 -!- UpTheDownstair has changed nick to nazgjunk. 
14:43:03 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
14:43:04 -!- UpTheDownstair has joined. 
14:44:23 -!- UpTheDownstair has changed nick to nazgjunk. 
15:23:03 -!- oerjan has quit ("leaving"). 
15:34:30 -!- tgwizard has joined. 
15:38:50 -!- UpTheDownstair has joined. 
15:39:11 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
15:51:32 -!- UpTheDownstair has quit (Read error: 54 (Connection reset by peer)). 
15:52:01 -!- nazgjunk has joined. 
16:05:06 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
16:05:21 -!- goban has joined. 
17:03:41 -!- UpTheDownstair has joined. 
17:04:48 -!- UpTheDownstair has quit (Read error: 54 (Connection reset by peer)). 
17:06:09 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
17:36:31 -!- nazgjunk has joined. 
17:37:10 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 
17:39:31 -!- nazgjunk has joined. 
17:48:59 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 
17:48:59 -!- UpTheDownstair has joined. 
17:49:51 -!- UpTheDownstair has changed nick to nazgjunk. 
18:19:22 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
18:22:53 -!- nazgjunk has joined. 
18:30:37 -!- Black_Phoenix has joined. 
18:40:15 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 
18:40:32 -!- UpTheDownstair has joined. 
18:45:14 -!- UpTheDownstair has changed nick to nazgjunk. 
19:00:02 -!- Black_Phoenix has left (?). 
19:16:08 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
19:48:20 -!- nazgjunk has joined. 
20:25:15 -!- Arrogant has joined. 
20:59:48 -!- Arrogant has quit ("Leaving"). 
21:06:05 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 
21:08:16 -!- nazgjunk has joined. 
21:47:21 -!- goban has quit (Read error: 104 (Connection reset by peer)). 
21:48:17 -!- lupine_85 has quit (Remote closed the connection). 
21:59:27 -!- tgwizard has quit (Remote closed the connection). 
22:00:40 -!- kxspxr has joined. 
22:00:59 -!- kxspxr has quit (Client Quit). 
22:21:57 -!- expose has joined. 
22:22:40 -!- expose has left (?). 
22:39:13 -!- nazgjunk has quit (Connection reset by peer). 
22:40:02 -!- sebbu2 has joined. 
22:48:27 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
22:59:15 -!- sebbu has quit (Connection timed out). 
23:48:57 -!- sebbu2 has quit ("Leaving"). 
00:07:24 * bsmntbombdood wonders what "Bitte waehlen Sie eine Beerdigungnachricht" means 
01:04:37 -!- oerjan has joined. 
01:06:01 <oerjan> It means "Please select a funeral message". 
01:12:36 * oerjan wonders what kind of government a hypocracy is. :) 
01:13:00 <oerjan> Rule by stupid people who cannot spell? 
01:14:52 <GregorR> Rule by doctors [joke no one will get]. 
01:21:35 <oerjan> Well it is a bit dated, given the computer revolution in medicine. 
01:23:05 <oerjan> or maybe that _is_ the modern version. hm. 
01:26:35 <oerjan> oh and the "hypocracy" was not from the logs. i just read it once again on the web. 
01:27:15 <oerjan> i mean when a word is used that often it's got to mean something, right? 
01:30:10 -!- crathman has joined. 
02:28:21 -!- ShadowHntr has joined. 
02:46:15 -!- GreaseMonkey has joined. 
03:07:06 <oerjan> Argh! Which complete imbecile decided to put a uniform RealFloat constraint on Haskell Complex numbers? 
03:07:31 <SimonRC> Haskell numeric classes are a bloody mess. 
03:08:12 <oerjan> i want Complex Rational! 
03:08:33 <oerjan> and i might sometime want Gaussian integers too. 
03:09:35 <SimonRC> have you looked at the definition of Real 
03:09:48 <SimonRC> Me thinks computer science is not math 
03:10:16 <SimonRC> Acoording tp haskell typeclasses, the definig property of real numbers is that you can convert them to fractions 
03:11:59 <oerjan> well well. i guess i'll just have to define complex multiplication explicitly. 
03:14:26 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.2/2007021917]"). 
03:21:21 <GreaseMonkey> According<incomplete-verb to<verb-modifier haskell<noun-as-adjective typeclasses<noun, the<object-as-noun-converter defining<adjective property<object of<verb-extender real<adjective numbers<noun is<verb(primary) that<adjective-to-verb-modifier you<noun can<verb-condition-modifier convert<verb them<reference-noun to<verb-extender fractions<noun 
03:23:36 <GreaseMonkey> i believe that most sentences spoken in english are statements, including this sentence. 
03:24:57 * oerjan is feeling paradoxical. 
03:28:07 <GreaseMonkey> the verb "is" can accept a verb as an adjective. 
03:29:48 <GregorR> The verb 'is' cannot accept a verb as an adjective X_X 
03:29:58 <GregorR> -ing turns a verb into an adjective. 
03:30:57 <GregorR> I live in a happy universe where things are consistent ;) 
03:32:14 <oerjan> Wow, can I have your interdimensional communication technology? 
03:32:58 <GregorR> Sorry, it can only exist in my universe. 
03:47:20 <GreaseMonkey> eg: "i'm a fag, so are you?" <- statement + incomplete query 
03:52:05 <oerjan> Darn I just realized why Complex needs at least Floating. That stupid abs operation in Num requires square root for complex extension! :( 
04:48:24 <oerjan> wow, that actually crashed Hugs. 
05:01:05 <bsmntbombdood> that approxamation of e is accurate to within 3/(799!) 
05:02:29 <oerjan> Naturally. The exp taylor series converges fast. 
05:04:37 <oerjan> I would expect (1+x)/(799!) where x ~ 1/800 
05:13:25 -!- anonfunc has joined. 
06:00:27 -!- oerjan_ has joined. 
06:01:05 -!- oerjan_ has quit (Client Quit). 
06:01:16 -!- oerjan has quit (Remote closed the connection). 
06:01:23 -!- oerjan has joined. 
06:25:19 -!- ShadowHntr has quit ("End of line."). 
06:55:29 -!- oerjan has quit ("leaving"). 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:36:36 -!- GreaseMonkey has quit (Read error: 104 (Connection reset by peer)). 
09:25:31 -!- sebbu has joined. 
09:30:37 -!- nazgjunk has joined. 
09:41:10 -!- kxspxr has joined. 
09:41:25 -!- kxspxr has quit (Client Quit). 
10:06:59 -!- UpTheDownstair has joined. 
10:07:02 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
10:08:27 -!- UpTheDownstair has changed nick to nazgjunk. 
10:19:13 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
10:22:26 -!- nazgjunk has joined. 
10:52:45 -!- UpTheDownstair has joined. 
10:52:49 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
10:58:21 -!- UpTheDownstair has changed nick to nazgjunk. 
11:18:25 -!- nazgjunk has quit (Read error: 131 (Connection reset by peer)). 
11:18:34 -!- UpTheDownstair has joined. 
11:20:34 -!- anonfunc has quit. 
11:28:35 -!- UpTheDownstair has changed nick to nazgjunk. 
12:08:06 -!- UpTheDownstair has joined. 
12:08:30 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
12:08:40 -!- UpTheDownstair has changed nick to nazgjunk. 
12:54:00 -!- jix has joined. 
13:24:30 -!- nazgjunk has quit ("really really need to study now"). 
13:53:42 -!- nazgjunk has joined. 
14:21:56 -!- UpTheDownstair has joined. 
14:22:21 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
14:22:30 -!- UpTheDownstair has changed nick to nazgjunk. 
14:24:01 -!- tgwizard has joined. 
14:54:18 -!- nazgjunk has quit ("lunch + voting + work, bbl +- 10 CET"). 
14:58:25 -!- nazgjunk has joined. 
15:00:02 -!- nazgjunk has quit (Connection reset by peer). 
15:00:08 -!- UpTheDownstair has joined. 
15:02:01 -!- UpTheDownstair has changed nick to nazgjunk. 
15:17:40 -!- nazgjunk has quit ("Leaving"). 
17:45:19 -!- jix has quit (Read error: 113 (No route to host)). 
19:31:07 -!- dddh has joined. 
19:32:33 -!- dddh has left (?). 
20:02:16 -!- crathman has joined. 
20:24:12 -!- nazgjunk has joined. 
20:33:39 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
20:33:56 -!- nazgjunk has joined. 
20:41:26 -!- UpTheDownstair has joined. 
20:41:42 -!- nazgjunk has quit (Connection reset by peer). 
20:51:06 -!- crathman has quit (Remote closed the connection). 
20:57:26 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 
20:59:21 -!- nazgjunk has joined. 
20:59:45 -!- jix__ has joined. 
21:15:37 -!- UpTheDownstair has joined. 
21:16:26 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
21:40:37 -!- Arrogant has joined. 
21:42:48 -!- UpTheDownstair has changed nick to nazgjunk. 
21:48:51 -!- UpTheDownstair has joined. 
21:50:09 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
21:53:09 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
21:55:47 -!- UpTheDownstair has changed nick to nazgjunk. 
22:04:37 -!- Arrogant has quit ("Leaving"). 
22:05:43 -!- UpTheDownstair has joined. 
22:10:34 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
22:12:40 -!- nazgjunk has joined. 
22:20:16 -!- nazgjunk has quit (Connection reset by peer). 
22:22:58 -!- UpTheDownstair has quit (Connection timed out). 
22:23:25 -!- UpTheDownstair has joined. 
22:30:54 -!- sebbu2 has joined. 
22:34:22 -!- Sgeo has joined. 
22:38:33 -!- nazgjunk has joined. 
22:39:41 -!- nazgjunk has quit (Connection reset by peer). 
22:39:48 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 
22:46:14 -!- nazgjunk has joined. 
22:49:36 -!- sebbu has quit (Connection timed out). 
22:55:09 -!- tgwizard has quit (Read error: 110 (Connection timed out)). 
23:03:54 -!- crathman has joined. 
23:09:49 -!- UpTheDownstair has joined. 
23:25:26 -!- nazgjunk has quit (Success). 
23:35:39 -!- UpTheDownstair has quit (Success). 
23:51:05 -!- crathman has quit (Read error: 113 (No route to host)). 
00:13:01 -!- sebbu2 has quit (Client Quit). 
01:37:25 -!- crathman_ has joined. 
01:37:49 -!- crathman_ has changed nick to crathman. 
01:37:52 -!- crathman has quit (Remote closed the connection). 
01:39:59 -!- graue has joined. 
02:55:43 -!- calamari has joined. 
02:57:45 -!- GreaseMonkey has joined. 
04:51:14 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 
05:02:42 -!- goban has joined. 
05:08:29 -!- cmeme has quit ("Client terminated by server"). 
05:08:39 -!- cmeme has joined. 
05:27:47 <GregorR> Anybody got an Intel OS X box that wants to help me port crosslibc? 
05:28:37 <GregorR> My suspicion is that it works as-is, since OS X uses the same syscall format as the rest of the BSD family. 
05:30:34 -!- GreaseBot has joined. 
05:30:56 <GreaseBot> Hehe, I'm only a slavebot for now :D 
05:32:00 -!- GreaseBot has quit (Client Quit). 
05:32:40 <GregorR> Go look it up on the freenode FAQ. 
05:32:47 <GregorR> Everybody asks that the first time they write a bot :P 
05:33:58 <GregorR> Go look it up on the freenode FAQ. 
05:33:59 <GregorR> Everybody asks that the first time they write a bot :P 
05:39:12 <GregorR> IIR, basically: If you're not registered, you need to be on for a few minutes before it will allow quit messages, and also certain activities cause it to penalize that time. 
05:49:32 <GregorR> RodgerTheGreat: If you'd like to help, one of two options: Either compile a few things for me and see if they run, or give me SSH so I can do the same. 
05:50:23 <RodgerTheGreat> hand me a tar and I'll take a crack at compiling its contents 
05:53:22 <GregorR> http://www.codu.org/rtload-r10.tar.bz2 
05:53:41 <GregorR> Just 'make' to compile rtload, then: ./rtload test-xlibc.elf 
05:53:47 <GregorR> Should say Hello, world 1!  I believe. 
05:54:09 <GregorR> [If it segfaults after that, don't worry about it, rtload is still a bit funky :P ] 
05:55:19 <RodgerTheGreat> gcc -g -DRTLOAD_STATICELF -DRTLOAD_AOUT -c rtload.c -o rtload.o 
05:55:20 <RodgerTheGreat> gcc -g -DRTLOAD_STATICELF -DRTLOAD_AOUT -c ldrs.c -o ldrs.o 
05:55:20 <RodgerTheGreat> gcc -g -DRTLOAD_STATICELF -DRTLOAD_AOUT -c bbuffer.c -o bbuffer.o 
05:55:20 <RodgerTheGreat> bbuffer.c:143: error: PIC register 'ebx' clobbered in 'asm' 
05:55:43 <GregorR> Hm, apparently Mac OS X does all code as PiC ... 
05:56:57 <GregorR> Whoops - hahaha, it doesn't even actually clobber it, it just claims to :P 
05:57:33 <GregorR> In bbuffer.c, on line 118, remove:  , "ebx" 
05:59:03 <GregorR> I did put a comma in what I told you to remove ;) 
05:59:33 <RodgerTheGreat> wads-5-232-13:~/Desktop/rtload-r10 Rodger$ ./rtload test-xlibc.elfBus error 
05:59:47 <GregorR> Bus error ... always a nice one :P 
06:01:15 <GregorR> I'll be back in a few minutes ;) 
06:01:29 <GregorR> Unfortunately, debugging rtload and crosslibc is about as big of a PITA as there is >_> 
06:04:29 <RodgerTheGreat> pop some more ram and a video card in that thing and it'd be a damn decent machine 
06:05:04 <RodgerTheGreat> and considering the parts, it wouldn't be easier to build one for cheaper 
06:12:52 -!- Arrogant has joined. 
06:14:18 <GregorR> RodgerTheGreat: Do you want to be indoctrinated into the crosslibc cult [help debug where that error is]? 
06:14:52 <RodgerTheGreat> erm... well, I'm no C-coder myself- I'm not sure how much of a help I could be 
06:15:56 <RodgerTheGreat> nothing personal, dude, but I'm not in the habit of giving random people from the internet shell access to my machine 
06:16:40 <RodgerTheGreat> but one of my roommate's friends gave that computer a bath, and it has mysteriously ceased working 
06:35:15 -!- calamari has quit ("Leaving"). 
06:54:47 <RodgerTheGreat> 'night all- GregorR: if you need anything done, I'll be here most of tomorrow 
07:10:13 -!- oerjan has joined. 
07:40:17 -!- Arrogant has quit ("Leaving"). 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:16:01 -!- jix__ has joined. 
08:23:42 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
08:26:46 -!- GreaseMonkey has quit ("I should make more bots. It's fun. Roger_The_Bum, nice try, but you use SupyBot. And that's generic. Generic bots are kinda g). 
08:47:37 -!- helios_ has joined. 
09:05:03 <SimonRC> Well, I think I am finished writing obscenely inefficient programs.  My computability theory homework is finished. 
09:06:19 <SimonRC> I really do mean obscenely inefficient.  How about f(n,n) runtimes where f(0,y) = y and f(x+1,y) = 2^f(x,y) ? 
09:06:26 <oerjan> on purpose, I assume. :) 
09:06:52 <SimonRC> no, it's just that they don't matter, so we ignore the runtime 
09:06:58 <SimonRC> all that matters is computability 
09:07:18 <oerjan> that's not even Ackermann. 
09:07:58 <SimonRC> I think there are some ackerman runtimes around too. 
09:08:34 <oerjan> i suppose if you do complexity theory you might have to do it again. 
09:08:44 <SimonRC> Want to recurse?  Just make your program a quine and include a universal interpreter whereever recursion is required. 
09:09:26 <oerjan> and then it _definitely_ would be on purpose. 
09:09:34 <SimonRC> see here for example:   http://www.dur.ac.uk/s.s.dantchev/Teaching/ATC-CT/ 
09:09:55 <SimonRC> want to make a datastructure?  well the only type available is Nat, but that's ok... 
09:10:33 <oerjan> and the only operation is Succ? :) 
09:10:39 <SimonRC> you just do <x,y> = 2^x*(2*y + 1) - 1 
09:10:50 <SimonRC> oerjan: no, you have limited predecessor too 
09:11:26 <SimonRC> and a clever macro system that is not too bad at replacing subroutines 
09:38:22 -!- jix__ has joined. 
09:41:57 -!- sebbu has joined. 
10:16:59 -!- helios_ has quit ("Leaving"). 
10:21:29 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
10:35:04 -!- goban has quit (Remote closed the connection). 
10:41:58 -!- nazgjunk has joined. 
10:53:01 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
10:53:15 -!- UpTheDownstair has joined. 
10:53:37 -!- UpTheDownstair has changed nick to nazgjunl. 
10:53:41 -!- nazgjunl has changed nick to nazgjunk. 
11:24:00 -!- UpTheDownstair has joined. 
11:28:28 -!- nazgjunk has quit (Read error: 145 (Connection timed out)). 
11:38:01 -!- nazgjunk has joined. 
11:38:57 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 
11:50:09 -!- oerjan has quit (Read error: 104 (Connection reset by peer)). 
12:04:26 -!- nazgjunk has quit (Client Quit). 
13:41:01 -!- calamari has joined. 
14:22:23 -!- jix__ has joined. 
14:35:10 -!- calamari has quit ("Leaving"). 
14:36:25 -!- Arrogant has joined. 
14:55:51 -!- jix__ has changed nick to jix. 
16:21:03 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
16:23:50 -!- jix has joined. 
17:18:43 <oklopol> can i find the list of argument a function need somehow? 
17:45:02 <lament> there's foo.func_code_co_argcount 
17:45:26 <lament> and foo.func_code.co_varnames 
17:51:34 <oklopol> __import__("pydoc").inspect.getargspec(my_funx) was what #python told me 
17:52:25 <lament> that thing probably uses the fields i mentioned :) 
17:56:31 -!- nazgjunk has joined. 
17:59:19 -!- RodgerTheGreat has quit. 
18:03:49 <oklopol> yeah, i thought that might be the case :P 
18:04:10 <oklopol> but it's not important, as long as it works 
18:40:45 -!- UpTheDownstair has joined. 
18:42:46 -!- nazgjunk has quit (Nick collision from services.). 
18:42:50 -!- UpTheDownstair has changed nick to nazgjunk. 
18:54:36 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
18:54:47 -!- UpTheDownstair has joined. 
18:58:56 -!- nazgjunk has joined. 
18:59:49 -!- UpTheDownstair has quit (Connection reset by peer). 
19:11:26 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
19:11:47 -!- nazgjunk has joined. 
19:13:20 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
19:14:25 -!- nazgjunk has joined. 
19:19:41 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
19:20:07 -!- nazgjunk has joined. 
19:29:36 -!- UpTheDownstair has joined. 
19:30:36 -!- nazgjunk has quit (Connection reset by peer). 
19:30:55 -!- UpTheDownstair has changed nick to nazgjunk. 
19:32:27 -!- ShadowHntr has joined. 
19:41:24 -!- sebbu2 has joined. 
19:57:31 -!- UpTheDownstair has joined. 
19:58:11 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
19:59:41 -!- UpTheDownstair has changed nick to nazgjunk. 
20:06:24 -!- sebbu has quit (Connection reset by peer). 
20:17:32 -!- UpTheDownstair has joined. 
20:18:31 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
20:18:51 -!- UpTheDownstair has changed nick to nazgjunk. 
20:37:03 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
20:49:11 -!- RobHu has quit ("leaving"). 
20:56:55 <oklopol> i think hq9 should archive turing completeness with X so that X prevents execution of h, q and 9 but h still returns "hw" in the stream and 9 returns the number 9, q somehow applies two thing together so that it is possible to combine hello worlds and 9's into something sensible 
20:57:09 <oklopol> i'm sure i soon get an idea how to do this :\ 
20:57:49 <oklopol> X would thus be the opposite of unlambda's ` (maybe) 
21:17:21 <oklopol> well, in application you give the function some arguments... so in displication you make (\a -> f) where f is the function to be displicated 
21:18:14 <oklopol> so H will not be executed since it is now required to get an argument before outputting Hello, world 
21:19:22 <oklopol> i still have no idea what you can do with this 
21:26:39 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
21:39:07 -!- Rugxulo has joined. 
21:39:37 -!- Rugxulo has left (?). 
21:44:21 -!- nazgjunk has joined. 
21:52:39 -!- Sgeo has joined. 
22:17:47 -!- sebbu2 has changed nick to sebbu. 
22:28:11 -!- Arrogant_ has joined. 
22:30:37 -!- Arrogant_ has quit (Client Quit). 
22:36:42 -!- nazgjunk has quit ("Leaving"). 
22:43:10 -!- sebbu2 has joined. 
22:53:10 -!- Arrogant has quit (Read error: 113 (No route to host)). 
23:01:31 -!- Sgeo has quit ("Leaving"). 
23:01:44 -!- sebbu has quit (Connection timed out). 
23:14:51 -!- sebbu2 has quit ("@+"). 
23:27:54 <bsmntbombdood> http://en.wikipedia.org/wiki/Lagrange_inversion_theorem 
01:18:24 -!- Insineratehymn has joined. 
01:19:28 -!- Insineratehymn has quit (Client Quit). 
01:20:10 <EgoBot> :( Aw, I thought I had a friend. 
02:08:05 <graue> how did you win that? 
02:10:24 -!- SevenInchBread has joined. 
02:12:03 <lament> i wonder for how much money you could sell that prize 
02:13:32 <lament> you get 6 bucks the first year 
02:13:52 <lament> then only 70 cents the next year 
02:14:48 <lament> that's not all that great 
02:15:00 <lament> (as compared with the market) 
02:19:09 <lament> the market gets you infinite money faster :) 
02:27:46 <graue> isn't 11.7% interest pretty good? 
02:28:53 <lament> but it's not real 11.7% interestt 
02:28:59 <lament> it's only like that the first year :) 
02:29:37 <graue> how much do you get the third year? 
02:29:41 <lament> real interest would correspond to a sequence with increasing terms. The market even outperforms some of those. 
02:30:51 <fizzie> And if you live 70 years, you almost but not quite get to $11. Yay. 
02:32:22 <lament> even if the prize was a dollar a day, it would still be outperformed by a small initial investment 
02:33:38 <lament> therefore the "value" of the prize is smaller than the value of the investment 
02:34:31 <lament> we can actually calculate how much the "prize" is worth 
02:34:50 <lament> under specific market conditions 
02:35:09 <lament> how much money would it make sense to pay for it 
02:35:16 <lament> as opposed to just invest that money 
02:36:25 <lament> it's clearly worth more than a dollar 
02:37:28 <graue> pay a dollar for it and you'd have $1.50 the next day, that's worth it 
02:41:57 <lament> graue: oh yeah, that's true 
02:42:26 <lament> graue: if you can do that repeatedly, and buy unlimited prizes a day, that outperforms the market easily :) 
02:42:40 <graue> yeah, there you go 
02:57:34 <lament> i'm surprised it ever gets to more than 5 bucks 
02:58:45 -!- Sgeo has joined. 
03:05:58 -!- GreaseMonkey has joined. 
03:08:27 <lament> GreaseMonkey: 'e' is Euler's constant :) 
03:08:43 <lament> GreaseMonkey: and the relationship is highly non-linear 
03:09:38 <GreaseMonkey> just in case you have something that says $5.87 for 2 years 
03:25:35 <bsmntbombdood> I'm going to make a killing selling these for 6 dollars 
03:29:48 <lament> assuming you can actually invest at 10% 
03:31:53 <lament> (for the rest of eternity) 
04:01:56 * Sgeo created http://uncyclopedia.org/wiki/SpySheriff 
04:22:32 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 
05:09:57 <bsmntbombdood> \sum_{n=1}^{x} 1/x is pretty well aproximated by .79 + .95*ln(x) 
05:11:32 <GreaseMonkey> hey, what lang should i use for adding custom bot messages to GreaseBot 
05:31:39 <GreaseMonkey> like miniscript but using single-symbol stuff and more strin-oriented 
06:44:54 -!- GreaseMonkey has quit (Read error: 110 (Connection timed out)). 
06:45:09 -!- GreaseMonkey has joined. 
07:19:04 -!- helios24 has quit (Remote closed the connection). 
07:19:40 -!- helios24 has joined. 
07:25:12 -!- jix has joined. 
07:30:31 -!- Sgeo has quit ("Leaving"). 
07:54:52 -!- ShadowHntr has quit (Read error: 145 (Connection timed out)). 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:24:44 -!- ShadowHntr has joined. 
08:29:38 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
08:54:19 -!- ShadowHntr has quit ("End of line."). 
09:01:44 -!- GreaseMonkey has quit ("Goodnight everyone. (Ahh, I love my bot :D)"). 
09:56:04 -!- sebbu has joined. 
11:45:46 * sebbu search the apprentice, from lewis libby 
12:35:21 -!- ais523 has joined. 
13:06:43 <EgoBot> 1 ais523: daemon ul bf 
13:06:46 <EgoBot> 2 ais523: daemon deadfish funge93 
13:07:29 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 
13:07:32 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 
13:10:50 <ais523> EgoBot needs an HQ9+ interpreter 
13:12:42 <ais523> Hey, there's a language called HQ9+- 
13:12:57 <ais523> - causes a different error depending on which command it's adjacent to 
13:14:07 -!- jix has joined. 
13:15:08 <ais523> and checking http://99-bottles-of-beer.net it seems that there's a language that can do 99 bottles of beer in even fewer characters than HQ9+ 
13:17:55 <oklopol> yeah in 99 the empty program does that iirc 
13:18:57 <ais523> as does every other program 
13:19:43 <ais523> What's confusing me now is there seems to be quite a bit of HQ9+ discussion in news:perl.perl6.internals 
13:23:09 <oklopol> are they going to add HQ9 capabilities in perl? 
13:25:26 <ais523> It's not entirely clear from the newsgroup messages 
14:06:27 * ais523 has just written an HQ9+ interpreter in Thutu 
14:06:42 <ais523> because I couldn't find enough HQ9+ interpreters in esoteric programming languages 
14:06:56 <ais523> http://pastebin.ca/raw/387587 
14:07:45 <ais523> I even made sure it had a genuine accumulator (although not one that does anything useful, naturally) 
14:08:23 <ais523> but I'd really prefer an HQ9+ interpreter in a language that Egobot has 
14:08:30 <ais523> so that we can daemon it 
14:16:30 -!- ais523 has quit ("So as to be not logged in when leaving the computer"). 
14:25:03 -!- ais523 has joined. 
14:44:28 -!- crathman has joined. 
15:01:35 -!- crathman_ has joined. 
15:12:25 -!- nazgjunk has joined. 
15:12:34 -!- helios24 has quit ("Leaving"). 
15:17:38 -!- crathman has quit (Read error: 110 (Connection timed out)). 
15:22:48 -!- UpTheDownstair has joined. 
15:25:01 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 
15:25:28 -!- UpTheDownstair has joined. 
15:31:00 -!- grmbla has joined. 
15:32:09 -!- nazgjunk has quit (Nick collision from services.). 
15:32:24 -!- grmbla has changed nick to nazgjunk. 
15:35:43 -!- UpTheDownstair has quit (Read error: 145 (Connection timed out)). 
15:41:16 -!- UpTheDownstair has joined. 
15:42:29 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
15:43:14 -!- oerjan has joined. 
15:51:53 -!- nazgjunk has joined. 
15:54:18 -!- UpTheDownstair has quit (Read error: 145 (Connection timed out)). 
15:54:51 * ais523 has written a Forte interpreter that seems to handle LET properly 
15:55:02 <ais523> I haven't programmed any of the other commands yet, though 
15:55:10 <ais523> nor tested it with tricky things like continuation lines 
15:55:39 <oerjan> right... i'm still bogged down in parsing, it seems. 
15:55:57 <ais523> My interpreter doesn't really parse the input at all 
15:56:18 <ais523> I wrote it by extending Thutu to have arithmetic built-in, and then using the new language 
15:56:39 <ais523> so it uses regexps to parse commands on-the-fly at the last possible moment 
15:57:10 <oerjan> how do you keep track of assigned numbers? 
15:57:24 <ais523> I use a list of redefinition pairs 
15:57:34 <ais523> the clever part is that the list can redefine later in the list 
15:57:47 <ais523> so for instance, (10)(8) means that 10 is redefined to 8 
15:58:07 <ais523> and if later 8 is redefined to 12, I have (8)(12),(10)(8) 
15:58:17 <ais523> which the program automatically changes to (8)(12),(10)(12) 
15:58:57 <ais523> Except, as it's Thutu, I use a % sign in front of every punctuation mark to avoid ambiguities, so it looks like %(8%)%(12%)%,%(10%)%(12%) 
15:59:10 <ais523> which is much the same but harder to read in the Perl debugger I'm using to test this 
16:03:00 -!- UpTheDownstair has joined. 
16:03:15 <ais523> Argh! When I test a line with a colon in, the length of the memory increases exponentially with lots of duplicates of the program 
16:03:19 <ais523> I'm sure that's not meant to happen 
16:04:23 <oerjan> i noticed a discussion in the logs about a $1/n prize... 
16:04:40 <ais523> I was reading that in the logs too 
16:05:30 <ais523> It's related to a similar problem I was wondering about: how much money would you pay for a St. Petersburg return? 
16:06:05 <oerjan> I believe that to find the current value given interest p, you need to sum 1/n * 1/(1+p/100)^n 
16:06:17 <ais523> (Flip a coin. If you flip tails, you win $2. Otherwise, flip again; with tails you get $4, with heads flip again, then you get $8 for tails on the third flip, $16 for tails on the fourth flip, etc.) 
16:06:37 <oerjan> which is a tailor series. 
16:06:48 <oerjan> eh, i'm still talking about the log problem. 
16:07:20 <ais523> crossed messages can be a problem in IRC 
16:07:29 <ais523> even though they're delivered so fast 
16:07:34 <ais523> because you have to spend time typing 
16:09:35 <oerjan> sum x^n/n = integral of sum x^(n-1) = integral of 1/(1-x) = -log|1-x|, with some fixing of indices. 
16:10:32 * ais523 has found and fixed the problem 
16:10:50 <ais523> Thutu's so conducive to writing multithreaded programs in, it's even possible to do it by accident 
16:11:13 <ais523> I managed to create a forkbomb by mistake 
16:11:51 <oerjan> that st petersburg return obviously has infinite expectation in dollars. 
16:12:21 <ais523> yep, but you wouldn't pay $1000000 to get the St. Petersburg payoff in return, would you? 
16:13:11 <ais523> partly because there's no chance that the person offering you the bet would own enough dollars to pay you off if you flipped 1000000 heads in a row  
16:13:28 <ais523> and if they can't afford it, the expectation would be less than $1000000 
16:13:41 <oerjan> Assuming they could afford it: 
16:14:00 <oerjan> you need to take into account that money itself has diminishing value. 
16:14:43 <ais523> I agree; the payoff, even though it's potentially very large, isn't really worth all that much 
16:14:55 <oerjan> the inflation would be immense. 
16:15:36 <ais523> (Sorry, I keep sending debugger commands to my IRC client rather than my Perl debugger by mistake) 
16:16:47 -!- grahza has joined. 
16:17:05 -!- nazgjunk has quit (Nick collision from services.). 
16:17:14 -!- grahza has quit (Read error: 104 (Connection reset by peer)). 
16:21:03 <oerjan> Wow, Mark C Carroll is showing Thutu as this week's pathological language! 
16:21:14 <jix> ais523: i just sent svn commands into irc (different channel) 
16:21:44 -!- UpTheDownstair has quit (Connection timed out). 
16:23:04 <graue> i guess i need to catch up on the thutu craze 
16:27:42 <oerjan> graue: you need to fix the logo on the esolang wiki. 
16:28:32 <ais523> graue: the logo, and the 'public domain' image, have gone wrong during the upgrade. The other thing that changed during the upgrade was the syntax for enlarging images, but I've fixed that myself. 
16:33:50 <ais523> oerjan: Thanks for pointing me to that Mark C Carroll page! I don't think I'd have found it otherwise. 
16:51:55 <graue> hey ais523: i couldn't find anything on mediawiki.org about the captchas you say are in mediawiki 1.9 
16:52:41 <ais523> I know they're implementable somehow; after all, I've come across those capchas before (on Wiktionary as it happens). 
16:52:51 * ais523 looks for the MediaWiki CAPCHAs 
16:54:10 <ais523> It seems to be a well-supported extension originally in 1.6, but it was updated recently 
16:54:37 <ais523> Look on Meta rather than mediawiki.org: http://meta.wikimedia.org/wiki/ConfirmEdit_extension 
16:56:13 <ais523> yep, I've just tested it. It's definitely ConfirmEdit that's being used on the Wikimedia sites, and it's set to trigger when an anon adds an external link 
16:58:41 <ais523> the description of the extension's _meant_ to be on mediawiki.org, but they haven't got round to moving it yet 
17:03:07 <oerjan> ais523: i see no mention anywhere of that multithreading you mentioned... 
17:03:23 <ais523> No, it's not a language feature, it sort of comes out from the way the language works 
17:03:50 <ais523> The most practical way to program is to use markers (%% is one I often use, because % has no regexp meaning) to mark what you're doing 
17:04:06 <ais523> but if the marker accidentally gets duplicated, the program starts acting from both points 
17:04:33 <ais523> and often, the behaviour from the markers ends up more-or-less interleaved, like it does in a multithread program 
17:05:12 <ais523> Because Thue is non-deterministic, duplicating the data string in Thue would always lead to an effectively multithread program 
17:05:27 <ais523> In Thutu, which is deterministic, it just _usually/ 
17:05:35 <ais523> leads to an effectively multithread program 
17:05:45 * ais523 wonders why they had to put newline next to backspace 
17:07:07 <oerjan> btw, does I/O happen in the main loop if you use < and replacement, or if you use > or step-off-end? 
17:09:32 <ais523> < doesn't cause I/O to happen if used in the main loop (like a replacement, it steps back to the top). > does. 
17:10:28 <oerjan> right.  It is a bit confusing between iterations of the main loop and iterations of the program. 
17:10:41 <ais523> The main loop is the program, pretty much 
17:11:13 <oerjan> that's exactly the point where they are different. 
17:11:54 <oerjan> the I/O loop is _not_ the same as the main @ loop, but contains it. 
17:12:10 <ais523> The I/O is sort of an extra line outside the program 
17:12:54 <ais523> oerjan: I see what you mean now when you say the main loop isn't the program 
17:13:05 <oerjan> the reason i'm mentioning this is because i suspect Mark CC misunderstood it. 
17:13:09 <ais523> The input program is in its' own implied @ loop 
17:13:26 <ais523> but the I/O is outside that in some other loop (a /=9/! loop?) 
17:15:16 <oerjan> (or at least he made it even more ambiguous.) 
17:18:16 <ais523> This sort of thing makes me glad I defined Thutu in terms of a reference interpreter 
17:40:40 -!- nazgjunk has joined. 
18:29:19 -!- UpTheDownstair has joined. 
18:29:32 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
18:35:10 -!- digital_me has joined. 
18:35:38 <ais523> Yay, Esolang now has CAPCHAs to help against the spam. Thanks, graue! 
18:40:06 -!- UpTheDownstair has changed nick to nazgjunk. 
18:55:32 -!- ais523 has quit ("I have utterly failed to leave this space intentionally blank"). 
19:01:18 -!- crathman_ has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.2/2007021917]"). 
19:48:39 -!- ShadowHntr has joined. 
20:43:12 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
20:43:45 -!- nazgjunk has joined. 
21:38:14 -!- oerjan has quit ("leaving"). 
22:01:24 -!- ShadowHntr has quit (Client Quit). 
22:29:42 -!- Rugxulo has joined. 
22:30:12 -!- Rugxulo has left (?). 
22:31:04 -!- Rugxulo has joined. 
22:31:50 -!- Rugxulo has quit (Client Quit). 
22:32:01 -!- Rugxulo has joined. 
22:32:59 -!- Rugxulo has left (?). 
22:48:33 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
22:55:05 -!- Sgeo has joined. 
23:01:33 <sebbu> durée 12h43m07s, cpu time 54min53s <-- pour défrag 134go 
23:14:09 -!- sebbu has quit ("@+"). 
23:32:24 -!- jix__ has joined. 
23:40:43 -!- jix has quit (Read error: 110 (Connection timed out)). 
23:47:41 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
00:27:06 -!- ShadowHntr has joined. 
00:30:52 -!- RodgerTheGreat has joined. 
00:54:48 <bsmntbombdood> http://www.cs.duke.edu/~rodger/baking/cs030327.html 
01:32:45 <graue> edible turing machines, eh? 
01:35:03 <graue> if you could execute the program by eating the muffins, that would make it better 
01:36:09 <RodgerTheGreat> bitwise cyclic tag would be awesome with an infinite series of muffins extending to the right 
01:37:18 <graue> no, not infinite, remember, just unbounded 
02:18:14 -!- GreaseMonkey has joined. 
03:03:58 <graue> infinite muffins is too expensive and nobody can afford it 
03:04:08 <graue> but unbounded muffins just means you have to be ready to go out and buy another one if need be 
03:04:24 <graue> in reality, there has to be a bound, but you can fake it 
03:06:47 <graue> i believe it's a turing machine 
03:40:28 -!- GreaseMonkey has changed nick to ^_`. 
03:53:08 -!- calamari has joined. 
03:54:06 -!- GregorR_ has joined. 
03:55:21 -!- oklopol has quit (calvino.freenode.net irc.freenode.net). 
03:55:21 -!- sekhmet has quit (calvino.freenode.net irc.freenode.net). 
03:55:21 -!- NK` has quit (calvino.freenode.net irc.freenode.net). 
03:55:21 -!- SimonRC has quit (calvino.freenode.net irc.freenode.net). 
03:55:21 -!- GregorR has quit (calvino.freenode.net irc.freenode.net). 
03:55:41 -!- ^_` has quit (Killed by ballard.freenode.net (Nick collision)). 
03:55:42 -!- oklopol has joined. 
03:55:42 -!- sekhmet has joined. 
03:55:42 -!- GregorR has joined. 
03:55:42 -!- NK` has joined. 
03:55:42 -!- SimonRC has joined. 
03:55:45 -!- GregorR has quit (Nick collision from services.). 
03:56:13 -!- thematrixeatsyou has joined. 
03:56:14 -!- GregorR_ has changed nick to GregorR. 
03:56:57 -!- thematrixeatsyou has changed nick to GreaseMonkey. 
04:07:42 -!- SimonRC has quit (calvino.freenode.net irc.freenode.net). 
04:07:42 -!- sekhmet has quit (calvino.freenode.net irc.freenode.net). 
04:07:42 -!- NK` has quit (calvino.freenode.net irc.freenode.net). 
04:07:42 -!- oklopol has quit (calvino.freenode.net irc.freenode.net). 
04:09:12 -!- oklopol has joined. 
04:09:12 -!- sekhmet has joined. 
04:09:12 -!- NK` has joined. 
04:09:12 -!- SimonRC has joined. 
04:11:46 -!- RodgerTheGreat has quit. 
04:35:38 <graue> the wiki db backups were messed up for a few days 
04:35:48 <graue> i think they're good now 
05:03:06 -!- Sgeo has quit ("Leaving"). 
05:30:37 -!- Arrogant has joined. 
05:50:32 -!- digital_me has quit (Read error: 110 (Connection timed out)). 
05:52:39 -!- calamari has quit (Remote closed the connection). 
06:10:56 -!- ShadowHntr has quit ("End of line."). 
06:50:28 -!- anonfunc has joined. 
07:30:01 -!- GreaseMonkey has quit ("There's always another bug to fix"). 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:18:46 -!- anonfunc has quit. 
08:19:39 -!- anonfunc has joined. 
08:20:38 -!- anonfunc has quit (Client Quit). 
08:21:51 -!- anonfunc has joined. 
08:54:43 -!- Arrogant has quit ("Leaving"). 
09:03:04 -!- anonfunc has quit. 
09:15:46 -!- sebbu has joined. 
10:27:32 -!- jix has joined. 
10:37:13 -!- nazgjunk has joined. 
11:32:11 -!- jix__ has joined. 
11:40:36 -!- jix has quit (Read error: 110 (Connection timed out)). 
11:45:17 -!- jix__ has changed nick to jix. 
12:25:02 -!- tgwizard has joined. 
12:27:18 -!- UpTheDownstair has joined. 
12:28:05 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
12:30:29 -!- UpTheDownstair has changed nick to nazgjunk. 
12:43:30 -!- nazgjunk has quit ("Leaving"). 
15:33:51 -!- mike_the_person has joined. 
15:36:15 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 
15:36:17 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 
15:45:25 -!- mike_the_person has quit ("Chatzilla 0.9.77 [Firefox 1.5.0.10/2007021601]"). 
15:52:41 -!- oerjan has joined. 
17:04:28 -!- sekhmet_ has joined. 
17:05:04 -!- sekhmet has quit (Read error: 104 (Connection reset by peer)). 
17:09:59 -!- sekhmet_ has changed nick to sekhmet. 
18:43:33 -!- twice11 has joined. 
18:44:05 -!- Sgeo has joined. 
18:51:20 <twice11> On the wiki, it says 0x29A is turing complete. Are there any references supporting that claim? 
18:57:49 <oerjan> it seems to contain combinator calculus as a subset, by using the sk~ commands. 
18:58:48 <twice11> I did not succeed in finding out how to create a function on the stack that increments the accumulator by to when executed (getting passed enough arguments to start running). 
19:00:18 <twice11> And I am quite lost in finding out how to do anything useful if i can't somehow save the accumulator to the stack (in form of a function). 
19:01:58 <twice11> That does not work, because (+x)y gets already executed when I try to build the function. 
19:03:18 <oerjan> use the abstraction elimination of \z. +(+xy)y 
19:05:14 <twice11> Sorry, I can't follow you on that. 
19:05:34 -!- tgwizard has quit (Remote closed the connection). 
19:06:05 <oerjan> let me use Unlambda notation. 
19:06:58 <oerjan> ``s``s`k+``s``s`k+`kx`ky`ky 
19:08:11 <twice11> I am not used to unlambda, but you apply the s combinator to (k+). I already tried that 
19:08:49 <twice11> It does not work, because (((s(k+))x)y) gets converted to (((k+)x)y) 
19:09:16 <twice11> This does not get anything, because the k combinator is too deep inside the parens to match any of the reduction rules. 
19:10:14 <twice11> My implementation of 0x29A does *not* to the step from (((k+)x)y) to ((+x)y) 
19:10:36 <twice11> I think this is according to the documentation. 
19:11:05 <oerjan> well then you mean (((k+)y)(xy) 
19:11:07 <twice11> Oops. It should do the step from (((k+)x)y) to (+x), of course... 
19:12:04 <twice11> To put it right. I meant (((s(k+)x)y) gets (((k+)y)(xy)), and this gets stuck. 
19:13:09 <twice11> You get stuck as soon as the "x" in (((sx)y)z) is anything but a k-like combinator (k,+-.,) or s, maybe applied to something. 
19:13:14 <oerjan> i see. so there is an error in the embedding of combinator calculus into 0x29a. 
19:14:09 <twice11> I admit to have overlooked in my search for a possibility of doing something useful what happens if x in (((sx)y)z) is is of the form (sx). 
19:16:50 <oerjan> right. it evaluates only the top level of the function, if you take the description literally. 
19:17:58 <oerjan> seems like a bug in the language description to me. 
19:18:45 <twice11> I think I suceeded in writing a +2 function. 
19:19:14 <twice11> (((s(sa))b)c) with a=(+), b=(+x) and c=y 
19:19:33 <twice11> [where x, y are don't care functions] 
19:20:57 <twice11> Yes, I tried it. It works. 
19:20:58 <oerjan> =sac(bc) = a(bc)(c(bc)) 
19:22:02 <oerjan> = ++r, bc = ++r, ++r, x 
19:23:07 <twice11> See http://pastebin.ca/389482. 
19:24:56 <twice11> The haskell 0x29A interpreter is at http://pastebin.ca/389491 
19:31:26 <oerjan> there seems to be no way to duplicate values on the stack. 
19:31:55 <oerjan> so a function can only be evaluated once. 
19:32:23 <twice11> Yes. This is also a problem. 
19:33:15 <twice11> But I did not yet prove whether it is impossible to create a function that runs the function and returns the function on the stack. 
19:33:22 <twice11> This would solve the problem. 
19:34:02 <oerjan> i was pondering whether you could make a pair of functions simulate a brainfuck tape. 
19:35:07 <twice11> I got lost at simulating the tape when I found out that there is no way to access anything but top-of-stack and next-to-top-of-stack. 
19:36:00 -!- twice11 has quit ("taking a break."). 
19:41:33 -!- RodgerTheGreat has joined. 
20:07:31 -!- bsmntbombdood has changed nick to xor. 
20:21:09 -!- ShadowHntr has joined. 
21:18:28 -!- twice11 has joined. 
21:18:48 <oerjan> hi, i think i solved the tape implementation 
21:19:33 <oerjan> i put a description on the wiki. 
21:20:23 <twice11> I think I also have an idea. You use two functions as stack. 
21:20:38 <twice11> One for the values before current, one for values after currents. 
21:20:51 <oerjan> that was my idea too :) 
21:21:12 <twice11> I will try to implement it on my own, just as an exercise. 
21:21:37 <twice11> But this has the problem that brainfucks + and - operations get O(N). 
21:21:53 <twice11> I don't see a way around it. 
21:22:00 <oerjan> eh, i save the _current_ cell in the register. 
21:22:28 <oerjan> maybe you mean > and < ? 
21:22:39 <twice11> Oh, sorry. Yes, of course. 
21:23:14 <oerjan> actually not O(N), but with a possible constant factor <= 256. 
21:23:33 <oerjan> so still technically O(1). 
21:23:54 <twice11> OK, I used to use 16 or 32 bit cells on brainfuck with numeric I/O 
21:24:16 <twice11> So I am used to cells containing 5-figure numbers. 
21:24:28 <oerjan> 0x29A has byte registers. 
21:25:21 <twice11> Yes :-). So it seems like emulating byte-brainfuck with ascii-code I/O is the simplest thing. 
21:26:24 <twice11> BTW, is there literature on doing binary arithmetic in bf where cells are used as bits, to get O(logN) addition. 
21:26:39 <twice11> That was a strange idea I had some year ago. 
21:27:03 <twice11> This kind of bf use seems to translate into 0x29A without too high performance penalties. 
21:27:18 <oerjan> i think i've seen it mentioned.  Try looking at boolfuck. 
21:29:50 <twice11> Yes, the translation they offer is mainly the same idea. 
21:31:05 <twice11> But the problem with boolfuck compared to my brainfuck-with-binary approach 
21:31:19 <twice11> is that I can't detect carries in boolfuck. 
21:31:46 <twice11> And of course, performance is complete gone after translation from boolfuck to brainfuck. 
21:36:01 <oerjan> maybe the broken S combinators work if you use continuation passing style. 
21:36:20 <oerjan> because that corresponds to always staying at the top expression. 
21:36:40 <twice11> The whole language seems to work only with CPS. 
21:37:05 <twice11> And I currently think about the k-style combinators (+-,.) just as 
21:37:20 <twice11> operators that get a continuation and a "start-now" flag as parameters. 
21:37:52 <twice11> I am still puzzled about how to write a +3 function, but don't tell me. I will find out on my own. 
21:38:15 <twice11> I seem to have run into the "broken S combinators" on my first attempt. 
21:38:25 <oerjan> don't look at the wiki then because i have exactly that as the example 
21:38:50 <twice11> I just plugged the +2 function into the +2 function. Probably I should have changed the other + to +2. 
21:41:09 -!- twice11 has quit ("tearing down dial-up line. back later. reading logs."). 
22:21:08 -!- twice11 has joined. 
22:21:36 <twice11> oerjan: I got the same results as you. 
22:22:15 <twice11> I use "ss+~~%~" to add one to the result of the function currently on the stack 
22:22:33 <twice11> and "k%~" to separate to functions. 
22:22:34 <oerjan> by coincidence? although i did start with that +2 function you mentioned earlier. 
22:23:11 <oerjan> well then it simply has to work :) 
22:23:22 <twice11> And I got the idea for the two-functions-make-a-tape by your comment from 11:34:02 
22:23:31 <twice11> "i was pondering whether you could make a pair of functions simulate a brainfuck tape." 
22:24:00 <twice11> I fell into the trap that i did not remember that ] does not 
22:24:15 <twice11> decrement the register, so my first attempt for the reg-to-stack loop 
22:24:42 <twice11> The second attempt showed that my 0x29A parser (a real hack) 
22:25:01 <twice11> stops parsing after the first looped. After fixing, it worked. 
22:25:36 <twice11>  run "+%~k~+%~k~+%~k~ k%~[ss+~~%~-%~k~] k~" 
22:26:00 <twice11> puts the number 3 into the register (first part), saves it into a function (second part) 
22:26:07 <twice11> and executes it (third part). 
22:26:40 <twice11> As output is destructive, I still have to develop a clone-value 
22:27:08 <twice11> function (so of course a run function with itself as continuation function) 
22:27:34 <twice11> But currently I think it should be possible using the s combinator somehow. 
22:27:35 <oerjan> btw i suggest applying to i to execute the function. 
22:28:04 <oerjan> because then i works also as the end of tape 
22:28:46 <twice11> The function applied to execute gets omitted by the k-like combinators. 
22:28:58 <twice11> I don't think it matters at all, which one I use. 
22:29:12 <oerjan> it matters if you want the tape to expand automatically. 
22:30:17 <oerjan> unless you manage to make the unlambda v combinator. 
22:32:32 <oerjan> for the output value cloning it may be simpler to make the loop build two independent functions. 
22:33:13 <twice11> You are right. Applying k to the end of tape puts k to the stack. Putting i there is better. 
22:35:17 <oerjan> it actually doesn't matter that much. 
22:35:38 <oerjan> applying to k just make you flip between k and (kk). 
22:35:40 <twice11> Building two functions in the loop works. 
22:36:43 <twice11> To build two functions, the loop looks like k%~k%~ [ss+~~%~%ss+~~%~ -%~k~] 
22:42:39 <twice11> There is a catch: one should start the function (at least the later-executed one) with i 
22:42:49 <twice11> to get completely rid of it with %~ 
22:50:01 <twice11> A working translation for bf "." is: 
22:50:06 <twice11> sk~s~ sk~s~ [ss+~~%~%ss+~~%~ -%~k~] k~.%~ %~ 
22:54:38 <oerjan> i'm not sure that last %~ is quite right. Remember that . loses its second argument. 
22:56:37 <twice11> Oops, there is a fault. The working (tested) version has 
22:57:13 <twice11> (sk~s~)~.%~k~ ~ %~ past the loop 
23:00:05 <oerjan> somehow i suspect it can be done shorter somehow with just k's than with sk~s~ 
23:02:42 <oerjan> note that a final drop can also be done with %k%~%~ 
23:06:23 <twice11> Yes. Independent of the start value. You are right. 
23:10:07 -!- graue has quit ("Leaving"). 
23:12:43 -!- graue has joined. 
23:15:31 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
23:16:45 -!- SevenInchBread has joined. 
23:17:45 <twice11> Except for ".", where I seem to have something messed up by simplification, my bf->0x29A seems to work now. 
23:18:54 <twice11> I will put it to the pastebin when it's ready. 
23:19:29 -!- graue has quit ("Leaving"). 
23:19:56 * SevenInchBread is looking at ways to encrypt information so that it can't be censored or subject to copyright law. 
23:19:59 <oerjan> some links on the wiki would be nice too 
23:20:27 <twice11> How permanent is the pastebin? Can I link to there? 
23:25:11 <SimonRC> http://www.cs.duke.edu/~rodger/baking/cs.html 
23:25:29 <SimonRC> Actually, I just got that from here, didn't I? 
23:25:32 <xor> SimonRC: old 
23:26:06 <xor> CompSci 4: Alice Programming Language" 
23:26:14 <xor> "CompSci 6: Introduction to Java" 
23:26:45 * xor screams about misuse of CS 
23:28:22 <oerjan> twice11: you could submit it to one of the maintainers of the esolangs archive. 
23:28:27 <SimonRC> they shouldn't be teaching languages 
23:28:33 <SimonRC> They should be teaching paradigms 
23:29:09 <twice11> I put the brainfuck -> 0x29A translation to the wiki. It's short. 
23:29:38 <twice11> The 0x29A interpreter needs some polishing, it's worst WFM quality. 
23:29:54 <twice11> I will put it to some webspace I own and link it from the wiki. 
23:46:06 <twice11> The translation is on the wiki now. 
00:04:43 -!- oerjan has quit ("All in a good day's play"). 
00:18:00 -!- twice11 has quit (Read error: 113 (No route to host)). 
00:26:23 -!- ShadowHntr has quit ("End of line."). 
00:48:06 -!- GreaseMonkey has joined. 
00:58:17 -!- nazgjunk has joined. 
01:29:58 -!- nazgjunk has quit (Connection reset by peer). 
01:30:17 -!- nazgjunk has joined. 
01:36:54 -!- sebbu has quit ("Leaving"). 
01:46:29 -!- nazgjunk has quit ("Leaving"). 
03:04:00 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 
03:13:17 -!- oklopol has joined. 
04:49:14 -!- xor has changed nick to bsmntbombdood. 
04:53:04 <GreaseMonkey> hey, are you gonna set your bot up to return a CTCP VERSION request? 
04:56:02 -!- GreaseBot has joined. 
05:08:58 <GreaseBot> If anyone abuses me, please kick me. 
05:33:34 -!- RodgerTheGreat has quit. 
05:35:49 -!- RodgerTheGreat has joined. 
05:36:43 -!- RodgerTheGreat has quit (Client Quit). 
05:55:36 -!- SevenInchBread has quit (No route to host). 
06:04:44 -!- anonfunc has joined. 
06:33:38 -!- Arrogant has joined. 
07:05:16 -!- GreaseBot has quit ("recompiling"). 
07:12:36 -!- Sgeo has quit ("Leaving"). 
07:15:46 -!- GreaseBot has joined. 
07:16:45 -!- ShadowHntr has joined. 
07:23:15 -!- helios24 has joined. 
07:45:51 -!- oerjan has joined. 
07:47:37 -!- nazgjunk has joined. 
07:48:22 -!- maverickbna has joined. 
07:48:43 -!- maverickbna has quit (Read error: 131 (Connection reset by peer)). 
07:51:48 -!- GreaseMonkey has changed nick to thematrixeatsyou. 
07:51:55 -!- thematrixeatsyou has changed nick to GreaseMonkey. 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:05:28 -!- ShadowHntr has quit (Connection timed out). 
08:26:22 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
08:27:03 -!- nazgjunk has joined. 
08:31:06 -!- UpTheDownstair has joined. 
08:31:12 -!- nazgjunk has quit (Read error: 131 (Connection reset by peer)). 
08:31:35 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 
08:32:03 -!- nazgjunk has joined. 
08:33:25 -!- GreaseMonkey has quit ("It was fun writing - Our own haikus in #haiku - But now it's bedtime."). 
08:33:47 -!- GreaseBot has quit ("Gnight."). 
08:52:11 -!- Arrogant has quit ("Leaving"). 
09:12:06 -!- sebbu has joined. 
09:30:19 <oklopol> i had the idea to make brainfuck addition logn by binary arithmetic too 
09:31:12 <oklopol> it's nice since you can then easily translate any assembly code into brainfuck 
09:43:05 <oklopol> hmm in python how do i check if something is an integer? 0.__class__ is wrong :\ 
09:44:06 <oklopol> a.__class__==''.__class__ is how i check for string :P 
09:44:22 <oklopol> numbers aren't objects in python then i guess 
11:44:35 <tokigun> oklopol, isinstance(0, int). 
11:45:03 <tokigun> 0.__class__ is tokenized as 0. and __class__, so you have to write as (0).__class__. 
11:46:55 <oklopol> well, indeed, quite obvious 
11:47:17 <oklopol> maybe i subconsciously wanted to believe in such inconsistency because i don't like python 
11:47:41 <oklopol> well, dunno if that's be inconsistency, it'd suck though 
12:13:04 -!- jix__ has joined. 
12:14:32 -!- jix__ has changed nick to jix. 
12:22:10 -!- tgwizard has joined. 
12:24:37 -!- jix__ has joined. 
12:24:45 -!- jix has quit (Nick collision from services.). 
12:24:57 -!- jix__ has changed nick to jix. 
16:10:44 -!- SevenInchBread has joined. 
16:11:26 -!- Sgeo has joined. 
16:36:20 -!- crathman has joined. 
16:43:07 -!- crathman has quit (Read error: 104 (Connection reset by peer)). 
16:43:22 -!- crathman_ has joined. 
16:43:26 -!- crathman_ has changed nick to crathman. 
16:44:15 -!- crathman has quit (Remote closed the connection). 
16:57:38 -!- oerjan has quit ("leaving"). 
16:57:41 -!- graue has joined. 
17:08:54 -!- UpTheDownstair has joined. 
17:09:47 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
17:52:09 -!- Arrogant has joined. 
17:54:49 -!- nazgjunk has joined. 
17:55:16 <SevenInchBread> A PROGRAMMING LANGUAGE CONSISTING ENTIRELY OF HEX PHRASES. 
18:11:33 -!- UpTheDownstair has quit (Connection timed out). 
19:01:36 -!- RodgerTheGreat has joined. 
19:44:56 -!- twice11 has joined. 
19:46:19 -!- twice11 has quit (Client Quit). 
19:55:06 -!- twice11 has joined. 
19:55:58 <twice11> Announce: I wrote a 0x29A implementation, so this language is no longer unimplemented. 
19:56:15 <twice11> It is currently online at http://userpage.fu-berlin.de/~mkarcher/0x29A 
19:56:54 <twice11> I would like to see it included in the esoteric file archives, if appropriate. 
19:57:29 <twice11> Currently, it is BSD licensed, but I am open to other licenses if needed. 
19:58:31 <twice11> Also the brainfuck-to-0x29A converter discussed yesterday is online. 
19:59:00 -!- helios24 has quit ("Leaving"). 
19:59:07 <twice11> It has been tested with some brainfuck examples from Daniel Cristofani. 
19:59:17 <twice11> It works, except for the terrible performance. 
20:06:17 <RodgerTheGreat> I would expect an optimizing BF->0x29A translator to be exceedingly nontrivial 
20:10:11 <twice11> http://esolangs.org/wiki works here. 
20:17:26 -!- twice11 has quit ("Leaving"). 
21:10:32 -!- nazgjunk has quit ("Leaving"). 
21:32:56 -!- Arrogant has quit (Read error: 113 (No route to host)). 
21:42:00 -!- AfterDeath has left (?). 
21:56:19 -!- nazgjunk has joined. 
21:59:41 -!- graue has quit ("Leaving"). 
22:08:19 -!- bsmntbombdood has changed nick to xor. 
22:19:54 -!- nazgjunk has quit ("Leaving"). 
22:33:56 -!- xor has changed nick to bsmntbombdood. 
22:39:38 -!- sebbu has quit ("@+"). 
22:41:13 <bsmntbombdood> ~exec self.ev_dc = lambda x: popen2.popen2("dc -e '%s'" % x)[0].read() 
22:42:24 <bsmntbombdood> ~exec self.ev_dc = lambda x: popen2.popen2("/usr/bin/dc -e '%s'" % x)[0].read() 
22:43:14 <bsmntbombdood> ~exec sys.stdout( popen2.popen2("/usr/bin/dc -e '%s'" % "1p")[0].read() ) 
22:44:12 <bsmntbombdood> ~exec sys.stdout( popen2.popen2("/usr/bin/dc -e '%s'" % "1p") ) 
22:44:12 <bsmnt_bot> (<open file '<fdopen>', mode 'r' at 0xb7cacb18>, <open file '<fdopen>', mode 'w' at 0xb7cac140>) 
22:44:21 <bsmntbombdood> ~exec sys.stdout( popen2.popen2("/usr/bin/dc -e '%s'" % "1p")[0] ) 
22:44:21 <bsmnt_bot> <open file '<fdopen>', mode 'r' at 0xb7cac140> 
22:44:26 <bsmntbombdood> ~exec sys.stdout( popen2.popen2("/usr/bin/dc -e '%s'" % "1p")[0].read ) 
22:44:27 <bsmnt_bot> <built-in method read of file object at 0xb7cacb18> 
22:44:29 -!- nazgjunk has joined. 
22:44:42 <bsmntbombdood> ~exec self.x = popen2.popen2("/usr/bin/dc -e '%s'" % "1p")[0].read 
22:44:53 <bsmnt_bot> NameError: name 'x' is not defined 
22:44:56 <bsmnt_bot> <built-in method read of file object at 0xb7cac140> 
22:47:20 <bsmntbombdood> ~exec self.x = popen2.popen2("/usr/bin/dc -e '1p')[0].read() 
22:47:20 <bsmnt_bot> SyntaxError: EOL while scanning single-quoted string 
22:47:25 <bsmntbombdood> ~exec self.x = popen2.popen2("/usr/bin/dc -e '1p'")[0].read() 
22:48:14 <bsmntbombdood> ~exec os.system("/usr/bin/dc -e '[hello, world]p'") 
22:49:02 <bsmntbombdood> ~exec sys.stdout(os.system("/usr/bin/dc -e '[hello, world]p'")) 
22:50:03 <bsmntbombdood> ~exec self.x = popen2.popen2("/usr/bin/THIS_COMMAND_IS_NOT_THERE -e '1p'")[0].read() 
22:51:41 <bsmntbombdood> ~exec self.x = popen2.popen2(["/usr/bin/dc", "-e", "1p"])[0].read() 
22:51:50 <bsmntbombdood> ~exec self.x = popen2.popen2(["/usr/bin/THIS_COMMAND", "-e", "1p"])[0].read() 
22:53:27 <bsmntbombdood> ~exec self.x = os.popen("/usr/bin/dc -e '1p'", "r") 
22:53:39 <bsmnt_bot> <open file '/usr/bin/dc -e '1p'', mode 'r' at 0xb7cacc38> 
23:03:06 -!- oerjan has joined. 
23:10:59 -!- ShadowHntr has joined. 
23:17:29 -!- twice11 has joined. 
23:34:27 -!- twice11 has quit ("Leaving"). 
23:46:02 -!- calamari has joined. 
23:48:52 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
23:52:34 -!- ShadowHntr has quit (Read error: 104 (Connection reset by peer)). 
00:07:11 -!- nazgjunk has quit ("Leaving"). 
00:16:59 -!- bsmntbombdood has changed nick to Zorpon. 
00:32:59 <Zorpon> I should learn smalltalk 
00:38:11 -!- Zorpon has changed nick to Zorpon_. 
00:38:53 -!- Zorpon_ has changed nick to Zorpon. 
00:43:43 <SimonRC> It's a *real* OO language, unlike Java 
01:02:32 <Zorpon> what's with the : on the end of messages 
01:03:36 <oerjan> it distinguishes them from variables 
01:03:42 <oerjan> if i remember correctly. 
01:15:26 <Zorpon> I think it has something to do with arguments 
01:16:04 <oerjan> well, each : part is followed by an argument, if that's what you mean. 
01:18:38 <lament> i love smalltalk syntx 
01:19:44 <SimonRC> I like the fuck-around-with-ability of it 
01:20:09 <SimonRC> you can re-define classes and all instances will immediately start using the new version 
01:20:31 <Zorpon> 1 to: 20 do: [:x| x printNl ] ! 
01:21:17 <SimonRC> Haskell:  mapM_ print [1..20] 
01:21:25 <SimonRC> That's about as good as you can get 
01:21:42 <SimonRC> Haskell: also the world's best imperative language. 
01:22:25 <SimonRC> I don't see any others with such elegant rules for handling first-class code blocks 
01:22:54 <SimonRC> especially the issue of creating new variables versus using existing ones. 
01:27:47 <Zorpon> This tutorial isn't too good 
01:28:09 <SimonRC> I liked the Dolphin Smalltalk tutorial. 
01:36:43 <EgoBot> 1 ais523: daemon ul bf 
01:36:45 <EgoBot> 2 ais523: daemon deadfish funge93 
01:47:21 <Zorpon> interesting at the use of lambda for if 
01:55:46 -!- tgwizard has quit (Remote closed the connection). 
02:04:50 -!- ShadowHntr has joined. 
02:32:11 -!- calamari has quit ("Leaving"). 
02:56:04 -!- Sukoshi has joined. 
02:56:18 <Sukoshi> (I'm sorry, I'm in a big hurry.) 
03:09:52 -!- Sukoshi has quit ("ERC Version 5.1 (CVS) $Revision: 1.796 $ (IRC client for Emacs)"). 
03:13:25 -!- calamari has joined. 
03:26:35 <RodgerTheGreat> haha! Nonlogic has absorbed yet another denizen of #Esoteric! 
03:37:12 <oerjan> Someone could make a movie about an evil Internet entity which absorbs people. 
03:37:22 <oerjan> They could call it The Blog. 
03:43:09 -!- oerjan has quit ("Good night"). 
03:50:19 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 
04:11:31 -!- RodgerTheGreat has quit. 
04:17:44 -!- ShadowHntr has quit ("End of line."). 
04:58:46 -!- Zorpon has changed nick to bsmntbombdood. 
06:00:42 -!- ShadowHntr has joined. 
06:08:30 -!- Arrogant has joined. 
06:11:58 -!- calamari has quit ("Leaving"). 
06:14:37 -!- GreaseMonkey has joined. 
06:29:12 -!- ShadowHntr has quit ("End of line."). 
07:10:58 -!- anonfunc_ has joined. 
07:11:22 -!- anonfunc has quit (Read error: 104 (Connection reset by peer)). 
07:13:37 -!- anonfunc_ has quit (Read error: 104 (Connection reset by peer)). 
07:15:04 -!- anonfunc has joined. 
07:18:35 -!- anonfunc has quit (Read error: 104 (Connection reset by peer)). 
07:19:34 -!- anonfunc_ has joined. 
07:20:08 -!- anonfunc_ has quit (Remote closed the connection). 
07:59:59 -!- clog has quit (ended). 
08:04:58 -!- clog has joined. 
08:04:58 -!- Arrogant has quit ("Leaving"). 
08:10:25 -!- Sgeo has quit ("Leaving"). 
09:19:31 -!- Sukoshi has joined. 
09:27:25 -!- GreaseMonkey has quit (Remote closed the connection). 
09:28:44 -!- Sukoshi has quit ("ERC Version 5.1 (CVS) $Revision: 1.796 $ (IRC client for Emacs)"). 
09:31:00 -!- jix__ has joined. 
09:31:58 -!- jix__ has changed nick to jix. 
09:44:58 -!- oerjan has joined. 
12:06:35 -!- oerjan has quit ("leaving"). 
12:23:03 -!- ais523 has joined. 
12:32:52 -!- jix__ has joined. 
12:33:16 * ais523 has written one of the slowest 99 bottles of beer programs in history 
12:33:45 <ais523> because Forte is an order of n slower than every other language 
12:33:56 <ais523> so bottles-of-beer programs are O(n^2) 
12:34:21 <ais523> and on top of that, it's running on an inefficient implementation 
12:43:01 -!- jix has quit (Read error: 110 (Connection timed out)). 
12:49:10 <ais523> I was wondering whether C was, in fact, Turing-complete 
12:49:29 <ais523> traditionally it's been said to be bounded-storage because sizeof(void*) has to be finite 
12:49:54 <ais523> but I think it's a push-down automaton, due to the possibility of using register variables (which don't have to have addresses) and recursion 
13:01:34 <ais523> ~exec eval("for n in [1,2,3,4]:\n sys.stdout(n)\n") 
13:02:36 <ais523> ~exec eval("for n in count(4):\n sys.stdout(n)\n") 
13:02:47 <ais523> ~exec eval("sys.stdout(4)") 
13:02:54 <ais523> ~exec eval("sys.stdout(4)\n") 
13:03:07 <ais523> ~exec eval("sys.stdout(n)\n") 
13:03:08 <bsmnt_bot> NameError: name 'n' is not defined 
13:03:23 <ais523> ~exec eval("for n in (count(4)):\n  sys.stdout(n)\n") 
13:04:49 <ais523> ~exec eval("for n in [1, 2, 3]:\n  sys.stdout(n)\n") 
13:06:06 <ais523> ~exec eval("for n in [1, 2, 3]:\n  sys.stdout(n)\nsys.stdout('Finished.')\n") 
13:06:43 <ais523> ~exec eval("sys.stdout(1)\nsys.stdout(2)") 
13:06:59 <ais523> so eval seems not to accept multi-line strings 
13:07:12 <ais523> ~exec eval("sys.stdout(1)\rsys.stdout(2)") 
13:07:26 <ais523> ~exec sys.stdout(1)\nsys.stdout(2) 
13:07:32 <ais523> ~exec  sys.stdout(1)\n sys.stdout(2) 
13:09:35 <ais523> ~exec eval('''sys.stdout(1)\nsys.stdout(2)''') 
13:09:46 <ais523> ~exec sys.stdout("1\n2") 
13:09:53 <ais523> ~exec sys.stdout("1\r2") 
13:10:02 <ais523> ~exec sys.stdout("1\t2") 
13:11:10 <ais523> ~exec sys.stdout("for n in [1, 2, 3]: sys.stdout(n)") 
13:11:18 <ais523> ~exec eval("for n in [1, 2, 3]: sys.stdout(n)") 
13:11:24 <ais523> ~exec exec("for n in [1, 2, 3]: sys.stdout(n)") 
13:11:39 <ais523> ~exec sys.stdout("for n in [1, 2, 3]:\n sys.stdout(n)") 
13:11:52 <ais523> ~exec exec("for n in [1, 2, 3]:\n sys.stdout(n)") 
13:13:14 <ais523> ~exec exec("self.t='Hello, world!'\nsys.stdout(t)") 
13:13:15 <bsmnt_bot> NameError: name 't' is not defined 
13:13:20 <ais523> ~exec exec("self.t='Hello, world!'\nsys.stdout(self.t)") 
13:13:30 <ais523> ~exec exec("self.t='Hello, world!'\nsys.stdout(self.t.length)") 
13:13:30 <bsmnt_bot> AttributeError: 'str' object has no attribute 'length' 
13:13:39 <ais523> ~exec exec("self.t='Hello, world!'\nsys.stdout(self.t.size)") 
13:13:39 <bsmnt_bot> AttributeError: 'str' object has no attribute 'size' 
13:14:03 <ais523> ~exec exec("self.t='Hello, world!'\nsys.stdout(self.t[0])") 
13:14:17 <ais523> ~exec exec("self.t='Hello, world!'\nsys.stdout(self.t[13])") 
13:14:17 <bsmnt_bot> IndexError: string index out of range 
13:14:27 <SimonRC> ais523: actually, I think you'll find that the program could be re-run form the beginning with a bigger word size every time it ran out of memory, if you wanted. 
13:14:52 <ais523> I'm just trying to use bsmnt_bot to learn Python 
13:15:22 <SimonRC> "< ais523> I was wondering whether C was, in fact, Turing-complete" 
13:15:22 <ais523> SimonRC: wait a moment, what context was your last comment in? 
13:15:56 <ais523> I don't think an implementation's allowed to dynamically change sizeof(void*) 
13:16:10 <ais523> although maybe that isn't against the rules if the program never asks what it is 
13:16:34 <SimonRC> I mean: if you run out of address space, re-compile for a bigger architecture. 
13:16:59 <SimonRC> assuming the usual strict-function-style TC. 
13:17:02 <ais523> but you can do that in MISC, and it isn't Turing-complete 
13:17:35 <SimonRC> yeah, but you now have no reason for C not to be Turing-complete 
13:18:38 <ais523> ~exec exec("self.n=4\nwhile self.n>0:\n sys.stdout(n)\n n=n-1\nsys.stdout('Finished!')") 
13:18:39 <bsmnt_bot> NameError: name 'n' is not defined 
13:18:48 <ais523> ~exec exec("self.n=4\nwhile self.n>0:\n sys.stdout(self.n)\n self.n=self.n-1\nsys.stdout('Finished!')") 
13:19:02 <ais523> I don't see why that makes C TC 
13:19:24 <ais523> because recompiling for a bigger architecture and rerunning isn't something you're necessarily allowed to do from within the language 
13:19:38 <ais523> unless you're suggesting something like #pragma make_me_Turing_Complete 
13:20:29 <ais523> ~exec exec("self.tape=0\nself.tape[10]=self.tape[10]+5\nsys.stdout(self.tape[10])") 
13:20:40 <ais523> ~exec exec("self.tape=[]\nself.tape[10]=self.tape[10]+5\nsys.stdout(self.tape[10])") 
13:20:40 <bsmnt_bot> IndexError: list index out of range 
13:20:56 <ais523> ~exec exec("self.tape=[0]*30000\nself.tape[10]=self.tape[10]+5\nsys.stdout(self.tape[10])") 
13:23:24 <SimonRC> ais523: Ok, the language is Turing-complete, but no implementation can be. 
13:23:42 <ais523> ~exec exec("self.t=[0]*30000\nself.p='+++++.!'\nself.i=0\nself.l=0\nwhile self.p[self.i]!='!':\n if self.p[self.i]=='+': self.t[self.l]++\n if self.p[self.i]=='.': sys.stdout(self.t[self.l])") 
13:23:55 <SimonRC> You could port C to the Turing machine will a little work, then it really *could* be TC. 
13:24:08 <ais523> no, because even the Turing machine couldn't access an infinite store of memory 
13:24:22 <ais523> because the sizeof operator exists, there has to be a hard limit on every data type 
13:25:11 <ais523> ~exec exec("self.t=[0]*30000\nself.p='+++++.!'\nself.i=0\nself.l=0\nwhile self.p[self.i]!='!':\n if self.p[self.i]=='+':\n  self.t[self.l]++\n if self.p[self.i]=='.':\n  sys.stdout(self.t[self.l])\n self.i=self.i+1") 
13:25:36 <ais523> ~exec sys.stdout(1==2) 
13:25:39 <ais523> ~exec sys.stdout(1!=2) 
13:26:11 <ais523> At least, what I've been arguing is what I've come to believe the conventional wisdom is 
13:26:32 <SimonRC> so, a subset of C is Turing-complete, but the whole of C isn't. 
13:26:45 <ais523> I think it's at least a PDA, because register variables need not have addresses and you can get an infinite number of them using recursion 
13:27:25 <ais523> ~exec exec("self.t=[0]*30000\nself.p='+++++.!'\nself.i=0\nself.l=0\nwhile self.p[self.i]!='!':\n if self.p[self.i]=='+':\n  self.t[self.l]=self.t[self.l]+1\n if self.p[self.i]=='.':\n  sys.stdout(self.t[self.l])\n self.i=self.i+1") 
13:28:27 <ais523> ~exec exec("self.t=[0]*30000\nself.p='+++++.!'\nself.i=0\nself.l=0\nwhile self.p[self.i]!='!':\n if self.p[self.i]=='+':\n  self.t[self.l]=self.t[self.l]+1\n if self.p[self.i]=='-':\n  self.t[self.l]=self.t[self.l]-1\n if self.p[self.i]=='.':\n  sys.stdout(self.t[self.l])\n self.i=self.i+1") 
13:30:00 <ais523> ~exec exec("self.t=[0]*30000\nself.p='++>--<+++.>.!'\nself.i=0\nself.l=0\nwhile self.p[self.i]!='!':\n if self.p[self.i]=='+':\n  self.t[self.l]=self.t[self.l]+1\n if self.p[self.i]=='-':\n  self.t[self.l]=self.t[self.l]-1\n if self.p[self.i]=='<':\n  self.l=self.l-1\n if self.p[self.i]=='>':\n  self.l=self.l+1\n if self.p[self.i]=='.':\n  sys.stdout(self.t[self.l])\n self.i=self.i+1") 
13:33:53 <ais523> ~exec exec("self.bf=lambda(p): t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='+':\n   t[l]=t[l]+1\n  if p[i]=='-':\n   t[l]=t[l]-1\n  if p[i]=='<':\n   l=l-1\n  if p[i]=='>':\n   l=l+1\n  if p[i]=='.':\n   sys.stdout(t[l])\n  i=i+1") 
13:34:27 <ais523> ~exec exec("self.bf=lambda(p):\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='+':\n   t[l]=t[l]+1\n  if p[i]=='-':\n   t[l]=t[l]-1\n  if p[i]=='<':\n   l=l-1\n  if p[i]=='>':\n   l=l+1\n  if p[i]=='.':\n   sys.stdout(t[l])\n  i=i+1") 
13:34:47 <ais523> ~exec exec("self.test=lambda(x):\n sys.stdout(x)") 
13:34:57 <ais523> ~exec exec("self.test=def test(x):\n sys.stdout(x)") 
13:35:06 <ais523> ~exec exec("def test(x):\n sys.stdout(x)") 
13:35:11 <ais523> ~exec self.test("Hello, world") 
13:35:14 <bsmnt_bot> AttributeError: IRCbot instance has no attribute 'test' 
13:35:21 <ais523> ~exec test("Hello, world") 
13:35:26 <bsmnt_bot> NameError: name 'test' is not defined 
13:35:46 <ais523> ~exec exec("def test(x):\n sys.stdout(x)\nself.test=test") 
13:35:52 <ais523> ~exec self.test("Hello, world") 
13:36:21 <ais523> ~exec exec("def bf(p):\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='+':\n   t[l]=t[l]+1\n  if p[i]=='-':\n   t[l]=t[l]-1\n  if p[i]=='<':\n   l=l-1\n  if p[i]=='>':\n   l=l+1\n  if p[i]=='.':\n   sys.stdout(t[l])\n  i=i+1\nself.bf=bf") 
13:36:37 <ais523> ~exec self.bf("++>+++.<.!") 
13:36:56 <ais523> ~exec exec("def bf(p):\n p=p+"!"\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='+':\n   t[l]=t[l]+1\n  if p[i]=='-':\n   t[l]=t[l]-1\n  if p[i]=='<':\n   l=l-1\n  if p[i]=='>':\n   l=l+1\n  if p[i]=='.':\n   sys.stdout(t[l])\n  i=i+1\nself.bf=bf") 
13:37:23 <ais523> ~exec exec("def bf(p):\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='+':\n   t[l]=t[l]+1\n  if p[i]=='-':\n   t[l]=t[l]-1\n  if p[i]=='<':\n   l=l-1\n  if p[i]=='>':\n   l=l+1\n  if p[i]=='.':\n   sys.stdout(t[l])\n  i=i+1\nself.bf=bf") 
13:37:37 <ais523> ~exec self.bf("++++>----<.>.<.") 
13:38:55 <ais523> ~exec sys.stdout(true or false) 
13:38:55 <bsmnt_bot> NameError: name 'true' is not defined 
13:39:02 <ais523> ~exec sys.stdout(True or False) 
13:41:39 <ais523> ~exec exec("def bf(p):\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='[' and t[l]==0:\n   c=1\n   while c>0:\n    i=i+1\n    if p[i]=='[': c=c+1\n    if p[i]==']': c=c-1\n  if p[i]==']' and t[l]!=0:\n   c=1\n   while c>0:\n    i=i-1\n    if p[i]==']': c=c+1\n    if p[i]=='[': c=c-1\n  if p[i]=='+':\n   t[l]=t[l]+1\n  if p[i]=='-':\n   t[l]=t[l]-1\n  if p[i]=='<':\n   l=l-1\n  if p[i]=='>':\n   l=l+1\n  if p[i]=='.':\n   sy 
13:41:40 <bsmnt_bot> SyntaxError: EOL while scanning single-quoted string 
13:42:34 <ais523> ~exec exec("def bf(p):\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='\[' and t[l]==0:\n   c=1\n   while c>0:\n    i=i+1\n    if p[i]=='\[': c=c+1\n    if p[i]=='\]': c=c-1\n  if p[i]=='\]' and t[l]!=0:\n   c=1\n   while c>0:\n    i=i-1\n    if p[i]=='\]': c=c+1\n    if p[i]=='\[': c=c-1\n  if p[i]=='+':\n   t[l]=t[l]+1\n  if p[i]=='-':\n   t[l]=t[l]-1\n  if p[i]=='<':\n   l=l-1\n  if p[i]=='>':\n   l=l+1\n  if p[i]=='.':\ 
13:42:34 <bsmnt_bot> SyntaxError: EOL while scanning single-quoted string 
13:43:47 <ais523> ~exec exec("""def bf(p):\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='[' and t[l]==0:\n   c=1\n   while c>0:\n    i=i+1\n    if p[i]=='[': c=c+1\n    if p[i]==']': c=c-1\n  if p[i]==']' and t[l]!=0:\n   c=1\n   while c>0:\n    i=i-1\n    if p[i]==']': c=c+1\n    if p[i]=='[': c=c-1\n  if p[i]=='+':\n   t[l]=t[l]+1\n  if p[i]=='-':\n   t[l]=t[l]-1\n  if p[i]=='<':\n   l=l-1\n  if p[i]=='>':\n   l=l+1\n  if p[i]=='.':\n    
13:43:48 <bsmnt_bot> SyntaxError: EOF while scanning triple-quoted string 
13:45:20 <ais523> ~exec exec("def bf(p):\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='[' and t[l]==0:\n   c=1\n   while c>0:\n    i=i+1\n    if p[i]=='[': c=c+1\n    if p[i]==']': c=c-1\n  if p[i]==']' and t[l]!=0:\n   c=1\n   while c>0:\n    i=i-1\n    if p[i]==']': c=c+1\n    if p[i]=='[': c=c-1\n  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': sys.stdout(t[l])\n  i= 
13:45:20 <bsmnt_bot> SyntaxError: EOL while scanning single-quoted string 
13:45:56 <ais523> I seem to have exceeded some sort of maximum input length for bsmnt_bot 
13:46:33 <ais523> ~exec self.bf1="def bf(p):\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='[' and t[l]==0:\n   c=1\n   while c>0:\n    i=i+1\n    if p[i]=='[': c=c+1\n    if p[i]==']': c=c-1\n  if p[i]==']' and t[l]!=0:\n   c=1\n   while c>0:\n    i=i-1\n    if p[i]==']': c=c+1\n    if p[i]=='[': c=c-1\n" 
13:46:40 <ais523> ~exec self.bf2="  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': sys.stdout(t[l])\n  i=i+1\nself.bf=bf" 
13:46:51 <ais523> ~exec exec(self.bf1+self.bf2) 
13:47:14 <ais523> ~exec self.bf("+++[->++<]>.") 
13:47:30 <ais523> !bf_txtgen Hello, world! 
13:48:16 <EgoBot> 121 ++++++++++++++[>+++++>+++++++>+++><<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+. [609] 
13:49:39 <ais523> ~exec self.bf("++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.") 
13:54:43 <ais523> ~exec self.bf2="  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': sys.stdout(unichr(t[l]))\n  i=i+1\nself.bf=bf" 
13:54:51 <ais523> ~exec exec(self.bf1+self.bf2) 
13:55:02 <ais523> ~exec self.bf("++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.") 
13:55:55 <ais523> ~exec self.bf1="def bf(p):\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='[' and t[l]==0:\n   c=1\n   while c>0:\n    i=i+1\n    if p[i]=='[': c=c+1\n    if p[i]==']': c=c-1\n  if p[i]==']' and t[l]!=0:\n   c=1\n   while c>0:\n    i=i-1\n    if p[i]==']': c=c+1\n    if p[i]=='[': c=c-1\n" 
13:56:05 <ais523> ~exec self.bf2="  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': o=o+unichr(t[l])\n  i=i+1\nself.bf=bf" 
13:56:13 <ais523> ~exec exec(self.bf1+self.bf2) 
13:56:17 <ais523> ~exec self.bf("++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.") 
13:56:30 <ais523> ~exec self.bf2="  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': o=o+unichr(t[l])\n  i=i+1\nself.bf=bf\nsys.stdout(o)" 
13:56:33 <ais523> ~exec exec(self.bf1+self.bf2) 
13:56:33 <bsmnt_bot> NameError: name 'o' is not defined 
13:56:42 <ais523> ~exec self.bf2="  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': o=o+unichr(t[l])\n  i=i+1\nself.bf=bf\n sys.stdout(o)" 
13:56:47 <ais523> ~exec exec(self.bf1+self.bf2) 
13:57:34 <ais523> ~exec self.bf2="  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': o=o+unichr(t[l])\n  i=i+1\n sys.stdout(o)\nself.bf=bf" 
13:57:37 <ais523> ~exec exec(self.bf1+self.bf2) 
13:57:43 <ais523> ~exec self.bf("++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.") 
14:02:24 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~bf(.*)", lambda x,y: self.bf(y.group(2))") 
14:02:25 <bsmnt_bot> SyntaxError: EOL while scanning single-quoted string 
14:02:30 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~bf(.*)", lambda x,y: self.bf(y.group(2))) 
14:02:45 <ais523> ~bf ++++++[->++++++<]. 
14:02:45 -!- bsmnt_bot has quit (Remote closed the connection). 
14:02:50 -!- bsmnt_bot has joined. 
14:04:09 <ais523> ~exec self.bf1="def bf(p):\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='[' and t[l]==0:\n   c=1\n   while c>0:\n    i=i+1\n    if p[i]=='[': c=c+1\n    if p[i]==']': c=c-1\n  if p[i]==']' and t[l]!=0:\n   c=1\n   while c>0:\n    i=i-1\n    if p[i]==']': c=c+1\n    if p[i]=='[': c=c-1\n" 
14:04:14 <ais523> ~exec self.bf2="  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': o=o+unichr(t[l])\n  i=i+1\n sys.stdout(o)\nself.bf=bf" 
14:04:24 <ais523> ~exec exec(self.bf1+self.bf2) 
14:04:39 <ais523> ~exec self.bf("+++++[->+++++<]>.") 
14:04:47 <ais523> ~exec self.bf("++++++[->++++++<]>.") 
14:05:06 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~bf(.*)", lambda x,y: self.bf(y.group(2))) 
14:05:17 <ais523> ~bf ++++++[->++++++<]>. 
14:05:17 -!- bsmnt_bot has quit (Remote closed the connection). 
14:05:20 -!- bsmnt_bot has joined. 
14:05:26 <ais523> ~bf ++++++[->++++++<]>. 
14:05:33 <ais523> ~exec self.bf1="def bf(p):\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='[' and t[l]==0:\n   c=1\n   while c>0:\n    i=i+1\n    if p[i]=='[': c=c+1\n    if p[i]==']': c=c-1\n  if p[i]==']' and t[l]!=0:\n   c=1\n   while c>0:\n    i=i-1\n    if p[i]==']': c=c+1\n    if p[i]=='[': c=c-1\n" 
14:05:35 <ais523> ~exec self.bf2="  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': o=o+unichr(t[l])\n  i=i+1\n sys.stdout(o)\nself.bf=bf" 
14:05:46 <ais523> ~exec exec(self.bf1+self.bf2) 
14:05:59 <ais523> ~exec self.bf(" ++++++[->++++++<]>.") 
14:06:22 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~cat(.*)", lambda x,y: sys.stdout(y.group(2))) 
14:06:39 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~catv(.*)", lambda x,y: sys.stdout(y.group(2))) 
14:06:43 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~cat (.*)", lambda x,y: sys.stdout(y.group(2))) 
14:06:57 <ais523> ~exec self.pop_raw_regex_queue() 
14:06:57 <bsmnt_bot> AttributeError: IRCbot instance has no attribute 'pop_raw_regex_queue' 
14:06:58 <ais523> ~exec self.pop_raw_regex_queue() 
14:07:00 <bsmnt_bot> AttributeError: IRCbot instance has no attribute 'pop_raw_regex_queue' 
14:07:24 <ais523> ~exec self.raw_regex_queue().pop() 
14:07:24 <bsmnt_bot> TypeError: 'list' object is not callable 
14:07:28 <ais523> ~exec self.raw_regex_queue.pop() 
14:07:31 <ais523> ~exec self.raw_regex_queue.pop() 
14:07:32 <ais523> ~exec self.raw_regex_queue.pop() 
14:07:37 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~cat (.*)", lambda x,y: sys.stdout(y.group(2))) 
14:08:10 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~catrepr (.*)", lambda x,y: sys.stdout(repr(y.group(2)))) 
14:08:15 <ais523> ~catrepr Hello, world! 
14:08:48 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~bf (.*)", lambda x,y: self.bf(y.group(2))) 
14:09:02 <ais523> ~bf ++++++[>++++++<-]>. 
14:09:02 -!- bsmnt_bot has quit (Remote closed the connection). 
14:09:05 -!- bsmnt_bot has joined. 
14:09:19 <ais523> ~exec self.bf1="def bf(p):\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='[' and t[l]==0:\n   c=1\n   while c>0:\n    i=i+1\n    if p[i]=='[': c=c+1\n    if p[i]==']': c=c-1\n  if p[i]==']' and t[l]!=0:\n   c=1\n   while c>0:\n    i=i-1\n    if p[i]==']': c=c+1\n    if p[i]=='[': c=c-1\n" 
14:09:25 <ais523> ~exec self.bf2="  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': o=o+unichr(t[l])\n  i=i+1\n sys.stdout(o)\nself.bf=bf" 
14:09:31 <ais523> ~exec exec(self.bf1+self.bf2) 
14:09:56 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~catrepr (.*)", lambda x,y: sys.stdout(repr(y.group(2)))) 
14:10:04 <ais523> ~catrepr ++++++[>++++++<-]>. 
14:10:17 <SimonRC> gah!  get a loca python interpreter! 
14:10:28 <SimonRC> There are ones for windows too, you know. 
14:10:35 <ais523> Sorry! I was trying to get bsmnt_bot to do Brainfuck 
14:10:48 <ais523> it works, but I can't get it to respond to commands of the form ~bf 
14:11:08 <ais523> ~exec self.bf("++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.") 
14:11:12 <SimonRC> Sorry, I thought you were still learning python. 
14:11:28 <ais523> Like this? It wouldn't be very good 
14:13:48 <ais523> bsmntbombdood: I've got bsmnt_bot to do Brainfuck, but I can't get it to work properly on the raw regex queue (for some reason, it just quits whenever I try) 
14:16:18 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~bf (.*)", lambda x,y: sys.stdout("!ul (~exec self.bf("+y.group(2)+"))S")) 
14:16:28 <ais523> ~bf ++++++[>+++++++<-]>. 
14:16:28 <bsmnt_bot> !ul (~exec self.bf(++++++[>+++++++<-]>.))S 
14:16:32 <EgoBot> ~exec self.bf(++++++[>+++++++<-]>.) 
14:16:46 <ais523> ~exec self.raw_regex_queue.pop() 
14:17:01 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~bf (.*)", lambda x,y: sys.stdout("!ul (~exec self.bf(\'\'\'"+y.group(2)+"\'\'\'))S")) 
14:17:06 <ais523> ~bf ++++++[>+++++++<-]>. 
14:17:06 <bsmnt_bot> !ul (~exec self.bf('''++++++[>+++++++<-]>.'''))S 
14:17:10 <EgoBot> ~exec self.bf('''++++++[>+++++++<-]>.''') 
14:17:21 <ais523> There's always a way.... 
14:17:41 <ais523> ~bf ++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+. 
14:17:42 <bsmnt_bot> !ul (~exec self.bf('''++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.'''))S 
14:17:46 <EgoBot> ~exec self.bf('''++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.''') 
14:20:35 <ais523> You know you've spent too much time programming when, like I just did, you try to save a directory after renaming a file 
14:21:48 <ais523> ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='[' and t[l]==0:\n   c=1\n   while c>0:\n    i=i+1\n    if p[i]=='[': c=c+1\n    if p[i]==']': c=c-1\n  if p[i]==']' and t[l]!=0:\n   c=1\n   while c>0:\n    i=i-1\n    if p[i]==']': c=c+1\n    if p[i]=='[': c=c-1\n" 
14:23:07 <ais523> ~exec self.bf4="  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': o=o+unichr(t[l])\n  i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf (.*)',bfarg)" 
14:23:13 <ais523> ~exec self.raw_regex_queue.pop() 
14:23:23 <ais523> ~exec exec(self.bf3+self.bf4) 
14:23:34 <ais523> ~bf ++++++[->++++++<]>. 
14:25:20 <ais523> ~bf ++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+. 
14:33:14 <ais523> ~exec sys.stdout("Hello, world!"[1:]) 
14:35:26 <ais523> ~exec self.bf4="  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': o=o+unichr(t[l])\n  if p[i]==',':\n   t[l]=ord(y.group(4)[0])\n   y.group(4)=y.group(4)[1:]\n  i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf (.*)(!(.*))?',bfarg)" 
14:35:39 <ais523> ~exec self.raw_regex_queue.pop() 
14:35:42 <ais523> ~exec exec(self.bf3+self.bf4) 
14:35:42 <bsmnt_bot> SyntaxError: can't assign to function call (<string>, line 28) 
14:36:03 <ais523> ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(4)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='[' and t[l]==0:\n   c=1\n   while c>0:\n    i=i+1\n    if p[i]=='[': c=c+1\n    if p[i]==']': c=c-1\n  if p[i]==']' and t[l]!=0:\n   c=1\n   while c>0:\n    i=i-1\n    if p[i]==']': c=c+1\n    if p[i]=='[': c=c-1\n" 
14:36:30 <ais523> ~exec self.bf4="  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': o=o+unichr(t[l])\n  if p[i]==',':\n   t[l]=ord(a[0])\n   a=a[1:]\n  i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf (.*)(!(.*))?',bfarg)" 
14:36:34 <ais523> ~exec exec(self.bf3+self.bf4) 
14:37:27 <ais523> ~bf ++++++[->++++++<]>. 
14:37:34 <ais523> ~bf ++++++[->++++++<]>.! 
14:38:03 <ais523> ~exec self.raw_regex_queue.pop() 
14:38:04 <ais523> ~exec self.raw_regex_queue.pop() 
14:38:10 <ais523> ~exec exec(self.bf3+self.bf4) 
14:38:26 <ais523> ~exec sys.stdout(repr(self.raw_regex_queue)) 
14:38:26 <bsmnt_bot> [(<_sre.SRE_Pattern object at 0xb7cc1c98>, <bound method IRCbot.pong of <__main__.IRCbot instance at 0xb7c2e16c>>), (<_sre.SRE_Pattern object at 0x80d2290>, <bound method IRCbot.do_quit of <__main__.IRCbot instance at 0xb7c2e16c>>), (<_sre.SRE_Pattern object at 0x80d24c8>, <bound method IRCbot.do_raw of <__main__.IRCbot instance at 0xb7c2e16c>>), (<_sre.SRE_Pattern object  
14:38:27 <bsmnt_bot> at 0x80d1cc0>, <bound method IRCbot.do_ctcp of <__main__.IRCbot instance at 0xb7c2e16c>>), (<_sre.SRE_Pattern object at 0x80d26e0>, <bound method IRCbot.do_exec of <__main__.IRCbot instance at 0xb7c2e16c>>), (<_sre.SRE_Pattern object at 0x80d2918>, <bound method IRCbot.do_exec of <__main__.IRCbot instance at 0xb7c2e16c>>), (<_sre.SRE_Pattern object at 0x80c1010>, <bound me 
14:38:27 <bsmnt_bot> thod IRCbot.do_ps of <__main__.IRCbot instance at 0xb7c2e16c>>), (<_sre.SRE_Pattern object at 0x80d2b80>, <bound method IRCbot.do_kill of <__main__.IRCbot instance at 0xb7c2e16c>>), (<_sre.SRE_Pattern object at 0x80d6980>, <function bfarg at 0xb7c3064c>)] 
14:39:12 <ais523> ~exec sys.stdout(self.bf4) 
14:39:23 <bsmnt_bot> self.register_raw(r'\S+ PRIVMSG (\S+) :~bf (.*)(!(.*))?',bfarg) 
14:40:04 <ais523> ~exec exec(self.bf3+self.bf4) 
14:40:40 <ais523> ~exec sys.stdout(repr(self.raw_regex_queue.pop())) 
14:40:40 <bsmnt_bot> (<_sre.SRE_Pattern object at 0x80d6980>, <function bfarg at 0xb7c3079c>) 
14:41:25 <ais523> ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(3)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='[' and t[l]==0:\n   c=1\n   while c>0:\n    i=i+1\n    if p[i]=='[': c=c+1\n    if p[i]==']': c=c-1\n  if p[i]==']' and t[l]!=0:\n   c=1\n   while c>0:\n    i=i-1\n    if p[i]==']': c=c+1\n    if p[i]=='[': c=c-1\n" 
14:41:44 <ais523> ~exec self.bf4="  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': o=o+unichr(t[l])\n  if p[i]==',':\n   t[l]=ord(a[0])\n   a=a[1:]\n  i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf (.*)!(.*)',bfarg)" 
14:41:50 <ais523> ~exec exec(self.bf3+self.bf4) 
14:42:29 <ais523> ~exec self.raw_regex_queue.pop() 
14:43:12 <ais523> ~exec self.bf4="  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': o=o+unichr(t[l])\n  if p[i]==',':\n   t[l]=ord(a[0])\n   a=a[1:]\n  i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf ([^!]*)!?(.*)',bfarg)" 
14:43:28 <ais523> ~exec exec(self.bf3+self.bf4) 
14:43:38 <ais523> ~bf ++++++[->++++++<]>. 
14:45:09 <ais523> ~bf ,[.,]!Hello, world! 
14:45:10 -!- bsmnt_bot has quit (Remote closed the connection). 
14:45:13 -!- bsmnt_bot has joined. 
14:45:29 <ais523> ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(3)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='[' and t[l]==0:\n   c=1\n   while c>0:\n    i=i+1\n    if p[i]=='[': c=c+1\n    if p[i]==']': c=c-1\n  if p[i]==']' and t[l]!=0:\n   c=1\n   while c>0:\n    i=i-1\n    if p[i]==']': c=c+1\n    if p[i]=='[': c=c-1\n" 
14:45:48 <ais523> ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(3)+unichr(0)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='[' and t[l]==0:\n   c=1\n   while c>0:\n    i=i+1\n    if p[i]=='[': c=c+1\n    if p[i]==']': c=c-1\n  if p[i]==']' and t[l]!=0:\n   c=1\n   while c>0:\n    i=i-1\n    if p[i]==']': c=c+1\n    if p[i]=='[': c=c-1\n" 
14:45:54 <ais523> ~exec self.bf4="  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': o=o+unichr(t[l])\n  if p[i]==',':\n   t[l]=ord(a[0])\n   a=a[1:]\n  i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf ([^!]*)!?(.*)',bfarg)" 
14:45:57 <ais523> ~exec exec(self.bf3+self.bf4) 
14:46:04 <ais523> ~bf ,[.,]!Hello, world! 
14:46:59 <ais523> ~bf ,[.,]!This implementation returns 0 on EOL. 
14:47:00 <bsmnt_bot> This implementation returns 0 on EOL. 
14:48:05 <ais523> ~bf ++++++++++++++++[->++++++++<]>-[.-] 
14:48:05 <bsmnt_bot> ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  
15:13:05 <ais523> ~bf >,[>,]<.[<.]!Hello, world! 
15:20:19 <ais523> !ul (I haven't broken this, have I?)S 
15:20:21 <EgoBot> I haven't broken this, have I? 
15:26:56 -!- nazgjunk has joined. 
15:27:48 <ais523> ~bf ,[.,]!Hello, nazgjunk! 
15:28:22 <ais523> I spent ages trying to get bsmnt_bot to do Brainfuck 
15:38:56 -!- UpTheDownstair has joined. 
15:44:15 -!- fushd has joined. 
15:44:29 -!- nazgjunk has quit (Nick collision from services.). 
15:46:05 -!- fushd has changed nick to nazgjunk. 
15:54:48 -!- jix__ has changed nick to jix. 
15:59:07 -!- UpTheDownstair has quit (Connection timed out). 
16:02:05 -!- oerjan has joined. 
16:02:22 <ais523> ~bf ,[.,]!Hello, oerjan! 
16:17:32 <oerjan> i don't see why Forte has to be O(n^2). 
16:17:55 <ais523> Basically, because you need to keep generating new line numbers for lines 
16:18:06 <ais523> so when you do a loop, the redefinition table grows at O(n) 
16:18:37 <ais523> but I suppose it might be possible to do the redefinition table more efficiently 
16:20:45 <ais523> So, let me put it this way: 99 bottles of beer written in Forte written in Thutu is probably O(99^2) minimum 
16:20:59 <ais523> (and yes, I did test it with other values of 99) 
16:22:23 <ais523> it's at least going to be O(n) in space when it should be O(1), with any language used to write the interpreter 
16:22:40 <ais523> (but if it were O(n) in space before, it may still be O(n) in space after Forteisation) 
16:22:55 <oerjan> Yeah, space is hard to keep down. 
16:30:21 <ais523> By the way, the compiled version of my interpreter is http://pastebin.ca/391947 
16:30:53 <ais523> (I hacked the Thutu interpreter to support arithmetic and a few string operations natively, so if I gave the Thutu source code you couldn't run it anyway) 
16:31:47 * ais523 wonders why Perl syntax-highlighters never seem to be able to handle regexps correctly 
16:33:44 <oerjan> that leads to the obvious question: can Perl regexps parse Perl regexps? 
16:34:18 <ais523> No. You can't do nested brackets with regexps (it's a computational class thing) 
16:34:42 <oerjan> yeah, that old pumping lemma 
16:34:52 <ais523> to handle nested brackets in Thutu, the easiest way is to change them to some other sort of bracket from the inside out, in pairs 
17:04:28 -!- kxspxr has joined. 
17:04:40 -!- kxspxr has quit (Client Quit). 
17:10:05 -!- tgwizard has joined. 
17:51:31 <ais523> What do people think of the idea of using a separate pastebin (e.g. esoteric.pastebin.ca) instead of the main pastebin.ca pastebin? 
17:52:02 <ais523> Advantages: our stuff is separated from people using the pastebin for other things. 
17:52:39 <ais523> Disadvantages: slightly extra hassle to get it set up, slightly longer URL, we would need at least one post every 3 months (which is easy enough to manage) to keep the pastebin active 
17:54:08 -!- digital_me has joined. 
18:12:27 <ais523> I'll go and set up esoteric.pastebin.ca, then, if there are no objections soon 
18:14:00 <ais523> The idea would be that if #esoteric's posts were separated, then we could look back through them in the future 
18:14:11 <ais523> it would sort of reduce the attrition rate of esolang-related material 
18:14:36 <GregorR> Public pastebins die after 3mo. 
18:15:29 <ais523> 3 months of disuse, yes. I listed that as a potential disadvantage. 
18:15:38 <ais523> what are the chances of that happening? 
18:16:38 <ais523> Oh well, in that case we can just use the main one 
18:16:44 <ais523> and use clog to find all the relevant post numbers 
18:16:54 <oerjan> it depends on your time frame, of course :) 
18:17:09 <ais523> I guessed your answer would be in that sense 
18:28:10 <ais523> but people here are right, it's likely that our pastebin archiving services are good enough already 
18:30:38 <GregorR> Now, if somebody wrote a custom esoteric pastebin with highlighting for Brainfuck and Befunge ... :P 
18:33:07 <ais523> I already have a brainfuck-mode on Emacs 
18:33:17 * ais523 looks into their own filesystem 
18:33:25 <EgoBot> 1 ais523: daemon ul bf 
18:33:27 <EgoBot> 2 ais523: daemon deadfish funge93 
18:35:09 <ais523> bsmntbombdood: anyway, I don't see why bsmnt_bot shouldn't have a BF interpreter too 
18:36:27 <ais523> that's like saying "no need to make any more esolangs, INTERCAL is Turing-complete" 
18:36:54 <ais523> No, I've done it already 
18:37:14 <ais523> ~bf ,[.,]!This is a complete Brainfuck interpreter (EOF = 0) 
18:37:15 <bsmnt_bot> This is a complete Brainfuck interpreter (EOF = 0) 
18:37:31 <ais523> and ! separates program from input (can be omitted if you don't want input) 
18:37:49 <ais523> I can set it up in 3 commands, too 
18:38:03 <ais523> (It would be 1 but that exceeds the maximum line length I can send) 
18:38:52 <ais523> !bf_txtgen bsmnt_bot does Brainfuck! 
18:39:57 <EgoBot> 208 ++++++++++++++[>+++++++>++++++++>++++++++>++<<<<-]>.>+++.>---.+.<+.<---.+++.>>+.<.>>++++.<<<++.>>.----------.<-.>>.<<<----------------------------------.>-.>----.++++++++.+++++.--------.<+++.>---.++++++++.>+. [409] 
18:40:09 <ais523> ~bf ++++++++++++++[>+++++++>++++++++>++++++++>++<<<<-]>.>+++.>---.+.<+.<---.+++.>>+.<.>>++++.<<<++.>>.----------.<-.>>.<<<----------------------------------.>-.>----.++++++++.+++++.--------.<+++.>---.++++++++.>+. 
18:41:08 <ais523> come to think of it, I haven't tested it with nested square brackets yet 
18:42:00 <ais523> ~bf >,[>,]<[.[-]<[.<]>[-]>[.>]<]!123456789 
18:42:00 <bsmnt_bot> 98765432123456788765432345677654345665455 
18:42:36 <ais523> ~bf >,[>,]<[.<[.<]>[-]>[.>]<[-]<]!123456789 
18:42:37 <bsmnt_bot> 987654321234567898765432345678765434567654565 
18:43:08 <ais523> ~bf >,[>,]<.[-]<[.<[.<]>[-]>[.>]<[-]<]!123456789 
18:43:08 <bsmnt_bot> 9876543212345678765432345676543456545 
18:43:15 <ais523> that's what I was aiming for 
18:47:45 <ais523> ~bf >,[>,]<.[-]<[.<[.<]>[-]>[.>]<[-]<]!_,.-'^ 
18:48:21 <ais523> ~bf >,[>,]<.[-]<[.<[.<]>[-]>[.>]<[-]<]!<({[|]})> 
18:48:21 <bsmnt_bot> >)}]|[{(<({[|]})}]|[{({[|]}]|[{[|]|[| 
18:50:59 <ais523> why are you in #esoteric, then? 
18:51:11 <ais523> I can see why it would make your brain hurt, 
18:51:25 <ais523> but it isn't a very good place for soothing a brain that's already been hurt 
18:52:32 <lament> yes, one's brain does hurt when it is repeatedly fucked. 
19:16:01 -!- ais523 has quit. 
19:32:05 -!- sebbu has joined. 
20:22:18 -!- sebbu2 has joined. 
20:23:14 -!- calamari has joined. 
20:30:01 -!- sebbu has quit (Read error: 60 (Operation timed out)). 
20:37:40 -!- sebbu2 has changed nick to sebbu. 
20:42:31 -!- Sgeo has joined. 
20:47:41 -!- graue has joined. 
20:55:51 -!- UpTheDownstair has joined. 
20:59:07 -!- kxspxr has joined. 
21:00:23 -!- kxspxr has quit (Client Quit). 
21:01:26 -!- calamari has quit ("Leaving"). 
21:04:44 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
21:05:29 -!- nazgjunk has joined. 
21:16:39 -!- oerjan has quit ("leaving"). 
21:22:32 -!- UpTheDownstair has quit (Connection timed out). 
21:38:41 -!- calamari has joined. 
21:55:48 -!- oerjan has joined. 
22:22:07 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
22:31:01 -!- calamari has quit ("Leaving"). 
23:25:31 -!- kxspxr has joined. 
23:25:50 -!- kxspxr has quit (Client Quit). 
23:33:56 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
23:34:32 -!- nazgjunk has joined. 
00:11:52 -!- oerjan has quit (calvino.freenode.net irc.freenode.net). 
00:12:05 -!- oerjan has joined. 
00:18:31 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 
00:25:21 -!- calamari has joined. 
00:34:52 -!- calamari has quit ("Leaving"). 
00:41:50 -!- oerjan has quit ("leaving"). 
00:48:25 -!- NK`_ has joined. 
00:51:26 -!- NK` has quit (Read error: 111 (Connection refused)). 
00:59:09 -!- NK`_ has quit (Read error: 145 (Connection timed out)). 
01:01:11 -!- NK` has joined. 
01:36:45 -!- SevenInchBread has joined. 
01:41:01 -!- calamari has joined. 
02:24:40 -!- tgwizard has quit (Remote closed the connection). 
02:25:54 -!- sebbu has quit ("Leaving"). 
02:47:55 -!- SevenInchBread has changed nick to CakeProphet. 
03:15:06 -!- CakeProphet has changed nick to SevenInchBread. 
04:04:56 -!- GreaseMonkey has joined. 
05:08:11 -!- Sgeo has quit ("Leaving"). 
05:08:12 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 
05:17:26 -!- Arrogant has joined. 
05:17:29 -!- ShadowHntr has joined. 
05:28:28 -!- maverickbna has joined. 
05:28:37 -!- ShadowHntr has quit (Nick collision from services.). 
05:28:45 -!- maverickbna has changed nick to ShadowHntr. 
05:39:38 -!- digital_me has quit (Read error: 110 (Connection timed out)). 
05:42:37 -!- ShadowHntr has quit (Read error: 145 (Connection timed out)). 
05:55:06 -!- Arrogant has quit ("Leaving"). 
06:11:52 -!- lament has quit (calvino.freenode.net irc.freenode.net). 
06:12:09 -!- lament has joined. 
06:12:49 -!- lament_ has joined. 
06:15:00 -!- lament has quit (Remote closed the connection). 
06:46:16 -!- lament_ has changed nick to lament. 
07:59:23 -!- jix__ has joined. 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:00:35 -!- jix__ has quit (Client Quit). 
08:00:48 -!- jix__ has joined. 
08:23:57 -!- calamari has quit ("Leaving"). 
08:38:19 -!- ShadowHntr has joined. 
09:17:47 -!- thematrixeatsyou has joined. 
09:19:45 -!- thematrixeatsyou has quit (Client Quit). 
09:20:18 -!- jix__ has quit (Read error: 110 (Connection timed out)). 
09:21:46 -!- GreaseMonkey has quit (Read error: 110 (Connection timed out)). 
09:40:25 -!- ShadowHntr has quit (Read error: 145 (Connection timed out)). 
10:21:54 -!- oerjan has joined. 
12:04:35 -!- jix__ has joined. 
12:05:01 -!- jix__ has changed nick to jix. 
12:56:44 -!- oerjan has quit ("leaving"). 
15:57:39 -!- nazgjunk has joined. 
16:15:29 -!- UpTheDownstair has joined. 
16:17:05 -!- nazgjunk has quit (Nick collision from services.). 
16:17:09 -!- UpTheDownstair has changed nick to nazgjunk. 
16:22:19 -!- puzzlet has quit (Read error: 131 (Connection reset by peer)). 
16:22:58 -!- jix has quit ("This computer has gone to sleep"). 
17:04:08 -!- puzzlet has joined. 
17:22:32 -!- jix__ has joined. 
19:34:10 -!- clog has joined. 
19:34:10 -!- clog has joined. 
19:56:18 -!- crathman has quit (Read error: 145 (Connection timed out)). 
21:01:15 -!- tgwizard has joined. 
21:05:41 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
21:05:43 -!- sebbu2 has joined. 
21:05:50 -!- UpTheDownstair has joined. 
21:06:12 -!- UpTheDownstair has changed nick to nazgjunk. 
21:06:36 -!- nazgjunk has quit (Connection reset by peer). 
21:10:21 -!- ShadowHntr has joined. 
21:15:01 <bsmntbombdood> Reading books that require concentration has proven to be ineffective after taking the CSAP 
21:24:30 -!- sebbu has quit (Connection timed out). 
21:39:26 -!- oerjan has joined. 
21:41:22 -!- Arrogant has quit ("Leaving"). 
21:51:57 -!- nazgjunk has joined. 
22:10:06 <graue> bsmntbombdood: link to the research in question? 
22:10:17 <graue> or were you just extrapolating from personal experience? 
22:20:07 <RodgerTheGreat> if anyone's into game theory, this is really neat: http://www.connectfour.net/Files/connect4.pdf 
22:30:36 <graue> i thought connect 4 was a draw 
22:30:50 <graue> i also seem to remember the checkers in connect 4 as being red and black, not white 
22:33:27 -!- UpTheDownstair has joined. 
22:33:41 -!- UpTheDownstair has quit (Read error: 54 (Connection reset by peer)). 
22:37:53 <RodgerTheGreat> the paper describes them as normally being yellow and red 
22:39:23 <graue> the colors must differ in the dutch market; every set i've seen has had them red and black 
22:43:47 -!- nazgjunk has quit (Read error: 131 (Connection reset by peer)). 
22:44:01 -!- UpTheDownstair has joined. 
22:44:54 -!- sebbu2 has changed nick to sebbu. 
22:48:24 -!- nazgjunk has joined. 
22:48:39 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 
22:50:10 <RodgerTheGreat> graue: in american markets, the game is similarly played with red and black game pieces. 
22:54:58 <lament> the dutch get htem in standard tulip colors. 
22:57:05 <graue> i'm in an american market.  i meant because the authors of that paper are dutch 
23:02:09 -!- tgwizard has quit (Remote closed the connection). 
23:05:00 -!- UpTheDownstair has joined. 
23:06:32 -!- Sgeo has joined. 
23:15:29 -!- foekd has joined. 
23:15:51 -!- nazgjunk has quit (Nick collision from services.). 
23:16:01 -!- foekd has changed nick to nazgjunk. 
23:25:41 -!- UpTheDownstair has quit (Connection timed out). 
23:27:53 -!- sebbu has quit ("@+"). 
23:36:59 -!- RodgerTheGreat has quit. 
23:47:51 -!- RodgerTheGreat has joined. 
00:05:53 <oklopol> made my board game ai into an irc bot 
00:05:54 <oklopol> [01:02:13] <sujomilo> Human 48 - computer 2644 
00:09:58 <oklopol> i lasted for like 10 rounds though! 
00:31:04 <graue> bsmntbombdood: research to support the thesis that you can't concentrate on reading books after taking that test 
00:32:10 <oklopol> it doesn't mean anything though 
01:05:27 -!- nazgjunk has quit (Read error: 110 (Connection timed out)). 
01:13:12 -!- nazgjunk has joined. 
01:48:45 -!- nazgjunk has quit ("Leaving"). 
02:05:53 -!- Caphi has joined. 
02:11:49 <Caphi> Will someone please say a random number between 1 and 20, inclusive? 
02:13:22 <Caphi> Sorry. Someone else tried to take my computer. 
02:22:10 <oerjan> Hey, you think I'll give away my best random number for free? 
02:23:25 <Caphi> I like the number 17. 
02:23:48 <oerjan> 14 is a good random number.  Half perfect, in fact. 
02:25:26 <Caphi> I just realized, I didn't actually specify an integer. 
02:26:07 <Caphi> Or indeed a rational number. 
02:27:10 <oerjan> OK, try e*sqrt 2 - pi/omega 
02:27:33 <oerjan> just to be completely surreal 
02:27:47 <Caphi> Omega? I'm not familiar with that constant. 
02:28:14 <oerjan> probably because it isn't a real number. 
02:29:03 <Caphi> By which you mean that it's complex or that it's undefined? 
02:29:10 <oerjan> it is perfectly well ordered though. 
02:30:19 <oerjan> oh that too. omega means too many different things. 
02:30:25 <Caphi> Oo. I learned stuff today. 
02:30:36 <oerjan> although the uncomputable number is still real 
02:30:54 <Caphi> What's the definition for it 
02:31:37 <oerjan> i can never remember the correct notation for surreals. 
02:32:03 <oerjan> but something like (0,1,2,... | ) 
02:32:21 <oerjan> the simplest infinite surreal. 
02:33:11 <Caphi> No other reason. Oerjan mentioned it. 
02:33:25 <oerjan> on the other hand, omega comes from the ordinal numbers as well. 
02:33:53 <oerjan> the ordinal numbers can be considered a subset of the surreals. 
02:34:33 <oerjan> those with empty right parts, i believe 
02:50:09 <bsmntbombdood> my combinator iterpreter fails to simplify ``S``S`KS``S`KK``S`KS``S``S`KS``S`KKI`KI`K``S``S`KS``S`KKI`KI 
02:54:25 <bsmntbombdood> ``S``S`KS``S`KK``S`KS``S`K`S`KS``S`K`S`KK``S``S`KS``S`KKI`KI`K``S``S`KS``S`K`S`KS``S`K`S`KK``S``S`KS``S`KKI`KI`K`KI 
02:56:01 <bsmntbombdood> my simplifier completely fails to do anything with that, even though there are obvious simplifications 
02:57:32 <oerjan> that ``S`KKI inside is pretty severe. 
03:00:04 <oerjan> ``S`KxI -> x is the most trivial case of eta reduction. 
03:03:30 <bsmntbombdood> When reducing extensionally, it only works with the whole expression 
03:06:36 <bsmntbombdood> and ``S``S`KS``S`KK``S`KS``S``S`KS``S`KKI`KI`K``S``S`KS``S`KKI`KI is reduced to S 
03:11:36 -!- oerjan has quit ("Good night"). 
04:14:36 -!- GreaseMonkey has joined. 
04:28:47 -!- RodgerTheGreat has quit. 
05:05:41 -!- Sgeo has quit ("Leaving"). 
05:54:02 -!- GreaseMonkey has quit ("gtg guys, cya"). 
07:17:11 -!- ShadowHntr has quit ("End of line."). 
07:44:53 <Caphi> Will someone please produce two random numbers between 1 and 10, inclusive, and tell me their sum? 
07:46:48 <Caphi> Never mind. I was trying to demonstrate to someone, but that person left. 
07:59:52 <oklopol> Request noted. Minding disabled. 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:45:13 -!- Caphi has quit ("Miranda IM! Smaller, Faster, Easier. http://miranda-im.org"). 
10:04:04 -!- oerjan has joined. 
11:02:17 -!- jix has joined. 
14:31:11 -!- oerjan has quit ("leaving"). 
16:03:38 -!- nooga has joined. 
16:05:16 -!- graue has quit ("Leaving"). 
16:13:13 <nooga> SADOL.com wtf?!?!?!? 
16:36:31 -!- jix__ has joined. 
16:36:37 -!- jix has quit (Nick collision from services.). 
16:36:45 -!- jix__ has changed nick to jix. 
16:38:33 -!- RodgerTheGreat has joined. 
17:39:55 -!- Robdgreat has joined. 
17:47:30 -!- oerjan has joined. 
17:54:50 -!- tgwizard has joined. 
18:07:18 -!- Robdgreat has quit. 
19:01:41 -!- jix has quit ("This computer has gone to sleep"). 
19:30:20 -!- oerjan has quit ("leaving"). 
19:31:05 -!- oerjan has joined. 
19:38:12 -!- sebbu has joined. 
20:34:24 -!- nazgjunk has joined. 
20:37:01 -!- jix has joined. 
21:06:02 -!- sebbu2 has joined. 
21:24:48 -!- sebbu has quit (Read error: 110 (Connection timed out)). 
21:35:10 -!- sebbu has joined. 
21:45:09 -!- UpTheDownstair has joined. 
21:46:30 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
21:48:40 -!- tgwizard_ has joined. 
21:52:51 -!- UpTheDownstair has changed nick to nazgjunk. 
21:54:51 -!- sebbu2 has quit (Read error: 110 (Connection timed out)). 
22:00:10 -!- tgwizard has quit (Read error: 110 (Connection timed out)). 
22:07:23 -!- Caphi has joined. 
23:02:20 -!- jix has quit ("This computer has gone to sleep"). 
23:20:20 <bsmntbombdood> the max shifts function solves the halting problem 
23:32:23 <bsmntbombdood> The value of the max shifts function is uncomputable 
23:33:33 <bsmntbombdood> But given the value of S(n), you can solve the halting problem on an n state turing machine 
23:35:16 <oerjan> This gave me an idea which I don't know if I've seen the answer to: 
23:35:41 <oerjan> Are there uncomputable problems strictly weaker than the halting problem? 
23:36:26 <bsmntbombdood> so on a 4 state, 2 symbol turing machines, the halting problem is solvable 
23:38:03 <oerjan> it is analogous to how there are, if P!=NP, problems strictly between them. 
23:39:18 <oerjan> (that is, problems which are neither in P nor NP-complete) 
23:39:31 <lament> what's strictly weaker anyway 
23:39:59 <RodgerTheGreat> is it trivial to map one type of turing machine to another via any well-understood algorithm? 
23:40:00 <lament> is the problem of sorting apples strictly weaker than the problem of sorting oranges? 
23:40:02 <oerjan> say you have a problem which you can solve if you have a halting oracle, but not vice versa 
23:40:50 <oerjan> I mean by "strictly weaker" that you have a reduction one way but not the other. 
23:41:19 <lament> oerjan: is the problem of deciding the halting of a program equipped with a halting oracle strictly stronger than just the regular halting problem? 
23:42:07 <oerjan> in fact that is the premise of one of the languages on the wiki. 
23:43:08 <oerjan> actually two: Banana Scheme and Brainhype. 
23:43:54 -!- nazgjunk has quit ("Leaving"). 
23:44:58 <lament> brainhype doesn't really care 
23:45:20 <oerjan> but going downward in strength (while still being uncomputable) seems harder. 
23:45:45 <lament> (banana scheme mostly appeared exactly because it was unclear what could interpret brainhype) 
23:56:18 <lament> hm, this /// lang seems cool 
00:18:54 -!- RodgerTheGreat has quit. 
00:20:05 -!- RodgerTheGreat has joined. 
00:25:37 -!- Sgeo has joined. 
00:28:57 -!- oerjan has quit ("leaving"). 
00:30:30 <RodgerTheGreat> if I had shirts with pockets, I'd wear one all the time 
00:31:13 -!- oerjan has joined. 
00:31:19 <bsmntbombdood> I can see myself using a pocket protector, if I wore shirts with pockets 
00:32:02 -!- tgwizard_ has quit (Remote closed the connection). 
00:48:54 -!- cmeme has quit (Read error: 104 (Connection reset by peer)). 
00:49:09 -!- cmeme has joined. 
00:52:15 <lament> http://mathforum.org/kb/message.jspa?messageID=1375971&tstart=0 
00:57:06 -!- sebbu has quit (Client Quit). 
00:57:43 <RodgerTheGreat> I never find myself needing more than the first seven- I've never really tried memorizing them 
01:00:36 <lament> that's what impressed me 
01:00:53 <lament> although his technique is pretty nice too 
01:01:11 <lament> bsmntbombdood: how did you memorize it? 
01:01:16 <RodgerTheGreat> it's often easy to memorize sequences of numbers by their spoken "beat" 
01:01:48 <RodgerTheGreat> sine-cosine-cosine-sine-three-point-one-four-one-five-nine and the like 
01:02:49 <lament> this is probably made easier if you combine some groups of 2 digits into one number 
01:03:07 <lament> three fourteen fifteen etc 
01:03:48 <RodgerTheGreat> what's interesting about John Conway is that among this crowd, he's a celebrity, whereas most places nobody would bat an eyelash at the name 
01:06:22 <RodgerTheGreat> lament: yeah- chunking numbers is another extremely effective way of reducing the difficulty of memorizing things 
01:10:36 <bsmntbombdood> it breaks itself up into easily memorizable pieces 
01:12:54 <RodgerTheGreat> another way to "memorize" it could be to memorize an algorithm for finding successive places.... 
01:14:41 <RodgerTheGreat> before you've played with esolangs, something like BF is difficult to wrap your head around. Now, it comes naturally to all of us. 
01:22:25 <RodgerTheGreat> one of the reasons I like esolangs is the fact that they have a way of liberating one's mind with respect to programming. 
01:22:59 <RodgerTheGreat> I feel sad for people who only think of programming in terms of C++ and Java 
02:08:00 -!- oerjan has quit ("Good night"). 
03:06:07 <Sgeo> Today is (ln -1)/i day! 
03:10:41 <Sgeo> Whatever that turns out to be equivelent to? 
03:31:23 <lament> bsmntbombdood: i like conway's division more than yours :) 
03:31:41 * lament memorized pi to 30 places with conway's thing 
03:32:27 <lament> his is almost like a poem 
03:33:22 <lament> "1415 9265 35" - rhymes 
03:35:07 <lament> 8979 (rhyme) 3238 (rhyme the other way) 4626 (rhyme) 4338 (rhymes with the second quadruplet) 
03:36:12 <RodgerTheGreat> just express rhymes like you would if you were analyzing poetry: ABAB 
03:36:57 <bsmntbombdood> Next time I have to write some poetry for class I'm just going to mark v. shaney some poe 
03:43:18 <RodgerTheGreat> it would be interesting writing a program that would translate a sentence into a series of numbers that had the same rythm when read 
03:44:01 <RodgerTheGreat> it might be as simple as assigning numbers based on rhyme pairs 
03:46:29 -!- GreaseMonkey has joined. 
03:46:31 -!- thematrixeatsyou has joined. 
03:47:12 -!- thematrixeatsyou has left (?). 
03:48:04 <GreaseMonkey> sorry bout that, accidentally connected twice D: 
03:48:31 <RodgerTheGreat> I was wondering if it was you and your bot or something 
03:50:24 <RodgerTheGreat> GreaseMonkey: how do you think we should celebrate the upcoming pi day? 
03:52:56 <RodgerTheGreat> terms usually alternate in a mclaurin series (which that vaguely resembles) or stay constant 
03:55:55 <bsmntbombdood> http://en.wikipedia.org/wiki/Leibniz_formula_for_pi 
03:56:24 <RodgerTheGreat> that sounds clumsy to calculate, unless we use metric time or something 
04:02:28 <RodgerTheGreat> we should write a "pidaydaemon" that interrupts whatever you're doing with the terminal at the precise moment of pi day and encourages you to celebrate 
04:27:23 -!- RodgerTheGreat has quit. 
04:30:17 -!- ShadowHntr has joined. 
04:40:29 -!- ShadowHntr has quit (zelazny.freenode.net irc.freenode.net). 
04:40:29 -!- Caphi has quit (zelazny.freenode.net irc.freenode.net). 
04:40:29 -!- bsmnt_bot has quit (zelazny.freenode.net irc.freenode.net). 
05:43:18 -!- Sgeo has quit ("Leaving"). 
06:49:22 -!- ShadowHntr has joined. 
07:50:05 -!- maverickbna has joined. 
07:50:22 -!- maverickbna has quit (Read error: 104 (Connection reset by peer)). 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:08:56 -!- ShadowHntr has quit (Connection timed out). 
08:29:48 -!- sekhmet has quit (Read error: 104 (Connection reset by peer)). 
08:34:04 -!- sekhmet has joined. 
08:40:04 -!- sebbu has joined. 
09:09:43 -!- jix has joined. 
09:16:52 -!- ShadowHntr has joined. 
10:07:19 -!- GreaseMonkey has quit ("gnight - avoid encyclopediadramatica at all costs."). 
10:29:19 -!- ShadowHntr has quit ("End of line."). 
11:57:05 -!- jix__ has joined. 
12:06:13 -!- jix has quit (Read error: 113 (No route to host)). 
12:46:32 -!- oerjan has joined. 
12:55:47 <oerjan> all this talk about celebrating pi at 3/14 1:59 (GMT/GMT-pi) and none of the Americans noticed that those times had long since passed. 
13:35:03 -!- oerjan has quit (zelazny.freenode.net irc.freenode.net). 
13:35:24 -!- oerjan has joined. 
13:45:35 -!- jix__ has changed nick to jix. 
14:13:34 -!- helios24 has joined. 
15:56:10 -!- crathman has joined. 
16:12:52 -!- RodgerTheGreat has joined. 
17:26:57 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.2/2007021917]"). 
18:00:10 -!- oerjan has quit ("leaving"). 
18:25:46 -!- tgwizard has joined. 
19:11:47 -!- nazgjunk has joined. 
19:13:07 -!- nazgjunk has quit (Read error: 131 (Connection reset by peer)). 
19:16:48 -!- nazgjunk has joined. 
19:54:50 -!- UpTheDownstair has joined. 
19:55:06 -!- nazgjunk has quit (Read error: 131 (Connection reset by peer)). 
19:55:33 -!- UpTheDownstair has changed nick to nazgjunk. 
19:58:18 -!- jix has quit ("This computer has gone to sleep"). 
21:29:16 -!- UpTheDownstair has joined. 
21:32:02 -!- nazgjunk has quit (Read error: 145 (Connection timed out)). 
21:36:19 -!- sebbu2 has joined. 
21:43:14 -!- sebbu has quit (Read error: 60 (Operation timed out)). 
22:23:56 <bsmntbombdood> C is a sad language, because most lines end with ); 
22:29:24 <RodgerTheGreat> even worse, all those curly brackets make fun of people with cleft palates- :{ 
22:30:09 <RodgerTheGreat> 'course, that exact combination doesn't happen very often that I can think of... 
22:36:50 -!- oerjan has joined. 
22:38:40 <oerjan> is :{ possible in C at all? 
22:39:31 <oerjan> can an expression begin with just { ? 
22:41:31 <RodgerTheGreat> I know one way it's *possible*, but not in a functional expression 
22:41:58 <GregorR> struct foo a = { b:{stuff in a.b} }; 
22:42:16 <GregorR> I haven't used that syntax in a while, I may be a bit off ;) 
22:43:06 <oerjan> indeed it seems a bit weird to have that inner { } 
22:43:41 <GregorR> Well, that much I know is legit :) 
22:43:51 <GregorR> If a struct contains a struct, and you're declaring one statically, that's how you do it. 
22:50:53 <oerjan> found a BNF for C at http://www.cs.man.ac.uk/~pjj/bnf/c_syntax.bnf 
22:51:10 <oerjan> however, i cannot make your suggestion parse with it. 
22:51:34 <oerjan> first, it's = not : but that is not so important. 
22:52:04 <oerjan> worse is that the part to the right of = cannot contain a nested struct. 
22:53:21 <oerjan> the _outer_ ={ still works. 
22:53:24 -!- nazgjunk has joined. 
22:53:49 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 
22:54:05 <oerjan> it could of course be an erroneous BNF. 
22:57:13 <oerjan> oh, and label :{ block } works. 
22:59:09 <oerjan> or, less goto-tainted:  case const :{ block } 
22:59:45 <oerjan> which looks like it could actually be used. 
23:01:59 <GregorR> Oh, heheh, the syntax I gave was D :P 
23:03:24 <oerjan> I guess it is probably also available in modern C compilers, being an obvious gap in the original language. 
23:06:38 <GregorR> C is my native language. It was difficult learning an ... unstructured language like English when I was a boy. 
23:06:47 <fizzie> struct foo a = { .b = initializer_for_field_b };  is C99 (and a GCC extension for other modes). 
23:08:43 <fizzie> Same goes for arrays; int array[256] = { [42] = 1, [69] = 1 }; works if you want to initialize few elements to 1 and keep the rest as 0. 
23:10:07 <fizzie> Well, full C99-compliant compilers aren't anywhere yet, so I'm not sure it's sensible to use in published code. Perhaps in GCC-specific projects, though. 
23:11:48 <oerjan> hm... you could extend that to function memoing. 
23:12:12 <fizzie> See chapter 6.7.8 Initialization in your friendly ISO/IEC 9899:1999 standard; the syntax is "initializer-list: designation_opt initializer --" and a designator can be either "[ constant-expression ]" or ". identifier". 
23:12:33 <bsmntbombdood> http://eden.dei.uc.pt/~machado/research/bb/BB.html 
23:12:56 <oerjan> int fib(int n) { return (fib(n) = fib(n-1)+ fib(n-2)); } = { (0) = 0, (1) = 1 }; 
23:13:35 <fizzie> That might be a "bit" too high-level to exactly be very C-like. 
23:13:51 <oerjan> hey, i'm just generalizing :) 
23:16:13 -!- sebbu has joined. 
23:17:13 <oerjan> i saw mention of one with a good graphical interface, perhaps at Good Math/Bad Math. 
23:17:34 <fizzie> I had a Turing machine interpreter written in Befunge and syntax-highlighted in the great "messy HTML table with a dozen different background colors for various functional regions" fashion, but I lost it. :/ 
23:17:42 <fizzie> The "user interface" wasn't very friendly, though. 
23:18:16 <fizzie> abA!6!0!a!1!A!R!0!b!5!b!R!1!a!1!a!R!1!b!2!b!R!2!a!2!a!R!2!A!3!A!L!2!!!3!! 
23:18:24 <fizzie> Ngah, borken copypaste. 
23:18:53 <oerjan> oh and Mark CC wrote an interpreter himself too 
23:18:53 <fizzie> Well, you just fed it a string a bit like that, except that it's not supposed to cut off there, the example I was trying to copypaste continues for a while. 
23:19:49 -!- nazgjunk has quit ("Leaving"). 
23:19:49 <oerjan> http://scienceblogs.com/goodmath/2007/02/basics_the_turing_machine_with_1.php 
23:20:44 <oerjan> a bit verbose syntax though 
23:21:05 <lament> it is a shame that one of the most historically important esoteric languages is not even recognized as such 
23:21:16 <lament> all because Turing used a different terminology 
23:22:57 <oerjan> the JFLAP mentioned in the same thread was the good one i was thinking of. 
23:23:00 <lament> turing machines are programs in this language 
23:23:25 <oerjan> (not that i have tested it myself) 
23:23:28 <lament> the language does not have a name or syntax. I find that to be a shame. :) 
23:23:49 <oerjan> you could say the same about combinatory logic. 
23:24:05 <oerjan> except that does have a name and syntax 
23:24:44 <lament> it makes sense to talk of a "combinatory logic" language, in which something like "s k" is a program 
23:25:40 <oerjan> among turing tarpits, the distinction between "computational model" and "esoteric language" is mainly based on the apparent seriousness of the inventor. 
23:26:07 <lament> yes, yes, and yet, combinatory logic and lambda calculus are both easily accepted as languages 
23:26:23 <fizzie> I think the automagical homework checking eggine in one of our courses was JFLAP-based. 
23:26:24 <lament> and turing machines aren't because the terminology used by the inventor is just too bizarre 
23:26:28 <bsmntbombdood> With a halting oracle, the max-shifts function is computable 
23:27:06 <bsmntbombdood> generate all n-state turing machines, remove ones that don't halt, then run them all 
23:29:29 <oklopol> i could do that standing on my head 
23:30:35 <lament> your MOM doesn't halt! 
23:34:59 -!- sebbu2 has quit (Connection timed out). 
23:50:00 -!- sebbu has quit ("@+"). 
00:12:07 -!- ShadowHntr has joined. 
00:14:03 <oerjan> that seems a bit too strict.  You need lazy evaluation for any conses to actually happen. 
00:15:05 <oerjan> or you could do it in reverse: 
00:16:41 <oerjan> ((Y (lambda (f) (lambda (l) (f (cons 'bitch l))))) '()) 
00:18:22 <oerjan> sequence_ $ repeat $ bitch 
00:18:27 <bsmntbombdood> I don't think a Y combinator is even possible in scheme 
00:18:57 <oerjan> yeah, that might need lazy evaluation too 
00:20:36 <oerjan> ((lambda (f l) (f f l)) (lambda (f l) (f f (cons 'bitch l))) '()) 
00:21:10 <bsmntbombdood> ((lambda (x) (x x)) (lambda (f) (cons 'bitch (f f))))) 
00:22:15 <oerjan> without lazy evaluation, you cannot apply (f f) without another intervening lambda. 
00:22:58 <oerjan> it never bitches either 
00:23:19 <oerjan> because it doesn't get to that part 
00:23:54 <bsmntbombdood> ((lambda (f) (cons 'bitch (f f))) (lambda (f) (cons 'bitch (f f)))) 
00:23:56 -!- tgwizard has quit (Remote closed the connection). 
00:24:25 <bsmntbombdood> (cons 'bitch ((lambda (f) (cons 'bitch (f f))) (lambda (f) (cons 'bitch (f f))))) 
00:24:32 <oerjan> ok it evaluates 'bitch, perhaps. but it never conses. 
00:25:36 <oerjan> ((lambda (x) (x x)) (lambda (f) (bitch) (f f))) 
00:25:45 <oerjan> that should satisfy all camps :) 
00:26:31 <oerjan> it's even tail recursive 
00:28:31 <oerjan> in fact it has nothing _but_ side effects :) 
00:30:35 <bsmntbombdood> ((lambda (x) (x x)) (lambda (f) (cons-stream 'bitch (f f))))) 
00:32:26 <oerjan> bah, you got lazy and used a macro ;) 
01:25:45 <oerjan> your comment made me think about how to remove all dummy variable names from that bitch recursion :) 
01:26:38 <oerjan> on the downside, it requires an import Control.Monad.Fix 
01:27:48 <oerjan> what kind of variables were you thinking of? 
01:30:42 <oerjan> you mean unused variables? 
01:31:40 <oerjan> in Haskell/ML, you use _ for those. 
01:33:08 <oerjan> so it's actually basic lambda calculus abstraction you don't like? :) 
01:33:50 <oerjan> there is also pointfree (pointless) style in Haskell 
01:34:01 <oerjan> like my fix (bitch>>) above 
01:34:57 <oerjan> and the whole Forth/Joy style of languages 
02:50:08 -!- RodgerTheGreat has quit. 
02:51:22 -!- RodgerTheGreat has joined. 
03:34:51 -!- ShadowHntr has quit ("End of line."). 
03:42:18 -!- RodgerTheGreat has quit. 
03:51:24 -!- GreaseMonkey has joined. 
04:08:31 -!- bsmntbombdood has quit (Read error: 54 (Connection reset by peer)). 
04:21:36 -!- oerjan has quit ("Good night"). 
04:43:21 -!- bsmntbombdood has joined. 
04:46:35 -!- bsmnt_bot has joined. 
04:56:00 <bsmntbombdood> I read that the halting problem is solvable on machines that have finite memory 
04:57:06 <bsmntbombdood> so the number of steps needed before a repition occurs is known 
04:57:11 -!- Arrogant has joined. 
05:00:45 <bsmntbombdood> if it doesn't halt after 2**(number of bits in memory), it doesn't halt at all 
05:05:19 <GreaseMonkey> i reckon that turing machines should have more than one tape 
05:20:36 <lament> bsmntbombdood: that would be true if "real computers" performed no IO of any kind. 
05:21:58 -!- ShadowHntr has joined. 
05:22:00 <lament> as it is, a simple +[,] stumps every oracle 
05:35:03 <bsmntbombdood> The halting function is given the program and its input 
05:51:29 <GreaseMonkey> sleep tight dood, even though there's bombs in your bsmnt 
06:46:58 -!- NK` has quit (Read error: 54 (Connection reset by peer)). 
06:50:19 -!- ShadowHntr has quit ("End of line."). 
07:07:07 -!- Arrogant has quit (Read error: 104 (Connection reset by peer)). 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:30:52 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 
08:30:54 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 
08:31:38 <lament> for guitar players: http://users.adelphia.net/~cygnusx_1/equal_temperament.html 
08:52:06 -!- nazgjunk has joined. 
09:03:44 <EgoBot> 1 ais523: daemon ul bf 
09:03:46 <EgoBot> 2 ais523: daemon deadfish funge93 
09:45:16 -!- GreaseMonkey has quit ("gnight"). 
10:18:19 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
10:18:46 -!- nazgjunk has joined. 
10:23:36 -!- jix__ has joined. 
10:26:16 -!- UpTheDownstair has joined. 
10:35:42 -!- UpTheDownstair has quit (Connection reset by peer). 
10:38:37 -!- nazgjunk has quit (Read error: 110 (Connection timed out)). 
10:53:14 -!- nazgjunk has joined. 
11:04:42 -!- nazgjunk has quit ("Leaving"). 
11:24:58 -!- jix__ has quit ("This computer has gone to sleep"). 
11:26:35 -!- nazgjunk has joined. 
11:27:58 -!- UpTheDownstair has joined. 
11:31:56 -!- UpTheDownstair has quit (Read error: 54 (Connection reset by peer)). 
11:32:56 -!- nazgjunk has quit (Connection reset by peer). 
11:43:11 -!- nazgjunk has joined. 
12:32:08 -!- UpTheDownstair has joined. 
12:32:22 -!- UpTheDownstair has quit (Client Quit). 
12:39:09 -!- nazgjunk has quit (Read error: 145 (Connection timed out)). 
12:41:13 -!- nazgjunk has joined. 
13:02:52 -!- oerjan has joined. 
13:17:30 -!- jix__ has joined. 
13:55:46 -!- jix__ has quit ("This computer has gone to sleep"). 
14:08:58 -!- helios24 has quit (Read error: 60 (Operation timed out)). 
14:09:14 -!- fizzie has quit (Read error: 60 (Operation timed out)). 
14:11:33 -!- helios24 has joined. 
14:13:30 -!- fizzie has joined. 
14:41:09 -!- ais523 has joined. 
14:41:36 <ais523> ~bf ,[.,]!Is this still working? 
14:42:49 <ais523> ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(3)+unichr(0)\n o=?\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n" 
14:43:03 <ais523> ~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(a[0])\n a=a[1:]\n i=i+1\nsys.stdout(o)\nself. register_raw(r'\S+ PRIVMSG (\S+) :~bf ([^!]*)!?(.*)',bfarg)" 
14:43:06 <oerjan> bsmnt_bot needs a better persistence system. 
14:43:10 <ais523> ~exec exec(self.bf3+self.bf4) 
14:43:41 <ais523> damn, something must have gone wrong with my copy-paste 
14:43:49 * oerjan gives up on SWI-prolog 
14:43:56 <ais523> you program in Prolog? 
14:44:13 <ais523> I've written a few simple Prolog programs somewhere 
14:44:20 <ais523> never got to run them though, I don't have an interpreter 
14:45:13 <ais523> ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(3)+unichr(0)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='[' and t[l]==0:\n   c=1\n   while c>0:\n    i=i+1\n    if p[i]=='[': c=c+1\n    if p[i]==']': c=c-1\n  if p[i]==']' and t[l]!=0:\n   c=1\n   while c>0:\n    i=i-1\n    if p[i]==']': c=c+1\n    if p[i]=='[': c=c-1\n" 
14:45:14 <ais523> 06:45:54 <ais523> ~exec self.bf4="  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': o=o+unichr(t[l])\n  if p[i]==',':\n   t[l]=ord(a[0])\n   a=a[1:]\n  i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf ([^!]*)!?(.*)',bfarg)" 
14:45:40 <ais523> ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(3)+unichr(0)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='[' and t[l]==0:\n   c=1\n   while c>0:\n    i=i+1\n    if p[i]=='[': c=c+1\n    if p[i]==']': c=c-1\n  if p[i]==']' and t[l]!=0:\n   c=1\n   while c>0:\n    i=i-1\n    if p[i]==']': c=c+1\n    if p[i]=='[': c=c-1\n" 
14:45:51 <ais523> ~exec self.bf4="  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': o=o+unichr(t[l])\n  if p[i]==',':\n   t[l]=ord(a[0])\n   a=a[1:]\n  i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf ([^!]*)!?(.*)',bfarg)" 
14:45:57 <ais523> ~exec exec(self.bf3+self.bf4) 
14:46:10 <ais523> ~bf ,[.,]!Hopefully this works now. 
14:46:12 <oerjan> i thought SWI prolog should be so simple.  But i have now spend more time than i want to try and make it work properly with gvim as external editor. 
14:46:42 <ais523> is it the language that's the problem, or the development environment 
14:47:29 <oerjan> the environment.  i end up being infuriated by a bug, and then even more because their bug tracking system wants me to log in and _they_ select my password. 
14:48:00 <ais523> I tried to write my own Prolog interpreter once, but that was when all my programs were in VBA for Excel 
14:48:25 <ais523> nowadays I mostly use C, unless I'm using an esolang (often a better choice!) or am forced to use Java 
14:48:31 <oerjan> well it is possible in theory :) 
14:49:27 <ais523> !ul (Is this still working too?)S 
14:49:28 <EgoBot> Is this still working too? 
14:49:50 <oerjan> EgoBot does have some useful persistence. 
14:50:15 <ais523> the thing that's surprising me is that the daemon hasn't crashed yet, considering it's written in BF and has no error checking 
14:50:27 <ais523> and that people keep insisting on feeding it illegal programs 
14:50:56 <ais523> the persistence of the deadfish daemon is less surprising 
14:53:21 <ais523> !daemon bct bf http://www.bf-hacks.org/hacks/bct.b 
14:55:16 <ais523> uh oh, maybe I shuldn't feed it programs without checking what they do first 
14:55:50 <EgoBot> 1 ais523: daemon ul bf 
14:55:52 <EgoBot> 2 ais523: daemon deadfish funge93 
14:55:53 <oerjan> it would be nice if bsmntbombdood would make at least one directory writable.  Then we could place nice scripts there. 
14:56:18 <ais523> the process must have ended naturally before I could kill it 
14:56:34 <ais523> but yes, oerjan, I agree that a persistent-daemon directory would be nice 
14:56:43 <ais523> so we could store interpreters in it 
14:57:33 <ais523> I've found myself rather wanting a Thutu interpreter here so I could write esolangs in it. BCT is easy: 
14:58:52 <bsmnt_bot> NameError: name 'list_dir' is not defined 
15:00:42 <ais523> no, BCT is less easy through an IRC client when you can't think sensibly about what you're doing 
15:01:44 <ais523> hey, self-modifying BCT looks interesting 
15:02:27 <ais523> 0 deletes at the left, 1x inserts at the right, and the instruction pointer cycles along the program 
15:02:35 <oerjan> ~exec sys.stdout(os.listdir("/")) 
15:02:35 <bsmnt_bot> ['bin', 'bot', 'etc', 'lib', 'usr'] 
15:02:46 <oerjan> ~exec sys.stdout(os.listdir("/bot")) 
15:02:46 <bsmnt_bot> ['betterbot.py', 'test.pickle', 'foo.py~', 'ski_repl.py', 'foo.py', 'ircbot.py~', 'start.sh', 'better.sh', 'ircbot.py'] 
15:03:31 <oerjan> ~exec sys.stdout(os.listdir("/lib")) 
15:03:31 <bsmnt_bot> ['libm.so.6', 'libreadline.so.5', 'libacl.so.1', 'libdl-2.4.so', 'libresolv.so.2', 'libutil.so.1', 'libncurses.so.5', 'libattr.so.1', 'libcrypt.so.1', 'ld-linux.so.2', 'libdl.so.2', 'libpthread.so.0', 'libpam_misc.so.0', 'libpam.so.0', 'libc.so.6', 'librt.so.1'] 
15:04:46 <oerjan> might be too simple to be turing complete 
15:05:04 <ais523> it's not obviously not TC 
15:05:25 <oerjan> let's see.  Any 00 will force synchronization 
15:06:45 <oerjan> wait, exactly how do you mean 
15:06:59 <ais523> there's a description on the page linked from the wiki 
15:07:27 <ais523> the instruction pointer takes the command after the current one, looping back to the start when it reaches the end 
15:07:44 <ais523> and the commands operate on the program itself. Apart from that, it's just BCT 
15:08:12 <ais523> (The 'start' is the first non-deleted command. So the logic of self-modifying BCT is more like Muriel than a tag system.) 
15:08:18 -!- UpTheDownstair has joined. 
15:08:51 <ais523> The problem seems to be that the number of 0s has to be kept quite low, or they'll end up demolishing the program 
15:08:58 <ais523> but obviously you can't have nothing but 1s 
15:10:34 <oerjan> So essentially you have a cycle with two pointers in it, one data and one instruction 
15:11:30 <ais523> that's it. And they both increase and cycle through. Wow, it's like a cross between tag systems, Muriel, and Malbolge 
15:11:44 <ais523> (more like Dis, actually, as there isn't encryption confusing the issue too) 
15:11:56 <oerjan> the example seems buggy from step 4 to 5 
15:12:07 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 
15:12:36 <ais523> I agree, there should be an extra 1 at the end 
15:13:14 <oerjan> hm, what happens if the modified data is inside the current instruction? 
15:13:15 -!- UpTheDownstair has joined. 
15:13:51 <ais523> I'm not sure if that can happen. A 0 can delete itself, but then you just go onto the next instruction, and a command can't add inside itself 
15:14:25 <oerjan> why not?  There could be 0...*1 
15:14:50 <ais523> in that case, presumably you go on to the command after the 0 at the start, with an extra 0 at the end 
15:15:33 <oerjan> and then what about 0...*0 
15:15:52 <oerjan> ok it's obvious what it should do 
15:17:07 <oerjan> there is a problem with the obvious linked list implementation though 
15:17:59 <oerjan> if you are not careful, you will end up with the instruction pointer at a deleted node. 
15:18:26 <oerjan> no matter which order you choose for the operations 
15:18:26 <ais523> I'm writing it in Thutu at the moment, which has problems of its own 
15:18:44 <ais523> (Unfortunately, Thutu is 'the obvious implementation' for just about everything for me at the moment) 
15:26:09 -!- nazgjunk has quit (Read error: 110 (Connection timed out)). 
15:44:21 <oerjan> with ...1x, does execution continue before or after the added x? 
15:44:42 <ais523> I've just written an interpreter, so I'll check 
15:45:09 <ais523> before the way I've written it 
15:45:33 <ais523> http://pastebin.ca/raw/397461 
15:48:59 <ais523> from my experiments so far, it seems that if the program contains any 0s the density of 0s increases until they end up swamping the program 
15:54:50 <ais523> If 1s and 0s are distributed randomly, with a proportion p of 0s, then there's a chance p(1-p) of deleting a 1, a chance p^2 of deleting a 0, a chance (1-p)^2 of adding a 1, a chance p(1-p) of adding a 0 
15:55:54 -!- RodgerTheGreat has joined. 
15:56:22 <oerjan> from that description one would expect the proportion to stay constant. 
15:56:25 <ais523> hello, RogerTheGreat! We were discussing self-modifying Bitwise Cyclic Tag 
15:56:37 <ais523> I know, there's something slightly stranger going on 
15:57:43 <ais523> starting with 1111111110, the number of 0s grows gradually, with the 0s getting clumpier and clumpier, until the whole thing collapses 
15:59:19 <ais523> aha! Consider the number of 1s between consecutive 0s 
15:59:40 <ais523> if it's odd, then it adds a string half that length to the end of the input 
15:59:54 <ais523> if it's even, it ends up combining with the next string 
16:00:21 <ais523> so if there's even one odd string, all the strings before it in the program will combine to it 
16:00:58 <ais523> no, wait; my argument doesn't work due to the 0s changing the length of the initial string 
16:01:25 <ais523> but the point is that newly-generated strings of 1s tend to be shorter than the strings of 1s that generated them 
16:01:45 <ais523> so the 1s-in-a-row count tends to decrease, which is what causes the programs to tend to terminate 
16:02:39 <RodgerTheGreat> does this imply that a bitwise cyclic tag system must halt? 
16:02:59 <ais523> no, BCT is turing-complete. It's self-modifying BCT that I was talking about 
16:09:33 -!- nazgjunk has joined. 
16:09:59 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 
16:14:47 <RodgerTheGreat> alright, I think I have a better handle on the topic now 
16:15:10 <RodgerTheGreat> hm... I wonder what I should write an implementation in? 
16:21:18 <RodgerTheGreat> standard BCT could probably be expressed very concisely in BASIC using strings, with the minor caveat that most BASIC interpreters have arbitrary string length limitations 
16:21:32 <RodgerTheGreat> it's hard to dynamically allocate storage in BASIC. <:| 
16:22:21 <ais523> there was a pragma in the version of BASIC I used that allowed for dynamic arrays, and it had a REDIM command to resize them 
16:24:57 <ais523> QBASIC, if I remember. It was bundled with some versions of DOS 
16:25:17 <oerjan> Perl should be fairly compact, even more so if you write it directly rather than compile to it ;) 
16:25:36 <RodgerTheGreat> I've used it quite a bit, although I was never aware of REDIM 
16:25:46 <ais523> oerjan: more readable too without the compilation, and also more efficient 
16:26:04 <RodgerTheGreat> I'd say my favorite BASIC implementations are DarkBASIC and Cbaspad for PalmOS 
16:28:40 -!- nazgjunk has quit (Success). 
16:29:11 <RodgerTheGreat> Calamari's opus is truly an achievement, but it isn't particularly handy when I find myself without a Java runtime environment 
16:30:37 <RodgerTheGreat> and believe me, Cbaspad is an esoteric language in it's own right. It's the only BASIC interpreter I've found for palmOS that offers peek() poke and call(), making inline ASM possible 
16:30:59 <RodgerTheGreat> not to mention a number of additional low-level hardware access and I/O functions 
16:31:40 <ais523> that was possible in QBASIC too IIRC. It had a CALL ABSOLUTE that would jump to a particular location in memory, and you could find where in memory a variable was stored 
16:32:52 <RodgerTheGreat> yes, it's a standard feature on most BASIC implementations from the '80s and earlier 
16:33:35 -!- nazgjunk has joined. 
16:34:44 -!- jix__ has joined. 
16:36:35 -!- jix__ has changed nick to jix. 
16:38:01 -!- UpTheDownstair has joined. 
16:40:30 <jix> hello RodgerTheGreat  
16:41:08 <ais523> ~bf ,[.,]!Hello everyone 
16:46:08 -!- nazgjunk has quit (Connection reset by peer). 
16:52:12 -!- UpTheDownstair has quit (Connection reset by peer). 
16:57:49 -!- nazgjunk has joined. 
16:58:27 -!- ShadowHntr has joined. 
17:00:19 * ais523 has just written a Dupdog interpreter 
17:01:10 <ais523> http://pastebin.ca/raw/397555 
17:01:39 <ais523> I don't have any Dupdog programs to test it on, though 
17:06:04 <RodgerTheGreat> wow. I can see the essential features necessary for computation, but that would be tricky as hell to program with. 
17:06:35 <ais523> I can't even figure out "Hello, world!". 
17:06:45 -!- oerjan has quit ("My brain is toast"). 
17:06:46 <RodgerTheGreat> unfortunately, I don't see any way to do input, so I don't think cat is possible either. :S 
17:07:38 <RodgerTheGreat> ~ and ! provide a facility for looping, and Mfit's ? seems to allow for branching 
17:08:49 <ais523> no, it doesn't, so the language can't be TC. The problem is that the only way to increase the program's length is by doubling it, so a nonterminating program is always odd for Mfit and even for Shanty 
17:09:03 <ais523> no, I'm wrong: Mfit can double it too 
17:09:15 <RodgerTheGreat> it would be a lot easier if instructions for each interpreter could act as NOPs for the other... 
17:09:34 <ais523> ...or if there were any NOPs at all 
17:09:53 <RodgerTheGreat> as it stands, it seems like it'd be very difficult to manipulate program length enough to generate useful output 
17:10:47 <RodgerTheGreat> is the program length mod 255ed before it's converted to ASCII? 
17:11:00 <ais523> if the program length is odd for Mfit, then ??...?? is a NOP 
17:11:10 <ais523> RogerTheGreat: I don't know. It isn't with my interpreter 
17:11:27 <ais523> (I just pass the length to chr() and see what happens.) 
17:11:35 <ais523> You get something like this: 
17:11:53 <ais523> ~bf +++++++++++++++++[->+++++++++++++++++<]>. 
17:11:54 -!- bsmnt_bot has quit (Remote closed the connection). 
17:12:30 <ais523> wait, why did the bot just crash when I did that? Outputting 17*17 can't be that hard, surely? 
17:12:46 <RodgerTheGreat> it might be easier to grow the program to fit into a character you needed by modding than to reduce it *and* increase it to generate strings 
17:13:12 <ais523> would get round the problem of output being impossible in sufficiently complex programs too 
17:13:30 <RodgerTheGreat> although, if we have a NOP, we can arbitrarily shorten the program whenever we want to 
17:13:49 <RodgerTheGreat> perhaps both of these techniques can be combined to achieve output 
17:14:20 <ais523> A sufficiently complex program needs a sufficiently large number of characters to represent it 
17:14:46 <ais523> and so can't do output except right at the end, and even then only a limited amount of output 
17:15:03 <ais523> so the language isn't BF-complete or even Underload-complete, at least 
17:15:19 <ais523> but it might still be Turing-complete, because that doesn't depend on I/O 
17:15:34 <RodgerTheGreat> thus, I would suspect that modding of program length is the intent 
17:15:59 <RodgerTheGreat> "...Because dupdog is only capable of storing a single value (the source code itself) in memory at a time, which may correspond to a finite set of 256 states..." 
17:16:14 <RodgerTheGreat> that implies that a program must have <= 255 characters. 
17:16:30 <ais523> I think that line at the bottom is probably wrong 
17:17:01 <ais523> let's deal without the arbitrary limit, and argue that as ASCII is a 7-bit code, it repeats every 128 characters. Then at least we might be able to get somewhere 
17:18:08 * ais523 updates their interpreter accordingly 
17:18:08 <RodgerTheGreat> and if we allow for modding, the program length can be any number- an infinite state automaton. I'm fairly certain that one-register turing machines exist, so turing completeness *may* be possible 
17:21:11 <RodgerTheGreat> alright, so we know that we can halt at any time by having a character other than ! or ? at an odd space in the initial source code. 
17:21:12 <ais523> updated interpreter: http://pastebin.ca/raw/397577 
17:21:26 <ais523> yes, we even get a nice error number as output 
17:21:50 <RodgerTheGreat> I think it's acceptable to generate some junk output as a consequence of halting 
17:22:12 <RodgerTheGreat> it's probably easier than making a program that ends by eating itself completely 
17:22:38 <RodgerTheGreat> I don't even think that's possible without generating more output 
17:22:39 <ais523> in theory the program could be reversed, and maybe a bit of duplication, so a non-command character won't necessarily halt wherever you put it 
17:22:58 <ais523> ???????? ends without output 
17:23:04 <ais523> (it's two nested NOPs) 
17:23:22 <RodgerTheGreat> I was forgetting the consequences of reversing the source... 
17:23:41 <ais523> and ~ might not end, because it might not be a ~ by the time you reach it 
17:24:29 <RodgerTheGreat> I get the sense that this will probably require a bit of malbolge-esque code buffering to ensure commands do what you expect them to 
17:26:22 <ais523> unfortunately, 128 is divisible by 4, so some duplication's needed to print characters with both odd and even ASCII codes 
17:27:08 <RodgerTheGreat> wrapping a code-reverse in an Mfit ? seems like a way to do some primitive branching, but it's necessary to make sure that you don't leave any ~'s for Shanty to encounter... 
17:27:21 <ais523> at least, no time soon 
17:27:31 <RodgerTheGreat> I guess that would allow for a conditional halt, at least 
17:28:00 <ais523> One of the more fundamental parts of the program state is whether Mfit or Shanty is seeing the even-length programs 
17:28:28 <ais523> In fact, it sort of seems more sensible to consider two-character commands than one-character commands 
17:29:11 <RodgerTheGreat> we can look at it this way- the two ways we can manipulate the program size, "s" are to subtract one or to multiply s by two 
17:29:37 <RodgerTheGreat> every time we muliply s by two, we are assured it is even 
17:29:57 <RodgerTheGreat> if the program is even for mfit, it will be odd for shanty 
17:30:05 <ais523> Yes. To think about it another way, the program+interpreter parity stays the same unless the odd-length interpreter duplicates 
17:30:58 <RodgerTheGreat> although, I was wrong- we can only either do s-1 or (s*2)-1 
17:30:58 <ais523> Another point: we have to duplicate or reverse the program _every time_ Shanty executes, which is every other command 
17:31:31 <ais523> no, ~abc changes to abcabc (see the wiki Talk page) 
17:33:07 <ais523> It's going to be easiest if we just let duplication roam free up to infinity. After all, it doesn't change either end of the program unless the program is very short; it only changes the length 
17:34:21 <RodgerTheGreat> if we use both "ends" of the program to store our useful code, they will be preserved through duplication. 
17:34:39 <ais523> I agree that the ends are what matters 
17:34:59 <RodgerTheGreat> so, we can use them as two "branches" that we'll probably need to interleave code between, using reverses as a compact way to NOP 
17:35:29 <ais523> reverse and duplicate are both NOPs in a way 
17:35:37 <ais523> they just have different effects on the program length 
17:36:08 <ais523> (Now I'm beginning to see why the language might not be TC; data storage is going to have to be /very/ non-localised) 
17:36:49 -!- tgwizard has joined. 
17:37:59 <RodgerTheGreat> if we design a program that doesn't fit evenly into 128 or 255, it should be a relatively simple matter of duplicating a specific number of times to get to each desired character, followed by an Mfit non-coding character 
17:38:31 <RodgerTheGreat> the problem of data being dependent on final program length is a tough one 
17:38:44 <ais523> yep. The parity isn't trivial to deal with, but it's workable-around 
17:39:21 <RodgerTheGreat> *or* we can just assume it's bigger than we need it to be and pad the center with a bunch of noncoding characters to make it the right sie 
17:40:07 <RodgerTheGreat> an optimal solution is hard, but an extremely nonoptimal one is much easier 
17:40:49 <RodgerTheGreat> since there doesn't seem to be a lot of sourcecode handy, doing it at all seems like enough of an accomplishment 
17:40:56 -!- jix has quit ("This computer has gone to sleep"). 
17:42:57 <RodgerTheGreat> so... what's an easy way to find the number of duplications we'll need to get each modulus value? 
17:43:46 <ais523> come to think of it, it's easiest just to get a bit higher than needed and NOP your way down 
17:44:32 <RodgerTheGreat> there are two kinds of NOPs- nops the interpreters skip over and nops that are never encountered at all 
17:44:50 <RodgerTheGreat> we can use anything as that second kind, and keep them in the creamy nougat center of our program 
17:45:54 <ais523> even better, adding 128 junk characters to the middle of the program has no visible effect on anything, until we reach them 
17:46:18 <RodgerTheGreat> use mfit's duplicate to make duplicates and either reverse (code continues from the opposite end, nop) or duplicate with shanty 
17:46:42 <ais523> you need the right interpreter to cause a duplicate according to whether the output character is odd or even 
17:46:58 <RodgerTheGreat> so the hello world will look like "codecodecodeJUNKJUNKedocedocedoc" 
17:47:07 <ais523> If you're not doing loops, it's actually not too hard to output arbitrary text, just generate the program from the outside in 
17:47:37 <ais523> and all you need to code is the transition from one character to the next 
17:47:59 <RodgerTheGreat> and at the end, we can encounter the junk as shanty to terminate 
17:48:38 <ais523> In fact, ~!~!~!~ multiplies the source length by 128, so if we don't care about being optimal we can just generate code for each character. 
17:49:01 <ais523> We can even use Mfit's ? as a NOP whether the program length is odd or even; just take it into account in all future code 
17:49:33 <ais523> OTOH, a 99 bottles of beer program shorter than the song itself would be difficult and/or impossible 
17:49:41 <RodgerTheGreat> so we just need to estimate an upper limit to the number of instructions we need to use for initial program length purposes, determine the actual number of flips and dups, generate the code and add padding as necessary 
17:50:22 <RodgerTheGreat> largely because storing strings seperately from counter data is effectively impossible 
17:50:52 <ais523> I'd go further and say storing counter data is incredibly difficult regardless of whether you have strings or not 
17:50:58 <lament> 3.141592653589793238462643383279......... 
17:50:59 <RodgerTheGreat> like storing it implicitly in the nesting of duplicates of something equally painful 
17:51:58 <ais523> The problem is that we only have effectively 6 states to play with: reversed or not * three possible permulations of ?!~ 
17:52:30 <RodgerTheGreat> I think ultimately your idea of Mfit ? NOPs could lead to a more compact solution, but would drastically increase the complexity of the program 
17:52:52 <ais523> the problem is that duplicating, reversing, and permuting are all independent of each other 
17:53:17 <ais523> so the only way you can store data in the program is the /amount of the program/ that was still there last time you duplicated 
17:54:26 <RodgerTheGreat> oh, jesus- I hadn't thought of that. This makes determining the number of flips and dups to arrive at a value is entirely dependent on the sequence of instructions that came before... 
17:54:57 <RodgerTheGreat> you'd have to build it an instruction at a time to get working right, I think. 
17:55:54 <ais523> no. But I think I know how I can write a Hello World-program-generating-program now 
17:55:59 <RodgerTheGreat> It might be best to write a program to generate this program, to reduce the potential for error 
17:56:08 <ais523> (i.e. a program in another language that generates Hello World in Dupdog) 
17:56:59 -!- ShadowHntr has quit ("End of line."). 
17:58:19 * ais523 sets out to try to write the program 
18:04:08 <RodgerTheGreat> there's nothing like the thrill of groundbreaking esolang coding 
18:07:55 -!- sebbu has joined. 
18:09:34 <RodgerTheGreat> ais523 and I have been figuring out how to do something vaguely useful in dupdog (http://www.esolangs.org/wiki/Dupdog) 
18:10:15 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
18:10:22 <RodgerTheGreat> we have a rough method that should create the first hello world in the language 
18:16:45 -!- nazgjunk has joined. 
18:38:59 <ais523> grr, it isn't working at the moment 
18:41:27 <RodgerTheGreat> and I have a theory that the resulting program is going to be fucking *huge* 
18:41:52 <ais523> you have to work from the inside and outside simultaneously 
18:42:28 <RodgerTheGreat> and getting the right value means hopping around a lot- rather like doing hello world in BF without - 
18:45:05 <RodgerTheGreat> average case, I estimate it should take something around 128 instructions to get a value from 0-255 as output. The number of hops could be much greater if your program doesn't try to get an optimal solution 
18:46:18 <RodgerTheGreat> and all the interdependencies for size make things really tricky 
18:50:29 <RodgerTheGreat> Do you think that genetic algorithms might be a good approach for this sort of thing? It worked for malbolge 
18:50:50 <ais523> no idea. I think that working it out deterministically will probably work better, though 
18:51:59 <RodgerTheGreat> I was just thinking that since we have a rough idea of how we want the program to "look", we could start the GA software with something pretty close to a correct answer, meaning reasonably rapid results 
18:52:15 <ais523> I'll give up for the time being; I just realised why the method I was using wouldn't work. I still think it's possible to do it deterministically, though 
18:52:29 <RodgerTheGreat> doing things deterministically will probably reap more benefits in terms of future work with the language 
18:53:07 <ais523> The problem's that you want to end up with a program to print 'ello, World!' after printing the H 
18:53:31 <ais523> but that you can't design the program to do that until you know what the H code is like, as it'll have to have a specific structure 
18:53:52 <ais523> and you can't design the H code until you know what code you're aiming for... 
18:54:36 <ais523> wait, most Dupdog programs don't care if they're duplicated, as long as they end up with the right length 
18:57:18 <RodgerTheGreat> that is correct- perhaps design each character's code segment to reset the code size to a multiple of some predictable value? 
18:57:31 <RodgerTheGreat> it adds more padding, but then you can build pieces independently 
18:57:34 <ais523> that's it, ~!~!~!~ resets the code size to a multiple of 128 
18:57:46 <ais523> lament: output's done when Mfit encounters an unrecognized character 
18:57:57 <ais523> it outputs a character depending on the length of the program 
18:58:01 <RodgerTheGreat> lament: the esolang page is here: http://www.esolangs.org/wiki/Dupdog 
18:59:36 <RodgerTheGreat> we chose to interpret the spec as saying that we take the program length modulo 128/256 to determine the printed char, so all we care about is that modulus 
18:59:57 <RodgerTheGreat> thus, you can have a program of any size and still be capable of output 
19:01:02 <lament> it's in the Implemented category 
19:01:24 <lament> is there a ref. implementation? 
19:01:31 <ais523> I wrote an implementation just now; however, the category was there before I wrote it. 
19:01:55 <ais523> Of course, we'll need a new optimizing implementation to have any chance of fitting Hello, World! into memory the way I plan to write it 
19:02:56 <RodgerTheGreat> and if our interpretation of the spec leads to the first "useful" program, I imagine it will become canonical for exactly that reason 
19:03:27 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 
19:04:49 -!- nazgjunk has joined. 
19:04:49 <ais523> damn, my latest idea doesn't work either; ~!~!~!~ resets the code size to something that isn't a multiple of 128 because those characters are disappearing all the time 
19:05:31 <ais523> it does have a fixed value modulo 128, though 
19:06:02 <RodgerTheGreat> well, any reset value works as long as it's the same modulo 128 every time 
19:06:29 <ais523> If we only want to print characters with odd ASCII codes, we can just write a really long sequence of ??...?? NOPS and change appropriate characters to output characters 
19:07:36 <ais523> something similar can be done with even ASCII codes 
19:08:15 <ais523> Actually... the best way to think about a half-finished Dupdog program is as a sequence of commands at the start, commands at the end, and a /length/ for the whole thing 
19:08:22 <ais523> then it might be possible to do it outside-in 
19:08:43 <lament> the specification is pretty bad 
19:09:06 <lament> it's not clear whether the current command is counted as part of the source 
19:09:15 <RodgerTheGreat> lament: a few things are vague, but it's understandable. The talk page helps 
19:09:26 <ais523> no for duplicate/reverse, yes for length measurement, as far as I can tell 
19:13:12 <RodgerTheGreat> lament: we're pretty sure the "computational class" description is incorrect, although we're not certain it's turing-complete 
19:13:46 <RodgerTheGreat> we haven't really proven anything yet with regards to arbitrary branching (or an analogue), and data storage is a bitch 
19:25:22 <lament> (was he on crack when he came up with this?) 
19:26:00 <ais523> If I remember correctly, they were messing around with the bots. 
19:26:06 <ais523> Someone did something like this: 
19:26:08 <RodgerTheGreat> I would be fascinated to know the meaning of "mfit" and "shanty" 
19:26:31 <ais523> !daemon dog bf >,[>,]<[.<] 
19:26:59 <ais523> !daemon dup bf >,[>,]<[<]>[.>]<[<]>[.>] 
19:27:33 <ais523> 'cept my coding hasn't worked 
19:27:41 <EgoBot> 1 ais523: daemon ul bf 
19:27:41 <EgoBot> 2 ais523: daemon deadfish funge93 
19:27:41 <EgoBot> 3 ais523: daemon dog bf 
19:27:43 <EgoBot> 4 ais523: daemon dup bf 
19:28:03 <ais523> EgoBot is 10=newline, isn't it? 
19:28:26 <lament> so after the source code is duplicated, for the next instruction the length of source code is always EVEN? 
19:29:02 <RodgerTheGreat> it might be worthwhile to skim the logs from earlier today 
19:29:13 <ais523> !daemon dog bf +[->,----------[>,-----------]<[+++++++++++.[-]<]+] 
19:29:50 <ais523> !daemon dog bf +[->,----------[>,-----------]<[+++++++++++.[-]<]++++++++++.[-]+] 
19:30:12 <ais523> Now what have I done wrong? 
19:31:16 <ais523> bsmntbombdood: bsmnt_bot didn't come back online after last time I tried to give it a BF program 
19:31:25 <ais523> (and it wasn't even an infinite loop) 
19:38:57 <ais523> !daemon dog befunge 0>~# :# 5# 5# +# -# _> .# _,$ 
19:39:09 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 
19:39:12 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 
19:39:19 <ais523> !daemon dog funge93 0>~# :# 5# 5# +# -# _> .# _,$ 
19:39:20 <lament> all i can see so far is that dupdog really likes printing the fourth character. 
19:39:51 <EgoBot> 10 100 114 119 44 108 101 0  
19:40:20 <ais523> !daemon dog funge93 0>~# :# 5# 5# +# -# _> ,# _,$ 
19:41:48 <ais523> !daemon dog funge93 0>~# :# 5# 5# +# -# _$> :# ,# _,$55+, 
19:42:49 <ais523> !dog .won gnikrow eb ot smees tI 
19:42:51 <EgoBot> It seems to be working now. 
19:43:17 <ais523> One-line Befunge has a logic very like REVERSE. 
19:44:13 <ais523> except that in Befunge, loops always return true to the left, and in REVERSE it depends on the direction you're going in. 
19:49:35 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 
19:50:00 -!- nazgjunk has joined. 
19:50:05 <RodgerTheGreat> it seems like just using mfit to do duplications and relying on shanty to make up most of your code logic is a more predictable way to code 
19:50:46 <ais523> then we'll need a new interpreter that can handle the colossally large progam that will result 
19:51:14 <ais523> Maybe one that stores the program compressed? (It's going to consist of lots of repeated stuff.) 
19:52:06 <ais523> not exactly, because we need to store near-repetitions and repetitions of groups of more than one character 
19:52:21 <ais523> It would probably also need a way to store nested repetitions 
19:53:03 <ais523> You could store it as a stack of pointers into the original program and into itself 
19:59:52 -!- ais523 has quit ("Sorry I couldn't get that Dupdog Hello, World! to work"). 
20:29:07 -!- sebbu2 has joined. 
20:35:35 <GregorR> http://i15.photobucket.com/albums/a379/GregorRichards/lcarssshot.png 
20:41:06 <GregorR> It's awesome for a tablet PC :) 
20:41:38 <GregorR> The new tablet PC I'm getting in a week or so allows you to use your finger for input instead of just the pen. 
20:41:52 <RodgerTheGreat> I've wanted one for quite a while, but I keep hoping that apple will make one 
20:41:54 <GregorR> And even though LCARS isn't real, it's definitely very finger-clickable ;) 
20:44:06 <RodgerTheGreat> this may be the next best thing, though: http://axiotron.com/ 
20:45:30 <RodgerTheGreat> but OSX has built in keyboard emulation and pretty spiffy handwriting recognition, so no huge biggie 
20:46:05 <GregorR> I wouldn't give up the keyboard ... programming with handwriting recognition and/or onscreen keyboard == basically impossible. 
20:46:10 <RodgerTheGreat> I probably wouldn't use one of these for writing school papers or coding anyway- I'd be too busy doodling 
20:46:26 <GregorR> See, I have a tablet PC as my general-purpose laptop. 
20:46:33 <GregorR> So I can't sacrifice the keyboard. 
20:47:14 <RodgerTheGreat> well, I'll bet when Apple finally gets off their asses and makes a proper tablet they'll have a good solution to the problem 
20:47:51 -!- sebbu has quit (Success). 
20:47:58 <GregorR> Yeah ... like a rotating screen :P 
20:49:11 <RodgerTheGreat> I'm not a huge fan of the iPhone... mainly because I don't like cellphones and I dislike phone bills even more. If it had been designed as more of a PDA, I'd probably already have one 
20:49:58 -!- jix__ has joined. 
20:49:59 <RodgerTheGreat> fortunately, the iPod seems to be slowly aiming in that direction, so I may see my dream device in a couple of years 
20:52:44 <RodgerTheGreat> if Apple just released an iPod SDK to take advantage of what the "games" feature opened up, we wouldn't need things like Rockbox or iPodLinux, and a lot of people would be happy 
20:53:16 <RodgerTheGreat> I can't really say "everybody's happy", because bleeding-heart open-sourcers and the linux crowd are rarely if ever happy. 
21:02:05 -!- jix__ has quit ("This computer has gone to sleep"). 
21:03:34 <GregorR> I hate Apple because of their interaction with the F/OSS community, not because they write proprietary software. 
21:04:27 <GregorR> Their interaction with the F/OSS community has been incredibly dishonest and immoral, carefully crafted to make naive people think they're a F/OSS-supporting company. 
21:05:00 <GregorR> At least Microsoft doesn't /pretend/ to support F/OSS. 
21:06:00 <RodgerTheGreat> it has a lot to do with the underlying differences between the BSD license and the GPL 
21:06:38 -!- jix__ has joined. 
21:07:24 <GregorR> No, it doesn't. Everything GPL that they use, they do /precisely/ what they're legally required to do, no more. BSD software they mix with proprietary software to create non-F/OSS software. The original chunk of BSD-licensed code they use, they do usually continue to distribute, but they have no qualms with making it worthless in isolation. 
21:08:11 <GregorR> Mind you, I'm not saying they've done anything /illegal/, as they haven't. Just unethical. 
21:10:57 -!- jix__ has quit (Client Quit). 
21:13:11 -!- jix__ has joined. 
21:20:10 <lament> i'm beginning to suspect a 'hello world' might be impossible 
21:22:32 -!- sebbu2 has quit ("reboot"). 
21:25:39 <lament> i have no proof though... 
21:26:27 -!- Sgeo has joined. 
21:26:56 <lament> RodgerTheGreat: you there? 
21:27:09 <lament> RodgerTheGreat: http://www.esolangs.org/w/index.php?title=Dupdog&diff=6607&oldid=6606 
21:27:21 <lament> at some point he put an implementation in 
21:28:16 <lament> note how he apparently wraps by 257 
21:28:31 <lament> that might be just a typo of course 
21:29:04 <lament> if it's not a typo, it changes everything :D 
21:29:21 <lament> probably a typo, though 
21:29:33 <lament> no need to raise our hopes too high 
21:30:27 <RodgerTheGreat> well, it *could* be intentional- this is #Esoteric, after all 
21:30:27 -!- UpTheDownstair has joined. 
21:30:45 <RodgerTheGreat> fortunately, it doesn't break our general solution to the problem, just the details of how it works 
21:31:06 <lament> as far as i'm concerned, it would make things a lot easier 
21:31:47 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
21:32:14 -!- UpTheDownstair has changed nick to nazgjunk. 
21:32:54 <RodgerTheGreat> aside from confirming the theory that we do in fact wrap... 
21:33:55 -!- sebbu has joined. 
21:42:51 -!- oerjan has joined. 
21:45:18 <lament> i have written hello world for the case where we wrap on 257 
21:45:59 <lament> it's 2386 characters long. 
21:46:31 <lament> the case where we wrap on 256 is much much harder. 
21:46:42 <lament> i still think it's just a typo 
21:47:26 <lament> need to ask cakeprophet... 
21:49:07 <lament> the problem with 256 is that it's an even number 
21:49:38 <RodgerTheGreat> you end up needing to do less "nop" things to shave off an instructions 
21:49:56 <lament> suppose we want to print an 'even' char 
21:50:26 <lament> if we wrap on 256, that means the program that prints this char has to be of even length 
21:50:34 <lament> if we wrap on 257, the program could be either even or odd 
21:53:05 <RodgerTheGreat> well, if the hello world works and it's the first program coded in the language, doesn't that instantly make it canon? 
21:53:28 <lament> well, 257 is a strange thing to wrap on, and he did remove that implementation from the wiki 
21:54:11 <lament> i'm not sure pastebin likes being sent stuff to 
21:55:27 <lament> http://pastebin.ca/397942 
21:56:22 <lament> It's practically trivial. In particular, the source is never doubled. 
21:57:02 -!- nazgjunk has quit ("Leaving"). 
21:57:17 <lament> can you try it in the other interpreter? 
21:57:36 <RodgerTheGreat> sweet jesus I do not understand that... wait, are you using a series of NOPs to gradually decrease the program value, and using a C to dump out each character? 
21:58:24 <RodgerTheGreat> I believe the proper response to that lies here: http://www.myconfinedspace.com/wp-content/uploads/2007/03/omgwtfbbq-39352.jpg 
22:03:47 <RodgerTheGreat> got it. Now I need to find where he specified wrapping... 
22:04:23 <oerjan> I haven't read all the logs yet, but it occurs to me that there should be a way to compress the program with all that duplication in it, so you could worry less about space. 
22:04:58 <RodgerTheGreat> although, lament's solution doesn't depend on duplication at all 
22:06:07 <RodgerTheGreat> http://pastebin.ca/raw/397577 <- I'm having difficulty figuring out what part of this to modify for mod 257 wrapping... 
22:06:34 <lament> http://pastebin.ca/397959 
22:06:42 <oerjan> That's not perl, that's thutu2perl 
22:07:14 <lament> RodgerTheGreat: i'm guessing you need to change those '128' to '257'? 
22:07:50 <RodgerTheGreat> lament: that's what I was thinking, but there seemed to be more than I was expecting- I'll just give it a shot and see what happens. 
22:08:37 <oerjan> might be an idea to use the original thutu source. 
22:09:10 <lament> RodgerTheGreat: use the prettified version, it's way more informative :) 
22:10:10 <oerjan> i would presume that everything from the original thutu is within that large while loop. 
22:13:46 <oerjan> on the other hand the original thutu may not be much better, the part before the and's is probably the same and the part after just boilerplate for each thutu primitive command 
22:15:03 <oerjan> which means we could probably reverse the compilation rather easily. 
22:15:43 <RodgerTheGreat> well, I'm not sure if it doesn't work or I'm just using the interpreter properly. :/ 
22:22:25 <RodgerTheGreat> which is currently looking fairly impossible without bruteforcing 
22:22:26 <lament> i still think it's wrong to wrap on 257 
22:22:44 <lament> his interpreter is full of typos and doesn't even run 
22:23:21 <RodgerTheGreat> and that's probably why nobody else has tried to code in this language 
22:24:02 -!- bsmnt_bot has joined. 
22:25:14 <oerjan> writing a dupdog interpreter directly in perl should be trivial. 
22:27:22 <bsmnt_bot> IOError: [Errno 2] No such file or directory: '/bot/scripts/foo' 
22:51:00 -!- nazgjunk has joined. 
22:54:04 -!- nazgjunk has quit (Client Quit). 
23:12:21 <oerjan> simply add a new initial state to the initial state of the maximal one for n, which transitions to the original immediately.  Thus BB(n+1) >= BB(n)+1. 
23:14:38 <oerjan> in fact i think that can be improved to something approximately like BB(n+1) >>= BB(n)*(1+1/n) 
23:15:07 <oerjan> namely, let s be the _most_ used state for the maximal one for BB(n). 
23:15:58 <oerjan> Now make a new one which always pass through s and the new state in sequence.  Thus at least 1/n of the steps will be doubled. 
23:16:30 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
23:17:31 <oerjan> but intuition tells that it of course grows much more rapidly than that from some point. 
23:18:30 <oerjan> because in fact there can be no computable function f such that f(BB(n)) >= BB(n+1) 
23:21:23 <oerjan> although proving that f(BB(n)) < BB(n+1) for _every_ n greater than some limit might require some cleverness. 
23:24:17 <oerjan> f(BB(n)) < BB(n+k) for some k and all n seems like it could be done, if k is big enough to embed computation of f in 
23:25:26 <Sgeo> What does "grows faster than" mean? 
23:26:17 <Sgeo> "computable function f such that f(BB(n)) >= BB(n+1)" 
23:27:51 <oerjan> it means at a minimum that lim (x -> inf) f(x)/BB(x) = 0  
23:28:53 * Sgeo doesn't understand "f(x) = o(BB(x)) 
23:28:59 * Sgeo understands the limit 
23:29:12 <oerjan> well it's a notation for the limit 
23:29:46 -!- ShadowHntr has joined. 
23:31:41 <Sgeo> Can there exist a computable function f(x) such that f(x) > BB(x) when x is less than an arbitrary integer a? 
23:31:43 <oerjan> HE WAS EATEN BY THE COOKIE MONSTER 
23:32:20 <oerjan> just let f(y) = 1 + max (x <= a) BB(x) 
23:32:39 <oerjan> as you see it can even be constant 
23:33:22 <Sgeo> umm... BB(x) isn't computable.. am I missing something? 
23:33:37 <oerjan> mind you the constant exists in theory but we cannot actually find it for any but a finite number of a's 
23:34:19 <oerjan> well the point is that every constant is computable in isolation. 
23:34:47 <oerjan> it's only functions that can be theoretically uncomputable 
23:35:53 <oerjan> so it is sort of cheating 
23:37:40 <oerjan> the constant "exists", but its decimal sequence cannot be proven to satisfy its definition (or for that matter, written down within the space of our universe). 
23:38:14 <Sgeo> "our universe"? So it's a finite amount of space? 
23:38:22 <bsmntbombdood> the busy beaver function is able to solve the halting problem too 
23:38:31 <oerjan> the visible universe, then. 
23:38:58 <Sgeo> No, I meant the space the number would require 
23:39:37 <oerjan> well it is a finite number, so it has a finite, but totally impractical and perhaps physically non-existing size. 
23:40:59 <oerjan> but even writing down the _size_ would be impossible in practice.  That's what being greater than any computable functions you can think of does. 
23:42:01 <bsmntbombdood> oh nice, the busy beaver function is able to prove theorems experimentally 
23:42:03 <oerjan> i.e. the number is greater than Ackermann(1000,1000), which is itself an entirely computable number but still of massively "unphysical" size. 
23:43:07 <oerjan> *computable number = computable function of reasonable numbers 
23:44:33 <Sgeo> grr I don't have haskell installed I think 
23:44:40 * Sgeo is reading about factorials 
23:44:44 <Sgeo> and the gamma function 
23:45:10 <lament> yeah, factorials are a cool Haskell feature. 
23:45:20 <oerjan> apropos haskell, the Data.Sequence module seems eminently suited for optimizing Dupdog, since it can concatenate in logarithmic time 
23:46:01 <oerjan> the language everyone was discussing during most of today 
23:46:48 <oerjan> in fact you arrived just about when the discussion ended (just as i left just before it began) 
23:47:12 <RodgerTheGreat> and seveninchbread was probably stoned when he made it 
23:59:33 -!- tgwizard has quit (Remote closed the connection). 
00:40:50 <oklopol> i fast-forwarded the whole conversation as pointless... then at some point found out dupdog does a modulo when outputting making it sensible... but decided not to read again :P 
00:44:31 <oerjan> Argh.  Wait a minute.  The Data.Sequence module cannot be used anyhow. 
00:45:02 <oerjan> It stores lengths as Ints, making it useless for massively nested duplications. 
00:46:25 * oerjan throws his beginning Dupdog implementation in the garbage bin. 
00:46:50 <oerjan> ok, maybe not literally. 
00:47:55 <lament> oerjan: that's pretty dumb :( 
01:05:51 -!- sebbu has quit ("@+"). 
01:18:23 <oerjan> Hm, a BSD style license means you can bundle freely, doesn't it? 
01:18:51 <oerjan> given the discussion previous today 
01:19:08 -!- RodgerTheGreat has quit. 
01:20:35 -!- RodgerTheGreat has joined. 
01:28:16 <oerjan> I found a downloadable Data.FingerTree module in which you can select any Monoid as your size measure. 
01:28:30 <oerjan> (Including the trivial ()) 
01:56:43 <oerjan> (it's the underlying representation for Data.Sequence) 
02:10:20 -!- RodgerTheGreat has quit. 
02:12:16 -!- RodgerTheGreat has joined. 
03:06:48 -!- oerjan has quit ("leaving"). 
03:35:56 -!- oerjan has joined. 
04:17:42 -!- ShadowHntr has quit ("End of line."). 
04:26:05 -!- GreaseMonkey has joined. 
04:28:46 -!- oerjan has quit ("leaving"). 
04:31:39 -!- GreaseMonkey has quit ("eek, pc going awol, back in 5"). 
04:42:50 -!- RodgerTheGreat has quit. 
04:44:00 -!- RodgerTheGreat has joined. 
05:13:44 <RodgerTheGreat>  /// is interesting, but I'm not sure you could really implement arbitrary looping: http://www.esolangs.org/wiki/Slashes 
05:14:52 <RodgerTheGreat> I think you could take a sequence like Code*, and then have "Code" contain instructions to rewrite "*" as "Code*" 
05:15:12 <RodgerTheGreat> it'd be interesting to see if this language is turing complete... 
05:15:41 <RodgerTheGreat> has anyone ever seen any TC proofs for string rewriting languages? 
05:23:14 <RodgerTheGreat> if looping could be implemented, it might be possible to implement some kind of cyclic tag system from within a string rewriting language, proving computational usability... this could be interesting 
05:26:59 <RodgerTheGreat> well, goodnight everyone- I might play with /// tomorrow... 
05:27:12 -!- RodgerTheGreat has quit. 
06:30:16 -!- Sgeo has quit ("Leaving"). 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:22:28 -!- Sukoshi has joined. 
09:23:07 -!- GreaseMonkey has joined. 
09:53:55 -!- Sukoshi has quit ("待っているね、永遠の彼女。素晴しい楽園が二人だけの為に見付かった。忍ばせない。彼女). 
10:05:13 -!- sebbu has joined. 
10:24:16 -!- nazgjunk has joined. 
10:28:54 -!- GreaseMonkey has quit ("Think you're a sore loser? Go to ED. They'll make you look angelic."). 
10:50:43 <oklopol> RodgerTheGreat, Thue has a brainfuck interpreter in it, so cyclic tag should be trivial... 
10:51:07 <oklopol> might read the logs though /megone-> 
11:48:53 -!- jix__ has joined. 
12:12:10 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
12:12:31 -!- nazgjunk has joined. 
12:27:01 -!- jix__ has changed nick to jix. 
12:46:04 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
12:46:37 -!- nazgjunk has joined. 
14:24:21 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
14:45:11 -!- oerjan has joined. 
15:18:44 -!- nazgjunk has joined. 
16:26:17 -!- tgwizard has joined. 
17:35:54 -!- oerjan has quit ("leaving"). 
17:45:04 -!- nazgjunk has quit ("Leaving"). 
18:15:36 <oklopol> hehe reading english grammar, "in oldish english the infinitive can be used as the subject of a sentence" and thinking why did they demote functions to second-class citizens :P 
18:16:00 <oklopol> (the grammar was finnish, it didn't say 'oldish') 
18:20:45 -!- nazgjunk has joined. 
18:28:38 -!- graue has joined. 
19:04:20 -!- nazgjunk has quit ("Leaving"). 
19:50:50 -!- SevenInchBread has joined. 
19:51:38 <SevenInchBread> wget -q --read-timeout=0.0 --waitretry=5 --tries=400 --background http://foo.bar/ 
19:55:55 <graue> wget runs on windows 
20:13:45 <SevenInchBread> graue, is it on by default? I can use it from the command prompt 
20:18:20 -!- nazgjunk has joined. 
20:21:27 <SevenInchBread> DNS is (other than ISPism) the only part of the Internet I can think of that is mandatorially business-ized. 
20:22:41 <oklopol> trues, is that what annouy you? 
20:22:50 <oklopol> because i dislike the system itself 
20:23:56 <SevenInchBread> it's kind of confusing... but I really don't like the commercial aspect. 
20:25:33 <SevenInchBread> all the rest of the Internet proves that "you get what you pay for" is false... except this weird internet real-estate system that gives commercial entities more sway than the average socket connection. 
20:26:56 <oklopol> mm i don't really care for the practical aspect so... i'll talk about my new language lopoda 
20:29:44 <SevenInchBread> the entire basis for registrars is that it ensures you can trust the nameservers you're dealing with... but in all my experience  anything on the internet involving money is usually more manipulative than free services. 
20:39:44 <lament> shut up with your proposals and explain dupdog 
20:39:57 <SevenInchBread> Let's create an experimental computer network... so we can fiddle around with ways to make the existing Internet better, without the worrys of standardization and convention 
20:40:12 <SevenInchBread> dupdog is completely useless.... I can't even figure out how to do Hello, World! with it. 
20:40:24 <lament> what i need explained is 
20:40:45 <lament> you had at one point put up a buggy not-working implementation on the wiki page 
20:41:04 <lament> in this implementation, when mfit output characters, it wrapped on 257 
20:41:10 <SevenInchBread> yeah, that one didn't work... not sure why... haven't bothered delving further. 
20:41:14 <lament> is that a typo, or you did you actually mean it to wrap on 257 
20:41:26 <lament> because if it does wrap on 257, i have written hello world for it 
20:41:37 <lament> and if it doesn't, it might be impossible to do so 
20:42:25 <lament> http://pastebin.ca/397959 
20:43:05 <oklopol> if it wraps on 257 there is no 257 
20:43:17 <oklopol> 256 is the termination character 
20:44:14 <lament> well, they spell hello world 
20:44:20 <oklopol> SevenInchBread didn't you make this language? :D 
20:44:40 <lament> the problem with esoteric internet is that we'd have to use the existing infrastructure which only understands IP 
20:44:52 <lament> so we could only build stuff on top of IP, which is lame 
20:45:04 <SevenInchBread> right right... but it would be easy to make  a high-level emulation of a low-level internet. 
20:45:07 <lament> unless we physically connect our computers ourselves 
20:45:21 <oklopol> not really, since it could be easily converted to non-ip dependant 
20:45:33 <SevenInchBread> for proof-of-concept more than any practical advantage. 
20:45:47 <lament> so something like Tor? 
20:46:25 <SevenInchBread> not necessarily... i was thinking more or less as a sandbox for making protocols and systems and testing how awesome they are. 
20:46:53 <SevenInchBread> the problem with a huge international network is that a status quo of accepted standards emerges - even if they're not necessarily the best way to do it. 
20:48:13 <lament> something tells me that, this being #esoteric, you perhaps don't have the optimal efficiency in mind 
20:48:50 <SevenInchBread> ...yeah, don't care how fast it is... unless the point of the experiment is to test faster methods of communication. 
20:49:17 <lament> well, all we need for this is protocol specification 
20:49:54 <SevenInchBread> A protocol without an implementation is jsut a.... protocol. 
20:50:32 <lament> well, a protocol specification + at least one person actually bothering to write an implementation. 
20:51:44 <SevenInchBread> communication requires multiple parties that understand the protoocl.... thus, to test out new protocols, you need a network of talking heads that speak the same language. 
20:52:55 <SevenInchBread> we can incorporate it into esoOS... when it's first released 20 years from now. 
20:54:06 <lament> i have an idea! When you send a packet, you send it to a random address. If the computer at that address is not the recipient, it must pass the packet along to another random address - but only after adding some more stuff to the packet. 
20:54:16 <lament> .....okay maybe that's not such a brilliant idea :D 
20:55:28 <SevenInchBread> I like IP myself... not sure what you could do differently with it. 
20:56:25 <SevenInchBread> maybe "esoteric wide web" is more a descriptive term for what I had in mind.  
20:56:35 <lament> we could just use gopher 
20:56:45 <lament> it's already extensively implemented, and it's still completely esoteric. 
20:57:14 <lament> if you _really_ want to experiment with other low-level protocols, get into amateur radio. 
20:58:57 <SevenInchBread> a protocol for defining protocols would be sweet... even though it would basically entail creating an entire programming language and sending it across lines... and it would be the biggest security hazard ever. 
21:00:25 <lament> you know what's pretty cool? termcast 
21:00:31 <lament> lets other people look at your terminal 
21:02:04 <SevenInchBread> one of the common issues I see with networking is that.... while it's easy to talk to the other end, it's hard to create a persistent conversation. 
21:03:30 <oklopol> it's all so bad one starts crying the first time they learn about it 
21:03:55 <SevenInchBread> I'm not sure what I mean exactly.... I'm kinda thinking specifically of HTTP and other stateless protocols... and dynamic IP addresses. But I don't think getting rid of a dynamic address is such a hot idea. 
21:04:48 <lament> it can be done, certainly 
21:05:14 <SevenInchBread> but that takes away a lot of the awesomeness of the Internet. 
21:05:43 <SevenInchBread> ...mainly, anonymity. It's why the internet is a cloud and not a city. 
21:07:39 <lament> your IP is static to a fairly large extent. 
21:08:09 <lament> that is, your registrar has some subnet or whatever 
21:08:28 <lament> and you get an IP from their, and they have IPs assigned to them 
21:08:35 <lament> and there's a central authority that manages it all 
21:08:45 <SevenInchBread> ...straying back to programming languages for a second, I've got an idea for a language read concurrently by multiple interpreters with different meanings for different symbols... and a bitwise brainfuck with some basic ideas of quantum entanglement. 
21:08:56 <lament> i could get to your ip by just randomly checking all the computers on your subnet 
21:09:19 <SevenInchBread> wouldn't take not really... just all possible bit combinations. 
21:09:46 <lament> i remember something like that 
21:10:25 <SevenInchBread> quantum entanglement with bitwise brainfuck basically makes an event-programming-type thingy. 
21:11:01 <lament> haven't i implemented that? 
21:11:13 <lament> i even put it in egobot 
21:11:50 <lament> no idea what the syntax would be 
21:12:28 <lament> http://esolangs.org/wiki/Quantum_brainfuck 
21:12:52 <SevenInchBread> ...so..... what's the idea behind the dupdog program? Found any properties that can be exploited? 
21:13:17 <lament> yes, the fact that 257 is an odd number :) 
21:13:43 <lament> the program is almost trivial, it's a sequence of NOPs and prints 
21:13:46 <lament> there's no duplication 
21:15:09 <oklopol> just a print every time the program size is the right size mod 257? and one char is cut off every cycle? 
21:15:30 <lament> the only trick is that only mfit can print. 
21:15:34 <oklopol> hmm, can you explain why 256 would've been bad? 
21:15:47 <lament> so if the program is of even size, and mfit prints 
21:16:00 <lament> then every time mfit runs, the program will still be of even size 
21:16:11 <lament> since one character is removed each step, and new ones are never added 
21:16:28 <lament> so if we wrap on an even number (256), mfit can never print a half of all characters 
21:16:44 <oklopol> what's mfit do? or is it faster to read it? 
21:17:18 <oklopol> link it if you have it open 
21:17:29 <oklopol> i never remember the page :D 
21:17:40 <SevenInchBread> dupdog was a strange attempt at playing with the semtantic interpretation of syntax. 
21:19:22 <SevenInchBread> If I knew it has any sort of properties to it for creating abstractions, I'd add macro substitution into it...  
21:21:36 <SevenInchBread> dupdog isn't very conceptually awesome... so I think my next attempt in that area will involving concurrently running interpreters on the same characters. 
21:26:08 <oklopol> everybody makes one, SevenInchBread tells us what the interpreters can or can't do 
21:26:14 <oklopol> and everyone willing makes one interpreter 
21:26:27 <oklopol> and each is assigned the same char simultaneously 
21:26:36 <SevenInchBread> SOUNDS LIKE A JOB FOR THE EDUCATED BLIND ESOLANG COMMITEE. 
21:29:10 <oklopol> i used to be pretty confident about my english... i seem to know nothing about articles though now that i've read the grammar... 
21:30:02 <SevenInchBread> oklopol, that sounds like a corny joke... but I haven't figured out the punch line. 
21:31:15 <oklopol> i'm reading english grammar, there is no logic on the 'the' article when it comes to buildings, countries etc 
21:31:43 <oklopol> and i thought i'd've known them all... just like that... but most come a suprise for me 
21:32:52 -!- nazgjunk has quit ("Leaving"). 
21:34:09 <oklopol> 6 pages of rules for when to use 'the' 
21:34:30 <oklopol> bsmntbombdood you've complained that before 
21:34:44 <oklopol> and still i think it deserves it :) 
21:37:36 <SevenInchBread> the unfortunate side-effect of living in a entirely-English region is not having any urgent need to learn multiple language. 
21:38:27 <lament> oklopol: the articles are very very tricky 
21:38:34 <lament> basically the only way to learn them is through use 
21:40:12 <oklopol> yeah, i know, what discouraged me was i did so many errors... and i use this language more than my native one :\ 
21:40:38 <SevenInchBread> ....I know them, but I don't know the rules... using an article incorrectly simply doesn't "sound right". 
21:41:47 <lament> that's what fluency is all about 
21:43:59 <oklopol> well, i knew most of them... maybe my skillzorz will automatically improve with time 
21:44:06 <oklopol> bsmntbombdood what don't you understand? 
21:45:47 <oklopol> r <space> <square> <space> <square>R, 
21:47:29 <oklopol> if you mean you don't understand how to code in that, i can't help you 
21:47:38 <oklopol> because i can't figure it out 
21:47:54 <oklopol> i guess that's what you meant 
22:00:40 <SevenInchBread> hmmm... studying the morphology of a language sounds like a good way to make the language more intuitive... since it's based on the patterns recognized by fluent speakers. 
22:00:53 <oklopol> SevenInchBread, i'm pretty sure you couldn't tell all of the cases of 'the' no matter how native you were 
22:01:13 <oklopol> if the book is correct, british bridges aren't 'the' while american bridges are 
22:01:34 <oklopol> so... you'd have some memory :D 
22:02:32 <oklopol> that'd be Golden Gate Bridge 
22:02:41 <oklopol> i was fishing under Golden Gate Bridge 
22:03:30 <oklopol> but golden gate is american 
22:03:33 <graue> hmm, "london bridge" but "the golden gate bridge"? 
22:03:51 <SevenInchBread> I thought you meant British English used a instead of the. :P 
22:04:49 <oklopol> graue, you can correct me if the book is wrong 
22:05:00 <oklopol> but yes, that's what is says 
22:05:51 <oklopol> except for british rivers that carry the name of the river they're built across... they're 'the' 
22:06:16 -!- oerjan has joined. 
22:07:20 <SevenInchBread> hmmm... being native to United Statesian English... hearing "Let's go fishing for large octupii below FooBar Bridge" does sound paticularly Britishy to me, if not some kind of non-American accent. :P  
22:09:13 <SevenInchBread> hmmmm.... yeah, English articles are definetely weird. 
22:11:10 <oklopol> sorry, i get some serious hard-on when correcting americans' english 
22:12:55 <lament> i'm terrible with decency. 
22:13:01 <lament> and half-grammatical with spelling. 
22:14:19 <graue> "london bridge" and "the golden gate bridge" sound right to me 
22:14:43 <SevenInchBread> English is.... a deformed fusion of Germanic and Romanic rules. 
22:14:55 <oklopol> all natural languages suck 
22:15:43 <SevenInchBread> I'd kill myself if natural languages took on the consistent design of artifical ones. 
22:15:51 <lament> i don't think english has much romance grammar 
22:16:42 <SevenInchBread> Most of the romance influence is in some word etymologies 
22:17:59 <oklopol> well, a million per cent of english vocabulary is directly from french 
22:18:08 <oerjan> i don't see why dupdog with even wrapping cannot work, you can use duplication to turn odd into even and both Mfit and Shanty can do that. 
22:18:14 <oklopol> and i believe that's romance 
22:21:53 <SevenInchBread> French is Germanic.  Scanning over German I see tons of German words that resemble English words... more so than French words. 
22:22:52 -!- RodgerTheGreat has joined. 
22:23:11 <oklopol> i thought it was romance... what is romance? :P 
22:23:18 <oerjan> so English has Germanic grammar with tons of Romance vocabulary, French has Romance grammar with tons of Germanic vocabulary 
22:24:57 <SevenInchBread> Romance is Spanish, italian, Romania, Portugese, and.... 
22:27:07 <SevenInchBread> it decended from Latin.... but I can see much more Germanic influences in French than I can the other Romance languages. 
22:28:41 <oerjan> France was rather thoroughly invaded by the Germanic Franks... 
22:29:26 <oerjan> Germany and France used to be one kingdom for a while 
22:30:30 <oerjan> an Reto-Romansch, Sardinian, probably Corsican 
22:31:18 <SevenInchBread> so yeah... Romance grammar with tons of Germanic vocabulary. 
22:31:22 <oerjan> (probably mispled some) 
22:33:19 <RodgerTheGreat> what spurred a discussion regarding the origin of human languages? 
22:33:31 <oklopol> SevenInchBread please don't confuse me like that 
22:33:45 <oklopol> my systems get all mized upz 
22:34:29 <oerjan> lessee it started with oklopol complaining how he didn't know all the rules for using "the" 
22:34:42 -!- nazgjunk has joined. 
22:35:47 <RodgerTheGreat> oh, and if we ever try doing the "EsoInternet" thing, the equivalent of IPs or routing codes or whatever should be a TC scripting language 
22:37:50 <RodgerTheGreat> like, rather than knowing a remote computer's IP, you obtain a program that can traverse the network and find that specific computer 
22:38:12 <RodgerTheGreat> and you need a different tiny program, as simple or complex as the coder makes it, to find each machine 
22:38:53 <RodgerTheGreat> and doing tunneling or something TOR-like would just imply a different way of designing these traversal programs 
22:40:16 <RodgerTheGreat> and it could be non-trivial to determine wether two programs pointed to the same machine if the scripts can do queries of some kind from each machine they meet along the way. :D 
22:41:12 <oklopol> actually, it's a group of languages 
22:41:19 <RodgerTheGreat> I'd probably be more interested in making a written language than a spoken one 
22:41:48 <oklopol> i never even considered soken 
22:41:56 <SevenInchBread> Kind of both... for me. I like unusual pronounciation rules and sounds. 
22:42:11 <oklopol> since when designing, it never occured to me langs can be spoken :) 
22:42:16 -!- sebbu2 has joined. 
22:43:27 <SevenInchBread> I don't like the organizedness of artifical languages though... I'd try to make it purposefully natural by incomporating bits and pieces of other languages. 
22:43:30 <oklopol> i was explaining my system to a friend today... he assumed i meant a spoken language 
22:43:47 <oklopol> and i was like what the fuck are you saying when he said something about pronunciation 
22:44:33 <RodgerTheGreat> I'd like to design a language that focussed on brevity and syntactic conciseness. Most human languages contain a great deal of redundant information. 
22:44:52 <SevenInchBread> like, create an entire alternate history with multiple languages... tracking historical events to create natural-like influences and evolution. 
22:45:27 <oklopol> the system has some interesting ideas, there are no nouns in the core language for one, you have noun packs, which you can master and they can then be used in the conversation if both speakers know them 
22:45:36 * SevenInchBread likes the ambiguities... lots of words, with lots of ways to combine them 
22:45:58 <RodgerTheGreat> and very simple glyphs that can be combined and superimposed, with intuitive modifications of expressed meaning 
22:46:22 <SevenInchBread> yep... sounds like a lot of artifical languages... very modular and consistent. 
22:47:27 <oklopol> well, that was just one thing... i'm not gonna share the whole spesification on an irc chan, and it's not done yet 
22:47:44 <RodgerTheGreat> another interesting idea would be a written language with self-repairing syntax. Design it so that you can be missing half of the characters and reconstruct the whole meaning, without being explicitly redundant 
22:47:52 <oklopol> the core language, common, is pretty much just a way to express logic 
22:48:22 <RodgerTheGreat> so, you have the "control structure", and you're still working on the "command set" 
22:48:43 <oklopol> yeah, that is already done implicitly in normal langs, the redundancy you mentioned 
22:49:02 <SevenInchBread> hmm... to a certain extent you can do that informally with English and other natural languages. 
22:49:16 <oklopol> sometimes you can understand a sentece with only the first few words of it, sometimes a sentence has multiple semantics 
22:49:37 <oklopol> i just have guidelines i'm going to follow 
22:49:56 <oklopol> there aren't any sequences of characters in the language 
22:50:15 <oklopol> you can use whatever you want, probably words of your own previous native tongue 
22:50:32 <oklopol> because the presentation of nouns is not important 
22:50:37 <SevenInchBread> Humor, is highly linguistical. Good prose is often concisely ambiguous 
22:50:41 <RodgerTheGreat> if you designed an entire language in a consistent manner, you could achieve a very nice human/machine readable manner for expressing ideas. Most programming languages are unsuitable because programming languages are designed for expressing algorithms 
22:50:56 <oklopol> they are just referenced by indeices in the noun pack 
22:51:38 <SevenInchBread> ...humor would be nigh impossible if every word and morphological structure had one clear meaning. 
22:51:41 <oklopol> you convert them to whatever char sequences you want 
22:52:05 <oklopol> SevenInchBread, i've never enjoyed wordplays that much 
22:54:09 <oklopol> RodgerTheGreat, most comp langs are for algorithms, native langs are more like regexes, they define a structure, not a sequence or a clear action 
22:55:38 <oklopol> i have so much to say i think i won't say anything anymore 
22:56:02 <oklopol> i hate it when i think about something and find a conversation about it later 
22:56:11 <oklopol> and all the info bangs into my head 
22:56:43 <SevenInchBread> not always.... I'd relate natural languages more to... communication protocols. regexes express a definite pattern, algorithms define a definite sequence of actions... communication protocols send desired characteristics to a receiver, and leave the task of interpretation up to it. 
22:57:38 <SevenInchBread> a language that says everything you want it to say and is interpreted exactly as it was intended is... boring. 
22:58:28 <oklopol> SevenInchBread sending stuff has nothing to do with natural language 
22:58:31 <RodgerTheGreat> I was wondering if this could be TC: http://www.esolangs.org/wiki/Slashes 
22:58:39 <oklopol> you can just as well send code to a remote server 
22:58:45 <SevenInchBread> oklopol, communication has everything to do with natural language. 
22:58:51 <RodgerTheGreat> has anyone seen any TC proofs for string rewriting languages? 
22:59:00 <oklopol> RodgerTheGreat thue has bf 
22:59:59 <oklopol> you could as well say pressing buttons is somehow an intrinsic part of programming languages 
23:00:02 <RodgerTheGreat> looping is a bit of a trick, but I think I can see a way to pull it off 
23:00:43 <oklopol> and you can say bugs are the same as misinterpreting natural language 
23:00:46 <SevenInchBread> what other purpose does a spoken word have than to be heard and understood.... what other purpose does a book have than to be read? 
23:00:49 <oklopol> but it's not a critical part 
23:01:30 <oklopol> i know exactly what the critical part (difference between natural and comp langs) so... my mind is made 
23:01:52 <oklopol> what other purpose does code have than to be tokenized and run? 
23:01:55 <RodgerTheGreat> I'm trying to think of a nontrivial task that cannot be bruteforced and requires no input, which would demonstrate the plausibility of /// being TC. Think a cyclic tag system would be possible? 
23:03:59 -!- nazgjunk has quit ("gah sleep"). 
23:04:35 <oerjan> you could try the Ackermann function 
23:04:43 <oklopol> it seems you can't duplicate anything 
23:04:52 <oklopol> something is taken off every run, right? 
23:05:09 <oklopol> i might've gotten it wrong : ) 
23:05:41 <RodgerTheGreat> if you use a two-step copy you could duplicate your main code over and over, simulating a loop 
23:06:25 <SevenInchBread> if it's based off of string replacement... it's hard not to emulate thue. 
23:07:02 <oerjan> it's self-modifying unlike Thue 
23:07:25 <oklopol> can you show me an eternal loop? 
23:08:41 <oerjan> Copying / and \ needs some cleverness. 
23:08:52 <SevenInchBread> ....should probably be TC then... sounds like Thue - except for some minor rules about order of replacement 
23:08:53 <RodgerTheGreat> if you do the copy all in one step, you get an infinite loop 
23:09:12 -!- sebbu has quit (Connection timed out). 
23:09:25 <oklopol> "and again escaped characters are treated as themselves." 
23:09:39 <oklopol> why can't he just say \ escapes, use common sence :) 
23:10:51 <SevenInchBread> It's very similar to Thue... just a bit hard to read the specification. 
23:11:51 <RodgerTheGreat> you could halt in my example above by doing something to get rid of the % before you copy your main body again 
23:13:19 <SevenInchBread> It's basically self-modifying Thue. Where the replacement rules are embedded in the input. 
23:13:41 <RodgerTheGreat> so, a simple way of explaining the language is, /A/B/ replaces each instance of A with B, and \ works as an escape character 
23:14:21 <RodgerTheGreat> and everything encountered outside /// is just printed 
23:15:46 <SevenInchBread> yep... it looks like the writer tried to algorithmically reproduce what the interpreter does in English. 
23:16:20 <SevenInchBread> Converting an algorithm into English results in  a terrible explaination. 
23:16:24 <oklopol> '/a/ \/a\/b\/ \/a\/b\/ /a' 
23:16:51 <oerjan> well, the interpreter given was written after the language description (by me) 
23:18:18 <RodgerTheGreat> oklopol: I think if you had "b/b/" it would just print out that string- it represents less than a complete /// expression, so that's where it halts 
23:18:59 <oklopol> efefefefe /a/b/ c would evaluate /a/b/ though? 
23:19:54 <oerjan> you forget that the substitution is repeated until the result no longer contains the source string. 
23:20:45 <oerjan> so you cannot replace something immediately with something that contains it 
23:21:08 -!- nazgjunk has joined. 
23:21:22 <RodgerTheGreat> that's why I suggest the "two-step" process for duplicating source code 
23:21:26 <oklopol> so /a/a/a is an infinite loop? 
23:21:42 <SevenInchBread> so... you can do an infinite loop... but so far there's no way discovered to anything else while looping infinitely. :) 
23:22:08 <RodgerTheGreat> no, you could easily do other things in the main code body 
23:22:15 <oerjan> indeed those hardly count 
23:23:42 <oerjan> as i said, copying / and \ will take some cleverness. 
23:25:54 <oerjan> probably coding them as something else, and substituting them back. but while preserving the "something else" somehow to repeat the process. 
23:26:41 <RodgerTheGreat> well, the 99bob example has some things in common with most quine designs 
23:26:45 <oerjan> well you would expect to need a quine-like approach. 
23:27:15 <RodgerTheGreat> 99bob is currently the least trivial code example we have on our hands 
23:27:53 <RodgerTheGreat> perhaps we should work with the input extension and see if we can create a cat program as a proof-of concept of looping 
23:29:45 <oerjan> a simpler idea: try to write a program that actually outputs something repeatedly. 
23:30:57 <oerjan> i would expect the greatest problem is to get any nontrivial loop at all, so that should be enough for proof of concept. 
23:31:47 <RodgerTheGreat> if we get a loop working, what else would we need for a TC proof? 
23:32:49 <SevenInchBread> RodgerTheGreat, I like the double-step thing to... the main problem with effectively using substitution to representTC is that it's too eager. 
23:34:05 <RodgerTheGreat> yeah- the main trick is limiting the scope of substitutions, which I think would depend on leaving a bunch of "flags" and things to create less aggressive replacements 
23:34:19 <oerjan> i am suddenly wondering whether there is any way at all to remove a string from the program and then bring it back, repeatedly 
23:35:04 <RodgerTheGreat> like replace / with # and \ with ? and store everything as a literal perhaps 
23:35:19 <oerjan> but how can you avoid destroying all # and ? on the first iteration? 
23:36:11 <RodgerTheGreat> then replaces won't touch it, but you can replicate it at will 
23:37:09 -!- nazgjunk has quit ("tonight, we sleep in HELL!"). 
23:38:52 <oerjan> P -> aP somehow, for example 
23:40:49 <oerjan> if a could contain escapes too, we would have achieved even more 
23:41:30 <oerjan> but without would be a start 
23:43:42 <SevenInchBread> with a sufficiently confounded syntax... you need no ponder escape characters.... at least practically. 
23:44:09 <oklopol> what would '/ aa / \/a\a\/a\a\/a / aaaaa' become? 
23:44:33 <oerjan> are the spaces included? 
23:46:25 <oerjan> the substitution is aa -> /aa/aa/a so it will loop uselessly 
23:57:54 -!- jix__ has joined. 
23:58:37 -!- sebbu2 has quit ("@+"). 
23:58:53 <oklopol> meh, i'm so bad at making quines... 
00:00:26 -!- Sgeo has joined. 
00:01:54 <oklopol> nah... it would convert everything and you need just some 
00:02:02 <oklopol> i don't know if that's why though :)= 
00:02:27 <RodgerTheGreat> plus, a \ in the "source" has to be escaped as \\, I think 
00:02:28 <oerjan> it would loop.  You can _never_ have the result contained in the source, even after unescaping 
00:05:04 <oklopol> won't help... i'd need an interpreter... 
00:05:08 <oerjan> secondly, you cannot essentially have any source be a single character. 
00:05:21 <oerjan> the interpreter is on the wiki page 
00:05:41 <oklopol> i should do some dl'ing then 
00:05:53 <oerjan> i just considered adding a debugging option 
00:05:59 <oklopol> i'd have to do that anyway :P 
00:06:09 -!- jix has quit (Read error: 110 (Connection timed out)). 
00:17:47 <SevenInchBread>  /sufficiently nonsential enough for much mass production/\/ (but mother(\/\\/pancreas polly\\/\\\/\\/\/ //pancreas polly/\/sufficiently nonsential enough for much mass production\/\ 
00:18:29 <SevenInchBread> I have no clue what that will turn out as... but it seems like a step in the right direction... despite being utterly mind bending. 
00:19:49 <SevenInchBread> ...attempting to interpret myself just leaves me going in circles.... but I'm hoping it's asynchronous circles. :) 
00:21:57 <oklopol> you loos snefmmp right away there 
00:22:49 <oklopol> sufficiently nonsential enough for much mass production 
00:22:58 <oerjan> ok the implementation now prints the program at each step if you give it the -d option. 
00:23:39 <SevenInchBread> well.... that was indended to be an "inbetween" encoding... I was hoping it would turn out as (mother being the equivalent of / 
00:24:16 <oklopol> i don't know what that means 
00:24:32 <oklopol> there is no use in an inbetween encoding  
00:24:48 <SevenInchBread> basically I'm thinking you need a replacement that replaces something with a replacement followed by / 
00:26:44 <oerjan> in order to be able to recreate an inbetween coding you need something like storing it somewhere as two separate subpieces 
00:32:45 <oerjan> hm, this debugging was hard to separate from the output.  Adding some brackets. 
00:37:43 <oerjan> i am sure that trusty old Mfit and Shanty will be happy to use different characters for / and \ :) 
00:39:05 <SevenInchBread> that's essentially what we need.... multiple interpreters. 
00:39:39 <oerjan> btw someone asked whether the names Mfit and Shanty mean anything? 
00:46:24 <oerjan> shanty isn't a nonsense word. 
00:48:19 <oerjan> there are several things called Mfit apparently.   
00:59:00 <oklopol> i don't think i'm capable of making anything with ///, it took me 15 minutes to figure out how to make a quine in python :D 
00:59:55 -!- tgwizard has quit (Remote closed the connection). 
01:12:46 <oerjan> a kitschy plastic cup with inscription? 
01:14:45 <oklopol> well, i didn't remember you can do ';', neither that you can do "%s" 
01:16:03 <oerjan> there is no actual %s format in that code 
01:16:33 <oklopol> print(lambda a:a+chr(34)+a+chr(34)+chr(41))("print(lambda a:a+chr(34)+a+chr(34)+chr(41))(") 
01:16:58 <oklopol> that is not the original though, took me < 2 min this time 
01:17:20 <oklopol> so i can make it in 20 sec 
01:18:05 <oklopol> hehe wrote an interpreter for slashes... and python jammed, it's gone :D 
01:18:31 <bsmntbombdood> how does python crashing make you lose your source? 
01:18:40 <oklopol> why do they make all interpreters such that infinite loops kill them? 
01:18:54 <oklopol> because i don't save it anywhere 
01:19:45 <oklopol> i think i just installed it though 
01:20:33 <RodgerTheGreat> this is a triumph of speech recognition: http://www.youtube.com/watch?v=KyLqUf4cdwc&mode=related&search= 
01:21:00 <RodgerTheGreat> and this is why speech recognition is a really flawed idea for coding 
01:21:33 <bsmntbombdood> It would be terrible to code with speech recognition 
01:21:48 <SevenInchBread> I'm writting up the info for my collaboration thing....  
01:21:53 <oerjan> it might work with some languages, maybe forth, which has few delimiters 
01:22:40 <SevenInchBread> basically you just need to submit an interpreter in any language... the main process will feed the tokens one by one to the interpreters...  
01:22:40 <RodgerTheGreat> Perl is pretty much the worst language he could be using here in terms of character use 
01:23:24 <SevenInchBread> the only problem is that.... I don't have languages like C easily accessible on my computer (I still haven't figured out how to properly run C in Windows) 
01:23:49 <oklopol> i didn't know speech recognition is that good yet 
01:25:11 -!- graue has quit ("Leaving"). 
01:26:04 <oklopol> he just doesn't know how to use it 
01:26:33 <oklopol> if 'press capital I' means 'I', i think it's pretty obvious 'capital I' does not work 
01:26:57 -!- GreaseMonkey has joined. 
01:28:23 <oklopol> i'd prefer it to understand certain syllables as 0,1,2,3...E,F and do the rest myself 
01:29:33 <oklopol> i've never seen anything like that :| 
01:32:53 <RodgerTheGreat> OSX has pretty nifty recognition, but it isn't designed to control the whole interface 
01:33:11 <RodgerTheGreat> I wouldn't be surprised if 10.5 has better integration 
01:33:47 <oklopol> http://www.youtube.com/watch?v=S9T3RXFDtfo&NR 
01:37:20 <bsmntbombdood> how long does it take to say "go to active window", compared to M-k k? 
01:37:51 <oklopol> why do you have to day "go to active window"? 
01:38:00 <oklopol> why can't you say "em kay kay" 
01:39:10 <oklopol> well, i talk faster than type 
01:39:22 <bsmntbombdood> I've heard of speech recognition software causing speech problems 
01:40:00 <oklopol> well, i don't see why you'd want to use english 
01:40:38 <oklopol> you could easily make it recognize certaing murmurs 
01:40:54 <oklopol> a phone did that 5 years ago i recall 
01:41:35 <oklopol> of course, coding would be idiotic if you have hand to do it with 
01:42:01 <oklopol> but i think it's be a faster way to navigate around the os 
01:43:07 <oklopol> (that last part had no relation to the former ones) 
01:45:18 <oklopol> i'm starting to think it'd not be faster, but i still think it's cooler 
01:54:00 <RodgerTheGreat> speech recognition in star trek is pretty crazy, because LCARS (the OS, kinda) is supposed to use speech commands to assemble application software on the fly to perform the requested commands 
01:54:36 <RodgerTheGreat> essentially, LCARS has no programs- they're all created from LCARS's modular libraries at runtime 
01:54:45 <oklopol> well, at that point i don't think there'd really be any need for humans on the ship... 
01:55:25 <RodgerTheGreat> LCARS would require a ludicrous amount of AI under the hood to work in speech mode 
01:56:26 <RodgerTheGreat> the idea of an interface consisting almost entirely of contextual menus and controls seems pretty workable 
01:58:23 <SevenInchBread> eh, if a GUI makes something easier, then I'm all for it. 
01:59:11 <RodgerTheGreat> in most cases, the minimalist GUIs we see on TV would never work, but LCARS is actually very well thought out 
02:00:34 <RodgerTheGreat> it's only real failing is multitasking, but multitasking isn't always what it's cracked up to be 
02:01:02 <RodgerTheGreat> plus, on star trek there's always plenty of screens allocated for the various tasks being done 
02:03:02 <RodgerTheGreat> I just like how the operating system and the interface are deeply integrated, rather than the latter being an afterthought built seperately 
02:07:58 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
02:18:06 <oklopol> SevenInchBread i don't get that :D 
02:18:47 <SevenInchBread> I couldn't think of a way to allow an arbitrary number of interpreters globally alter the source code... 
02:19:07 <oklopol> they get the code, they return the code 
02:19:29 <oklopol> plus, they always get a number indicating which token they are running 
02:19:41 <oklopol> and they return another number indicating the next token 
02:19:55 <SevenInchBread> right right... but the problem with that is that there's no -order- in which they return them... unless I wait for each of them to output something before sending the token to another one. 
02:20:54 <oklopol> well, make stdout the main program running the code 
02:21:16 <oklopol> normal output is done like '\info \info' to the main program,  
02:21:26 <SevenInchBread> and if I let the interpreters affect the control flow of every other interpreter... there'd be countless race conditions. 
02:21:47 <oklopol> output: ... endvalues: string number 
02:22:15 <oklopol> well, i meant you'd just assign one at the time 
02:22:26 <oklopol> i can't figure out another way to do it with just stdio 
02:23:14 <oklopol> it's boring if there's no self-modification 
02:23:21 <oklopol> then there's really no language 
02:24:04 <SevenInchBread> ...I guess the interpreters could be simply be put in order... 
02:24:29 <oklopol> well, that's what i implicitly suggested 
02:25:29 <SevenInchBread> not sure how the parser would no where to start over during a self-modification though... 
02:27:10 <oklopol> i'm pretty sure that's not a sentence :| 
02:27:36 <oklopol> SevenInchBread i already solver that 
02:27:56 <oklopol> they get code and code pointer, they return new code and new code pointer 
02:28:03 <oklopol> oh yeah, you're afraid of pointers 
02:29:05 <SevenInchBread> ...include Python (which I'll probably be implementing it in... or maybe Ruby) 
02:29:27 <oklopol> you mean they wouldn't understand a pointer given them? 
02:29:56 <oklopol> 1. that's stupid, pointer can't be anything more than a number, because everything is a number 2. yes 
02:30:31 <oklopol> pointer is just a way to imply a number means an index, nothing more 
02:30:44 <oklopol> just that it usually means an index to all the memory 
02:30:54 <oklopol> i don't see why you go all berzerk every time you see it :) 
02:31:32 <oklopol> anyways, i have some serious sleeping to do --------------------------> 
02:43:22 <SevenInchBread> I have nothing against pointers... they're very useful. 
02:56:00 <SevenInchBread> ....I could take a dupdog-ian approach that doesn't use tokens. 
02:59:50 <RodgerTheGreat> the more this new language becomes like dupdog, the more fun I predict programming with it shall become 
03:01:56 -!- ShadowHntr has joined. 
03:02:50 <oerjan> i just managed to run the Hello World program in the Haskell interpreter 
03:04:18 <oerjan> Yeah, after I fixed a bug in the interpreter 
03:05:53 <SevenInchBread> heh, funny that dupdog remained unnoticed for a couple of months... :) 
03:08:21 <RodgerTheGreat> and then a crack team of bored IRCers found it and started using it 
03:14:40 <SevenInchBread> Kallisti 5.0 - http://esoteric.voxelperfect.net/wiki/E%9AE1EBEBE%AFF%83F%84%E1F%83 
03:30:27 <RodgerTheGreat> The Adjudicated Blind Collaborative Design Esoteric Factory is an important name that deserves more than an acronym. 
03:36:10 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 
03:36:12 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 
03:45:43 <SevenInchBread> RodgerTheGreat,  where is the Haskell interpreter for dupdog at? 
03:45:57 <oerjan> i haven't put it up yet 
03:46:23 <oerjan> need to add a few features such as a main function :) 
03:46:25 * SevenInchBread lost interest in dupdog... so never got around to fully fixing his implementation. 
03:46:41 <oerjan> there is another implementation in thutu however. 
03:47:39 <oerjan> for some reason ais523 (i think it was him) didn't put a link on the wiki 
03:48:08 <oerjan> it was on the channel recently, a pastebin link i think 
03:50:50 <SevenInchBread> ...I think Stue is the only one of my languages that had an implementation before it had a specification... still haven't written it up yet. 
03:52:32 <oerjan> http://pastebin.ca/raw/397577 but you need to change 128 to 257, the current Hello World assumes mod 257 wrapping 
03:55:37 <oerjan> for some reason ais523 hasn't told us the original thutu. 
04:01:09 <oerjan> you think she's a she? 
04:02:32 <oerjan> anyhow i hope my interpreter will deal better with lots of duplications.  Shared functional data structure. 
04:02:51 <oerjan> although with Haskell you never know about space. 
04:03:32 <SevenInchBread> nah, wasn't sure. I kind of prefer she over he when the gender is unknown. 
04:06:24 <oerjan> i intend to make it an option 
04:06:52 <SevenInchBread> in the meantime I should write the specification for Stue... and maybe fix up the interpreter a bit. 
04:07:01 <oerjan> indeed i intend to have two: one used for output and one for internal/debugging use 
04:07:18 <SevenInchBread> and work on some of my unfinished languages... I've got one based on gravity sources. 
04:07:52 <SevenInchBread> not using any complicated math though... just simple spatial relations. 
04:24:36 -!- wooby has joined. 
04:32:09 -!- Arrogant has joined. 
04:41:51 -!- GregorR_ has joined. 
04:43:05 -!- GregorR_ has quit (Remote closed the connection). 
04:59:03 -!- wooby has quit (Read error: 104 (Connection reset by peer)). 
04:59:16 -!- wooby has joined. 
05:02:37 -!- GreaseMonkey has quit (Remote closed the connection). 
05:27:15 -!- ShadowHntr has quit ("End of line."). 
05:29:50 -!- GreaseMonkey has joined. 
05:31:32 <GreaseMonkey> ok, my bot works, now it's onto coding the lang 
05:37:35 <GreaseMonkey> my new bot is named "RoboMonkey" and has exactly the same functionality as it did in the very early stages of GreaseBot.... raw commands, and that's it. 
05:40:07 <GreaseMonkey> my new bot has several things of the old bot: the "PASS/NICK/USER" join method, and raw commands are like: 
05:57:02 -!- SevenInchBread has quit (Read error: 145 (Connection timed out)). 
06:00:15 -!- Arrogant has quit ("Leaving"). 
06:39:20 <GregorR> Woooooooh, I have the best LCARS theme evar ^^ 
06:40:11 <GreaseMonkey> hi gregor, i'm working on an esolang for my bot 
06:43:13 <bsmntbombdood> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~fu (.+)", lambda x,y: bot.raw("PRIVMSG %s :fuck you, %s" % (y.group(1), y.group(2)))) 
06:44:29 <GreaseMonkey> hmm, i cud replicate that in brainsecks code.... 
06:46:03 <GreaseMonkey> x00>"PRIVMSG "%1[>,]" :"%0[>,]x0A>x00<[<]>[.>] 
06:46:14 <GreaseMonkey> x00>"PRIVMSG "%1[>,]" :fuck you, "%0[>,]x0A>x00<[<]>[.>] 
07:00:31 <GreaseMonkey> for(i=0;array[i];i++){ /* stuff goes here */ } 
07:02:39 <GreaseMonkey> oh, and there's always: for(p=str;*p;p++){/* stuff goes here */} 
07:07:35 <GreaseMonkey> on #uncyclopedia , there's a SupyBot under the nick "AutoRTB" 
07:40:49 -!- RodgerTheGreat has quit. 
07:50:54 -!- anonfunc has joined. 
07:51:20 -!- oerjan has quit ("ZZNNNNRRRKKKK"). 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:25:03 -!- ShadowHntr has joined. 
09:27:00 -!- ShadowHntr has quit (Client Quit). 
09:31:42 <Sgeo> twos = iterate (2^) 0 
09:51:31 -!- Sukoshi has joined. 
09:53:42 -!- RoboMonkey has joined. 
09:54:15 <RoboMonkey> sadly only one command can be used though 
09:54:39 <GreaseMonkey> that program: x00>"PRIVMSG "%2[>,]>x01%0[>,]x0A>x00<[<]" :"[<]>[.>] 
09:55:07 <GreaseMonkey> ?x00>"PRIVMSG "%1[>,]>x01>"ACTION ">x01%0[>,]x01>x0A>x00<[<]" :"[<]>[.>] 
09:55:08 <Sgeo> twos = iterate (2^) 0 
09:55:51 <GreaseMonkey> ?x00>"PRIVMSG "%1[>,]>x01>x01>"ACTION "%0[>,]x01>x0A>x00<[<]" :"[<]>[.>] 
09:57:12 <Sgeo> Someone please find number of digits of 2^(2^(2^(2^(2^(2^(2^0)))))) 
09:59:39 <Sgeo> (2^(2^(2^(2^(2^(2^0))))) has over 19 thousand digits 
10:00:22 <GreaseMonkey> 2^(2^(2^(2^(2^(2^(2^0)))))) -> 2^(2^(2^(2^(2^(2^1))))) -> 2^(2^(2^(2^(2^2)))) 
10:00:43 <GreaseMonkey> 2^(2^(2^(2^(2^2)))) -> 2^(2^(2^(2^4))) -> 2^(2^(2^16)) 
10:01:01 <Sgeo> length $ show $ (2^(2^(2^(2^(2^(2^0)))))) 
10:01:15 <Sgeo> Put another 2^ in front 
10:01:19 <Sgeo> how many digits? 
10:01:22 <Sukoshi> Someone can do math *clap clap clap*. 
10:02:43 -!- RoboMonkey has quit. 
10:03:13 <Sgeo> g'night GreaseMonkey  
10:04:01 <GreaseMonkey> ?x00>"PRIVMSG #esoteric :gnight">x0A>x00<[<]>[.>] 
10:04:10 -!- GreaseMonkey has quit ("Woot! RoboMonkey works! Woot again!"). 
10:05:38 <Sukoshi> Or a cheap embedded device preferrably with a FORTH on-die, but not neccessarily so. 
10:07:25 * Sgeo asks in Yahoo! Answers 
10:10:11 <Sukoshi> Thanks. That's sure to get answers. 
10:11:37 <Sgeo> I meant about my question 
10:13:25 -!- nazgjunk has joined. 
10:32:38 -!- wooby has quit (Read error: 104 (Connection reset by peer)). 
10:35:25 -!- sebbu has joined. 
11:03:11 -!- UpTheDownstair has joined. 
11:03:43 -!- Sukoshi has quit ("さあ、ね。もう帰るわ!待ってね!"). 
11:14:27 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
11:47:48 -!- UpTheDownstair has changed nick to nazgjunk. 
11:52:29 -!- jix has joined. 
12:04:59 -!- Sgeo has quit ("Leaving"). 
13:04:28 -!- UpTheDownstair has joined. 
13:05:45 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
13:05:50 -!- UpTheDownstair has changed nick to nazgjunk. 
13:06:56 -!- sebbu2 has joined. 
13:25:41 -!- sebbu has quit (Read error: 110 (Connection timed out)). 
13:55:01 -!- RodgerTheGreat has joined. 
13:58:35 <oklopol> woke up 2 hours ago, had a kebab, been reading about this racist mp wannabe... not that i'm a racist, but i like it when people have strong opinions, we have the elections today, but i don't think i'll bother to vote 
13:58:51 <oklopol> i'd like to make my lang complete today 
13:59:02 <oklopol> i gotta read for my matriculation exams tomorrow 
13:59:59 <RodgerTheGreat> I'm probably going to need to do some homework, but for now I'm just surfing 
14:00:24 <oklopol> i had this idea about a lang where you have a concurrent for-each 
14:00:31 <oklopol> everything is done at the same time 
14:00:45 <oklopol> this is an issue when doing cellular automatons etc 
14:00:51 <oklopol> you need to do the same thing for all 
14:00:55 <RodgerTheGreat> hm. so a foreach would essentially just thread everything out? 
14:01:10 <oklopol> you can have two lists and copy from one to one, swapping all the time 
14:01:20 <RodgerTheGreat> lol- you should call it a noweach instead of a foreach 
14:01:31 <oklopol> BUT that requires the whole array to be copied every time 
14:01:43 <oklopol> so you have to manually optimize in each case 
14:02:10 <oklopol> you can't just have the array and move, for example with wireworld, everything like the rules say 
14:02:17 <oklopol> because only some parts move 
14:02:34 <oklopol> that's very tedious to do, and the thing inherent in cellular automatons fades 
14:02:39 <oklopol> the fact you only have one rule 
14:02:54 <oklopol> so noweach would make those optimizations automatically 
14:03:00 <oklopol> since i think i know how to do it 
14:03:29 <oklopol> you just have to know how far the thingies CAN check for other living things, a living thing being one where rules apply 
14:03:55 <oklopol> so... i'd optimize memory usage and cut out redundancy automatically for simple automatons like wirewordl 
14:04:11 <oklopol> had this idea when making lopoda, which is kinda a cellular automaton 
14:04:22 <oklopol> it's not really one though 
14:05:18 <oklopol> cellular automatons can be done like that already, for example with mark something's cellebration 
14:05:33 <oklopol> it's just it's not really a language, just a set of modifiable rules 
14:05:48 <RodgerTheGreat> I think a noweach would be a genuinely useful feature- something not often seen in esolangs 
14:05:57 <oklopol> you know, textboxes for "live while n neighbours" 
14:07:04 <oklopol> i'm using an iterator that can change current cell, check neighbour cells and leave messages for current cells 
14:07:25 <oklopol> *leave messages for neigbour cells 
14:08:04 <oklopol> this is not the language i've designed really, it was just something i couldn't get outta my head when reading english 
14:08:31 <oklopol> btw does bnf have a parser? 
14:08:38 <RodgerTheGreat> well, since foreach loops are generally just done on a group of objects, operating on each only individually, there probably wouldn't be a lot of difference. If you did something relating adjacent objects in an array or something your results might be counterintuitive from a programming standpoint, because programmers naturally thing iteratively 
14:08:41 <oklopol> i've been making one, i don't think i'm the first :\ 
14:09:24 <oklopol> hmm, i use bnf with simplified regexes... and regexes postfix -> prefix 
14:09:30 <oklopol> because it's easier to parse 
14:09:45 <oklopol> and math is pre-/infix, why shouldn't regexes be 
14:10:07 <oklopol> and i like it when things are counterintuitive 
14:10:18 <oklopol> i suppose that's why i'm on this chan 
14:10:40 <oklopol> you got my brain going again :< 
14:10:53 <oklopol> how can i read the big book of tautologies now? 
14:12:09 <oklopol> 'the' had some sick quirks, but most of it i would've known 8 years ago 
14:12:26 <oklopol> remember explaining one of the things i read there to a friend on the first grade 
14:12:37 <oklopol> but, still it takes me ages to read 
14:12:46 <oklopol> because i'm so slow at understanding text 
14:13:08 <oklopol> something i wrote about this 
14:15:42 <oklopol> noweach, lopoda, nopol implementation, oklotalk, nestor 
14:15:54 <oklopol> i'd have some esoteric month doing those 
14:16:03 <oklopol> oklotalk is not that esoteric though 
14:16:36 <oklopol> an apl (or just apl if you consider the 'a' is an article in it's own right) thingie 
14:16:48 <oklopol> that borrows the best of haskell and lisp 
14:16:57 <oklopol> quoting from lisp, actually 
14:17:27 <oklopol> i don't know what's from haskell since i can't remember all the things i've already thought through 
14:18:20 <oklopol> because i like python... but it doesn't use tail recursion (i think) and it isn't lazy 
14:18:53 <oklopol> fib=[1 {--n+-n}] would be haskellish 
14:19:11 <oklopol> you can specify a list as it's first values and a lambda to calc the rest 
14:19:22 <oklopol> the lambda is fed an iterator object 
14:19:40 <oklopol> in this case n, because it's the only free var in the lambda, so no need to specify explicitly 
14:20:03 <oklopol> - is unary minus, but with an iterator it means "last" 
14:20:19 <oklopol> and actually, the lambda should be {!--n+!-n} since we need the values 
14:20:39 <oklopol> adding iterators is defined, as everything is always defined (:P) but makes no sence in this case 
14:21:06 -!- anonfunc has quit. 
14:21:20 <oklopol> in oklotalk everything is a valid program, but since the debugger makes tokenizing, nesting and running explicit in that you can do it as step by step as you like 
14:21:45 <oklopol> plus, i'm making all optimizations explicit as well of course 
14:21:52 <oklopol> and you can suggest optimizations 
14:22:00 <oklopol> without need to alter code 
14:22:09 <oklopol> you can have code and optimization separate 
14:22:30 <oklopol> but, these are of course the more ambitious things i design for all my langs 
14:22:48 <oklopol> that i'm able to code in ten years if i'm lucky :) 
14:23:12 <oklopol> i'm making apl purely functional for one 
14:24:10 <oklopol> you can quote lambdas to add them in a list `+ `{_*_} `{_-1} would make a list of 3 lambdas, or functions, no difference in oklotalk 
14:24:25 <RodgerTheGreat> you know, your ideas for "intelligent books" would be an interesting thing to apply to wiki-based books, or wikis in general 
14:24:26 <oklopol> and that'd be pretty mych exactly the same as . in haskell 
14:24:38 <oklopol> yeah, i thought about that too 
14:24:53 <oklopol> then again, if it's in my head i consider it done 
14:25:02 <oklopol> one reason for me not being that productive that often 
14:25:39 <oklopol> i.must.go.feck.this.all------------------------------> 
14:30:04 <SimonRC> oklopol: Go read Tim Berners-Lee's writings on the "Semantic Web". 
14:31:26 <oklopol> i might, if you link it to me 
14:32:21 <oklopol> if you read it in 45 secs, by the way, i'm quite impressed :) 
14:32:32 <oklopol> now, really, REALLY really ----------------------------------> 
14:56:12 <oklopol> {^(inc=`+)|(dec=`-)|(nxt=`>)|(prv=`<)|(out=`.)|(in=`,)|(loop=`[*.`])} 
14:56:12 <oklopol> >>> <in object, content: ","> 
14:56:22 <oklopol> rego ------------------------------> 
15:18:24 -!- helios24 has quit ("Leaving"). 
15:45:37 -!- oerjan has joined. 
15:49:00 -!- UpTheDownstair has joined. 
15:51:26 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
15:58:28 -!- UpTheDownstair has quit ("Leaving"). 
16:32:25 -!- sekhmet_ has joined. 
16:32:43 -!- sekhmet has quit (Nick collision from services.). 
16:33:00 -!- sekhmet_ has changed nick to sekhmet. 
16:47:49 <oklopol> http://www.vjn.fi/beepiano.py 
16:48:02 <oklopol> made this at school :PP fun toy 
16:50:37 <oerjan> Somehow I didn't have the impression that okokokoko was about music. 
16:51:06 <oklopol> i wasn't specifically, it's about everything 
16:51:46 <oerjan> i see. btw does the word "oklopol" mean anything? 
16:52:09 <oklopol> it's a make-believe world we've written a few stories about 
16:52:20 <oklopol> www.vjn.fi read when you learn finnish :) 
16:52:30 <oerjan> when i first saw your name i assumed you were polish :) 
16:52:42 <RodgerTheGreat> what's the difference between a real word and a make-believe word? 
16:52:57 <oklopol> make-believe is some other one 
16:53:14 <oklopol> in oklopol, you'd call this one a bake-believe world 
16:54:07 <oklopol> real is just a this pointer 
16:54:22 <oerjan> i have a vague recall that "oklo" means window in Czech, so "oklopol" would be a window Pole whatever that is 
16:55:28 * oerjan recalls the pole vault exercise from the FRC Hellympics 
16:59:20 <oklopol> btw if you can tell me a way to give the loudspeaker values directly, please enlighten me 
16:59:34 <oklopol> i can only make square with that obviously 
16:59:46 <oklopol> plus, you have to specify lenght beforehand 
17:00:03 <oklopol> it'd get ugly to make holding mean a longer tone 
17:00:34 <oklopol> i know how to access the pc speaker with asm, but that's no good since pc speaker is just square 
17:02:13 <oklopol> hehe learning black diamond now :P 
17:02:30 <oklopol> screw the exam, i'm playing beepiano! 
17:06:56 <oerjan> i suppose the PlaySound function might be what you want 
17:09:10 <oerjan> the winsound module you already use 
17:09:29 <oerjan> it seems more flexible than Beep 
17:09:37 <oklopol> with my brainfuck player for example 
17:09:43 <oklopol> but it requires me to create a wav 
17:09:55 <oklopol> which is easy but imo idiotic to do real time 
17:11:04 <oerjan> but perhaps you could pregenerate one for each frequency and use SND_LOOP 
17:12:34 <oklopol> i first though i'd make real-time tone creating possible in the player 
17:12:41 <oklopol> i might start thinking about that then 
17:13:33 <oerjan> whoops. there appears to be a stupid restriction. 
17:14:25 <oerjan> you cannot use string data except to play a single time synchronously, it seems 
17:19:51 <oerjan> and using actual WAV files might give too much delay, though I don't know 
17:26:20 -!- SevenInchBread has joined. 
17:26:59 <oklopol> i'd just be too ashamed to use a file like that 
17:27:41 <oerjan> i don't see any such restriction mentioned for the underlying function: http://msdn2.microsoft.com/en-us/library/ms712879.aspx 
17:27:47 <oklopol> and great, i'm stuck inside the house now, didn't let my drunk father in so he tried to open a special lock we have in the door that prevents opening from the inside 
17:28:15 <oklopol> i tried to tell him i just won't let him in and he kept saying 'don't worry i'll get the door open' 
17:29:30 <oerjan> can such a lock be complying with fire regulations? 
17:31:19 <oklopol> i have no idea, but it's a 50 euro fee to get someone to open the door and my father went out getting one since he thought there was something wrong with the door :D 
17:31:50 <oklopol> so... 50 euros to open a door given the key to that door 
17:32:23 <oerjan> you _do_ realize this event does nothing to relax our stereotypes about the Finnish? ;) 
17:32:55 <oklopol> well, i think those stereotypes are correct 
17:33:18 <oklopol> since most ppl i know are either drunks or absolutists 
17:35:05 <oerjan> It seems like you should be able to write it in C.  It occurs to me that Python's problem with strings might have something to do with garbage collection. 
17:35:43 <oklopol> but you could prolly circumvent that by keeping a pointer to the string in the code 
17:36:08 <oklopol> smth="teh str"; and then use smth, i don't see how there could be a problem 
17:36:14 <RodgerTheGreat> best logic ever: "I'm not stereotyping, because the stereotypes are true!" 
17:36:51 <oklopol> indeed, that's not my logic there though 
17:37:10 <oerjan> yes, but then the module would have to do so automatically, and that might cause sound strings never to be freed if not done properly.  I guess the Python implementers didn't bother. 
17:37:22 <SevenInchBread> yeah, as long as you've got a reference to the string, it shouldn't go away.... unless Python's GC goes wonky or something. 
17:37:37 <oerjan> if it is copying things could be strange. 
17:38:30 <SevenInchBread> If I remember correctly, Python stores strings in const variables.... at least on the C end of things. 
17:38:34 <oerjan> with the string being moved rather than deleted 
17:39:59 <oerjan> i don't think const prevents the GC from moving things 
17:40:43 <oerjan> it would have to be saved in some FFI unmovable format.  There probably is something like that available, but there would be overhead. 
17:42:07 <oerjan> oklopol is writing a simple piano program 
17:42:49 <oklopol> i can write it in c as well 
17:43:01 <oklopol> it's just python was the only one i knew sound stuff with 
17:43:23 <oklopol> __import__("winsound").Beep(interva,freq) 
17:44:09 <oklopol> hmm i have that same beep in c as well, it seems to be in stdio 
17:44:14 <oklopol> BUT again it's just square 
17:44:52 <oerjan> yeah but PlaySound is a Windows function. 
17:45:28 <oerjan> Winmm.lib it says on the page i linked 
17:45:36 <oklopol> i know, i've used it as i said 
17:45:42 <oklopol> but you said something about strings 
17:46:00 <oerjan> i think that is only a problem with Python strings 
17:46:14 <oklopol> but... can you play strings? 
17:46:41 <oerjan> well a memory block in .wav format 
17:47:39 <oerjan> >i don't see any such restriction mentioned for the underlying function: http://msdn2.microsoft.com/en-us/library/ms712879.aspx 
17:48:33 <oerjan> anyhow i found it just by googling for PlaySound 
17:48:45 <oklopol> mm well, maybe i'd have as well then 
17:51:13 <oklopol> nice... i can't both read and scroll that page simultaneously 
17:51:50 <oklopol> hmmm i can only play one sound at a time with that? 
17:53:16 <oerjan> wait... you may be right. 
17:53:37 <oklopol> then you must end all at once 
17:54:12 <oklopol> i'd like being able to pres a key down and play a melody at the same time 
17:56:34 <oerjan> i suppose you could calculate the sum on the fly then 
17:57:28 <oklopol> i'll just make a string for the next 50 ms every time 
17:58:11 <oklopol> though, i've noticed an awful click in the beginnin when playing stuff with playsound 
17:58:30 <oerjan> yeah, boundary condition worries me too 
17:58:54 <oerjan> you really want something that can change sound smoothly 
17:59:04 <oklopol> you mean waves going .-'-.-'-.-'--'-.-'-.-'-.-'--'-.-'-.-'- 
17:59:58 <oklopol> that is easy, you just check where that wave leaves by sin(clicks in 50 ms * current tone pitch) 
18:00:35 <oerjan> i am also thinking of the inevitable short timing mismatch 
18:00:50 <oerjan> because of delay and imprecision 
18:00:52 <oklopol> i mean, you can create the whole sound at once, then cut it into sequences of 50 ms and adding the wav header 
18:01:11 <oklopol> but i think strings don't have much delay 
18:01:20 <oklopol> because there's no file openage 
18:04:02 <oklopol> by the way, piano is confusing since i use the accordions note system 
18:04:17 <oklopol> i just named it piano because people don't know what an accordion is :) 
18:04:21 -!- nazgjunk has joined. 
18:04:51 <oerjan> i know what an accordion is. i think. 
18:05:42 <oklopol> well, in finnish it's 'haitari', so not everyone knows what it is in english 
18:06:45 -!- Sgeo has joined. 
18:16:14 <oerjan> You might want to look at http://msdn2.microsoft.com/en-us/library/ms713503.aspx 
18:16:26 <oerjan> A more powerful system, it seems 
18:21:30 <oklopol> i'd like unsigned char set_lp(unsigned char newvalue) best :P 
18:21:55 <oklopol> 'cept of course in my brainfuck... and many of my unimplemented langs 
18:23:13 <oklopol> haha i can play stratovarious's black diamond on beepiano now :DD 
18:56:13 <oklopol> http://pb.vjn.fi/p245463223.txt black diamond 
18:56:48 <oerjan> Basically set_lp is only going to work in a system with hard real timing, which does not include the modern consumer OSes 
18:58:03 <oerjan> indeed i sometimes feel slightly annoyed at esoteric languages that call themselves concurrent while having exact scheduling. 
18:59:39 <oklopol> are you referring to... what? 
19:00:09 <oerjan> i don't think you were particularly precise on that 
19:01:09 <oklopol> because i don't know the spesifics 
19:01:17 <oerjan> although i don't understand why you don't use a purely functional updating for it. 
19:01:18 <oklopol> just wondering what you were referring to 
19:01:33 <oklopol> mmh maybe because i don't know what you mean 
19:02:05 -!- sekhmet has quit ("ups ftw \o/"). 
19:02:15 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
19:02:22 -!- UpTheDownstair has joined. 
19:02:28 <oerjan> ok yours is strictly scheduled as dataflow (because it's CA inspired) but not in exact timing 
19:02:59 <oerjan> what i mean is that each step could simply calculate the next in parallel. 
19:03:23 <oerjan> since the previous step is not modified, you don't get those timing issues 
19:03:47 <oklopol> i think that might result in deadlock 
19:03:53 <oklopol> since they can refer to each other 
19:04:18 <oerjan> no, because each refers only to the _previous_ state of the others, not to the one currently being calculated. 
19:04:19 <oklopol> they can refer to the new state as well 
19:04:30 <oerjan> in that case you have a problem 
19:04:49 -!- UpTheDownstair has changed nick to nazgjunk. 
19:04:59 <oklopol> but, indeed it's still easiest to do concurrently 
19:05:38 <oklopol> and, it's not supposed to be used in anything where that might result in problems 
19:05:41 <oerjan> CAs don't require copying, btw.  You just switch which array you calculate from 
19:06:41 <oklopol> anyway, i think cellular automatons are easier to optimize in lang development than in an existing lang 
19:06:49 <oklopol> nops, places that aren't used currently 
19:07:04 <oklopol> it automatically skips those when optimizing 
19:07:09 <oerjan> ah you mean things that don't change. 
19:07:38 <oerjan> well you can keep those in big blocks 
19:08:05 <oerjan> so you only copy block pointers 
19:08:53 <oerjan> i think that's how the popular CA engines do it 
19:09:36 <oklopol> seems like the easiest way out 
19:09:44 <oklopol> i had a lot more complicated thing in mind 
19:10:05 <bsmntbombdood> who can come up with the slowest way to calculate fibonacci numbers? 
19:10:20 <oerjan> the usual recursion without memoing is pretty slow. 
19:11:01 <oerjan> then you can define addition using succ. 
19:11:31 <oklopol> int fib(int n){sleep(2^2^2^2^2^2);if(n==1||n==2)return 1;return fib(n-1)+fib(n-2);} 
19:11:51 <oklopol> you did not specify that as illegal 
19:11:59 <oerjan> you mean sleep(ackermann(n,n)) :) 
19:13:40 <bsmntbombdood> I don't understand when people say stuff like "add a (succ b) = succ (add a b)" 
19:13:57 <bsmntbombdood> How do you compute that without a predeccesor function? 
19:13:58 <SevenInchBread> ...create an entire network of processes that pass around data and perform single computations one at time... communicating the data in the least signifigant bits of manipulated bitmaps of adorable kittens. 
19:14:06 <oklopol> bsmntbombdood take a bf interpreter in bf, then make a function that takes a number n and makes bf interpret bf interpret bf... n times, the last one calculating next fib 
19:14:10 <oerjan> you need a base case of course 
19:15:37 <oerjan> the idea is to think of natural numbers as defined as being either zero or the succ of something. 
19:15:56 <oerjan> so the first succ is simply pattern matching on the definition 
19:16:22 <oerjan> in Haskell, essentially: 
19:16:36 <oklopol> bsmntbombdood the same way as prev_num (n+1) = n 
19:16:39 <oerjan> data Nat = Zero | Succ {pred :: Nat} 
19:17:14 <oerjan> pred is not an ordinary function, but a field 
19:17:14 <oklopol> you can pattern match certain things when ...their counterfunction is obvious :) 
19:17:25 <oklopol> *with functions in the pattern 
19:18:23 <oerjan> yes, but Succ is a constructor, so it is not just a function but also a pattern you can match on.  Thus it really contains pred implicitly. 
19:19:10 <oerjan> (and Haskell allows you to name both simultaneously) 
19:20:38 -!- sekhmet has joined. 
19:21:17 <oerjan> you could think of it another way: add a (Succ b) = Succ (add a b) is a defining axiom, not just a calculation. 
19:23:33 <bsmntbombdood> the book i'm reading informally defines it using that definition, then formally defines it in lambda calculus using some primitive recursion function 
19:24:03 <oerjan> you might want to look at something like the Coq proof assistant, which has inductive type definitions built in. 
19:24:21 <oerjan> of course you cannot do it in pure lambda calculus. 
19:25:34 <oerjan> consider the function to be constructed in order to fit the defining axiom, however. 
19:27:11 <oerjan> there is a standard trick for embedding such datatypes and pattern matching into lambda calculus, however. 
19:29:33 <oerjan> i think that prim is something like what Coq defines automatically given the data type definition 
19:33:11 -!- oerjan has quit ("Hunting for food"). 
20:07:16 <SevenInchBread> ...hrm, I can't get my HTTP server to work. Help?  http://deadbeefbabe.org/paste/4036 
20:15:25 -!- nazgjunk has quit ("Leaving"). 
20:25:42 -!- nazgjunk has joined. 
20:27:32 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
20:28:00 -!- nazgjunk has joined. 
21:31:34 <SevenInchBread> if it would be possible to fund the operation of an ISP without charging. 
21:35:12 <SevenInchBread> I'd love it if it were possible to make the Internet -completely- free... 
21:40:13 <oklopol> omg commies in my internets! :D 
21:42:33 <RodgerTheGreat> the internet is a breeding ground for what amounts to communisim anyway... 
21:43:14 <oklopol> true, i don't like any of those though 
21:44:14 <oklopol> i'm under the impression it makes programming kinda a payless occupation 
21:44:29 <oklopol> if i understand 'creative commons' right 
21:46:42 <RodgerTheGreat> well, things like open-source tend to de-emphasize the value of creative or innovative programmers, representing coding as more of a form of skilled labor. 
21:47:26 <RodgerTheGreat> I think of programming as more of an art than a manufacturing job. 
21:47:49 <oklopol> me too, but i'd like to get my pay out of it as well 
21:47:56 <oklopol> since there is nothing else i can do 
21:48:18 <oklopol> well, i could do porno maybe, but that's it 
21:49:50 <RodgerTheGreat> the main problem is that because you can get so many things on the internet for free, people *expect* everything to be free, and feel entitled to everything without charge 
21:50:20 <RodgerTheGreat> big players can survive on ad revenue, but it's impossible to make a profit as a small developer that way 
21:52:20 <RodgerTheGreat> I suppose that's my main problem with open-source philosophy. I give away the source to most of what I make freely, but sometimes I want to make the decision to hang on to what I create. It should be my decision, but things like the GPL take that decision away and make it impossible to maintain control over software built on anything GPLed 
21:53:02 <RodgerTheGreat> it's kinda "forced freedom" that could be considered good for the community, but it fucks over the individual 
21:54:00 <RodgerTheGreat> and since I see programming as an art and something that is valuable when done properly, rather than hacked together, I think the individual should be important 
21:55:25 <RodgerTheGreat> not everyone can have the luxury of living off of people's donations like Stallman. I think he's a little detached from market reality, which should make people question his motivations 
21:57:01 <RodgerTheGreat> If I release software, it's either under the "Do whatever the fuck you want License" or the source is mine to keep. 
21:58:02 <RodgerTheGreat> GPLed. BSD licensed. Any number of things that get in the way and create false illusions of openness or freedom. 
21:58:38 <RodgerTheGreat> If I cared wether someone else "stole" the code I distributed, I wouldn't have given it away in the first place 
21:59:29 <RodgerTheGreat> the GPL is just a viral method for allowing the FSF (which I find dubiously trustworthy) to control the flow of code. 
22:00:29 <RodgerTheGreat> and in the same vein, I don't trust any "licenses", because all they serve to do is limit what people can do with code that's supposedly offered to a community for free 
22:00:46 <GregorR> ............................................................................................... 
22:01:00 <GregorR> Licenses, by definition, can only give freedoms. 
22:01:49 <GregorR> In a copyright system, licenses and copyright assignment are the only ways to give anyone other than the original creator the right to copy the work. 
22:02:09 <GregorR> Or rather, licenses are the only way to give anyone but the copyright holder(s) said rights. 
22:02:15 <GregorR> So licenses by definition can only give freedoms. 
22:04:03 <RodgerTheGreat> if you ask me, the only license that isn't a lie is this one, which I urge everyone here to adopt: http://sam.zoy.org/wtfpl/ 
22:04:50 -!- nazgjunk has quit ("Leaving"). 
22:05:30 <GregorR> Your philosophy is both bizarre and completely stupid. 
22:07:53 <oklopol> indeed, the first one wasn't a correction either 
22:42:16 -!- ShadowHntr has joined. 
22:42:25 -!- sebbu has joined. 
22:46:48 -!- oerjan has joined. 
22:50:32 -!- sebbu2 has quit (Read error: 145 (Connection timed out)). 
22:54:49 <oerjan> because it has to be precise 
22:55:11 <oerjan> and it is already extremely simplified 
22:55:49 <oerjan> i.e. who do you think invented overloading? :) 
22:56:03 <SevenInchBread> but there's like... ten billion different forms of notation. 
22:57:18 <oerjan> math notation is designed for extreme consiseness without being unreadable by those who use it 
23:00:29 * SevenInchBread is trying to figure out the notation behind the Fourier transform. 
23:01:42 <SevenInchBread> specifically, http://en.wikipedia.org/wiki/Fourier_transform#Definition 
23:02:02 <SevenInchBread> I can't find an explaination on how to read the integral thing. 
23:02:44 <oklopol> integrate the thingie, then take f(upper bound) and subtract f(lower bound) 
23:02:51 <oerjan> you don't understand integrals? 
23:03:22 <oerjan> the bounds are infinite however. 
23:03:43 <oklopol> well, true, you need a big calculator 
23:03:46 <SevenInchBread> so... if it helps any - I've never touched calculus... 
23:03:58 <oerjan> well then you have a problem 
23:04:04 <bsmntbombdood> then you are probably going to have some troubles... 
23:05:08 <oklopol> well, you can't blame math for you not knowing it 
23:06:40 <SevenInchBread> ...well, the problem is that I'm trying to learn it... but it's proving extremly difficult. 
23:06:47 <oerjan> everything from the elongated s to dt is an integral, with upper bound infinity and lower bound minus infinity (this combines to mean integrate over all real numbers) 
23:07:07 <oklopol> trying to pick it up quickly for reading that page? 
23:07:32 <oklopol> well, i can't blame you, i've done the same thing 
23:07:32 <oerjan> the part between is essentially a lambda term with free variable t 
23:07:45 <oklopol> can't say i understand fourier transform either... 
23:08:47 <oklopol> hmm i seem to get that now 
23:09:01 <oklopol> but, suppose i have an array full of random stuff 
23:09:08 <oklopol> upper bound is length of it 
23:09:18 <oerjan> essentially you can think of integral as a higher-order function 
23:09:18 <SevenInchBread> so... what's the result of that notation? Is it a function, a number? 
23:09:19 <oklopol> how do i integrate an array? :P 
23:09:37 <oerjan> the result is a complex number in this case 
23:09:40 <oklopol> SevenInchBread integration is func -> func 
23:10:23 -!- sekhmet has quit ("kernel++;"). 
23:10:44 <oklopol> turns a function a into another function b that at x slopes a(x) 
23:10:57 <oerjan> integral :: Measure a -> (a -> Complex) -> Complex 
23:12:01 <oklopol> oerjan why will that result in complex numbers? 
23:12:10 <SevenInchBread> ...yeah, I've never understood that little bit of Haskell-ish notation... :) 
23:12:13 <oerjan> because there is an i in the function 
23:12:36 <oklopol> e^(x) always results in a real number i think 
23:13:02 <oerjan> e^(ix) is a unit complex number if x is real 
23:13:06 <SevenInchBread> I'm trying to read up on concepts related to sound waves. 
23:13:20 <oerjan> e^(a+bi) = e^a * (cos b + i sin b) 
23:14:44 <SevenInchBread> I'd like to translate the Fourier transform into an algorithm...     so how do you get compute the integral of something? 
23:15:17 <oklopol> i asked oerjan already, but he never answered :< 
23:15:48 <oklopol> actually, i just threw it in the air 
23:16:12 <oklopol> then again, most of what i say is implicitly a question for oerjan 
23:16:26 <SevenInchBread> hmmm... it looks liike, in the most cases, it's just the area underneath the curve between those limits... in this case infinity. 
23:16:38 <oerjan> if the function x is stepwise continuous you can use numerical methods 
23:16:52 <SevenInchBread> so.....how do you compute the area of something that's infinite. :P 
23:17:06 <oklopol> what if it's a wav file for example? 
23:17:09 <oerjan> by an integral of course :) 
23:17:49 <oerjan> the simplest way is to divide into small intervals and approximate it as constant on each 
23:17:56 -!- sekhmet has joined. 
23:18:09 <oerjan> then for each interval it is just the area of a square 
23:18:27 <SevenInchBread> yeah... just the chunk of the wave that is repeated would be all you need. 
23:18:57 <oerjan> when you take the limit of smaller intervals, that is the riemann integral 
23:19:22 <oklopol> ah, that's why you use sum in actual implementations of fourier 
23:19:24 <oerjan> although there are more efficient methods if your function is also differentiable 
23:19:56 <oklopol> because often you don't need fourier when you've made the function yourself 
23:20:05 <oklopol> because you prolly know what it is if you made it 
23:20:08 <oerjan> (requiring less subdivisions for accuracy) 
23:21:04 <oerjan> if it is already a sum of sine waves then it is easier to transform using the known expression for them, yeah 
23:22:37 <oerjan> but expressing a signal as a limit sum of sine waves is the most basic 
23:23:35 <oerjan> dividing it up by frequency rather than time 
23:24:39 <bsmntbombdood> so X(a) is the amplitude of the sine wave at frequency a? 
23:24:47 <SevenInchBread> is the fourier transform used to reproduce chords and multiple waves at the same time? 
23:25:37 <oerjan> actually a and -a together give the sine and cosine wave parts.  Complex numbers mix them a bit 
23:26:01 <oerjan> That e^ix = cos x + i sin x thing 
23:27:06 <oerjan> reversed as e^ix + e^(-ix) = 2 cos x and e^ix - e^(-ix) = 2 sin x 
23:29:18 <oerjan> a sum of multiple waves, two for each frequency 
23:32:09 <oerjan> if a signal is truly periodic with frequency f, then only frequencies that are integer multiples of f will appear 
23:33:20 <oklopol> SevenInchBread no, addition is for that 
23:33:56 <oerjan> That is essentially the point of Fourier _series_ 
23:34:12 <oerjan> Yeah, the Fourier transform is linear so it preserves addition 
23:35:07 <oklopol> you do fourier transforms for the opposite 
23:35:17 <oklopol> figuring out what waves have been added 
23:35:32 <oklopol> (and once again correct me if i'm wrong...) 
23:35:51 <oerjan> Except there are some weird problems with summing the sine waves if the original function is not nice enough. 
23:36:10 <oerjan> You need to do the limit in a more clever way than simple integration 
23:39:10 <oerjan> This is because the result of the Fourier transform is not necessarily itself directly Fourier transformable 
23:39:58 <oerjan> otherwise it would just be a matter of repeating the process with some constants and signs changed 
23:41:08 <SevenInchBread> I was thinking about making an interactive programming language for playing around with sound samples mid-play.. 
23:41:33 <SevenInchBread> like... some weird cross between programming and a synthesizer. 
23:43:22 <oerjan> You might want to look at http://en.wikipedia.org/wiki/Discrete_Fourier_transform 
23:45:17 <oerjan> It is for the case when you have a finite set of time points. 
23:45:49 <oerjan> Incidentally all these different forms of Fourier transforms are united by the theory of dual groups. 
23:46:51 <oerjan> Essentially for every kind of time group there is a dual frequency group.  The real numbers are their own dual, as are the integers mod n 
23:47:23 <oerjan> *every = every sufficiently nice (commutative, locally compact) 
23:48:05 -!- sekhmet has quit ("ups tests..."). 
23:48:06 <SevenInchBread> -ahem- as a precaution... none of your explainations have helped me so far.    -gentlemanly smile- 
23:48:07 <oerjan> however the unit circle is dual to the integers, which explains why you get a Fourier _series_ from a periodic signal. 
23:48:24 <oerjan> Not even the discrete fourier transform? 
23:48:43 <oerjan> I admit the general stuff was mostly in case someone else was interested 
23:49:06 <SevenInchBread> time group and dual frequency group means nothing to me. :( 
23:49:07 <oklopol> oerjan i don't think he'll need a fourier transform for what he defined 
23:49:30 <oerjan> Well he needs a way to get frequencies from samples, doesn't he? 
23:50:04 <oklopol> if he's doing what i think he's doing 
23:50:14 <SevenInchBread> I don't need to create sound files... I just want to mix multiple sound files together... among other things. 
23:50:21 <oklopol> just a programmer's version of logic audio or guitar pro or such 
23:51:00 <oerjan> Well in that case you just add amplitudes together with coefficients 
23:51:11 <oklopol> that's what i've been planning to do for ages 
23:51:24 <oklopol> but i've never had a direct acces to the speaker 
23:51:34 <oklopol> though oerjan maybe showed me the way 
23:52:12 <oerjan> that Windows audio wave thing sounds complicated but it apparently solves the time gap problem 
23:52:23 <SevenInchBread> ...probablly heavily concurrent... because you need multiple "processes" playing all at once... like an interactive programming language mixed with a GUI. 
23:54:12 <oerjan> There was something about mixing there too 
23:55:37 <oerjan> You need that nowmap thing and a way to sum the result :) 
23:56:54 <oerjan> But then concurrency may not be so important if they are independent - just loop over them for each time block, summing 
23:57:15 <oerjan> assuming it is not so heavy you need multiple cores... 
23:57:26 <oklopol> well, if they are done at the same time, it must be O(1) ! 
23:58:12 -!- jix__ has joined. 
23:58:14 <oerjan> anyhow if it is anything like that audio wave thing then it will actually be event driven. 
23:58:51 <oerjan> i saw something about getting a callback when the audio device is finished playing a data block 
23:59:16 <oerjan> in fact there seemed to be a bunch of alternatives listed for how to do that 
00:01:39 <oerjan> no for how to get the information back 
00:02:59 <oerjan> ah yes, it was the links at the end of http://msdn2.microsoft.com/en-us/library/ms705672.aspx 
00:04:36 <oklopol> i don't actually know what you call it 
00:04:47 <oerjan> since /dev/lp is the printer 
00:05:24 <oerjan> this made up out of thin air, naturally 
00:05:58 <oklopol> i mean, the thingie that moves around in the loudspeaker, what's it called? 
00:06:26 -!- jix has quit (Read error: 110 (Connection timed out)). 
00:09:12 <oerjan> wikipedia says "diaphragm" 
00:10:09 <oklopol> i wonder where i've seen that then :| 
00:10:41 <oklopol> even though i was thinking about tree cones 
00:13:58 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
00:18:02 -!- sekhmet has joined. 
00:19:27 <SevenInchBread> hot swapping is interesting... I wonder how smalltalk and Erlang do it. 
00:19:58 <bsmntbombdood> http://www.swiss.ai.mit.edu/classes/6.001/abelson-sussman-lectures/ 
00:23:04 <oerjan> my impression from Lambda the Ultimate is that they highly recommend those 
00:23:47 -!- SevenInchBread has quit (Read error: 104 (Connection reset by peer)). 
00:25:39 -!- SevenInchBread has joined. 
00:26:14 <bsmntbombdood> there's probably some way to make wget download all the .avi files from that page 
00:29:53 <oerjan> have you consider looking at the man page? :) 
00:33:11 <oerjan> mind you that page is big 
00:33:22 <GregorR> wget's man page is fairly overwhelming. 
00:36:11 <oerjan> actually I guess it is compressed already 
00:52:25 -!- sebbu has quit ("http://www.parti-geek.com/programme.php"). 
01:01:15 <oerjan> and with a little reordering, == I 
01:01:48 <oerjan> essentially church numerals _are_ primitive recursion 
01:20:10 -!- ShadowHntr has quit ("End of line."). 
01:56:00 -!- ShadowHntr has joined. 
01:59:57 -!- ShadowHntr has quit (Client Quit). 
02:26:23 <RodgerTheGreat> does anyone know a PHP function that can do the same as java.String.startsWith() ? 
02:28:02 <bsmntbombdood> What's the deal with people who serve everything through one php/cgi script? 
02:28:20 <bsmntbombdood> Why would you want to write a slow and buggy webserver on top of a real one? 
02:38:18 <RodgerTheGreat> ...because hardcoding everything is infinitely superior 
02:38:52 <RodgerTheGreat> or do you prefer flat-file storage systems? Mind-bleedingly efficient 
02:39:29 <oerjan> Nah we just use literal sector numbers 
03:50:07 -!- SevenInchBread has quit (Read error: 145 (Connection timed out)). 
05:33:41 -!- wooby has joined. 
05:35:22 -!- RodgerTheGreat has quit. 
05:47:44 <oklopol> databases have more than one dimension then? 
05:51:28 <oerjan> i suppose dependent on how you look at it, a relational database could have either two dimensions (row and column) or as many as they have columns 
05:59:31 <oklopol> then again, that's only an abstraction, any file can be considered having multiple dimensions if it seems appropriate 
05:59:56 -!- wooby has quit (Read error: 113 (No route to host)). 
06:27:57 -!- Sgeo has quit ("Leaving"). 
06:39:34 -!- GreaseMonkey has joined. 
06:43:04 -!- oerjan has quit ("Good night"). 
06:58:44 -!- wooby has joined. 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:14:29 -!- Sukoshi has joined. 
08:20:20 -!- ShadowHntr has joined. 
08:41:20 <nooga> my raytracer written in SADOL almost works 
08:42:55 <nooga> http://pastebin.ca/401307 :D 
08:43:22 <nooga> http://esolangs.org/wiki/SADOL 
08:44:01 <nooga> almost like perl :} 
08:50:37 <nooga> vector operations look kool 
08:54:51 <Sukoshi> I would clap if I knew what a raytracer was. 
08:56:46 <nooga> http://en.wikipedia.org/wiki/Ray_tracing 
08:57:10 <nooga> this one has only diffuse lightning and ball primitive 
08:58:01 <nooga> but i'll code reflection and some cool shaders 
08:58:07 <Sukoshi> Is that an actually helpful article, or something like Mathworld's definition of a bounded function being ``A property which a closed topological space exhibits''. 
08:59:39 <nooga> here :P http://fuzzyphoton.tripod.com/howtowrt.htm  
10:12:55 -!- GreaseMonkey has quit ("RoboMonkey works....ish"). 
10:43:00 -!- fizzie has quit (Read error: 60 (Operation timed out)). 
10:45:11 -!- Sukoshi has quit ("今、眠っていい。留守番電話でメッセジを入ったいなら、電話番号は555ー5555。普通"). 
11:37:29 -!- wooby has quit. 
11:55:36 -!- ais523 has joined. 
11:56:19 <ais523> And first, an apology. 
11:56:32 * ais523 apologises for not providing the source code to their Dupdog interpreter 
11:56:48 <ais523> because I wrote it in a Thutu wimpmode, and so nobody else could have run it 
11:57:25 <ais523> But now, it's in the pastebin: http://pastebin.ca/raw/401416 (Dupdog interpreter), http://pastebin.ca/raw/401410 (Thutu2 wimpmode; work in progress) 
11:58:28 <ais523> ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(3)+unichr(0)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='[' and t[l]==0:\n   c=1\n   while c>0:\n    i=i+1\n    if p[i]=='[': c=c+1\n    if p[i]==']': c=c-1\n  if p[i]==']' and t[l]!=0:\n   c=1\n   while c>0:\n    i=i-1\n    if p[i]==']': c=c+1\n    if p[i]=='[': c=c-1\n" 
11:58:48 <ais523> ~exec self.bf4="  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': o=o+unichr(t[l])\n  if p[i]==',':\n   t[l]=ord(a[0])\n   a=a[1:]\n  i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf ([^!]*)!?(.*)',bfarg)" 
11:59:16 <ais523> ~exec exec(self.bf3+self.bf4) 
11:59:27 <ais523> ~bf ,[.,]!bsmnt_bot needs better persistence 
11:59:28 <bsmnt_bot> bsmnt_bot needs better persistence 
12:02:47 -!- ais523 has quit ("I'm about to be thrown out of the room with my IRC client in (one of the hazards of public computers)"). 
12:10:26 -!- jix has joined. 
12:38:54 -!- RodgerTheGreat has joined. 
12:44:56 <RodgerTheGreat> http://img.waffleimages.com/7a1f19b0d0ba1e5bac2d3ef48bb1c9de7a8efaef/bikecrash.gif 
13:13:36 <RodgerTheGreat> the truth of that assumption, however, is questionable 
13:14:11 <RodgerTheGreat> and I think we can all agree that's an esoteric way to say "no" 
15:25:48 -!- tgwizard has joined. 
15:29:25 -!- tgwizard has quit (Client Quit). 
15:29:30 -!- tgwizard has joined. 
15:31:39 -!- tgwizard has quit (Client Quit). 
16:01:29 -!- ais523 has joined. 
16:06:35 <EgoBot> 1 ais523: daemon ul bf 
16:06:37 <EgoBot> 2 ais523: daemon deadfish funge93 
16:06:39 <EgoBot> 3 ais523: daemon dog funge93 
16:10:22 -!- nazgjunk has joined. 
16:11:40 <ais523> ~bf ,[.,]!!ul (~bf ,[.,]!!ul ):SaS(:SaS):SaS(:SaS):SaS(:SaS):SaS 
16:11:40 <bsmnt_bot> !ul (~bf ,[.,]!!ul ):SaS(:SaS):SaS(:SaS):SaS(:SaS):SaS 
16:11:43 <EgoBot> ~bf ,[.,]!!ul (~bf ,[.,]!!ul ):SaS(:SaS):SaS(:SaS):SaS(:SaS) 
16:11:45 <bsmnt_bot> !ul (~bf ,[.,]!!ul ):SaS(:SaS):SaS(:SaS):SaS(:SaS) 
16:11:47 <EgoBot> ~bf ,[.,]!!ul (~bf ,[.,]!!ul ):SaS(:SaS):SaS(:SaS) 
16:11:48 <bsmnt_bot> !ul (~bf ,[.,]!!ul ):SaS(:SaS):SaS(:SaS) 
16:11:51 <EgoBot> ~bf ,[.,]!!ul (~bf ,[.,]!!ul ):SaS(:SaS) 
16:11:55 <EgoBot> ~bf ,[.,]!!ul (~bf ,[.,]!!ul ) 
16:14:44 <ais523> ~bf >,[>,]<[<]>.[>.]<[<]>.[>.]!~bf >,[>,]<[<]>.[>.]<[<]>.[>.]! 
16:15:12 <ais523> ~bf >,[>,]<[<]>[.>]<[<]>[.>]!~bf >,[>,]<[<]>[.>]<[<]>[.>]! 
16:15:13 <bsmnt_bot> ~bf >,[>,]<[<]>[.>]<[<]>[.>]!~bf >,[>,]<[<]>[.>]<[<]>[.>]! 
16:15:49 <ais523> seems that it interpreted outputting a NUL as end-of-string 
16:26:05 <ais523> this gives me an idea for an Easy quine 
16:26:57 <ais523> +[->,[>,]<[<]>.[>.]<[<]>.[>.]<[<]]+[->,[>,]<[<]>.[>.]<[<]>.[>.]<[<]] 
16:27:21 <ais523> (where EOF is 0, and the entire second half of the program is interpreted as input as soon as the square brackets become balanced). 
16:51:44 -!- ShadowHntr has quit ("End of line."). 
17:45:41 -!- FabioNET has joined. 
17:51:08 -!- FabioNET has quit (Remote closed the connection). 
18:00:34 -!- FabioNET has joined. 
18:15:01 <ais523> !ul ((!ul )SaS(:^)S):^ 
18:15:05 <EgoBot> !ul ((!ul )SaS(:^)S):^ 
18:19:54 <ais523> ~bf >,[>,]<[.<]>[>]<[.<]!~bf >,[>,]<[.<]>[>]<[.<]! 
18:19:54 <bsmnt_bot> !]<.[<]>[>]<.[<],>[,> fb~!]<.[<]>[>]<.[<],>[,> fb~ 
18:20:15 <oklopol> wow, i actually figured out someone else's quine's idea 
18:20:36 <ais523> this sort of thing is what's nice about Easy 
18:20:48 <ais523> it's more or less Brainfuck, but you can intersperse expected input with the program 
18:20:59 <ais523> in quite a similar way to using ! for input like bsmnt_bot's interpreter does 
18:21:09 <oklopol> oh, easy is a language, i thought it was a glorified way to say i'm a noob :P 
18:21:30 <ais523> come to think of it, I don't think the bots have an Easy interpreter 
18:21:35 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 
18:21:37 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 
18:22:47 <ais523> I don't think it would be too hard to write one for bsmnt_bot 
18:23:50 -!- sebbu has joined. 
18:24:12 <ais523> ~exec self.bf5="def bfarg(x,y):\n p=y.group(2)+unichr(0)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]=='[' and t[l]==0:\n   c=1\n   while c>0:\n    i=i+1\n    if p[i]=='[': c=c+1\n    if p[i]==']': c=c-1\n  if p[i]==']' and t[l]!=0:\n   c=1\n   while c>0:\n    i=i-1\n    if p[i]==']': c=c+1\n    if p[i]=='[': c=c-1\n" 
18:25:29 <ais523> ~exec self.bf4="  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': o=o+unichr(t[l])\n  if p[i]==',':\n   t[l]=ord(t[l+1])\n   t=t[:l]+t[l+2:]\n  i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~easy ([^!]*)!?(.*)',bfarg)" 
18:25:43 <ais523> ~exec exec self.bf5+self.bf4 
18:26:08 <ais523> ~easy ,H.,e.,l.,l.,o., .,w.,o.,r.,l.,d.,!. 
18:26:36 <ais523> besides I hadn't allowed for , inside square brackets 
18:26:37 <oklopol> where did you tell it ~easy? 
18:26:45 <ais523> ~bf ,[.,]!Hope I haven't crashed this 
18:26:57 <ais523> "~easy" was at the end of bf6's definition 
18:27:11 <ais523> which I called bf4 by mistake, but at least I was consistent 
18:27:37 <ais523> ~easy +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. 
18:27:59 <ais523> ~exec sys.stdout(self.raw_regex_queue()) 
18:27:59 <bsmnt_bot> TypeError: 'list' object is not callable 
18:28:02 <ais523> ~exec sys.stdout(self.raw_regex_queue) 
18:28:03 <bsmnt_bot> [(<_sre.SRE_Pattern object at 0xb7d09c98>, <bound method IRCbot.pong of <__main__.IRCbot instance at 0xb7c7816c>>), (<_sre.SRE_Pattern object at 0x80d8a60>, <bound method IRCbot.do_quit of <__main__.IRCbot instance at 0xb7c7816c>>), (<_sre.SRE_Pattern object at 0x80d2220>, <bound method IRCbot.do_raw of <__main__.IRCbot instance at 0xb7c7816c>>), (<_sre.SRE_Pattern object  
18:28:07 <bsmnt_bot> at 0x80d2020>, <bound method IRCbot.do_ctcp of <__main__.IRCbot instance at 0xb7c7816c>>), (<_sre.SRE_Pattern object at 0x80d2690>, <bound method IRCbot.do_exec of <__main__.IRCbot instance at 0xb7c7816c>>), (<_sre.SRE_Pattern object at 0x80d28c8>, <bound method IRCbot.do_exec of <__main__.IRCbot instance at 0xb7c7816c>>), (<_sre.SRE_Pattern object at 0x8061cb8>, <bound me 
18:28:12 <bsmnt_bot> thod IRCbot.do_ps of <__main__.IRCbot instance at 0xb7c7816c>>), (<_sre.SRE_Pattern object at 0x80d2b30>, <bound method IRCbot.do_kill of <__main__.IRCbot instance at 0xb7c7816c>>), (<_sre.SRE_Pattern object at 0x80d8078>, <function <lambda> at 0xb7c795a4>), (<_sre.SRE_Pattern object at 0x80d7b60>, <function <lambda> at 0xb7c836bc>), (<_sre.SRE_Pattern object at 0x80d6088> 
18:28:17 <bsmnt_bot> , <function bfarg at 0xb7c7964c>)] 
18:28:28 <ais523> is that a real channel? 
18:29:03 <ais523> ~easy +++++++++++++++++++++++++++++++++++. 
18:29:20 <ais523> ~easy ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. 
18:29:33 <ais523> no obvious errors are coming out there 
18:29:57 <ais523> ~exec This is not a real Python command. 
18:30:43 <ais523> ~exec self.pop_raw_regex_queue() 
18:30:43 <bsmnt_bot> AttributeError: IRCbot instance has no attribute 'pop_raw_regex_queue' 
18:30:50 <ais523> ~exec self.raw_regex_queue.pop() 
18:31:54 <ais523> ~exec self.bf6=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(t[l+1])\n t=t[:l]+t[l+2:]\n i=i+1\nsys.stdout(o)\nself. register_raw(r'\S+ PRIVMSG (\S+) :~easy (.*)',bfarg)" 
18:32:07 <ais523> ~exec exec self.bf5+self.bf6 
18:32:07 <bsmnt_bot> IndentationError: expected an indented block (line 27) 
18:32:35 <ais523> ~bf ,[.,]!Is this still working? 
18:33:11 <ais523> ~exec self.bf4="  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': o=o+unichr(t[l])\n  if p[i]==',':\n   t[l]=ord(a[0])\n   a=a[1:]\n  i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf ([^!]*)!?(.*)',bfarg)" 
18:33:17 <ais523> ~exec self.bf3+self.bf4 
18:33:28 <ais523> ~bf ,[.,]!Should be working now 
18:33:46 <ais523> no errors, no response... 
18:33:58 <ais523> ~exec sys.stdout("Is bsmnt_bot still running?") 
18:34:05 <ais523> ~bf ,[.,]!Should be working now 
18:34:53 <ais523> ~exec sys.stdout(repr(self.raw_regex_queue.peek())) 
18:34:53 <bsmnt_bot> AttributeError: 'list' object has no attribute 'peek' 
18:35:05 <ais523> ~exec sys.stdout(repr(self.raw_regex_queue[0])) 
18:35:05 <bsmnt_bot> (<_sre.SRE_Pattern object at 0xb7d09c98>, <bound method IRCbot.pong of <__main__.IRCbot instance at 0xb7c7816c>>) 
18:35:18 <ais523> ~exec sys.stdout(repr(self.raw_regex_queue[10])) 
18:35:18 <bsmnt_bot> IndexError: list index out of range 
18:35:21 <ais523> ~exec sys.stdout(repr(self.raw_regex_queue[8])) 
18:35:22 <bsmnt_bot> (<_sre.SRE_Pattern object at 0x80d8078>, <function <lambda> at 0xb7c795a4>) 
18:35:44 <ais523> ~exec sys.stdout(repr(self.raw_regex_queue[8][2])) 
18:35:44 <bsmnt_bot> IndexError: tuple index out of range 
18:35:58 <ais523> ~exec sys.stdout(repr(self.raw_regex_queue[8][1])) 
18:36:08 <ais523> ~exec sys.stdout(repr(self.raw_regex_queue[8][0])) 
18:36:09 <bsmnt_bot> <_sre.SRE_Pattern object at 0x80d8078> 
18:36:21 <ais523> ~exec sys.stdout(repr(self.raw_regex_queue[8][0].group(1))) 
18:36:58 <ais523> OK, I've just managed to get myself confused. It's quite hard to poke around bsmnt_bot's internals when you don't actually know much Python 
18:43:23 <ais523> program bsmnt_bot to do Easy 
18:43:48 <ais523> http://esolangs.org/wiki/Easy 
18:43:58 <ais523> like BF, but input is interspersed with the program 
18:44:05 <ais523> it's considerably better for quines than BF is 
18:44:47 <ais523> I interpreted your smiley as a TM marker there for a bit 
18:51:02 <ais523> the little TM that you put at the end of something to show it's a company or if you're just being ironic 
19:07:44 <ais523> !dog )"?gnikorw I mA"(toudts.sys cexe~ 
19:07:45 <EgoBot> ~exec sys.stduot("Am I wroking?") 
19:07:51 <ais523> !dog )"?gnikorw I mA"(tuodts.sys cexe~ 
19:07:55 <EgoBot> ~exec sys.stdout("Am I wroking?") 
19:10:46 <ais523> now both bots have crashed... 
19:10:46 <ais523> sometimes restarting EgoBot helps... 
19:10:51 <EgoBot> 1 ais523: daemon ul bf 
19:10:53 <EgoBot> 2 ais523: daemon deadfish funge93 
19:10:55 <EgoBot> 3 ais523: daemon dog funge93 
19:14:50 <ais523> well, that's EgoBot back up at least 
19:17:11 <ais523> !ul (~exec sys.stdout("Is bsmnt_bot not listening to me or not listening to anyone?"))S 
19:17:13 <EgoBot> ~exec sys.stdout("Is bsmnt_bot not listening to me or not listening to anyone?") 
19:17:23 <ais523> not to anyone, it seems 
19:27:03 -!- FabioNET has quit (Client Quit). 
19:45:04 -!- RodgerTheGreat has quit. 
19:51:16 -!- UpTheDownstair has joined. 
19:56:46 -!- ais523 has quit ("It seems my IRC client pre-empted Underload's quoting scheme by several years by trapping quit messages in parentheses"). 
20:09:54 -!- nazgjunk has quit (Connection timed out). 
20:12:06 -!- sebbu2 has joined. 
20:21:42 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)). 
20:21:51 -!- GregorR has quit ("leaving"). 
20:30:57 -!- sebbu has quit (Read error: 110 (Connection timed out)). 
21:36:10 -!- oerjan has joined. 
21:42:31 <oerjan> ~exec list_dir("/bot") 
21:42:55 <oerjan> ~exec sys.stdout(list_dir("/bot")) 
21:43:07 <oerjan> ~exec sys.stdout("Anyone there?") 
21:44:04 <oerjan> ~exec self.raw("PRIVMSG #esoteric :I'm here") 
21:47:04 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 
21:47:30 -!- nazgjunk has joined. 
21:58:43 -!- UpTheDownstair has joined. 
22:03:52 -!- Sgeo has joined. 
22:05:45 -!- nazgjunk has quit (Read error: 145 (Connection timed out)). 
22:06:27 -!- nazgjunk has joined. 
22:12:43 -!- GregorR has joined. 
22:21:16 -!- UpTheDownstair has quit (Connection timed out). 
22:25:11 -!- bsmnt_bot has quit (Read error: 131 (Connection reset by peer)). 
22:25:14 -!- bsmnt_bot has joined. 
22:30:18 <oerjan> ~exec sys.stdout(list_dir("/bot")) 
22:30:18 <bsmnt_bot> NameError: name 'list_dir' is not defined 
22:30:48 <oerjan> ~exec sys.stdout(dir_list("/bot")) 
22:30:48 <bsmnt_bot> NameError: name 'dir_list' is not defined 
22:31:12 <lament> what the hell is list_dir 
22:32:20 <lament> ~exec sys.stdout(os.listdir(os.getcwd())) 
22:32:21 <bsmnt_bot> ['bin', 'bot', 'etc', 'lib', 'usr'] 
22:32:32 <lament> ~exec sys.stdout(os.listdir('bot')) 
22:32:32 <bsmnt_bot> ['scripts', 'betterbot.py', 'test.pickle', 'foo.py~', 'ski_repl.py', 'foo.py', 'ircbot.py~', 'start.sh', 'better.sh', 'ircbot.py'] 
22:33:26 <oerjan> ~exec sys.stdout(os.listdir("/bot/scripts")) 
22:33:52 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
22:38:08 <oerjan> ~exec with open("/bot/scripts/foo") as f: sys.stdout(f.readline()) 
22:41:19 <oerjan> ~exec f = open("/bot/scripts/foo"); sys.stdout(f.readline()); f.close() 
22:41:42 <oerjan> ~exec f = open("/bot/scripts/foo"); sys.stdout(f.readlines()); f.close() 
22:42:17 <oerjan> ~exec sys.stdout(os.listdir("/lib")) 
22:42:18 <bsmnt_bot> ['libm.so.6', 'libreadline.so.5', 'libacl.so.1', 'libdl-2.4.so', 'libresolv.so.2', 'libutil.so.1', 'libncurses.so.5', 'libattr.so.1', 'libcrypt.so.1', 'ld-linux.so.2', 'libdl.so.2', 'libpthread.so.0', 'libpam_misc.so.0', 'libpam.so.0', 'libc.so.6', 'librt.so.1'] 
22:42:24 <oerjan> ~exec sys.stdout(os.listdir("/")) 
22:42:24 <bsmnt_bot> ['bin', 'bot', 'etc', 'lib', 'usr'] 
22:42:30 <oerjan> ~exec sys.stdout(os.listdir("/bot")) 
22:42:30 <bsmnt_bot> ['scripts', 'betterbot.py', 'test.pickle', 'foo.py~', 'ski_repl.py', 'foo.py', 'ircbot.py~', 'start.sh', 'better.sh', 'ircbot.py'] 
22:42:36 <oerjan> ~exec sys.stdout(os.listdir("/bin")) 
22:42:40 <oerjan> ~exec sys.stdout(os.listdir("/usr")) 
22:42:44 <oerjan> ~exec sys.stdout(os.listdir("/usr/lib")) 
22:42:45 <bsmnt_bot> ['libpthread.so', 'libskey.so.1', 'python2.4', 'libdl.so', 'libpython2.4.so.1.0'] 
22:42:52 <oerjan> ~exec sys.stdout(os.listdir("/usr/include")) 
22:43:00 <oerjan> ~exec sys.stdout(os.listdir("/usr/include/python2.4")) 
22:43:00 <bsmnt_bot> ['dictobject.h', 'pyerrors.h', 'traceback.h', 'Numeric', 'structmember.h', 'pyfpe.h', 'pymem.h', 'pymactoolbox.h', 'osdefs.h', 'bitset.h', 'parsetok.h', 'timefuncs.h', 'py_curses.h', 'tupleobject.h', 'pgenheaders.h', 'sliceobject.h', 'compile.h', 'bufferobject.h', 'weakrefobject.h', 'enumobject.h', 'pydebug.h', 'marshal.h', 'pyconfig.h', 'stringobject.h', 'pythonrun.h', 'c 
22:43:00 <bsmnt_bot> odecs.h', 'pygetopt.h', 'structseq.h', 'rangeobject.h', 'ucnhash.h', 'datetime.h', 'metagrammar.h', 'cStringIO.h', 'graminit.h', 'methodobject.h', 'eval.h', 'descrobject.h', 'genobject.h', 'token.h', 'cobject.h', 'classobject.h', 'cellobject.h', 'boolobject.h', 'Python.h', 'grammar.h', 'symtable.h', 'longobject.h', 'node.h', 'pythread.h', 'floatobject.h', 'pgen.h', 'opcode 
22:43:01 <bsmnt_bot> .h', 'pystate.h', 'object.h', 'patchlevel.h', 'setobject.h', 'intobject.h', 'intrcheck.h', 'objimpl.h', 'pystrtod.h', 'abstract.h', 'frameobject.h', 'complexobject.h', 'errcode.h', 'import.h', 'unicodeobject.h', 'pyport.h', 'sysmodule.h', 'fileobject.h', 'iterobject.h', 'ceval.h', 'funcobject.h', 'modsupport.h', 'listobject.h', 'moduleobject.h', 'longintrepr.h'] 
22:43:35 <oerjan> ~exec sys.stdout(os.listdir("/usr/bin")) 
22:52:54 <oerjan> ~exec f = __import("urllib").urlopen("http://oerjan.nvg.org"); sys.stdout(f.readline()); f.close() 
22:52:54 <bsmnt_bot> NameError: name '__import' is not defined 
22:53:01 <oerjan> ~exec f = __import__("urllib").urlopen("http://oerjan.nvg.org"); sys.stdout(f.readline()); f.close() 
22:53:02 <bsmnt_bot> IOError: [Errno socket error] (-2, 'Name or service not known') 
22:53:19 <oerjan> ~exec f = __import__("urllib").urlopen("http://oerjan.nvg.org/"); sys.stdout(f.readline()); f.close() 
22:53:27 <bsmnt_bot> IOError: [Errno socket error] (-2, 'Name or service not known') 
22:55:04 <oerjan> ~exec f = __import__("urllib").urlopen("http:/129.241.210.70/~oerjan/"); sys.stdout(f.readline()); f.close() 
22:55:04 <bsmnt_bot> IOError: [Errno http error] no host given 
22:55:14 <oerjan> ~exec f = __import__("urllib").urlopen("http://129.241.210.70/~oerjan/"); sys.stdout(f.readline()); f.close() 
22:55:19 <bsmnt_bot> IOError: [Errno socket error] (-2, 'Name or service not known') 
22:55:43 <oerjan> more than just DNS lacking, i see 
22:56:51 <oerjan> it's going to be a pain to download scripts then. 
22:57:40 <oerjan> otoh i can appreciate you don't want to give us that much power :) 
22:59:12 <oerjan> ~exec f = __import__("urllib").urlopen("http://129.241.210.70/~oerjan/"); sys.stdout(f.readline()); f.close() 
22:59:13 <bsmnt_bot> IOError: [Errno socket error] (-2, 'Name or service not known') 
23:00:00 <oerjan> wow that is some error list 
23:01:29 -!- calamari has joined. 
23:02:53 <oerjan> ~bf ++++++++[->++++++++<]>. 
23:11:57 <bsmntbombdood> not sure what's wrong with the internets inside the chroot 
23:20:10 <oerjan> it looks slightly unbalanced, maybe put the lambda and shield a bit more to the right 
23:21:13 <oerjan> perhaps a slightly larger shield too 
23:21:29 <oerjan> not sure about the last one 
23:23:41 <lament> why are you drawing knights of lambda calculus stuff. 
23:25:23 <oerjan> perhaps a thicker shield border to balance the lambda more too 
23:27:10 <oerjan> and then we might start thinking about colors. 
23:28:48 <lament> i think by this point in history it's quite a bit lame to claim to be in any way affiliated with the KotLC unless you're at least an MIT student. 
23:28:49 <oerjan> in theory F could be a color map, so the shields could have different colors 
23:30:03 <oerjan> maybe you could be a knight of SKI calculus. that would suit #esoteric better. :) 
23:31:23 <oerjan> is that design based on anything official of the KotLC (which i know little about) ? 
23:32:16 <bsmntbombdood> that image was too small, so i vectorized it and made it bigger 
23:33:08 <oerjan> it seems like most of my suggestions amounted to making your design more similar to the original. 
23:39:14 <oerjan> we could do something like YF above = above F(F(...)), and Y written out in SKI terms 
23:40:45 <oerjan> anyhow the inside of parenthesis would be shrunk of course 
23:46:26 <oerjan> wikipedia mentions the combinator by John Tromp: S S K (S (K (S S (S (S S K)))) K) 
23:48:47 <oerjan> essentially yes, but a shorter version than the usual one 
23:54:01 <bsmntbombdood> the ackermann function in lambda calculus for church numerals 
00:01:58 <oerjan> Yk = (L L L L L L L L L L L L L L L L L L L L L L L L L L) where L = \abcdefghijklmnopqstuvwxyzr. (r (t h i s i s a f i x e d p o i n t c o m b i n a t o r)) 
00:05:53 -!- sebbu2 has quit ("@+"). 
00:05:53 -!- bsmnt_bot has quit (Remote closed the connection). 
00:05:56 -!- bsmnt_bot has joined. 
00:07:14 -!- ShadowHntr has joined. 
00:10:54 <lament> you really want to be hacked? :) 
00:17:14 -!- bsmnt_bot has quit (Remote closed the connection). 
00:17:16 -!- bsmnt_bot has joined. 
00:21:51 -!- bsmnt_bot has quit (Read error: 131 (Connection reset by peer)). 
00:22:28 -!- nazgjunk has quit ("Leaving"). 
00:24:50 -!- bsmnt_bot has joined. 
00:25:02 <bsmnt_bot> ['files.img', 'a.out', 'scripts', 'betterbot.py', 'test.pickle', 'foo.py~', 'ski_repl.py', 'foo.py', 'ircbot.py~', 'start.sh', 'better.sh', 'start.sh~', 'ircbot.py'] 
00:28:27 <oerjan> hm - it occurs to me there is nothing now preventing the download of binaries. 
00:29:05 <bsmntbombdood> but there is something preventing the execution of them 
00:30:24 <bsmntbombdood> ~exec f=open("/bot/scripts/foo", "w"); f.write("foo\n"); f.close() 
00:30:24 <bsmnt_bot> IOError: [Errno 13] Permission denied: '/bot/scripts/foo' 
00:33:17 -!- bsmnt_bot has quit (Remote closed the connection). 
00:33:22 -!- bsmnt_bot has joined. 
00:35:42 -!- bsmnt_bot has quit (Remote closed the connection). 
00:41:08 <oerjan> what is this noexec thing and how does it stop os.chmod? 
01:02:37 -!- bsmntbombdood has quit ("Lost terminal"). 
01:03:05 -!- bsmntbombdood has joined. 
01:04:52 -!- bsmnt_bot has joined. 
01:06:02 <bsmntbombdood> ~exec f=open("/bot/scripts/foo", "w"); f.write("foo\n"); f.close() 
01:06:47 <bsmntbombdood> ~exec f=open("/bot/scripts/foo", "r"); sys.stdout(f.read()); f.close() 
01:08:10 <bsmntbombdood> ~exec os.system("wget 64.233.167.99 -O /bot/scripts/google.html") 
01:08:41 <bsmntbombdood> ~exec f=open("/bot/scripts/google.html", "r"); sys.stdout(f.readline()); f.close() 
01:08:41 <bsmnt_bot> IOError: [Errno 2] No such file or directory: '/bot/scripts/google.html' 
01:09:19 <bsmntbombdood> ~exec sys.stdout(os.system("wget 64.233.167.99 -O /bot/scripts/google.html")) 
01:09:44 <oerjan> ~exec sys.stdout(os.listdir("/bot/scripts")) 
01:11:38 <bsmntbombdood> ~exec self.fds = __import__("popen2").popen4("wget 64.233.167.99 -O /bot/scripts/google.html".split()) 
01:11:47 <bsmnt_bot> (<open file '<fdopen>', mode 'r' at 0xb7c62c80>, <open file '<fdopen>', mode 'w' at 0xb7c62ba8>) 
01:12:08 <bsmnt_bot> SyntaxError: unexpected EOF while parsing 
01:12:19 <bsmnt_bot> "--00:10:19--  http://64.233.167.99/\n           => `/bot/scripts/google.html'\nConnecting to 64.233.167.99:80... connected.\nHTTP request sent, awaiting response... 200 OK\nCookie coming from 64.233.167.99 attempted to set domain to google.com\nLength: unspecified [text/html]\n\n    0K ..                                                     ??% \n\n00:10:19 (62.18 MB/s) -  
01:12:20 <bsmnt_bot> `/bot/scripts/google.html' saved [2770]\n\n" 
01:12:54 <bsmntbombdood> ~exec f=open("/bot/scripts/google.html", "r"); sys.stdout(f.readline()); f.close() 
01:12:55 <bsmnt_bot> <html><head><meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><title>Google</title><style><!-- 
01:17:22 <oerjan> ~exec os.system("wget 'http://129.241.210.70/~oerjan/' -a /bot/scripts/log -O /bot/scripts/oerjan.html") 
01:17:41 <oerjan> ~exec os.listdir("/bot/scripts") 
01:17:51 <oerjan> ~exec sys.stdout(os.listdir("/bot/scripts")) 
01:18:03 <oerjan> well that worked not at all 
01:18:34 <oerjan> ~exec os.system("wget 'http://129.241.210.70/~oerjan/' -q -a /bot/scripts/log -O /bot/scripts/oerjan.html") 
01:18:40 <oerjan> ~exec sys.stdout(os.listdir("/bot/scripts")) 
01:18:48 <oerjan> ~exec sys.stdout(os.listdir("/bot/scripts")) 
01:20:54 <oerjan> ~exec os.system("wget 'http://129.241.210.70/~oerjan/' -b -a /bot/scripts/log -O /bot/scripts/oerjan.html") 
01:21:00 <oerjan> ~exec sys.stdout(os.listdir("/bot/scripts")) 
01:22:13 <oerjan> ~exec os.system("wget 'http://129.241.210.70/~oerjan/' -b -v -O /bot/scripts/oerjan.html") 
01:22:20 <oerjan> ~exec sys.stdout(os.listdir("/bot/scripts")) 
01:24:48 <oerjan> ~exec os.system("echo >/bot/scripts/test wget 'http://129.241.210.70/~oerjan/' -b -v -O /bot/scripts/oerjan.html") 
01:24:53 <oerjan> ~exec sys.stdout(os.listdir("/bot/scripts")) 
01:27:53 <oerjan> ~exec sys.stdout(os.listdir("/bin")) 
01:28:03 <oerjan> ~exec sys.stdout(os.listdir("/usr/bin")) 
01:28:04 <bsmnt_bot> ['dc', 'nice', 'wget', 'python2.4'] 
01:28:40 <oerjan> ~exec os.system("echo test >/bot/scripts/test") 
01:28:47 <oerjan> ~exec sys.stdout(os.listdir("/bot/scripts")) 
01:29:02 <oerjan> ~exec os.system("touch /bot/scripts/test") 
01:29:06 <oerjan> ~exec sys.stdout(os.listdir("/bot/scripts")) 
01:29:20 <oerjan> this is not good. oh wait. 
01:30:03 <oerjan> echo and touch are bash builtins, not? 
01:31:04 <oerjan> ~exec sys.stdout(os.listdir("/bot")) 
01:31:04 <bsmnt_bot> ['files.img', 'a.out', 'scripts', 'betterbot.py', 'test.pickle', 'foo.py~', 'ski_repl.py', 'foo.py', 'ircbot.py~', 'start.sh', 'better.sh', 'start.sh~', 'ircbot.py'] 
01:32:00 <bsmntbombdood> something to do with shell interaction i'm guessing 
01:33:35 <oerjan> has os.system ever worked in the bot? 
01:33:40 <bsmntbombdood> ~exec os.execv("/usr/bin/wget", "http://129.241.210.70/~oerjan/ -b -v -O /bot/scripts/oerjan.html".split()) 
01:33:41 -!- bsmnt_bot has quit (Remote closed the connection). 
01:33:56 -!- bsmnt_bot has joined. 
01:34:14 <oerjan> i think you need a link from /bin/sh to /bin/bash 
01:36:43 <oerjan> ~exec os.system("wget 'http://129.241.210.70/~oerjan/' -O /bot/scripts/oerjan.html") 
01:36:54 <oerjan> ~exec sys.stdout(os.listdir("/bot/scripts")) 
01:37:21 <oerjan> ~exec os.system("echo test >/bot/scripts/test") 
01:37:25 <oerjan> ~exec sys.stdout(os.listdir("/bot/scripts")) 
01:37:29 <bsmntbombdood> ~exec os.system("/usr/bin/wget 'http://129.241.210.70/~oerjan/' -O /bot/scripts/oerjan.html") 
01:38:00 <oerjan> ~exec sys.stdout(os.listdir("/bot/scripts")) 
01:39:02 <oerjan> ~exec sys.stdout(os.listdir("/bin")) 
01:39:52 <oerjan> ~exec sys.stdout(os.listdir("/dev")) 
01:39:52 <bsmnt_bot> OSError: [Errno 2] No such file or directory: '/dev' 
01:40:25 <oerjan> this then leads us to the question: does bash work? 
01:41:47 <oerjan> ~exec os.system("/bin/ls / >/bot/scripts/test") 
01:41:56 <oerjan> ~exec sys.stdout(os.listdir("/bot/scripts")) 
01:43:17 <oerjan> well it still didn't make a test file 
01:48:06 <oerjan> ~exec os.execl("/bin/bash", "-c", "echo test >/bot/scripts/test") 
01:48:07 -!- bsmnt_bot has quit (Remote closed the connection). 
01:48:34 <oerjan> it really doesn't like that... 
01:50:04 <bsmntbombdood> -c: echo test >/bot/scripts/test: No such file or directory 
01:54:38 <oerjan> the first member of the argument list should be the program name 
01:55:33 <oerjan> so bash didn't see that there was a -c option. 
01:55:34 -!- bsmnt_bot has joined. 
01:55:46 <oerjan> ~exec os.execl("/bin/bash", "le shell", "-c", "echo test >/bot/scripts/test") 
01:55:47 -!- bsmnt_bot has quit (Remote closed the connection). 
01:57:59 -!- bsmnt_bot has joined. 
01:58:19 -!- bsmnt_bot has quit (Remote closed the connection). 
01:58:40 <oerjan> now that is weird, in principle it should do exactly the same as the corresponding os.system 
01:59:15 -!- bsmnt_bot has joined. 
01:59:23 -!- bsmnt_bot has quit (Client Quit). 
01:59:28 -!- bsmnt_bot has joined. 
01:59:33 -!- bsmnt_bot has quit (Client Quit). 
02:00:19 -!- bsmnt_bot has joined. 
02:00:39 -!- bsmnt_bot has quit (Remote closed the connection). 
02:00:52 -!- bsmnt_bot has joined. 
02:10:38 <bsmntbombdood> ~exec __import__("popen2").popen4("wget http://129.241.210.70/~oerjan/ -O /bot/scripts/oerjan.html".split()) 
02:15:03 <bsmntbombdood> ~exec self.system = lambda x: os.spawnvp(os.P_WAIT, x.split()[0], x.split())) 
02:15:04 <bsmnt_bot> SyntaxError: unexpected EOF while parsing 
02:15:13 <bsmntbombdood> ~exec self.system = lambda x: os.spawnvp(os.P_WAIT, x.split()[0], x.split()) 
02:15:44 <bsmntbombdood> ~exec self.system("wget http://129.241.210.70/~oerjan/ -O /bot/scripts/foo.html") 
02:16:01 <bsmnt_bot> ['test', 'oerjan.html', 'foo.html'] 
02:17:04 <oerjan> it doesn't use a shell though. 
02:19:05 <bsmntbombdood> ~exec os.spawnvp(os.P_WAIT, "/bin/bash", ["bash", "-c", "wget http://129.241.210.70/~oerjan/ -O /bot/scripts/foo2.html"]) 
02:19:10 <bsmnt_bot> ['test', 'oerjan.html', 'foo.html', 'foo2.html'] 
02:19:56 <bsmntbombdood> ~exec self.system = lambda x: os.spawnvp(os.P_WAIT, "/bin/bash", ["bash", "-c", x]) 
02:20:21 <bsmntbombdood> ~exec self.system("echo \"foo\" > /bot/scripts/test") 
02:20:28 <bsmnt_bot> ['test', 'oerjan.html', 'foo.html', 'foo2.html'] 
02:20:56 <oerjan> strange stuff. now it does what os.system should have. 
02:24:13 <oerjan> ~exec for f in os.listdir("/bot/scripts"): os.remove("/bot/scripts/"+f) 
02:24:42 <oerjan> ~exec sys.stdout(os.listdir("/bot/scripts")) 
02:28:50 -!- GregorR has quit (Read error: 104 (Connection reset by peer)). 
02:30:01 -!- GregorR has joined. 
02:37:28 -!- GregorR_ has joined. 
02:37:30 -!- GregorR has quit (Read error: 104 (Connection reset by peer)). 
02:41:07 -!- SevenInchBread has joined. 
02:56:51 -!- GregorR has joined. 
02:56:51 -!- GregorR_ has quit (Read error: 104 (Connection reset by peer)). 
03:02:11 -!- ShadowHntr has quit ("End of line."). 
03:42:49 -!- GregorR has quit (Read error: 104 (Connection reset by peer)). 
03:59:08 <bsmntbombdood> http://www.adequacy.org/stories/2001.12.2.42056.2147.html 
04:01:21 <bsmntbombdood> "BSD, Lunix, Debian and Mandrake are all versions of an illegal hacker operation system, invented by a Soviet computer hacker named Linyos Torovoltos, before the Russians lost the Cold War." 
04:01:57 -!- SevenInchBread has quit (Read error: 145 (Connection timed out)). 
04:03:08 <oerjan> Rubbish.  Everybody knows that Mandrake is from Tibet. 
04:06:24 <bsmntbombdood> I think I'm going to steal some stereos with the mp3 program 
04:47:00 -!- GregorR has joined. 
05:15:13 -!- Arrogant has joined. 
05:58:55 -!- GreaseMonkey has joined. 
06:07:38 -!- RoboMonkey has joined. 
06:32:48 <GreaseMonkey> ?addc fu 1 x00>"PRIVMSG "%1[>,]" :fuck you, "%2[>,]x0A>x00<[<]>%0[.>] 
06:49:27 -!- Arrogant has quit ("Leaving"). 
07:02:52 -!- ShadowHntr has joined. 
07:06:02 -!- RoboMonkey has quit (Client Quit). 
07:19:07 -!- oerjan has quit ("Good timeslice"). 
07:44:22 -!- Sgeo has quit ("Leaving"). 
07:55:08 -!- ShadowHntr has quit (Read error: 145 (Connection timed out)). 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:10:02 -!- ShadowHntr has joined. 
08:44:00 -!- RoboMonkey has joined. 
08:47:18 -!- jix has joined. 
09:21:26 <GreaseMonkey> ?addc hug 0 x00>"PRIVMSG "%1[>,]" :">x01>"ACTION jumps onto the sofa and gives "%2[>,]" one of her dive-hugs">x01>x0A>x00<[<]>%0[.>] 
09:21:30 * RoboMonkey jumps onto the sofa and gives jix one of her dive-hugs 
09:22:00 <GreaseMonkey> ?addc fu 1 x00>"PRIVMSG "%1[>,]" :fuck you, "%2[>,]x0A>x00<[<]>%0[.>] 
09:23:01 <GreaseMonkey> the language is called Brainsecks - spec + examples at http://randomjunk.rudyvalencia.com/Brainsecks 
09:34:59 -!- calamari has quit ("Leaving"). 
09:36:58 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
09:45:10 <GreaseMonkey> http://greasemonkey.nonlogic.org/?render=xhtml11&page=software 
09:52:27 -!- knoppix_ has joined. 
09:53:41 -!- GreaseMonkey has quit (Nick collision from services.). 
09:53:56 -!- ShadowHntr has quit (Read error: 145 (Connection timed out)). 
09:53:58 -!- knoppix_ has quit (Client Quit). 
09:54:02 -!- knoppix_ has joined. 
09:54:21 -!- knoppix_ has quit (Read error: 104 (Connection reset by peer)). 
09:55:17 -!- GreaseMonkey has joined. 
09:55:52 -!- RoboMonkey has quit (Nick collision from services.). 
09:57:27 -!- RoboMonkey has joined. 
09:59:42 -!- RoboMonkey has quit (Client Quit). 
10:00:05 -!- RoboMonkey has joined. 
10:39:08 -!- RoboMonkey has quit (Client Quit). 
10:39:18 -!- GreaseMonkey has quit ("byes everyone"). 
15:43:44 -!- RodgerTheGreat has joined. 
16:05:49 <nooga> SADOL2 for symbian 9 is almost ready 
16:32:33 -!- ShadowHntr has joined. 
16:40:51 <RodgerTheGreat> John Backus is dead! http://www.nytimes.com/2007/03/19/obituaries/20cnd-backus.html?ex=1332043200&en=adde3ee5a1875330&ei=5124&partner=permalink&exprod=permalink 
17:11:03 -!- jix has joined. 
17:21:56 -!- nazgjunk has joined. 
17:57:51 -!- ais523 has joined. 
17:58:23 -!- oerjan has joined. 
18:04:06 <ais523> I think there may be a serious problem with FukYorBrane 
18:04:26 <ais523> The only way to move your data pointer around in the other program is using > and <, which takes time 
18:04:49 <ais523> but it's possible to skip a whole lot of code using [ and ] (for instance, defecting to your own code which contains a NOP in that location) 
18:05:04 <oerjan> It wouldn't be an esoteric language if it didn't have serious problems. 
18:05:16 <ais523> so you can easily get your instruction pointer way out of the reach of the other program simply 
18:05:34 <ais523> and so the perfect FYB program would just be infinitely long, which sort of defeats the point 
18:05:50 <ais523> maybe it should be changed so that [] is a do-while rather than a while loop 
18:06:09 <ais523> By the way, I've been wondering about BF where [] is do-while rather than while, and whether it's BF-complete 
18:06:49 <lament> ais523: you can't write cat in it! 
18:07:18 <ais523> oh of course, because you always have to output at least one character in a program that does output 
18:07:35 <oerjan> there would be no way to halt a program without having performed every single command at least once 
18:07:44 <ais523> it's probably Turing-complete, though 
18:07:53 <ais523> or at least I don't see why it wouldn't be 
18:08:10 <lament> it's probably turing-complete, but only because a box of rotten apples tied together on a string is turing-complete 
18:08:17 <ais523> and you could simulate cat by outputting something like space, backspace at the start 
18:08:38 <ais523> lament: do you have a BF or P'' interpreter using a box of rotten apples and a string? 
18:08:49 <oerjan> this requires an esolang based on rotten apples tied together on a string. 
18:09:24 <oerjan> when they get too rotten, they could fall off. 
18:10:39 <ais523> the string could lie over the edge of the box, so that the falling apples change the weight of the string and move up and down (as an I/O mechanism). 
18:10:59 <ais523> something needs to be done to get an infinite supply of apples (or at least ones which can become infinitely rotten)... 
18:12:16 <oerjan> the program halts when the bottom of the box dissolves. 
18:13:59 <oerjan> taking a lead from the rule 110 construction, it could be an infinite string 
18:14:34 <oklopol> well, the string could hang from a tree, and trees can grow 
18:16:40 <ais523> apple tree -> apples -> rotten apples -> seeds -> more apple trees (unboundedly); apple tree -> wood -> box (when it stops producing apples); so all you need is the string and an infinitely large orchard, as you can get the apple tree from the rotten apples 
18:19:57 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
18:21:07 <oerjan> perhaps an infinitely large box could serve as the orchard too 
18:21:34 <RodgerTheGreat> perhaps all that's necessary is using the life cycle of the trees for computation 
18:21:51 <RodgerTheGreat> elimenate wind, etc, and have an infinite field of fertile dirt 
18:22:19 <RodgerTheGreat> the survival and reproduction of trees as they compete for space is your computational system 
18:22:20 <oerjan> the fertile dirt could be produced by the apples too 
18:22:41 <ais523> I'd like to see an apple-tree implementation of Life. It would be kind of appropriate. 
18:23:05 <jix> hmm apple trees should be renamed to iTrees 
18:23:14 <oerjan> it seems that the string has been proven redundant in this project. 
18:23:18 <RodgerTheGreat> and the automaton could be called "String Box" just for an inside joke 
18:23:40 <RodgerTheGreat> oerjan: the string could be used, but just trees in dirt seems more elegant 
18:24:33 -!- nazgjunk has joined. 
18:25:47 <ais523> Here's another idea for an esolang that I'm kind-of hoping will be TC: 
18:26:10 <ais523> you have a number of registers (unlimited but fixed by the program) each of which has a current value and a maximum value 
18:26:39 <ais523> the IP points to a register, and when the register is executed it increments its current value 
18:27:00 <ais523> if it increments beyond its maximum its current value drops down to 0, and the maximum increases by 1 
18:27:36 <ais523> and after each register is executed, a program-specified register is executed next if it dropped to 0, and a different program-specified register is executed next if it didn't 
18:28:27 <ais523> I didn't worry about that, because halting isn't needed for TC-ness, I don't think. (You could just put it into an infinite loop, and maybe the interpreter could detect that) 
18:28:48 <ais523> I was thinking that it might be possible to use a pair of registers as a value with an effectively fixed maximum 
18:29:19 <oerjan> you could of course have a couple of designated halting registers 
18:29:45 <oerjan> or one halting and one result 
18:29:45 <RodgerTheGreat> if you did that, I'm pretty sure you'd have a TC language 
18:30:03 <ais523> you would need two, because if the program's to be capable of running indefinitely every register in it has to be modified during the run 
18:30:13 <ais523> sort of like the do-while BF variant we were discussing earlier 
18:30:44 <oerjan> you weren't very clear about the program structure itself 
18:31:10 <ais523> each register, once modified, determines which register's modified next according to whether it dropped to 0 or not 
18:31:24 <ais523> and the program just explains which register follows which register 
18:31:41 <ais523> in pseudocode: register 0 goes to register 1 if it drops, or register 2 if it doesn't 
18:31:52 <oerjan> that doesn't seem to require all registers to be modified 
18:32:08 <oerjan> you could have smaller loops 
18:32:32 <RodgerTheGreat> so, a program would effectively specify a graph of the registers 
18:32:36 <ais523> you're right, of course; the degenerate situation where a register's never used at all works 
18:33:08 <oerjan> actually you just need one halting register, it can just jump to itself unconditionally 
18:33:50 <ais523> wait a moment... if you have a halting register, then it will have to be linked from an output of some other register 
18:34:02 <ais523> that register can only be called a fixed finite number of times before the halt 
18:34:28 <ais523> and it will have to be linked from some other register, which can also only be called a fixed finite number of times before the halt 
18:34:49 <ais523> so in other words having a halting register puts a bound on the size of the program and the length of time it can last 
18:35:03 <ais523> i.e. the halting problem would be solvable, so the language couldn't be TC 
18:35:17 <oerjan> the problem seems to be that there is no way to combine a test of two registers 
18:36:06 <ais523> I know. Without halting registers, though, could it still be TC? 
18:37:03 <oerjan> so instead it could halt if two fixed registers were zeroed simultaneously 
18:37:27 <ais523> that seems to make more sense 
18:38:42 <ais523> the reason I brought this up is that the language I'm describing can be compiled into Black, I think (as long as the initial maximums of the registers are sufficiently large) 
18:54:31 <ais523> I suppose it could output the value in one register when two other registers were simultaneously 0 too 
19:01:29 -!- sebbu has joined. 
19:16:44 -!- ais523 has quit. 
19:43:57 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
19:44:21 -!- nazgjunk has joined. 
20:03:03 -!- FabioNET has joined. 
20:23:10 -!- FabioNET has quit (Client Quit). 
20:33:11 -!- oerjan has quit ("Running away"). 
21:11:28 -!- ShadowHntr has quit (Client Quit). 
21:21:13 -!- Sgeo has joined. 
21:28:24 -!- sebbu2 has joined. 
21:47:24 -!- sebbu has quit (Success). 
22:32:30 -!- FabioNET has joined. 
22:35:25 -!- oerjan has joined. 
22:45:49 -!- UpTheDownstair has joined. 
22:46:10 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
22:51:50 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
23:14:51 -!- nazgjunk has joined. 
23:22:19 -!- UpTheDownstair has quit (Connection timed out). 
23:57:01 -!- SevenInchBread has joined. 
00:02:54 -!- ShadowHntr has joined. 
00:04:01 -!- sebbu2 has quit ("@+"). 
00:07:12 -!- nazgjunk has quit (Connection timed out). 
00:10:21 -!- FabioNET has quit (Client Quit). 
00:47:32 -!- ShadowHntr has quit ("End of line."). 
01:28:44 -!- mule| has joined. 
02:27:50 <oerjan> i think that should be car = \a.a(\bc.b) 
02:28:12 <bsmntbombdood> this is from _the calculi of lambda conversion_, church 
02:30:14 <oerjan> it's in his lambda_I calculus perhaps? 
02:31:07 <oerjan> does it work if N is a cons? 
02:33:10 <oerjan> i think that is the wrong order 
02:33:52 <oerjan> it works if M is a cons but probably cdr would break then 
02:36:13 <oerjan> anyhow pairing of church numerals can be done differently in a numerical way 
02:36:32 <oerjan> say (M,N) = 2^M(2*N+1) 
02:36:42 <oerjan> might be harder to undo i guess 
02:37:04 <oerjan> it was just the simplest 
02:37:47 <oerjan> or else you might have some hard mathematical problem 
02:39:57 <bsmntbombdood> I was always taught that you could only solve for one unkown per equation 
02:40:22 <oerjan> doesn't hold with integer equations 
02:42:05 <oerjan> with reals and continuous functions you can show you cannot get more than one variable for sure, unless the function is at an extreme value 
02:43:22 <oerjan> because with two variables you can go between two points in two distinct paths 
02:44:11 <oerjan> and both paths must contain all intermediate values for the function - so the solution for an intermediate value cannot be unique 
02:44:51 <oerjan> but with only integers, you can jump over values 
02:46:19 <bsmntbombdood> \a.3_3(a (\b.[Succ(3_1 b), 3_1 b, 3_2 b]) [1,1,1]) 
02:47:13 <oerjan> but you beat me to it again :) 
02:50:19 <oerjan> he doesn't use 0 i see 
02:50:40 <oerjan> i suppose 0 cannot be constructed since it doesn't use its first argument 
02:52:14 <GregorR> He's telling people who have lambda calculi to disgust him. 
02:57:22 <oerjan> hmph. 2+3 = 1+4 and 2+9 = 8+3 
02:59:14 <oerjan> and 2+15 = 16+1, 32+3 = 8+27 
02:59:24 <oerjan> so 2^m + 3^n cannot work 
03:01:43 <oerjan> well they cannot be divisible by 2 or 3 
03:02:45 <oerjan> and 259 has two forms too, although i haven't found both 
03:03:02 <oerjan> just made Haskell list and sort 
03:03:58 <oerjan> I'll try a proper program instead of a one-liner 
03:05:35 <oerjan> yeah, it's even more esoteric than the usual one 
03:15:48 <bsmntbombdood> it's possible to convert a combination into a number, and have a one-to-one mapping between them 
03:16:27 <oerjan> it's just a bit more complicated 
03:16:49 <oerjan> well, actually, my 2^m(2n+1) does that i think 
03:17:24 <oerjan> make that 2^(m-1)(2n+1) 
03:18:32 <oerjan> but it can also be done with polynomials 
03:21:11 <oerjan> essentially you put the (m,n)'s in a square infinite in two directions 
03:21:25 <oerjan> and then you count them along the diagonals 
03:21:33 <oerjan> then you get something like that. 
03:22:47 <oerjan> it's a standard way of showing that aleph_0 * aleph_0 = aleph_0 where aleph_0 is the cardinality of the natural numbers 
03:23:52 <oerjan> more generally, the theorem that m*m = m for an infinite cardinality is equivalent to the axiom of choice 
03:29:07 <bsmntbombdood> I wonder why church even bothered with lambda_I calculus 
03:32:15 <bsmntbombdood> "it becomes clearly unreasonable the FN should have a normal form and N have no normal form" 
03:35:04 <oerjan> he was trying to avoid lazy evaluation :D 
03:47:29 <bsmntbombdood> oh boy, transfinite ordinals in the lambda_K calculus 
03:49:14 -!- ShadowHntr has joined. 
03:49:59 <oerjan> but the lambda_I calculus is also dirty.  Some theorems of linear logic fail. 
03:50:10 <mule|> "procrastinated evaluation" : return result later; 
03:51:04 <oerjan> That was some of the point of my vaporware language Reaper. 
03:51:40 <SevenInchBread> I'd like to combine the advantages of lazy evaluation with eager evaluation. 
03:51:56 <oerjan> You know about lenient evaluation? 
03:53:49 <oerjan> It evaluates most subexpressions in parallel. 
03:54:20 <oerjan> This surprisingly gives it some of the advantages of lazy evaluation. 
03:54:56 <SevenInchBread> hmmm... you could evaluate different parts of the expression that can be evaluated... and wait for the rest to become available (in the form of unspecified arguments and stuff) 
03:55:34 <oerjan> By being even _more_ eager, it doesn't give any particular subexpression the ability to cause an infinite loop for the whole program 
03:58:14 <oerjan> AND STILL YOU HAVEN'T GOT TO SYSTEM F 
03:58:29 <bsmntbombdood> delta M N is replaced be (\ab.ab) provided that M and N are in delta normal form and contain no free variables and M is not alpha convertable into N 
03:59:01 <oerjan> typed polymorphic lambda calculus 
03:59:13 <bsmntbombdood> delta M M is replaced by (\ab.a(ab)) provided that M is in delta normal form and contains to free variables 
04:04:42 <bsmntbombdood> seems like the lambda-delta calculus fixes some of the limitations of the lambda_K calculus 
04:09:15 <bsmntbombdood> the existential quantifier in the lambda-delta calculus 
04:15:03 -!- _spaz has joined. 
04:15:22 -!- _spaz has left (?). 
04:23:20 <bsmntbombdood> oh man, i hope this is a joke: http://public.research.att.com/~bs/whitespace98.pdf 
04:28:15 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 
04:30:05 <oerjan> probably.  it starts getting surreal from the "Previous work" section 
04:30:43 <oerjan> And completely absurd in the next 
04:32:41 <oerjan> And the "Overloading missing whitespace" section should leave not the slightest amount of doubt. 
04:35:27 <oerjan> you must be heavily prejudiced to think he really means identifiers should be restricted to single UNICODE characters. 
04:40:48 <oerjan> in fact he stretches it so far i don't see why he should need the April Fool at the end. 
04:41:44 <oerjan> in fact you should already have been tipped off at the first April in the text. 
04:43:23 <oerjan> which i missed since i just browsed :) 
04:44:20 <oerjan> the strange thing is that in another language the basic suggestion could have merit. 
07:03:08 -!- GreaseMonkey has joined. 
07:09:02 -!- GreaseMonkey has quit (Remote closed the connection). 
07:24:45 -!- Sgeo has quit ("Leaving"). 
07:24:47 <oklopol> i love it when someone writes a long article in a serious style as a joke :P 
07:42:42 -!- GregorR has quit (zelazny.freenode.net irc.freenode.net). 
07:42:43 -!- tokigun has quit (zelazny.freenode.net irc.freenode.net). 
07:43:07 -!- GregorR has joined. 
07:43:07 -!- tokigun has joined. 
07:44:28 -!- oerjan has quit ("quite"). 
07:44:42 -!- tokigun has quit (Connection reset by peer). 
07:44:47 -!- tokigun has joined. 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:07:13 -!- ShadowHntr has quit (Read error: 110 (Connection timed out)). 
08:19:52 -!- ShadowHntr has joined. 
08:57:49 -!- ShadowHntr has quit ("End of line."). 
09:03:58 -!- GreaseMonkey has joined. 
09:15:33 <nooga> http://public.research.att.com/~bs/whitespace98.pdf 
10:10:21 -!- GreaseMonkey has quit ("vvgnight, and FU AUTORTB"). 
11:34:44 <nooga> i code xhtml in vim ;p 
11:36:24 -!- jix has joined. 
11:39:37 -!- nazgjunk has joined. 
11:49:50 -!- UpTheDownstair has joined. 
11:49:50 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
12:14:13 -!- UpTheDownstair has changed nick to nazgjunk. 
12:53:26 -!- helios24 has joined. 
12:59:54 -!- nazgjunk has quit (Connection reset by peer). 
13:00:24 -!- nazgjunk has joined. 
13:28:31 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
13:28:34 -!- UpTheDownstair has joined. 
13:29:08 -!- UpTheDownstair has changed nick to nazgjunk. 
15:42:01 -!- jix__ has joined. 
15:50:14 -!- jix has quit (Read error: 110 (Connection timed out)). 
16:06:10 -!- ShadowHntr has joined. 
17:07:37 -!- UpTheDownstair has joined. 
17:07:53 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
17:40:06 -!- FabioNET has joined. 
18:19:53 <SimonRC> I was referring to the AFJ you posted, not the vim comment 
18:21:03 <nooga> bsmntbombdood posted it before me 
18:26:39 <nooga> that article on whitespace 
18:28:16 <SimonRC> I learnt an interesting thing in my computability class: 
18:29:19 <SimonRC> Any function can be computed as the minimisation of some primitive-recursive predicate. 
18:29:30 <SimonRC> this could lead to some interesing esolangs. 
18:30:04 <SimonRC> you have some predicate on Nat, and the minimisation is the smallest input that makes it return true 
18:30:17 <SimonRC> minimise :: (Nat -> Bool) -> Nat 
18:30:51 <SimonRC> minimise p = head $ filter p $ [0..] 
18:31:42 <SimonRC> And the predicate can be primitive recursive, a class that includes most useful terminating functions. 
18:32:01 <SimonRC> ... including the bounded-time evaluator. 
18:32:49 <bsmntbombdood> so computation is based on the Nat -> Bool predicates? 
18:35:06 -!- ShadowHntr has quit ("End of line."). 
18:43:24 <SimonRC> In computability theory, most data is Nat. 
18:43:45 <SimonRC> the only operations are succ, pred, and jnz 
18:44:19 <SimonRC> since we only care about computability, the programs we write probably have lots of ackerman runtimes. 
18:48:00 -!- FabioNET has quit (Read error: 145 (Connection timed out)). 
18:51:31 -!- oerjan has joined. 
18:57:34 -!- helios24 has quit (Read error: 60 (Operation timed out)). 
19:06:56 -!- helios24 has joined. 
19:35:11 -!- sebbu has joined. 
19:58:02 -!- nazgjunk has joined. 
20:02:17 -!- oerjan has quit ("leaving"). 
20:04:42 -!- UpTheDownstair has quit (Read error: 145 (Connection timed out)). 
20:06:57 -!- sebbu2 has joined. 
20:10:48 -!- UpTheDownstair has joined. 
20:14:45 -!- sebbu has quit (Read error: 60 (Operation timed out)). 
20:26:40 -!- nazgjunk has quit (Read error: 110 (Connection timed out)). 
20:41:42 <nooga> SADOL raytracer looks cool :D 
20:45:35 <nooga> http://pastebin.ca/405483 Kix ass 
20:47:24 <oklopol> i understand that completely 
20:55:47 -!- helios24 has quit ("Leaving"). 
20:58:09 -!- SevenInchBread has joined. 
21:17:05 -!- UpTheDownstair has changed nick to nazgjunk. 
21:51:56 -!- digital_me has joined. 
22:07:05 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
22:07:15 -!- UpTheDownstair has joined. 
22:19:54 -!- nazgjunk has joined. 
22:27:09 -!- death has joined. 
22:29:28 -!- death has quit (Nick collision from services.). 
22:32:15 -!- foolzh has joined. 
22:32:29 -!- nazgjunk has quit (Nick collision from services.). 
22:32:47 -!- foolzh has changed nick to nazgjunk. 
22:36:06 -!- UpTheDownstair has quit (Connection timed out). 
22:47:45 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
22:49:47 <SevenInchBread> how would you like... go about making an operating system? I'm having trouble knowing where to begin. 
22:51:21 -!- Sgeo has joined. 
22:52:22 <lament> SevenInchBread: begin with writing some simple program that sits in the MBR, i suppose. 
23:06:27 -!- oerjan has joined. 
23:11:04 <GregorR> http://lng.sourceforge.net/ < Lunix :P 
23:13:50 * oerjan is surprised there does not seem to be a Lunatix OS 
23:19:40 -!- sebbu has joined. 
23:22:18 <SevenInchBread> ...I just... can't conceive of what a kernel program would look like...  
23:24:28 <lament> SevenInchBread: a big loop 
23:25:05 <lament> SevenInchBread: the important kernel stuff sits on the timer interrupt 
23:25:21 <lament> SevenInchBread: and all it really has to decide is what program to switch to 
23:25:59 <lament> add syscalls if you wish to implement any 
23:26:06 <lament> syscalls are basically separate from the other stuff 
23:27:12 <lament> and you need some kind of memory manamegement system for your programs, that in the simplest case would just designate an area of memory for them to use when a program is ran. 
23:27:21 <lament> that's basically it, the devil's in the details... 
23:28:51 <lament> in its basic form it's like, fifteen lines of high-level code. 
23:29:18 <SimonRC> I like the Synthesis kernel 
23:29:36 <SimonRC> It puts code together at runtime so it goes like a rocket 
23:29:52 <SimonRC> read up on it; the paper is very readable 
23:33:42 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
23:34:11 -!- nazgjunk has joined. 
23:46:08 -!- sebbu2 has quit (Read error: 110 (Connection timed out)). 
23:49:43 <SevenInchBread> ...I have found that many programs operate on the principle of a big loop 
23:50:33 <lament> the kernel is basically a loop, but instead of an explicit loop it's a single piece of code repeatedly activated by the timer interrupt. 
00:00:44 <RodgerTheGreat> almost every program consists of an initialization chunk, a big loop, some smaller loops called from the big loop and an optional cleanup when the program ends 
00:00:55 <oerjan> Writing a kernel without understanding hardware is probably like trying to swim without entering the water. :) 
00:01:23 <RodgerTheGreat> "possible to learn, but ultimately not very applicable" 
00:12:33 <oerjan> In C I would expect the worst part to be the memory management. 
00:17:17 <oerjan> what, the hm... part? :) 
00:17:34 <RodgerTheGreat> I guess that as well as the memory management in C sucking things 
00:17:44 <lament> scorpions and apples? Who added scorpions? 
00:21:45 <SevenInchBread> ...with the ability to shift back into manual transmission (lol car analogy) when you want. 
00:23:37 <oerjan> the simplest way to handle overflow would probably be to have more bits in the temporary variables than in each array cell 
00:33:42 -!- nazgjunk has quit ("sleep"). 
00:36:35 <SevenInchBread> I think we should go with a far far unmonolithic kernel than say.... Linux. :) :) :) 
00:37:41 <SevenInchBread> ....with many many many filesystems... that you can switch between. 
00:41:32 <oerjan> TRUE esotericness would probably require a WYRD filesystem. 
00:41:47 <SevenInchBread> file systems that look like MUDs - super-compressed file systems - stenographic/cryptographic filesystems - a filesystem based on worms.... somehow 
00:46:44 <RodgerTheGreat> a filesystem consisting of rainbow tables in which you reverse-engineer MD5s instead of editing files 
00:48:03 <RodgerTheGreat> SevenInchBread: by worms, do you mean rogue processes carrying data around in the computer, or physical earthworms? Or both/either? 
00:48:36 <lament> gigantic sandworms roaming below the surface producing spice. 
00:55:25 <SevenInchBread> ...well, I'm kind of convinced that... to store data... you need some method of organizing the data - regardless of how you store it. 
00:55:26 -!- ShadowHntr has joined. 
00:56:10 <oerjan> What an antiquated conviction. 
00:57:14 -!- sebbu has quit (Client Quit). 
00:57:44 <SevenInchBread> whether you call it a file system or not is regardless. 
01:00:07 <SevenInchBread> couldn't you just use longs and forget about overflow? 
01:01:40 <oerjan> on the contrary, base 3^42 is best. 
01:12:31 <SevenInchBread> interprocess communication could use filesystems to communicate instead of the usual "stream". 
01:29:18 <SevenInchBread> hmmm... representing files as linked lists allows you to create infinite files - and tree structures. 
01:31:55 <oerjan> representing files as lazy thunks allows infinite files without loops. 
01:32:27 <oerjan> (This message was presented to you by the Haskellers for World Domination) 
01:32:33 <bsmntbombdood> represent files as lambd terms allows a turing complete filesystem 
01:33:53 <SevenInchBread> so.... basically... a simple change in the OS's representation of a file gives you quite a number of possibilities for structure... universally accessible from any language. 
01:36:07 <oerjan> Wicked, dysfunctional people might point out that a next step could be using persistent objects. 
01:38:53 <oerjan> and at this point the relational database people will probably want a word in edgewise 
01:39:45 <oerjan> that is when we throw them out of #esoteric and decide each file should be a running brainfuck program. 
01:40:10 <SevenInchBread> ....brainfuck, coincidentally, is a very handy representation of the typical file. :) 
01:40:54 <bsmntbombdood> pause execution while there's no IO with that file 
01:41:32 <SevenInchBread> or just use... running brainfuck programs... file writes would just be like an input. 
01:42:05 <SevenInchBread> so no waiting... just pause when we want input... and then all the changes are persistent... 
01:44:08 * oerjan thinks that Unlambda could hot-swap pretty easily. 
01:44:33 <oerjan> of course its I/O sucks. 
01:45:14 <oerjan> you must test every input against every possible value 
02:03:29 <lament> SevenInchBread: how's that different from brainfuck? 
02:06:42 <lament> by the way, i certainly think an esoteric OS shoudn't have files 
02:09:22 <oerjan> very small gnomes carrying papyrus rolls 
02:11:38 <lament> bsmntbombdood: some sort of objects 
02:12:05 <lament> bsmntbombdood: a "file" is raw data that anything can read. It's a fairly bizarre concept. 
02:12:31 <lament> for example, i have an mp3 file 
02:12:42 <lament> why should i be able to open it with a text editor? 
02:12:49 <lament> it makes no sense. It breaks abstraction. 
02:13:19 <SevenInchBread> all things shall  be the POLYNUMEROUS PAM... which is left implemtnation specific, to confuse everyone as to what it is. 
02:13:22 <lament> on the other hand, look at PalmOS for a working example 
02:14:07 <SevenInchBread> and all forms of persistence, memory management, back scratching, and ultimate deliberation... shall be of the POLYNUMEROUS PAM . 
02:16:03 <lament> SevenInchBread: polyamorous 
02:16:38 <lament> bsmntbombdood: only in the same sense that "everything is a number" 
02:17:00 <bsmntbombdood> files are described by numerical file descriptors ;) 
02:17:12 <lament> bsmntbombdood: it's not the kind of an abstraction a decent OS should provide. It's too low-level. 
02:17:25 <SevenInchBread> all those "everything is a <insert favorite representation>" people scare me.... it's like religious adherance to some weird all-powerful principle. 
02:18:02 <SevenInchBread> ....instead, those people should believe that EVERYTHING SHALL BE OF POLYNUMEROUS PAM. 
02:19:29 <SevenInchBread> ....everything in esoos should be represented in overly verboose XML.... 
02:26:32 -!- ShadowHntr has quit ("End of line."). 
02:46:39 -!- crathman has joined. 
03:17:13 -!- oerjan has quit (zelazny.freenode.net irc.freenode.net). 
03:17:28 -!- oerjan has joined. 
03:42:20 -!- SevenInchBread has quit (Remote closed the connection). 
04:38:30 -!- oerjan has quit ("leaving"). 
04:38:34 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.3/2007030919]"). 
05:03:37 -!- oerjan has joined. 
05:22:33 -!- anonfunc has joined. 
05:34:12 -!- ShadowHntr has joined. 
05:36:31 -!- digital_me has quit (Read error: 110 (Connection timed out)). 
05:47:13 -!- Arrogant has joined. 
06:02:05 -!- Sgeo has quit ("Leaving"). 
06:25:38 -!- mule| has quit (Read error: 110 (Connection timed out)). 
07:09:11 -!- sekhmet has quit (Remote closed the connection). 
07:09:14 -!- sekhmet has joined. 
07:28:01 -!- ShadowHntr has quit (Client Quit). 
07:30:49 -!- anonfunc has quit (Read error: 104 (Connection reset by peer)). 
07:30:52 -!- anonfunc has joined. 
07:44:58 <oklopol> haha... i scroll up and say something that'd be weird even there :P 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:10:40 -!- RodgerTheGreat_ has joined. 
08:10:40 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)). 
09:14:16 -!- Arrogant has quit ("Leaving"). 
10:20:03 -!- mule| has joined. 
10:28:18 -!- jix has joined. 
10:58:39 -!- helios_ has joined. 
10:59:08 -!- helios_ has quit (Client Quit). 
11:00:36 -!- helios24 has joined. 
11:01:48 -!- helios24 has quit (Client Quit). 
11:03:18 -!- helios24 has joined. 
11:04:15 -!- anonfunc has quit. 
11:04:20 -!- helios24 has quit (Client Quit). 
11:04:42 -!- helios24 has joined. 
11:12:33 -!- ais523 has joined. 
11:19:17 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
11:31:18 <SimonRC> idea: every file is a datastructure equivalent to XML... 
11:31:38 <SimonRC> ... but you have to all IO on the file as raw characters of XML 
11:31:51 <SimonRC> actually that's just perverse, rather than esoteric 
11:33:50 <ais523> why does everyone like XML so much these days. Why not a readable format that saves on characters (IMO JSON is more readable and more concise but not perfect) 
11:34:40 <SimonRC> We talk about XML a lot here because it is easy to take the piss out of it. 
11:35:33 <SimonRC> classic example:  http://www.codu.org/rxml.php 
11:35:43 <ais523> <IRCpost type="comment">because everything in XML has to be formatted more redundantly than needed </IRCpost> 
11:36:13 <ais523> Why does nobody try to format XML in XML? 
11:36:55 <ais523> <tag type="IRCpost"><attribute name="type" value="comment"><contents>because everything in XML has to be formatted more redundantly than needed</contents></tag> 
11:37:27 <ais523> (and of course this can be continued ad infinitum if this is believed to be beneficial) 
11:37:42 <SimonRC> BTW, codu is GregorR's site:  http://www.codu.org/hats.php 
11:40:08 <ais523> one idea I had for a nonstandard file structure that might actually be useful is to change the one-many relationship between directories and files into a many-many relationship 
11:40:34 <ais523> and then loop it round so that any directory could be a subdirectory of any other directory (with the system maintaining lists of backlinks) 
11:41:01 <ais523> in fact, you could go further and use just a combined file/directory concept with some contents and a list of files it linked to 
11:41:01 <SimonRC> so you have a netwok rather than a tree 
11:41:15 <SimonRC> the problem with that is that stuff can get lost 
11:41:30 <ais523> it's a directed network where you're allowed to go backwards along the lines if you want, as long as you say what you're doing 
11:41:34 <SimonRC> you can have files that are reachable but you have no idea how to reach them 
11:41:48 <SimonRC> and things lack a canonical name 
11:41:58 <ais523> well, it would be like an ordinary directory structure with more links 
11:42:10 <ais523> and as for canonical names, modern filesystems don't really have them anyway 
11:42:23 <ais523> irc://irc.freenode.org/esoteric/../esoteric 
11:42:31 <ais523> (I have no idea if that would actually work!) 
11:43:08 <ais523> (BTW, when I clicked on that link, nothing happened at all, but I'm not sure why) 
11:43:09 -!- helios24 has quit ("leaving"). 
11:43:09 <SimonRC> would there be a root node? 
11:43:17 -!- helios24 has joined. 
11:43:42 <ais523> at least one. Probably one for the system and one for each user on a multi-user system, like c:\ and My Documents\ on Windows, or / and ~ on Unix 
11:43:55 <SimonRC> you know about the plan 9 FS, right/ 
11:44:07 <ais523> I'm not too aware of that, 
11:44:41 <SimonRC> it implements much of its security by not even giving people a *name* for things they aren't supposed to know about. 
11:44:48 -!- helios_ has joined. 
11:44:48 -!- helios_ has quit (Client Quit). 
11:45:08 <ais523> The two systems could be combined easily enough 
11:45:10 <SimonRC> there is lots of mounting and union directories 
11:46:02 <SimonRC> silly idea: you have union directories in Plan9FS, so EsoFS should have intersection directories, set difference directories, and complement directories. 
11:46:36 <SimonRC> actually, intersection directories don't sound like a bad idea 
11:46:45 <ais523> That could actually be useful. I'd like to see the symmetric difference between C-INTERCAL versions 0.24 and 0.25 
11:46:46 <SimonRC> but complement directories sure do! 
11:47:30 <SimonRC> you could have a directory containing all the picture files you have, and another containing all the files from 2003... 
11:47:37 <ais523> I've heard it suggested that a big long list of 'every file on the computer' would actually be easier to navigate than other systems 
11:47:44 <SimonRC> the intersection of these would be all your pictures from 2003 
11:48:02 <ais523> Your directory system would be a fully-featured categorisation system 
11:48:08 <SimonRC> I would like that featuer a lot actuall 
11:48:46 <SimonRC> a sort of cross between a big directory tree and a collection of DB tables 
11:48:51 <ais523> In fact, wiki software has been doing this sort of thing for ages; in MediaWiki, the links and backlinks do what I suggest, the categories would do what you suggest if the developers got round to it, and subpages give you canonical names 
11:49:39 <ais523> Another thing I'd like is unlimited amounts of metadata in files 
11:49:48 <ais523> We have file-size and permissions at the moment 
11:50:14 <oerjan> Macs have that don't they? 
11:50:37 <ais523> I'd like a list of metadata so that we can find the right program to open a file, even if we've never come across the format before 
11:50:45 <SimonRC> I personally don't like any metadata system between the small system unix uses and the fully-fleged resource fork of older macs 
11:51:14 <ais523> Ideally, we want to load our BF programs in a BF IDE, but Emacs will do if we don't have one (as they're text files) and in the worst case a hex editor 
11:51:33 <ais523> (or if really needed, you could edit the file using cat) 
11:52:11 <SimonRC> BF programs are basically trees of strings of "<>+-,.", right? 
11:52:28 * ais523 is the sort of person who uses cat /dev/random to get their terminal out of the wrong shift state 
11:53:12 <ais523> in fact, the actual characters used don't really matter IMO; <>+-., are just conventional so that people can communicate BF programs and have them mean the same thing at their destination 
11:53:19 <oerjan> there should also be a way to get a list of options for opening, including options in the metadata as well as the programs you have installed (in separate lists) 
11:53:55 <ais523> you could have a 'relevance' result like you do on search results, according to how suited a program would be for a file 
11:54:05 <ais523> and each program could have its own algorithm 
11:54:30 <ais523> so a plaintext editor is going to be moderately-high-relevance for a plain-text file containing text 
11:54:37 <oerjan> heh, so that what google's "I'm feeling lucky" really is - the default open 
11:55:06 <ais523> and moderate relevance for a program in most non-esoteric languages, and low but still positive relevance for a uuencoded binary 
11:55:59 <ais523> you know, esoteric programming languages are reaching the state where they are actually useful in some cases 
11:56:27 <ais523> (For instance, ALPACA gives one of the simplest Life implementations around, and BF (not C89) is probably now the world's most portable language) 
11:56:40 <SimonRC> <cough>Linear Lisp</cough> 
11:57:44 * ais523 is being chased all over the Internet by SimonRC at the moment 
11:59:29 <ais523> the principle of building enforced garbage-collection into all your commands is really quite esoteric 
11:59:56 <ais523> in fact, it's logic is like a functional version of BF (you have to decompose something whilst creating two copies if you want to copy it) 
12:01:06 * ais523 thinks that clog should respond to sed commands so that you can correct your typos in the logs too 
12:03:10 <SimonRC> ISTR there is a plug-in for some IRC clients that does that for the client. 
12:03:39 <ais523> I wouldn't be surprised; surely someone had the same idea before me 
12:06:34 -!- helios24 has quit ("leaving"). 
12:06:42 -!- helios24 has joined. 
12:47:11 -!- jix has joined. 
12:54:11 <ais523> ~dof ,[.,]!Most simple BF programs also work in DoFuck 
12:54:36 <ais523> (that's strange, I got the output in #bsmnt_bot_errors rather than here) 
12:54:43 <ais523> ~exec exec self.bf7+self.bf8 
12:54:47 <ais523> ~dof ,[.,]!Most simple BF programs also work in DoFuck 
12:54:47 <bsmnt_bot> Most simple BF programs also work in DoFuck 
12:54:47 <bsmnt_bot> Most simple BF programs also work in DoFuck 
12:55:19 <ais523> ~exec self.raw_regex_queue.pop() 
12:55:21 <ais523> ~dof ,[.,]!Most simple BF programs also work in DoFuck 
12:55:22 <bsmnt_bot> Most simple BF programs also work in DoFuck 
12:57:17 <oerjan> ~exec sys.stdout(os.listdir("/bot/scripts/")) 
12:57:51 <ais523> I've taken to messing with bsmnt_bot in #bsmnt_bot_errors to avoid spamming #esoteric 
12:58:23 <oerjan> oh. well i just wanted to remind you that you can save files in /bot/scripts/ now. 
12:58:51 <ais523> how? We could put the BF and DoFuck interpreters in there 
12:59:06 <oerjan> just with the usual python file commands 
12:59:39 <ais523> (I don't actually know much Python at all; I've picked it up mostly from the #esoteric logs) 
13:00:10 <ais523> besides, what does it do with the files there? Does it run them on startup, or do we have to run them manually, or what? 
13:03:38 <ais523> ~exec with open("/bot/scripts/bf.py") as f: write bf3+bf4 
13:03:55 <ais523> ~exec exec "with open("/bot/scripts/bf.py") as f:\n write bf3+bf4" 
13:04:10 <ais523> ~exec exec "with open('/bot/scripts/bf.py') as f:\n write bf3+bf4" 
13:04:27 <oerjan> the bot is still running an old version of python.  i tried the same as you... 
13:05:06 <ais523> ~exec exec "f=open('/bot/scripts/bf.py')\nf.write(bf3+bf4)\nf.close()" 
13:05:06 <bsmnt_bot> IOError: [Errno 2] No such file or directory: '/bot/scripts/bf.py' 
13:05:28 <oerjan> that was opened for reading 
13:05:56 <ais523> ~exec exec "f=open('/bot/scripts/bf.py','w')\nf.write(bf3+bf4)\nf.close()" 
13:05:57 <bsmnt_bot> NameError: name 'bf3' is not defined 
13:06:03 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
13:06:06 <ais523> ~exec exec "f=open('/bot/scripts/bf.py','w')\nf.write(self.bf3+self.bf4)\nf.close()" 
13:06:19 <ais523> ~exec sys.stdout(os.listdir("/bot/scripts/")) 
13:06:34 * ais523 came to the same conclusion as oerjan at about the same time 
13:06:46 <ais523> ~exec exec "f=open('/bot/scripts/dof.py','w')\nf.write(self.bf7+self.bf8)\nf.close()" 
13:06:50 <ais523> ~exec sys.stdout(os.listdir("/bot/scripts/")) 
13:07:06 <ais523> ~exec self.raw_register_queue.pop() 
13:07:07 <bsmnt_bot> AttributeError: IRCbot instance has no attribute 'raw_register_queue' 
13:07:08 <ais523> ~exec self.raw_register_queue.pop() 
13:07:09 <bsmnt_bot> AttributeError: IRCbot instance has no attribute 'raw_register_queue' 
13:07:16 <ais523> ~exec self.raw_regex_queue.pop() 
13:07:21 <ais523> ~exec self.raw_regex_queue.pop() 
13:07:28 <oerjan> ~exec sys.stdout(self.bf7) 
13:08:07 <ais523> I was about to warn you against that when you corrected your command 
13:08:23 <ais523> ~bf ,[.,]!Definitely stopped this working? 
13:08:47 <ais523> now all we have to do is reload it from the directory, somehow 
13:10:31 <ais523> ~exec exec "f=open('/bot/scripts/bf.py')\nexec '\n'.join(f.readlines())\nf.close()" 
13:10:31 <bsmnt_bot> SyntaxError: EOL while scanning single-quoted string 
13:10:44 <ais523> ~exec exec "f=open('/bot/scripts/bf.py')\nexec '\\n'.join(f.readlines())\nf.close()" 
13:11:18 <ais523> ~exec exec "f=open('/bot/scripts/dof.py')\nexec '\\n'.join(f.readlines())\nf.close()" 
13:12:18 <ais523> (because outputting \0 with bsmnt_bot has no obvious effect, cat is actually one character shorter in DoFuck) 
13:13:30 <ais523> oerjan: if you're interested in the code and don't want to flood the channel, do this: 
13:13:38 <ais523> ~exec sys.stdout(repr(self.bf7)) 
13:13:38 <bsmnt_bot> "def bfarg(x,y):\n p=y.group(2)\n a=y.group(3)+unichr(0)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n  if p[i]==']' and t[l]!=0:\n   c=1\n   while c>0:\n    i=i-1\n    if p[i]==']': c=c+1\n    if p[i]=='[': c=c-1\n" 
13:13:41 <ais523> ~exec sys.stdout(repr(self.bf8)) 
13:13:42 <bsmnt_bot> "  if p[i]=='+': t[l]=t[l]+1\n  if p[i]=='-': t[l]=t[l]-1\n  if p[i]=='<': l=l-1\n  if p[i]=='>': l=l+1\n  if p[i]=='.': o=o+unichr(t[l])\n  if p[i]==',':\n   t[l]=ord(a[0])\n   a=a[1:]\n  i=i+1\n sys.stdout(o)\nself.register_raw(r'\\S+ PRIVMSG (\\S+) :~dof ([^!]*)!?(.*)',bfarg)" 
13:14:40 <ais523> Oh by the way, I invented a new joke language in my sleep last night. Look at this: 
13:15:20 <ais523> I'll have to write Huh-language into bsmnt_bot instead, then. 
13:16:10 <ais523> ~exec self.register_raw(r'\S_ PRIVMSG \S+ :~huh', lambda x,y:sys.stdout('Huh?')) 
13:16:26 <ais523> ~exec self.register_raw(r'\S+ PRIVMSG \S+ :~huh', lambda x,y:sys.stdout('Huh?')) 
13:17:52 <ais523> It's an esoteric language because it was already programmed into EgoBot before hand, just nobody noticed before 
13:18:08 <ais523> I don't think it's Turing-complete 
13:20:03 <bsmnt_bot> <__main__.IRCbot instance at 0xb7c9140c> 
13:20:45 <ais523> what did you expect that line to do? 
13:20:53 <oerjan> it ought to be possible to use execfile if the scripts is designed to modify bot 
13:22:22 <ais523> ~exec self.raw_regex_queue.pop() 
13:22:23 <ais523> ~exec self.raw_regex_queue.pop() 
13:22:25 <ais523> ~exec self.raw_regex_queue.pop() 
13:22:26 <ais523> ~exec self.raw_regex_queue.pop() 
13:22:35 <ais523> ~exec execfile('/bot/scripts/bf.py') 
13:22:45 <ais523> ~exec execfile('/bot/scripts/dof.py') 
13:23:05 <ais523> oerjan: I think execfile works anyway in this case 
13:23:32 <oerjan> hm... i suppose so, given the way ~exec is constructed 
13:24:16 <bsmnt_bot> <__main__.IRCbot instance at 0xb7c9140c> 
13:24:17 <bsmnt_bot> <__main__.IRCbot instance at 0xb7c9140c> 
13:24:19 <bsmnt_bot> <__main__.IRCbot instance at 0xb7c9140c> 
13:24:55 * oerjan wonders what confuses SimonRC  
13:25:15 * ais523 wonders why SimonRC gave the same command three times 
13:25:37 <oerjan> i didn't actually mean to print out the contents, just check that it had the value i thought 
13:30:56 <SimonRC> ais523: to see if it gave the same answer 
13:31:18 <ais523> I thought it might be something like that 
13:33:28 <ais523> BTW, I take it MechaniQue is Turing-complete? From the wiki description, it looks like it would be easy to write a Minsky machine in it 
13:34:04 <ais523> (It's also the only language other than INTERCAL I know of that uses NEXT for flow control; but it doesn't seem to have a FORGET statement or RESUME for values >1) 
13:35:39 <oerjan> BASIC uses NEXT, although not in the same way. 
13:36:56 <ais523> yes, BASIC uses NEXT as a punctuation mark (like } in C or cis in Perligata). A 'NEXT statement' to me would always imply the INTERCAL version 
13:37:08 -!- sebbu has joined. 
13:37:52 -!- bsmnt_bot has quit (Excess Flood). 
13:38:14 <ais523> whoops, that was me, sorry 
13:38:21 <ais523> but I thought it had been throttled? 
13:38:56 <SimonRC> In the sense of strangling you. 
13:39:48 <ais523> I asked it for all the attributes of the 'self' object and their values, without realising there were quite so many 
13:40:56 <ais523> still, I discovered that 1174566977.4449899 was on its list of currently running commands 
13:43:24 <ais523> so now the only bot we have running is clog? 
13:45:35 <ais523> yes it is, I missed it 
13:46:28 <oerjan> the good news is that for the first time, not all work was lost :) 
13:47:18 <oerjan> i don't think the flood protection works for long lines. 
13:47:34 <oerjan> only for many short ones 
13:47:41 <ais523> it had split its message over three maximum-length lines and was kicked when it tried to write the fourth 
13:48:15 <ais523> (and not all work has been lost for ages, I normally just copy the most-recently-working commands back out of the logs and type them in again) 
13:55:38 <ais523> of course, #bsmnt_bot_errors isn't logged, so I might have to use a different method to save the experiments 
13:57:41 <oerjan> like logging it yourself. 
14:08:32 <ais523> strangely enough, my client's so old and/or primitive it appears not to have a logging function 
14:08:46 <ais523> it doesn't matter though, I'll find a way (copy-and-paste has worked in the past) 
14:10:13 <ais523> I know it's so primitive that I have to identify to nickserv by hand 
14:13:56 <oerjan> can't you give a password on startup? that has been supported since the first IRC RFC. 
14:15:14 <ais523> No. The only startup option is to run a JavaScript script, with scant information about how to use that to give a password or to message NickServ 
14:15:35 <oerjan> you don't need to message nickserv.  i don't. 
14:15:57 <oerjan> the ordinary irc password is passed on by the server to nickserv. 
14:16:07 <ais523> you have a choice: message NickServ or give a server password. If you can't give the password, messaging NickServ is given as a workaround 
14:16:53 <oerjan> so basically you have a client that is _worse_ than some older ones. 
14:17:21 <oerjan> are you using a URL for irc login? 
14:17:51 <ais523> it's about 50-50 between using a URL and using /join 
14:18:09 <oerjan> there might be a spot in the URL for login/password. 
14:19:20 -!- ais523 has quit ("Testing"). 
14:20:26 -!- ais523 has joined. 
14:20:45 <ais523> it didn't work; I got 'invalid IRC URL: (null)' 
14:21:36 <ais523> I think it had problems trying to parse the resulting URL 
14:24:15 <ais523> Microsoft's website about including username/password in URLs (it's about http, but it's the same for ftp and presumably irc too) is amusing 
14:24:42 <ais523> http://support.microsoft.com/kb/834489 
14:25:59 <ais523> it seems there are two workarounds for Microsoft disabling the feature: don't include a username-password pair (which is pretty obvious, really) 
14:26:36 <ais523> and /instructing users/ not to include a username-password pair 
14:28:54 <oerjan> i found a draft IRC URL scheme which conspicuously does not include a spot for password, just a request to prompt the user for one. 
14:29:20 <ais523> I suppose putting a password in a URL is a security risk 
14:29:36 <ais523> but probably not much more than sending it over IRC in plaintext 
14:32:15 <ais523> heh, Microsoft's website also has step-by-step instructions for opening the box that the software comes in 
14:47:23 -!- mtve has quit ("Terminated with extreme prejudice - dircproxy 1.0.5"). 
14:47:36 -!- mtve has joined. 
15:41:20 -!- felixx has joined. 
16:21:21 -!- ais523 has quit. 
16:41:50 -!- jix has joined. 
16:54:26 -!- ais523 has joined. 
17:37:42 -!- felixx has left (?). 
17:53:07 -!- oerjan has quit ("leaving"). 
18:05:51 -!- RodgerTheGreat_ has quit. 
18:16:50 -!- RodgerTheGreat has joined. 
18:31:30 -!- SevenInchBread has joined. 
18:32:38 <SevenInchBread> ...have their been any efforts to convert the http://en.wikipedia.org/wiki/Voynich_manuscript into a computer-readable encoding? 
18:33:56 <ais523> I thought that many traditional efforts to solve that assumed that the text itself was irrelevant and the code was encoded in the metadata 
18:45:53 <ais523> SevenInchBread: Your new Dupdog-like language with a name I can't remember or type: do you think Wiki Cyclic Tag would be suitable as a language in it? Your new language provides the framework needed to make it Turing-complete by itself 
18:50:32 -!- nazgjunk has joined. 
18:51:27 <SevenInchBread> Well... it's not finished yet... so I have no clue how it will turn out... until someone writes me some interpreters. :) 
18:52:47 -!- mule| has left (?). 
18:55:47 <ais523> the problem is that you'll get syntax errors all over the place unless you harmonize all the interpreters. Perhaps only interpreters that don't have syntax errors should be used on any run, so programs can be simple using just 1, or complex using most of them? 
18:56:42 <ais523> oh well, that means that you /will/ have to use every interpreter on any run, and so whenever a new interpreter's written it'll invalidate all previous programs written in the language 
18:56:45 <lament> by the way a non-esoteric language (Forth) shares the syntax with kallisit. 
18:56:59 <lament> (well, forth is fairly esoteric, but it's also fairly mainstream) 
18:58:37 <ais523> It's impossible to write a syntax error HOMESPRING (although you can write something that causes the interpreter to generate a temporal paradox), but it's not really suited to how I expect kallisti will end up 
18:59:45 <SevenInchBread> there will only be a certain set of interpreters.... it's a callaborative design - not the method in which you program in it. 
19:00:54 <SevenInchBread> The basic idea was to create dupdog with a huge number of interpreters instead of two... but I'm too lazy to do that - thus I turned it into a collaboration. :) 
19:08:30 <ais523> do it like TMMLPTEALPAITAFNFAL with the list of interpreters changing every day 
19:08:44 <ais523> undefined behaviour is very useful in defining specifications for languages 
19:10:55 * SevenInchBread is beginning to become  weary of all the strictness entailed in computing... 
19:13:36 <ais523> maybe we should have a forgiving esolang that can withstand small amounts of mistakes by its authors. It would make a change. 
19:13:51 <ais523> s/its authors/people programming it/ 
19:15:30 <SevenInchBread> ...no one in "serious" programming language design seems to want this behavior... except like, Perl. I think it would be great to experiment with the idea and turn it into a workable idea. 
19:16:35 <ais523> ideally it would even fix mistakes in the algorithm you were using 
19:17:25 <RodgerTheGreat> the problem is that it would probably make it difficult to do things it "thinks" are a mistake, unless the syntax is very carefully designed 
19:17:54 <SevenInchBread> right... one of the issues with Perl I think... the syntax is all weird because of all the corrective behaviors. 
19:18:47 <ais523> you could just have some sort of 'I really mean this' delimiter that you could use over small sections of code 
19:19:53 <RodgerTheGreat> I prefer the idea of designing syntax to eliminate programmer by either making mistakes more difficult to make or making it easier for the compiler to help the programmer find mistakes before the program can run 
19:21:13 <SevenInchBread> eh, I don't care much about the later... but I use a lot of interpreted languages that don't do a lot of nifty compile-time checks. 
19:21:36 <SevenInchBread> Just seems natural to me that an error occurs when it's tried... 
19:22:33 <ais523> there was an interesting example in a book about compilers I read once; it was the quadratic formula with one closing bracket missing 
19:23:00 <ais523> the book said that although it was obvious to a human where it went, it wasn't obvious to a computer, because there were 10 places it could legally be put and lead to a non-syntax-error 
19:24:02 <SevenInchBread> hmmmm, that's a good point. Computers have a hard time with ambiguity. 
19:24:18 <SevenInchBread> ...unless you give them rudimentary artifical intelligence. 
19:25:14 <SevenInchBread> has anyone read about the Elephant language? It's got some weird ideas borrow from human intelligence and natural languages. 
19:25:28 <RodgerTheGreat> perhaps set up a learning algorithm that'll pick up a coder's style and use that to guide corrections? 
19:31:21 <ais523> it reminds me of TwoDucks, only it's actually theoretically possible to implement 
19:33:29 <ais523> and it has a "don't" keyword, just like INTERCAL. Wow, it's almost esoteric! 
19:34:01 <ais523> (I suspect it's don't is more practically useful than INTERCAL's (which is redundant except for comments), though). 
19:38:26 <ais523> I don't know; IRP can be a pretty efficient language sometimes if you're skilled in writing it 
19:39:36 <RodgerTheGreat> as long as you have one or more reliable interpreters, that's very true 
19:39:56 <lament> Find the greatest prime number! 
19:40:45 <lament> .......................where?...... i don't wanna know 
19:41:00 <ais523> lament: there is no greatest prime number. Program complete in ...um... I've lost count. 
19:42:03 <lament> Now, find the smallest prime number! :) 
19:42:19 <ais523> lament: using one definition it's 2 
19:42:38 <ais523> but there was a book I read once called 'Maths made difficult' which debated the usual definition of prime 
19:42:56 <ais523> By the definition 'a prime is a number with two factors, itself and 1', the only prime is -1 
19:42:57 <lament> apart from the plural "maths"  
19:43:24 <ais523> It was a pretty good book; it was sort of maths from an esoteric perspective 
19:44:08 <ais523> some of it was highly mathematical (it's the only place I've ever seen the formula for solving cubic equations written out _in full_) 
19:44:40 <ais523> but some of it was frivolous (it had in a list of 'Objections to fractions' one based on a misquote from the Bible, and answered with a different misquote from the Bible) 
19:45:11 <lament> still the word "maths" is ridiculous :) 
19:45:55 <RodgerTheGreat> I generally take any example cited from a fictional work as instantly invalidating a proof. 
19:46:00 <ais523> it's a common abbreviation in English as spoken in England, I think. (The North American abbreviation 'math' sounds strange to me.) 
19:46:22 <lament> heh @ http://planetmath.org/?op=getobj&from=objects&id=1407 
19:46:34 <ais523> RodgerTheGreat: I think what it did was take lots of arguments of different levels of seriousness, and 'refuted' them with the same level of seriousness 
19:47:01 <ais523> Another fact from the same book: most people know that if you multiply two numbers, you get their product 
19:47:04 <lament> ais523: just because it's common doesn't make it any less ridiculous :) 
19:47:27 <ais523> and many people know that the numbers being multiplied are called the multiplier and multiplicand 
19:47:44 <ais523> likewise, most people know about numerator and denominator for division 
19:47:44 <lament> ais523: because 'mathematics' is a singular noun 
19:48:05 <ais523> (they both end with 's', after all) 
19:48:19 <ais523> however, in an addition the numbers are tha addend and the augend 
19:48:29 <ais523> and in a subtraction the numbers are the minuend and the subtrahend, apparently 
19:48:30 <lament> ais523: sure, but it's a strange way to shorten 'mathematics' 
19:48:44 <SevenInchBread> >.> it's only strange if you've been using "math" for your whole life. 
19:48:56 <ais523> lament: let's not turn IRC in to Usenet here 
19:49:02 <lament> ais523: i suppose there's no good way to shorten an inherently bizarre noun (singular noun ending in s) 
19:49:42 <ais523> let's shorten it to MM for the time being, then, to avoid the argument 
19:49:51 <RodgerTheGreat> well, I always understood it as "mathematics" referring to a wide body of topics, each covering a specific type of "math" 
19:49:59 <lament> RodgerTheGreat: well, then you understood it wrong 
19:50:05 <lament> RodgerTheGreat: because that's not the etymology. 
19:50:26 <SevenInchBread> more importantly.... why does it matter? and why must someone always be right or wrong? 
19:50:51 <lament> actually wait, maybe you're right 
19:51:15 <SevenInchBread> ...FROM NOW ON... AS IT IS THE NATURE OF OUR CHARACTERS. 
19:51:33 <RodgerTheGreat> "google" is derived from a number's name. However, it's verb-based usage has only a tenuous connection with this meaning 
19:51:58 <ais523> hey, numbers are functions in some languages (like my work-in-progress Underload) 
19:52:14 <ais523> when applied to another number, it returns the argument to the power of the function 
19:52:27 <ais523> and when applied to a string, it repeats the string that many times 
19:52:42 <ais523> and when applied to a function, it acts like the corresponding Church numeral would 
19:57:07 <lament> stupid google makes it hard to search for 'maths' 
19:57:19 <lament> it thinks 'math' matches 
19:58:39 <lament> no useful hits, though 
19:58:57 <lament> ais523: how do brits shorten 'economics'? 
19:59:05 <ais523> I just searched for "math" limiting it to pages in .uk domains and found no useful hits either 
19:59:28 <ais523> lament: I don't think they do (I know an economist and they say 'economics' in full) 
20:00:40 <lament> can't think of any singular nouns ending with s that get shortened.... 
20:00:46 -!- ais523 has quit ("in case I get caught up in an interesting conversation and miss my bus"). 
20:16:07 <lament> SevenInchBread: 'mathematics' and correspondingly 'maths' makes little sense to me because i'm not a native English speaker 
20:16:28 <lament> SevenInchBread: and it's really bizarre for a singular noun have a plural ending. 
20:17:04 <lament> SevenInchBread: it's something like 'mathematica' in all the other languages i'm familiar with. 
20:17:25 <lament> apparently it's only plural in english and french 
20:17:51 <SevenInchBread> I've never actually heard maths used until today... it sounded odd at first, but then in relation to "mathematics" it made sense. 
20:19:29 <SevenInchBread> well... mathematics is, grammatically, singular... even though it looks plural. 
20:21:56 <lament> exactly, it's grammaticaly singular, which is why it's weird for it to have a plural ending. 
20:22:39 <lament> It's singular in both greek and latin. 
20:24:19 <SevenInchBread> mathematics, economics, gymnastics, hueristics, physics, ergonomics, cybernetics, logistics, statistics 
20:24:39 <lament> none of those make much sense to me. 
20:24:40 <SevenInchBread> ....just a weird convention with... fields of study apparently. 
20:25:21 <lament> i basically have to mentally change the final 's' to 'a' 
20:27:19 <SevenInchBread> very infrequently does the breaking of a "regular" part of English grammar  sound strange to me. :P 
20:28:05 <SevenInchBread> ...because they're everywhere - the grammatical rules you follow for a word depends mostly on its origin. 
20:29:47 <SevenInchBread> analysis sounds completely singular to me... where mathematics has a sort of semi-plural sound to it. 
20:31:38 -!- RodgerTheGreat has quit. 
20:32:17 <SevenInchBread> "Mathematics is the art of pedantic rigour"   and "The mathematics are of vital importance"  both sound fine to me  (the second one sounds a bit more formal though) 
20:35:09 <lament> SevenInchBread: yes, the grammatical rules do depend on the origin - and the origin is quite singular 
20:35:25 <lament> analysis _is_ a singular noun with a singular ending 
20:35:31 <lament> the plural would be analyses 
20:35:48 <lament> 'is' is a common singular ending 
20:37:30 <SevenInchBread> I define grammatically correct as semantically meaningful. 
20:38:02 <SevenInchBread> if it conveys an idea - even a bizzare one - the grammatic formation doesn't matter much. 
20:39:01 <SevenInchBread> ...even "colorful ideas sleep furiously" conveys an idea... 
20:40:17 <SevenInchBread> http://en.wikipedia.org/wiki/Buffalo_buffalo_Buffalo_buffalo_buffalo_buffalo_Buffalo_buffalo  
20:46:06 <SevenInchBread> http://en.wikipedia.org/wiki/List_of_homophonous_phrases  --strangely hilarious 
21:12:39 <SevenInchBread> hmm... interesting... anyone ever heard of the Synthesis kernel? 
21:12:52 <SevenInchBread> It's an extremly fast OS kernel that makes heavy use of self-modification. 
21:36:15 <lament> well, considering you were told about it in this channel... 
21:54:17 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
21:54:38 -!- nazgjunk has joined. 
22:30:35 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
22:35:01 -!- bsmnt_bot has joined. 
22:35:09 -!- bsmnt_bot has quit (Remote closed the connection). 
22:36:05 -!- bsmnt_bot has joined. 
22:51:16 -!- SevenInchBread has quit (Read error: 104 (Connection reset by peer)). 
22:52:50 -!- SevenInchBread_ has joined. 
22:53:19 -!- SevenInchBread_ has changed nick to SevenInchBread. 
22:57:30 <SevenInchBread> hmmm... I think it makes more sense to represent concatenations as trees... instead of just returning the combined result. 
23:10:37 -!- UpTheDownstair has joined. 
23:12:46 -!- UpTheDownstair has quit (Client Quit). 
23:20:21 -!- sebbu2 has joined. 
23:23:09 <bsmntbombdood> goedel's incompleteness theorem proves that humans are super-turing 
23:23:13 -!- RodgerTheGreat has joined. 
23:25:38 <bsmntbombdood> because axiomatic systems are equivalent to turing machines, and humans can derive results not possible from axiomatic systesm 
23:27:33 -!- nazgjunk has quit (Connection timed out). 
23:32:58 -!- GregorR has quit (Read error: 104 (Connection reset by peer)). 
23:33:31 <lament> bsmntbombdood: what results? 
23:34:21 <lament> that's a key element of your proof, unless your proof is supposed to be super-turing too 
23:35:12 <lament> "Humans are super-turing, because i said so." - "But that is illogical!" - "That's right. Humans are above logic." 
23:38:53 -!- nazgjunk has joined. 
23:39:11 -!- sebbu has quit (Connection timed out). 
00:28:30 -!- nazgjunk has quit ("Leaving"). 
00:33:46 <RodgerTheGreat> I don't think humans function in a non-axiomatic way, we're just orders of magnitude more complex than any AI ever constructed 
00:43:32 <lament> humans function in a non-axiomatic way, unless you consider the laws of physics to be axioms. 
00:43:51 <lament> humans, after all, are physical objects, and not mathematical abstractions like computer programs. 
00:59:03 -!- sebbu2 has quit (Client Quit). 
01:06:22 <SevenInchBread> I would say... equating human behavior to algorithmic processes is... dangerous 
01:32:49 -!- wooby has joined. 
01:39:36 <RodgerTheGreat> I don't see anything particularly problematic with saying that humans are axiomatic machines- we're complicated enough to make reliable modeling difficult, but it doesn't make us magical. 
01:40:54 <RodgerTheGreat> any complex ordered system appears random when viewed without enough context 
01:43:48 <RodgerTheGreat> things like intuition are simply algorithms that function below our level of consciousness. Just because we can do things without "thinking in algorithms" (at a high level) doesn't mean they don't exist. 
01:45:30 <RodgerTheGreat> and I tend to write off the things that human brains are good at that conventional software fails at as a function of a dramatically different approach to the problem. Computers and brains do some of the same things, but they do so in completely different ways. 
01:58:38 <lament> RodgerTheGreat: you can fuck with human brain in arbitrary ways and it still works. 
01:58:42 <lament> RodgerTheGreat: it's a physical object. 
02:09:52 -!- wooby has quit. 
02:39:52 <SevenInchBread> One huge difference is the way signals are processed... 
02:41:28 <SevenInchBread> Brains reconfigure their physical properties at frequent intervals... use electricity and chemicals to form reactions... and have totally different methods of operation. 
02:41:57 <SevenInchBread> At a higher level these differences become less signifigant - however they are still there. 
03:07:06 -!- Sgeo has joined. 
04:00:47 -!- SevenInchBread has quit ("haaaaaaaaaa"). 
05:12:04 -!- wooby has joined. 
05:19:04 -!- anonfunc has joined. 
05:34:40 -!- oerjan has joined. 
05:55:57 -!- ShadowHntr has joined. 
06:08:16 * oerjan wishes to point out that the book "Maths made difficult", which started a discussion of how the word "maths" is ridiculous, actually is named "Mathematics made difficult". 
06:11:40 -!- GreaseMonkey has joined. 
06:19:32 -!- thematrixeatsyou has joined. 
06:20:10 -!- GreaseMonkey has quit (Nick collision from services.). 
06:20:44 -!- thematrixeatsyou has changed nick to GreaseMonkey. 
06:21:15 -!- RoboMonkey has joined. 
06:22:58 <oerjan> ~exec execfile("/bot/scripts/bf.py") 
06:36:06 <oerjan> darn it's annoying reading the logs when you want to comment on everything people said while you were asleep.  And now they are. 
07:11:29 -!- anonfunc has quit. 
07:12:03 -!- Sgeo has quit (Remote closed the connection). 
07:30:59 -!- GregorR has joined. 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:08:07 -!- ShadowHntr has quit (Read error: 110 (Connection timed out)). 
08:22:51 <oerjan> my keyboard isn't English :) 
08:24:07 <oerjan> the numbers and english letters are in the same place 
08:26:18 <GreaseMonkey> ok, i'm learning C++. any suggestions on what to do with it? 
08:27:40 <oerjan> but the obvious answer is to create an esoteric language interpreter :) 
08:28:52 <oerjan> or a compiler into C++ 
08:32:32 <oerjan> i'm not so sadistic as to suggest you write a C++ compiler 
08:34:10 <oerjan> a cellular automaton perhaps? 
09:36:07 -!- RoboMonkey has quit (Client Quit). 
09:36:33 -!- RoboMonkey has joined. 
09:56:18 -!- ShadowHntr has joined. 
09:58:54 <RoboMonkey> GAY SEX BIG COCKS HORSE FUCK GOATSE.CX CHEAP XANAX HOT PR0N GAY SEX HORSE FUCK BRITNEY SPEARS POOOOOOOOORN RUB GAY BOYS POOOOORN FLIRT TAPE ERRECT1ON HORSE FUCK GOATSE 
09:59:12 <oerjan> bored and perverted :) 
10:23:49 -!- GreaseMonkey has quit ("ext2 > ntfs"). 
10:23:57 -!- RoboMonkey has quit (Remote closed the connection). 
10:24:50 -!- sebbu has joined. 
10:29:19 -!- ShadowHntr has quit (Client Quit). 
12:41:00 -!- sebbu has quit ("reboot"). 
12:57:37 -!- sebbu has joined. 
13:56:00 -!- RodgerTheGreat has quit. 
13:57:24 -!- oerjan has quit ("leaving"). 
14:31:11 <oklopol> was thinking about the rubik's cube... and invented A TOTALLY NEW WAY OF PROGRAMMING WHERE YOU DESCRIBE A PROBLEM AND LET THE COMPUTER SOLVE IT ON IT'S OWN! then i come home and pick a fucking random book, and it's about prolog............ 
14:33:31 <SimonRC> I wouldn't say that humans had any more power than Turing machines. 
14:33:47 <oklopol> i'm pretty sure i had a cooler way of describing problems of that nature... a rubik's cube is hell to describe to a computer in most languages 
14:33:57 <SimonRC> Just look how long it took for us to solve Fermat's Last Theorem. 
14:34:23 <oklopol> this is where oerjan comes in and shows me a haskell 2-liner making my language redundant 
14:35:28 <oklopol> "the haskell puzzle game library" 
14:36:01 <oklopol> rubik's cube is hard to represent as linked lists (probably because i suck though) 
14:36:17 <oklopol> because you get confused because there is no "up" 
14:36:39 <SimonRC> consider the bit of plastic in the middle... 
14:36:54 <SimonRC> you can do any move while keeping that piece of plastic in the same position 
14:37:37 <SimonRC> this suggest that a 3*3*3 array is a good representation 
14:38:23 <oklopol> but, no language i know of makes let's you define rules that understand the symmetry 
14:38:44 <oklopol> i mean, you have to do some manual abstractioning to be able to use all rotates the same way 
14:38:50 <oklopol> i dunno if i make any sence :) 
14:40:21 <SimonRC> I think you can write a function in Haskell that re-arranges the meaning of the axes for another function 
14:41:44 <oklopol> true, i like making new languages more than using the old ones though, even though it's rarely necessary :) 
15:27:44 -!- jix has joined. 
15:42:28 -!- jix__ has joined. 
15:50:57 -!- jix has quit (Read error: 113 (No route to host)). 
15:52:11 -!- RodgerTheGreat has joined. 
16:09:34 <oklopol> i'm pretty sure i could get prolog easier to program in... but even more sure it's already been done :) 
16:10:01 <oklopol> since i don't really know any other lang like this but i hear there are such 
16:58:55 -!- RodgerTheGreat has quit. 
17:35:52 <oklopol> how short can quicksort be made if one can use any lang? 
17:36:19 <oklopol> qs=: (($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#) 
17:38:10 <oklopol> i managed to get it in 36 chars in oklotalk, i'm wondering if i have to improve that 
17:48:40 <SimonRC> qs(x:s)=(\(y,z)->y++x:z)$partition(<x)s;qs[]=[]    -- haskell 
17:49:24 <oklopol> [18:35:11] <oklopol> can someone show me as short a haskell quicksort  
17:49:24 <oklopol> [18:36:22] <quicksilver> oklopol: qsort (x:xs) = qsort (filter (<x) xs) ++ [x] ++ qsort (filter (>x) xs); qsort [] = [] 
17:49:24 <oklopol> [18:37:36] <SamB> oklopol: well, that was probably about as short as it gets 
17:49:48 <oklopol> indeed a lot of whitespace 
17:50:13 <SimonRC> plus mine iterates through the input only once before recursing 
17:50:19 <oklopol> i assumed they'd've understood what i meant by as short as possible (whoops cut the line in copy paste) 
17:51:35 <oklopol> i don't think yours works :\ 
17:51:36 <SimonRC> q(x:s)=(\(y,z)->q y++x:q z)$partition(<x)s;q[]=[]    -- haskell, now actually works 
17:51:39 <oklopol> then again i don't know haskell 
17:53:41 <SimonRC> It assumes you've imported Data.List though, which most modules of a Haskell program will do anyway. 
17:55:39 <oklopol> it's an apl derivative i've been making 
17:55:51 <oklopol> though is a lot different from apl now 
17:57:20 <oklopol> it's more something between python and haskell now... since i don't like pure functionalism :| 
18:00:02 <oklopol> i think it'd be {[]->[];x:s->{._+$x:.__}`{x>}PS} 
18:00:23 <oklopol> with your code + haskell -> oklotalk 
18:01:36 <oklopol> whoops, {[]->[];x:s->{'_+$x:'__}`{x>}PS} actually 
18:04:06 <SimonRC> A friend of mine invented the evil smiley 
18:04:24 <SimonRC> If you want to know why it is evil, give it a filename: 
18:08:38 <oklopol> another quicksort, oklotalk style {_~/*/`{!-_<!_}\1} 
18:08:54 <oklopol> well, {_~$/*/`{!-_<!_}\1} actually...  
18:09:17 <oklopol> but, it uses a few features i'm prolly never going to be able to implement :) 
18:09:34 <oklopol> well, oklotalk has regexes extended to any lists 
18:09:45 <oklopol> so you can create a list that just explains a form of a list 
18:12:24 <oklopol> damn, i have to think this over, since i found an inconsistency :) 
18:12:40 <oklopol> i forgot a func can be a part of a regex list as well 
18:12:51 <oklopol> hmm, i'll explain after i've figured this out 
18:13:25 <oklopol> it was sort, left for the interpreter to brute force :P 
18:13:56 <oklopol> no way specified, the form of a sorted list is explained as a list regex 
18:14:08 <oklopol> ~ mean 'make into form _ by reordering' 
18:15:04 <oklopol> but, i don't think that feature can do anything this complicated, it'd prolly just crash 
18:15:40 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
18:19:45 <oklopol> i can flood explanations now 
18:19:46 <oklopol> /*/({!-_<!_}\1) is the regexish list (where i had to add parens and remove a `) 
18:19:46 <oklopol> /*/ in a list means 'any times the following' 
18:19:46 <oklopol> \1 is a list variable, kinda like in a regex 
18:19:46 <oklopol> now if an unquoted function is encountered ({!-_<!_} here), it's added to a list of orred constraint lambdas 
18:19:48 <oklopol> (a quoted function `{...} would just be a normal function value treated as a first-class citizen) 
18:19:50 <oklopol> when the subexpression {!-_<!_}\1 is done, only \1 is left 
18:19:51 <oklopol> this would mean ANY list without the lambda before it 
18:19:54 <oklopol> it defines the value must return true assigned to it to be of that form (orred constraint lambda comes from that) 
18:19:56 <oklopol> {!-_<!_} is a function that takes an iterator and tells whether the last index contains a smaller number than the next 
18:19:59 <oklopol> _ is the iterator, -_ is the last place, !<any iterator> means value 
18:20:53 <oklopol> but, since i specified how regex lists worked just now, they might be changed radically... for example i might make explicit lambdas are xorred (in case of more lambdas) 
18:21:56 <lament> You know what would be cool. 
18:22:25 <oklopol> but, a feature i know how to implement, list comprehensions, '1 1{!-_+!--_}' is the fibonacci series 
18:22:40 <oklopol> (okay, i might die making infinite lists possible :)) 
18:24:52 <oklopol> since it's applied as the first argument 
18:41:22 -!- asiekierka has joined. 
18:41:45 <asiekierka> i thought of doing a "Sexy esoteric language" 
18:42:16 <oklopol> true, your mom might dislike it 
18:42:49 <asiekierka> a "Quit" will look like this: -nakedfemale 
18:43:24 <oklopol> "naked men" as commands might be a way to get more young women interested in esoteric programming 
18:44:50 <oklopol> we'll promise to think about it 
18:45:18 <asiekierka> It will be capable of writing only some words: naked, unnaked, female, male, idiot. 
18:46:16 <oklopol> i think all esolangs have a recommended age of 15+ 
18:47:10 <lament> asiekierka: what's the recommended age of brainfuck? 
18:47:22 <asiekierka> ... except "brainfuck" word it is 7+ i think 
18:48:57 <asiekierka> http://tunes.org/~nef/logs/esoteric/06.08.10 - log when i was here. 
19:14:20 -!- helios24 has quit (Read error: 148 (No route to host)). 
19:37:01 -!- crathman has joined. 
19:44:07 -!- oerjan has joined. 
20:04:10 -!- helios24 has joined. 
20:16:29 -!- crathman_ has joined. 
20:16:36 -!- crathman_ has quit (Remote closed the connection). 
20:27:47 <oklopol> can someone tell me a nice regex way to change all occurrances of more than one whitespace in a row into " "+(" "*(occurrances-1)) in php 
20:34:12 -!- crathman has quit (Read error: 110 (Connection timed out)). 
20:43:11 <oerjan> i don't know php but in perl you could do s/ ( +)/" "." "x length($1)/e; 
20:46:39 <oerjan> (that last one after nbsp 
20:53:23 <oklopol> well, someone in #php almost solved my problem, but it was close enough :) 
20:53:54 <oklopol> i thought perl must have variables created for \1 etc 
20:54:05 <oklopol> since it seems to like regexes 
20:55:16 <oklopol> hehe, they banned me on ircnet because of my nick :P 
21:17:17 -!- SevenInchBread has joined. 
21:31:35 -!- asiekierka has quit. 
22:35:39 <SevenInchBread> ...hmmm... I haven't figured out the difference between lexical scope and dynamic scope. 
22:36:48 <lament> lexical scope: makes sense. 
22:36:54 <lament> dynamic scope: doesn't 
22:36:57 -!- RodgerTheGreat has joined. 
22:37:04 <lament> do you need a more in-depth explanation? :) 
22:37:39 <oerjan> there are situations when dynamical scope is useful. 
22:38:28 <oerjan> let's say you have a nested function like 
22:38:56 <oerjan> f x = let g y = x + y in g 
22:40:16 <oerjan> and consider the expression let x = 3 in f 1 x 
22:42:01 <oerjan> with lexical scope, the x in the g definition will refer to the x parameter of f, whose definition contains the definition of g 
22:42:17 <lament> ..i'm sure there's an easier way to explain this :) 
22:43:22 <oerjan> so f 1 x == f 1 3 == g 3 == 1+3 == 4 
22:44:10 <oerjan> with dynamical scope, however, the x in the g definition will refer to whatever is x's value at the point g is _called_ 
22:44:35 -!- crathman has joined. 
22:45:25 <oerjan> there is a Haskell extension for dynamically scoped variables 
22:45:52 <SevenInchBread> and you want to do something like a for loop as a function... but there isn't a closure construct. 
22:45:56 <oerjan> eh, lexical scoping essentially _is_ closures 
22:46:39 <SevenInchBread> hmmm... IO has blocks (dynamical scope) and methods (lexical scope) 
22:47:50 <SevenInchBread> I found a nifty way to simulate lines without using lines in my Sophia language. 
22:49:09 <SevenInchBread> functions that don't return values will simply return the calling context (the "self" variable from the calling scope) 
22:49:47 <SevenInchBread> so any messages sent after that will be treated like a new line. 
22:51:24 <oerjan> another way to look at dynamical scoping is that all variables are global, but are saved and restored on function calls 
22:51:51 <oerjan> (this shows why they are very simple to implement) 
22:52:04 <SevenInchBread> hmmm... kind of messy for functional languages... but it makes sense for procedural languages. 
22:52:41 <lament> it only 'makes sense' in that it's practically trivial to implement. 
22:52:51 <oerjan> it makes sense for languages with absolutely no nesting, i suppose 
22:54:24 <SevenInchBread> ...reminds me of myself back when I thought pointers were evil. 
22:55:14 <lament> oh, i'm not saying it's evil 
22:55:28 <oerjan> but as said, it makes sense to have the option of having a variable dynamic 
22:55:49 <lament> it goes against the way people normally think of programs. 
22:55:58 <lament> thus, it makes programming harder. 
22:56:07 <lament> same with pointers by the way. 
22:58:52 -!- _0xff has joined. 
23:00:19 <lament> SevenInchBread: spaghetti techniques are not "alien", they're just impossible to organize nicely 
23:00:19 <lament> SevenInchBread: dynamic scoping is a spaghetti technique 
23:00:34 <SevenInchBread> One of the restrictions that I find with Python is that you can't alter anything beyond your scope... because there's nothing like a pointer. 
23:01:29 <SevenInchBread> -shrug- mutable objects are the exception... but globals are still "in scope". 
23:01:55 -!- _0xff has left (?). 
23:01:59 <lament> in C, you can only 'alter' something on the end of a pointer if you get passed the pointer. 
23:02:06 <lament> in Python, it's the same. 
23:02:19 <lament> you can only alter something on the end of an object if you get passed the object. 
23:02:51 <SevenInchBread> I'm talking about references... there's no way to say "make all references that point to this object now point to this object"... that's sometimes useful. 
23:03:20 <lament> SevenInchBread: in C, you can't do that to pointers either. 
23:03:40 <lament> but i see what you mean. 
23:03:54 <SevenInchBread> I'm actually playing around with that a little... using ID numbers. 
23:03:55 <lament> and Python doesn't have that for a very good reason. 
23:04:19 <lament> no, because python is well-designed. 
23:05:26 <SevenInchBread> -chuckle- it's well-designed if you like everything child-proof. 
23:05:34 <lament> i'm not talking about child-proof 
23:05:56 <lament> it's well-designed conceptually 
23:06:23 <lament> 1) everything is an object 
23:06:29 <lament> 2) names are labels given to objects 
23:07:46 <lament> if you could say 'have all references to this object now point to that object' 
23:08:02 <lament> that would be a more complex model 
23:08:16 <lament> for one, you had to use the word 'reference' 
23:08:44 <lament> you could potentially have another irc user named lament 
23:08:51 <lament> but you can't just go and have ME be NOT ME 
23:09:19 <SevenInchBread> the way I've considered doing it... is to have an array of objects... with names being "symbols" that points to an index on the array. So swapping out objects is a matter of reassigning an index of this array. It's similar in certain regards to pointers - but less grounded in computerism. 
23:12:13 <SevenInchBread> -nod- different analogy... and different mode of operation on the end (instead of referencing and dereferencing addresses and the like you're assigning symbols or objects) 
23:12:57 <lament> say in python, "a = 3" - it's better to think of it not as "a is pointing to 3", but as "a MEANS 3" 
23:15:32 <SevenInchBread> x := "There is a paradigm shift" ---both and |x| and |y| are changed.--- 
23:17:44 <oerjan> i have considered a different model for Reaper and Forte. 
23:18:12 <SevenInchBread> hmmm... it makes sense to me... if you think := being the method of an object. 
23:19:15 <oerjan> with anything able to be redirected. 
23:19:22 <SevenInchBread> and if you think of |x| as "the symbol x" and x as "the object represented by x" 
23:19:46 -!- sebbu2 has joined. 
23:22:48 <bsmntbombdood> a variable means different objects in different scopes 
23:24:19 <SevenInchBread> scopes are just objects... all variables pointing to "This is the text of the universe" are redirected to "There is a paradigm shift"... it's an absolute change in an objects identity - rather than a relative change in a names references. 
23:25:13 <lament> an "absolute change in an objects identity" is a rather counter-intuitive operation, don't you think? 
23:25:30 <lament> the whole point of OOP was that it was supposed to follow human intuition of "objects" 
23:25:50 <SevenInchBread> no... pretty straight foreward. You have this entity that exists beyond all names, and it can be altered. 
23:26:01 <lament> "an absolute change in an object's identity" only happens in fairy tales 
23:26:15 <oerjan> and in Reaper and Forte. 
23:26:16 <lament> when something gets turned into something completely different :) 
23:27:00 <SevenInchBread> I see it being useful... where you have stuff that gets distributed around quite a bit and you don't wish to keep track of all the names. 
23:27:30 <lament> SevenInchBread: give an example. 
23:27:32 <oklopol> "make all references that point to this object now point to this object" << is there any language that provides this feature? 
23:27:41 <oklopol> i had this idea of a reverse-pointer esolang 
23:27:55 <oklopol> you can do some neat stuff with that... though only some 
23:27:59 <SevenInchBread> ...well, the concept of Sophia has it... but I haven't implemented Sophia yet 
23:28:14 <lament> SevenInchBread: give an example of "object identity replacement" being useful 
23:30:15 <lament> http://esolangs.org/wiki/Processor/1  -- how is that remotely esoteric? 
23:30:32 <oklopol> i almost read about reaper... but the lesson ended 
23:31:27 <lament> that page (Processor/1) is the only contribution by its creator... 
23:31:45 <SevenInchBread> lament, a GUI.. where you store text in a string. A function that you want to redefine. If you have a listing of default values that are copied at multiple places - and you'd like to totally shift every variable that points to this default value.  
23:31:45 <oerjan> well reaper remains vaporware alas... 
23:32:12 <oerjan> but ais523 implemented Forte. 
23:32:56 <oklopol> oh forte looks cool, i didn't quite understand reaper from the definition on esolangs.org 
23:33:44 <lament> bsmntbombdood: i think he might be confused over what's considered esoteric 
23:34:03 <lament> SevenInchBread: i don't understand that. 
23:34:28 <lament> SevenInchBread: give one. :) 
23:34:41 <oklopol> "A function that you want to redefine." 
23:34:50 <lament> why would you want to redefine a function? 
23:35:09 <oklopol> to make it faster and sexier 
23:35:31 <SevenInchBread> -shrug- I've had situations where I'd want to alter a function in runtime. Not all applications are statically defined in source. 
23:36:09 <lament> well, functions are inherently a bit tricky 
23:36:10 <oklopol> mmm yeah i didn't fail, you often want to make a function faster at runtime :) 
23:36:24 <lament> because there's an issue of how are they represented as objects 
23:36:38 <lament> if the function is a _method_, you can just change the method. 
23:36:47 <lament> if it's an _object_, then that's a bit weird 
23:36:49 <SevenInchBread> especially in programs who have the task of being programmable by themselves.... 
23:36:51 <lament> (python is a bit weird) 
23:37:37 <lament> i'm not sure if it makes sense for functions to be objects. 
23:37:39 <SevenInchBread> but see... a function can be dispersed across multiple names... not just the one you defined it as... thus it's handy to have an -identity replacement- ;) 
23:38:37 -!- sebbu has quit (Connection timed out). 
23:38:45 <lament> i think in this case our design is broken 
23:38:56 <lament> it should still be the same function, but with a different behavior 
23:38:57 <SevenInchBread> ...I don't really see too many uses for it... it simply arose naturally out of my attempt to objectitize the variable. :) 
23:39:07 <lament> ie the function's _code_ should be a property of the function _object_ 
23:39:29 <lament> because otherwise hte operation of 'changing the function' doesn't make sense 
23:40:14 <lament> are you replying to me? 
23:40:22 <oklopol> i think it'd be rude if pointers did not follow an object moving around in the memory :| 
23:42:21 <SevenInchBread> lament,  sure... there's a flaw in your design... if the language you're using to make the design isn't capable of doing things like that.  
23:42:31 <lament> i'm not using any language 
23:43:31 <lament> I still can't think of any case where it makes sense to change the identity of an object 
23:43:47 <lament> as opposed to a property 
23:43:49 <SevenInchBread> -shrug- me neither... not usually anyways. I just like it conceptually. 
23:44:09 <lament> I don't, because it's unnaturaly. 
23:44:54 <lament> i think it's counterintuitive and not something my brain expects of everyday objects. 
23:45:19 <lament> "Suddenly, the toaster in my kitchen becomes a shark swimming in the pacific ocean!" 
23:46:19 <lament> like i said, the best example of objects actually changing identity i can think of is fairy tales and magic :) 
23:46:31 <SevenInchBread> ....order is for chumps anyways. and magic makes for a fun afternoon. 
23:47:11 <lament> SevenInchBread: changing object identity also leads to horrible, horrible things such as changing 2 to 3 
23:47:33 <oklopol> http://www.esolangs.org/wiki/Forte this is so cool <3 
23:48:01 <SevenInchBread> lament, we should change 4 to 5... because 4 is a terrible number. 
23:48:03 <lament> SevenInchBread: either you allow changing 2 to 3, or you place arbitrary restrictions on what can be changed and what can't 
23:48:50 <SevenInchBread> I'm something of a programmer liberal.... no restrictions on what's possible. 
23:48:53 <oklopol> you might be able to change 2 to 3, then again in some languages you are allowed to segfault 
23:48:57 <lament> well, it's not any more wrong than changing object identity in general :) 
23:49:33 <lament> "I change 'hello' to be 'world'. World world!" 
23:49:42 <SevenInchBread> Here's another use... if you represent string concatenations as objects in their own right. 
23:49:51 <lament> i suppose that's exactly what forte does? heh 
23:52:26 <SevenInchBread> ...it kind of goes away from the traditional programmers concept of "operations return values"... now things become a matter of identity - and the parts it takes to construct the whole. 
23:53:06 <lament> oh holy crap forte is awesome 
23:55:22 <oklopol> where can you get the interpreter? 
23:55:29 <oklopol> and has anything been done with that? 
00:03:52 <oerjan> http://pastebin.ca/391947 
00:07:30 <lament> what's with these disgusting thutu perl-compiled programs? 
00:08:05 <lament> but why the perl output and not the thutu source? 
00:08:45 <SevenInchBread> -snicker- Lament reminds me of 19th century aristocracy. 
00:08:58 <oerjan> he apparently didn't think thutu2 ready for public consumption yet 
00:10:13 <SevenInchBread> hmmm... that Hellp, World! example gave me a sudden surge of ideas... 
00:10:36 <SevenInchBread> as I've never seen anything like that... and it seems very very natural. 
00:10:48 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.3/2007030919]"). 
00:13:49 <oerjan> wiki templates + unlimited redirection would be sort of similar. 
00:14:31 <SevenInchBread> yeah... same concept too... you could count a template edit as something similar to a transformation. 
00:17:47 -!- wezyap has joined. 
00:19:45 <bsmntbombdood> didn't know string rewriting algorithms were turing complete 
00:20:03 <lament> haven't heard of thue? 
00:20:56 <lament> http://esolangs.org/wiki/Thue 
00:22:07 <lament> i'm still proud of my javascript thue interpreter :) 
00:24:04 <oerjan> Why the heck have they deleted Refal? 
00:25:21 -!- nazgjunk has joined. 
00:27:18 <oerjan> ah, copyright problems 
00:27:46 <oerjan> what a ridiculous thing not to leave even a stub. 
00:28:23 <lament> wow, i just noticed my thue interpreter used javascript from web.archive.org 
00:28:29 <lament> forgot to correct an URL when moving hosts 
00:30:26 <lament> oerjan: how did you find out the reason? 
00:34:54 -!- wooby has quit. 
00:37:24 <SevenInchBread> ...argh... I still can't bind my HTTP server to bread.strangled.net 
00:38:55 <oerjan> i followed the link to the deletion log 
00:39:55 <oerjan> i don't know how to find any prior discussion though 
00:56:37 -!- sebbu2 has quit ("@+"). 
01:09:36 -!- ShadowHntr has joined. 
01:10:31 -!- nazgjunk has quit ("Leaving"). 
01:15:10 -!- wezyap has quit. 
01:16:15 <bsmntbombdood> http://www.99-bottles-of-beer.net/language-perl-737.html 
01:18:01 <lament> perl once again proves to be the most esoteric language 
01:20:21 -!- ShadowHntr has quit ("End of line."). 
02:15:32 -!- Sgeo has joined. 
03:37:06 -!- GreaseMonkey has joined. 
03:49:02 -!- RoboMonkey has joined. 
03:49:33 <GreaseMonkey> ?addc fu 1 x00>"PRIVMSG "%1[>,]" :fuck you, "%2[>,]x0A>x00<[<]>%0[.>] 
03:50:43 <GreaseMonkey> apart from yours probably being easier to code in 
03:51:56 <bsmnt_bot>  ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~quit ?(.*)', 'do_quit'), 
03:51:56 <bsmnt_bot>  ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~raw (.*)', 'do_raw'), 
03:51:56 <bsmnt_bot>  ('^\\S+ PRIVMSG \\S+ :~ctcp (\\S+) (.+)', 'do_ctcp'), 
03:51:57 <bsmnt_bot>  ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG (\\S*) :~pexec (.*)', 'do_exec'), 
03:51:58 <bsmnt_bot>  ('\\S+ PRIVMSG (#esoteric|#baadf00d|#bsmnt_bot_errors) :~exec (.*)', 
03:52:01 <bsmnt_bot>  ('\\S+ PRIVMSG \\S+ :~ps', 'do_ps'), 
03:52:03 <bsmnt_bot>  ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~kill (.*)', 'do_kill'), 
03:52:04 <bsmnt_bot>  ('^ERROR :Closing Link:.*', '<lambda>'), 
03:52:06 <bsmnt_bot>  ('\\S+ PRIVMSG (\\S+) :~bf ([^!]*)!?(.*)', 'bfarg')] 
03:54:09 <oerjan> i suppose the bf locked it up. 
03:54:26 <oerjan> i suppose it is not properly in do_exec 
03:55:04 <GreaseMonkey> oh well, just in case you want a little piss-take: 
03:55:06 <RoboMonkey> BUY VIAGRA GOATSE RUB GAY BOYS FLIRT TAPE HORSE FUCK FLIRT TAPE GOATSE ONLINE CASINO GAY SEX BRITNEY SPEARS HOT PR0N BIG COCKS ERRECT1ON POOOORN GOATSE XXX 
03:55:34 <oerjan> with a little help from me 
03:55:53 <oerjan> a command to load python 
03:56:00 -!- ShadowHntr has joined. 
03:56:25 -!- bsmnt_bot has quit (Read error: 131 (Connection reset by peer)). 
03:56:28 -!- bsmnt_bot has joined. 
03:57:00 <oerjan> ~exec execfile("/bot/scripts/bf.py") 
03:58:39 <GreaseMonkey> like when miran was being a dick and decided to force people to use *classes* in their DLLs for the AMGC2 system  
03:59:21 <GreaseMonkey> RULE #1 of library programming: NEVER, *EVER* force people to use C++ classes! 
05:47:33 -!- oerjan has quit ("leaving"). 
06:53:39 <GregorR> ................................................................. 
06:54:05 <GregorR> Rule #1 of library programming for libraries which are intended to be accessible by languages other than C++: (see above) 
07:03:10 -!- Sgeo has quit ("Leaving"). 
07:22:17 <GregorR> Hm, do I want to admit it... 
07:26:57 -!- Sukoshi has joined. 
07:29:58 <GregorR> For all that it's not a "cool" distro to use, I'm yet to find a better one. 
07:31:22 <GregorR> Well, by "cool" I mean something more like "elite" in this case. 
07:31:37 <GregorR> I'm actually quite capable of having e.g. Slackware as my distro, but why would I do that to myself? 
07:37:41 <GregorR> Now I just need to hack linuxwacom ... :( 
07:57:09 -!- RoboMonkey has quit. 
07:57:13 -!- GreaseMonkey has quit ("byes"). 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:07:26 -!- ShadowHntr has quit (Read error: 110 (Connection timed out)). 
08:35:46 <Sukoshi> I have Slackware as my distro. 
08:35:55 <Sukoshi> It's not that bad, you know. 
08:39:52 <Sukoshi> Takin' a minute break from cramming. 
08:40:49 <Sukoshi> Trying to cram in 1.5 semesters worth of material into 5 weeks. 
08:41:02 <Sukoshi> That's only in one class though. I have to review for a whole bunch of others. 
09:25:59 -!- sebbu has joined. 
10:52:26 -!- nazgjunk has joined. 
11:05:55 -!- sebbu has quit ("reboot"). 
11:26:27 -!- UpTheDownstair has joined. 
11:38:47 -!- fushd has joined. 
11:39:27 -!- nazgjunk has quit (Nick collision from services.). 
11:39:29 -!- fushd has changed nick to nazgjunk. 
11:44:01 -!- UpTheDownstair has quit (Read error: 60 (Operation timed out)). 
11:52:08 -!- sebbu has joined. 
12:04:12 -!- UpTheDownstair has joined. 
12:04:20 -!- UpTheDownstair has quit (Client Quit). 
14:30:08 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
14:31:43 -!- nazgjunk has joined. 
15:29:00 -!- SevenInchBread has quit ("haaaaaaaaaa"). 
15:49:41 -!- Sgeo has joined. 
17:21:19 -!- SevenInchBread has joined. 
18:10:41 -!- jix_ has joined. 
18:21:12 -!- jix_ has changed nick to jx. 
18:21:25 -!- jx has changed nick to jix. 
18:53:30 -!- RodgerTheGreat has quit. 
19:22:18 -!- nazgjunk has quit ("reconnecting teh wlan"). 
19:26:18 -!- nazgjunk has joined. 
19:41:38 -!- Sgeo has quit ("Leaving"). 
20:00:18 -!- helios24_ has joined. 
20:02:34 <bsmntbombdood> wow, my abstraction eliminator/SKI simplifier is terrible 
20:02:35 -!- helios24_ has quit (Client Quit). 
20:03:24 <bsmntbombdood> gives me ``S`K`S``S`KSK``S``S`KS``S`K`S`KS``S`K`S`KK``S``S`KSK`KI`K`KI when the shortest is `S``S`KSK 
20:06:39 -!- Sgeo has joined. 
21:14:31 -!- RodgerTheGreat has joined. 
21:38:57 <SimonRC> "To do is to be" - Nietzsche 
21:39:08 <SimonRC> "Do Be Do Be Do" - Sinatra 
21:43:57 <SimonRC> Well, I was singing the first line IRL, then I suddenly recalled the next three lines. 
21:44:44 <RodgerTheGreat> bsmntbombdood: I am bored, which has a tendency to make one easily intrigued 
21:46:15 <bsmntbombdood> I'm thinking about making a functional object oriented stack based language 
21:46:27 <SimonRC> incidentally, other sorces give Socrates and Satre 
21:46:44 <SimonRC> *cough* Satre and Socrates 
21:49:35 <bsmntbombdood> Because if binding functions to names is allowed, then anything has to be able to be bound to a name 
21:57:02 <RodgerTheGreat> you could make stacks a datatype that can be stored on the stack 
21:58:05 <RodgerTheGreat> and you could give each object a queue for storing variables, rather than a stack! 
22:04:34 <bsmntbombdood> hmm http://www.codinghorror.com/blog/archives/000635.html 
22:05:45 <SimonRC> You could go the FORTH route: an object is a block of memory.  It is up to you to use this block of memory without shooting yourself in the foot.  lots of very lightweight setters and getters are recommended. 
22:17:56 <bsmntbombdood> This article says that the first difficult thing students have is "assignment and sequence" 
22:20:40 <SimonRC> Ah, it is not which model they have, but how consistant it is 
22:21:13 <SimonRC> OTOH, the statements listed are definitely imperative-oriented. 
22:21:33 <SimonRC> they are nonsense in non-imperative languages 
22:21:42 <bsmntbombdood> but then they say that kids should get the right answer, because they have seen the same statements in math class 
22:21:47 <SimonRC> except PROLOG, where no solution would be found 
22:22:03 <SimonRC> bsmntbombdood: I didn; thnk theysaid that 
22:22:21 <SimonRC> they are trying to avoid thre being a "correct" answer 
22:22:52 <bsmntbombdood> I think it's reasonable to think that there won't be a consistent model of assignment 
22:26:17 <bsmntbombdood> this one: http://www.cs.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf 
22:57:29 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
23:19:59 -!- sebbu2 has joined. 
23:28:09 -!- sebbu has quit (Read error: 60 (Operation timed out)). 
00:18:36 -!- nazgjunk has quit ("sleep, gah"). 
00:20:20 -!- sebbu2 has quit ("@+"). 
00:55:51 <SevenInchBread> well... I think it's silly to say "only some people are capable of programming"...  
00:57:07 <SevenInchBread> it could be a. the teacher, b. the language, c. the alignment of the planets 
00:58:14 <SevenInchBread> and if there are certain aptitudes that make it possible to learn how to program - I certaintly have none of the stereotypical programming qualities. 
00:59:26 <SevenInchBread> neat, detail-oriented, good concentration, organized.     ....I'm the polar opposite of that. 
01:10:33 <SevenInchBread> bsmntbombdood, your explainations fall too much into the trap of describing the implementation. 
01:10:43 <GregorR> Those are so utterly not the qualities of a programmer. 
01:11:17 <GregorR> The one quality you need to be a good programmer is the ability to grasp abstraction without losing perspective of the concrete. 
01:11:30 <GregorR> Well, that's the one quality you need to be capable of programming at all. 
01:11:46 <GregorR> I won't say that's all that's necessary to be a "good" programmer :P 
01:19:27 <SevenInchBread> so you need to be able to fly while looking at the pavement? 
01:26:01 <GregorR> It's just too bad that you have not an effing clue what "abstraction" means. 
01:28:01 <SevenInchBread> abstraction - the process of putting buttons on machines? 
01:32:51 <bsmntbombdood> SevenInchBread: i have no other way of describing it... 
01:34:27 <SevenInchBread> It works... your explainations are just confusing for someone trying to understand how it works. 
01:35:25 <bsmntbombdood> there's an object where the builtin methods are stored 
01:40:32 <SevenInchBread> a distinction between classes and objects might not be a good idea for something like this. 
01:41:01 <SevenInchBread> you could just have "objects that you can make copies of and add shit too" 
01:43:00 <SevenInchBread> well... there are classes and objects... even if thoses classes are objects, there's still a distinction - unless I'm misunderstanding how this works. 
01:44:05 <SevenInchBread> In Smalltalk, all classes are objects - but not all objects are classes. 
01:44:30 <bsmntbombdood> a "class" is just an object that has a method that creates another object 
01:45:37 <GregorR> This is called "prototype-based object orientation" 
01:47:29 <SevenInchBread> ...using a slightly different way to creating new objects than most prototype languages... but the basic idea is still the same. 
01:50:19 <bsmntbombdood> the quoter object responds by putting the symbol foo on the stack 
01:51:34 <bsmntbombdood> object is sent to it, builtins object responds by pushing the base object 
01:52:13 <bsmntbombdood> responds by pushing an object that accepts and stores message handlers (methods) 
01:52:50 <bsmntbombdood> add-method is sent to that object, adding a message for the symbol "foo" handled by the code [foo code] 
01:53:03 <bsmntbombdood> done is sent the the object, turning it into a class 
01:53:58 <SevenInchBread> |foo| := (object conceived |foo| := (code))    -- in Sophia  
01:54:47 <bsmntbombdood> @'foo [foo code] @object %inherit add-method done init foo 
01:55:04 <bsmntbombdood> would be a long winded way of executing [foo code] 
01:56:48 <SevenInchBread> ...there are semantic differences though... the () represent functions...  
02:45:36 -!- ShadowHntr has joined. 
03:29:48 -!- Mica69 has joined. 
03:30:09 -!- Mica69 has left (?). 
03:45:14 <SevenInchBread> hmmm... I'm making a weird Orkish concurrent language. 
03:53:04 -!- wooby has joined. 
05:58:08 -!- LeaLeaLea has joined. 
05:59:00 -!- LeaLeaLea has quit (Client Quit). 
06:20:38 -!- RodgerTheGreat has quit. 
07:56:23 -!- maverickbna has joined. 
07:56:44 -!- maverickbna has quit (Read error: 104 (Connection reset by peer)). 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:13:13 -!- ShadowHntr has quit (Read error: 110 (Connection timed out)). 
08:25:32 -!- sekhmet has quit (Read error: 104 (Connection reset by peer)). 
08:30:33 -!- sekhmet has joined. 
08:36:44 -!- oerjan has joined. 
10:15:38 -!- sebbu has joined. 
11:35:06 -!- jix has joined. 
11:44:14 -!- Sgeo has quit (Remote closed the connection). 
12:32:51 -!- oerjan has quit ("leaving"). 
13:08:29 -!- sekhmet has quit (zelazny.freenode.net irc.freenode.net). 
13:08:29 -!- oklopol has quit (zelazny.freenode.net irc.freenode.net). 
13:08:29 -!- SimonRC has quit (zelazny.freenode.net irc.freenode.net). 
13:08:38 -!- sekhmet has joined. 
13:08:38 -!- oklopol has joined. 
13:08:38 -!- SimonRC has joined. 
14:44:06 -!- ivan` has joined. 
14:46:39 -!- ivan` has changed nick to ludios. 
15:00:25 -!- ludios has quit ("Coyote finally caught me"). 
16:22:04 -!- RodgerTheGreat has joined. 
16:23:28 -!- jix__ has joined. 
16:32:54 -!- jix has quit (Read error: 110 (Connection timed out)). 
16:54:14 -!- SevenInchBread has quit ("haaaaaaaaaa"). 
16:58:21 -!- jix__ has changed nick to jix. 
17:08:25 <oklopol> plng btz www.bts2.nt... addktv fr sch a trvl gm 
17:39:43 -!- SevenInchBread has joined. 
17:55:05 -!- sebbu2 has joined. 
18:13:31 -!- sebbu has quit (Connection timed out). 
19:41:27 -!- UnrelatedToQaz has joined. 
19:42:25 -!- UnrelatedToQaz has left (?). 
19:58:11 <SevenInchBread> I need to compile a list of all Unicode characters... and sort out the ones that are "symbolic" and those are "alphabetic".  
19:58:31 <SevenInchBread> ...basically, the ones that work like !@#$%^&*()  and the ones that work like letters. 
20:04:08 <RodgerTheGreat> a list of 256X256 characters, some of which don't exits... 
20:27:28 -!- nazgjunk has joined. 
20:28:05 -!- nazgjunk has quit (Client Quit). 
20:28:23 -!- nazgjunk has joined. 
20:37:44 <SevenInchBread> ...believe it or not... I've not included ideas that I like from PERL into Sophia. Yes... the apocalypse is nigh. 
20:38:12 <SimonRC> SevenInchBread: actually, the unicode people have already decided for you and any library that supports unicode properly should have a function to find out. 
20:39:51 -!- wooby has quit. 
20:40:32 <SevenInchBread> later I'll need a way to distinguish punctuation-type glyphs from letter-like glyphs... 
20:46:28 <RodgerTheGreat> hey, feesh: http://www.nonlogic.org/dump/images/1174851872-chainbrain.png 
20:51:43 <RodgerTheGreat> it's an idea for a CD cover for a band a friend of mine is in called "Chainsaw Brainsaw", if anyone's wondering 
20:52:33 <SevenInchBread> ...typical keyboards need more unicode symbols on them... 
20:52:58 <SevenInchBread> we could use a lot of them in programming... there's only so many funny-looking characters you can use in ASCII before you run out. 
20:54:12 <RodgerTheGreat> I don't really want any more unicode symbols unless I get more *keys*. It's time consuming enough coding in languages with excessive punctuation like perl 
20:57:15 <SevenInchBread> you could even digitize the whole labelling of symbols... using lights to label each key. So then you could set up your own keyboard layout. 
20:57:39 <RodgerTheGreat> SevenInchBread: sounds like the fabled "optimus" keyboard 
20:57:49 <SevenInchBread> ...plus, I want a huge organ-sized keyboard... so I look more technical. 
20:58:23 <RodgerTheGreat> I like the idea of two "tiers" of keyboards, like they show operators using in "The Matrix" 
20:58:54 <SevenInchBread> or... if you just had like... switched. You could switch out certain layouts. 
20:59:34 <SevenInchBread> ...I wonder where you could some of these weird keyboards. 
21:00:26 <RodgerTheGreat> I have a German keyboard a friend of mine got for me when he was on vacation, but it's PS2, and I have a mac. 
21:00:45 <SimonRC> more types of brackets would be good 
21:00:58 <SimonRC> RodgerTheGreat: monitor? :-P 
21:01:44 <SevenInchBread> There are the << and >> unicode symbols... although those kinds of brackets can be done with just double angle brackets 
21:02:38 <SevenInchBread> well... inverted question marks and exclaimation points could be used for brackets. 
21:02:47 <RodgerTheGreat> I've zip-tied together the six cables that I have to plug into my laptop to "dock" it at my desk into a huge umbilical 
21:03:12 <SimonRC> The proper symbols for and, or, not, xor, union, intersection, exponent, etc would be good too. 
21:03:21 <SimonRC> alas, it is time for me to go again. 
21:03:24 <RodgerTheGreat> and then USB and firewire go directly to various hubs and such 
21:05:09 * SevenInchBread demands a huge multi-tiered, digitally-labeled keyboard. 
21:06:03 -!- nazgjunk has quit ("switching to kde"). 
21:06:27 <SevenInchBread> yeah, there's a whole slew of Unicode math operators that could be put on keyboards... it would take forever before you exhaussted your repetoir of single-character operators. 
21:06:42 <SevenInchBread> well... I'm sitting on my bed... so my feet aren't in a position for pedal-mashing. 
21:11:07 -!- nazgjunk has joined. 
21:13:56 <oklopol> wtf... php's serialize("osososo") returns s:7:"osososo"; 
21:17:57 <oklopol> what i'd like even more than more keys in a keyboard would be to lose the "ergonomic" fact that keys are not directly on top of each other 
21:18:08 <oklopol> yes not diagonally positioned either 
21:18:16 <oklopol> the are pretty randomly dispersed there... 
21:18:28 <oklopol> but then again, if you ask me, everything sucks 
21:23:45 <RodgerTheGreat> the pattern for a keyboard actually does make a fair amount of sense considering where the joints are in your hands 
21:24:48 <oklopol> i have different joints in my left and right hand? 
21:25:41 <oklopol> now why isn't the keyboard symmetric then? 
21:26:45 <RodgerTheGreat> because not having any keys vertically aligned makes it easier to create mechanical linkages that swing a type-block into position on an ink-impregnated tape, and re-learning typing sucks 
21:27:15 <oklopol> you can type on this keyboard, though it doesn't feel natural... but when playing the beepiano... oh the pain 
21:27:58 <oklopol> i don't agree to either of those but i understand many would 
21:29:34 * oklopol is getting pretty good at it 
21:30:16 <RodgerTheGreat> I never learned to play a normal piano, so it doesn't seem that unnatural when I use something like "Musical Typing" 
21:31:06 <RodgerTheGreat> it's what they call it when you map the keyboard to musical notes in software like Garageband or FLStudio 
21:31:57 <oklopol> i've only seen that done in 2 ways, one is note name -> tone, the other is the piano keyboard emulated on the keyboard 
21:32:11 <oklopol> and make it impossible to enjoy playing 
21:32:11 <RodgerTheGreat> I really want to learn how to use a proper tracker application 
21:33:02 <oklopol> beepiano uses the layout of the accordion... quite natural since it is the exact same layout 
21:33:26 <oklopol> except of course the layout of the keyboard is, as i said, pretty random 
21:33:39 <oklopol> the accordion of course has a more natural alignment of keys 
21:34:28 <oklopol> plus, rather than having more keys i'd like to have a better key layout... qwerty makes no sence 
21:35:41 <oklopol> i asked whether there are any better layouts than qwerty for sale in the shop where i bought my laptop... the salesman had no idea what i meant 
21:35:58 <RodgerTheGreat> I fail to see how "making sense" matters in a keyboard layout. Any layout is ultimately arbitrary, and using the keyboard is simply a factor of memorizing the finger movements for each character and groups of characters 
21:36:01 <oklopol> when i explained he said he'd never heard there could be anything else 
21:37:23 <RodgerTheGreat> Qwerty is superior to any alternative purely because it is an accepted standard and by learning it you can type on over 99% of keyboards in existence. Using an alternative renders your typing skills useless when faced with an unknown layout or somebody else's keyboard. 
21:37:38 <RodgerTheGreat> not to mention that alternatives are usually harder to find... 
21:38:17 <oklopol> well, once again that's something i don't care about, i'd just like to have a better keyboard :\ 
21:39:07 <RodgerTheGreat> I'm a great deal more interested in the feel of the keyboard- firmness, key travel, etc, than the letters on the keys 
21:39:22 <oklopol> plus the human brain can adapt more than one keyboard layout easily 
21:40:10 <RodgerTheGreat> typing on a keyboard from the 70's is awesome, because the keys are big, have cupped surfaces, and they move like half an inch 
21:41:25 <oklopol> that's another thing i must disagree :P everybody always says "this keyboard sucks... my keyboard is soooo much better" or something... i can feel the difference of course... but you get used to a new feel in 5 secs :\ 
21:42:54 <RodgerTheGreat> a good feel is determined by something you want to be using for 8 hours at a time, not five seconds 
21:43:26 <RodgerTheGreat> do you feel a two-by-four is as comfortable to sit on for that period as an overstuffed couch? 
21:44:27 <oklopol> well... i sleep on 2 mattresses... but i feel just as good sleeping on the floor... maybe it's just me 
21:44:45 -!- ShadowHntr has joined. 
21:45:20 <oklopol> okay, i'll rephrase my initial opinion: i hate qwerty because i'm different. 
21:47:02 <oklopol> i used to sleep on the floor actually, since it's easier to get up that way, but my mother told me repeatedly i should sleep on a bed, so it's become a habit 
21:47:09 <oklopol> but i've never seen any use for beds 
21:48:26 <oklopol> i'll continue programming now, though php sucks real bad :< 
21:48:41 <RodgerTheGreat> I dislike sleeping on the floor less because it's hard and more because it provides inadequate lumbar support. My back always hurts afterwards 
21:49:00 <oklopol> yeah, it does if you're not used to it 
21:49:04 <RodgerTheGreat> perhaps if it was curved properly, it'd be comfortable 
21:49:25 <oklopol> but people who've started sleeping on the floor say they feel much better 
21:50:00 <oklopol> and i've got to agree, since after a few nights it does feel a lot more natural 
21:50:44 <oklopol> RodgerTheGreat was it you who said php is useful of smth? 
21:50:49 <oklopol> i have a lot of problems :) 
21:51:37 <RodgerTheGreat> my main languages are Java, PHP, and BASIC, actually (which doesn't make me too popular here sometimes. ;)) 
21:52:10 <oklopol> those are the 3 most hated languages probably :P 
21:52:21 <SevenInchBread> so.... here's an idea for parallel computations... like... 
21:52:30 <oklopol> among people who haven't used them at least 
21:52:51 <RodgerTheGreat> but I hate C/C++ with a unique passion, so it all fits in 
21:53:23 <RodgerTheGreat> my three least favorite languages are, in order, ruby, C, and C++ 
21:53:43 <oklopol> javascript also... i once tried something with javascript... this guy saw me open a javascript page and literally started screaming javascript is evil 
21:53:52 <SevenInchBread> couldn't you split off a few quick threads and chomp away at this function in non-linear bits? 
21:54:24 <oklopol> which is weird, since i hear it's a pretty decent language, java with classes made optional (right?) 
21:54:48 <SevenInchBread> even if parts at the beginning of the function are required before later parts can be computed... you can use the concept of message queues and futures to represent data dependences. 
21:54:49 <RodgerTheGreat> oklopol: the interesting thing is, most people that honestly try those languages either don't mind them or at least find some aspects they like 
21:55:09 <oklopol> SevenInchBread i think oerjan or someone told you that a few days ago 
21:55:43 <oklopol> that things in parens can be split into different threads with thread per paren basically 
21:55:51 <SevenInchBread> ....I'm just... now sure how the interpreter would logically split the threads... 
21:56:37 <oklopol> though of course not literally parens, but pieces that parens and precedence separate from the whole 
21:57:11 <RodgerTheGreat> anyway, what was this PHP thing you were having difficulty with? 
21:57:31 <oklopol> RodgerTheGreat i'm trying to use serialize 
21:57:39 <oklopol> it sucks, for one, but that's not the problem 
21:57:47 <SevenInchBread> so... each expression could pre-emptively evaluate to liek a future thing to the surrounding threads... which will collect computations for when its thread finishes... sounds fun. 
21:57:49 <oklopol> since i can convert to my own good function later 
21:58:19 <oklopol> now when you make that explicit somehow 
21:58:34 <oklopol> and... somehow allow the programmer to do... something with it 
21:58:36 <SevenInchBread> ...should incorporate it into Sophia somehow... along with the Actor model. 
21:59:06 <oklopol> RodgerTheGreat the problem is it does not work yet... i can show you the non working part 
21:59:17 <SevenInchBread> message-passing makes it somewhat simple... you just use futures that collect message names. 
22:00:29 <RodgerTheGreat> oh, since we're on the topic of language semantics, this is a partially finished language specification for a creation of mine. I call it "bullet" for now, and it's intended to be an alternative for C. http://www.nonlogic.org/dump/text/1174856252.html 
22:00:41 <oklopol> http://www.vjn.fi/pb/p626232154.txt <<< 
22:00:51 <RodgerTheGreat> It's more of a "serious" language than an esolang, but this channel seems like a good place to talk about it 
22:00:54 <oklopol> $compiled_program is an array 
22:01:10 * oklopol reads RodgerTheGreats link 
22:01:45 <RodgerTheGreat> I literally spent 6 hours debugging a 30 line program yesterday 
22:02:38 <oklopol> yeah... the fact files are flat makes it suck in a lot of places 
22:03:05 -!- sebbu has joined. 
22:03:37 <oklopol> but, serialize seems to create an alphanumeric string with " and : in it (which sucks), and that should be easy to output in a flie 
22:04:23 <oklopol> that is quite a beautiful language i must admit 
22:05:08 <RodgerTheGreat> there are still a lot of things to be done, like control structures and the like 
22:05:13 <oklopol> somehow seems a consistent language layout on the first glance 
22:05:44 <oklopol> do subdiv[val1:a val2:b] to [subresult:sub divresult:div] 
22:06:06 <RodgerTheGreat> the design philosophy is creating a language that can be compiled pretty easily and that is designed so that programming errors are either hard to make or easy for the compiler to catch 
22:06:31 <RodgerTheGreat> yeah, the to [] block specifies what variables to "unload" a function's returned values to 
22:07:13 <RodgerTheGreat> you mean function calls on a function's return values? 
22:08:19 <oklopol> i mean, def a[][def b[]returns[double:c][c=0.0];print:stdio[b[]]] 
22:08:41 <oklopol> in case ';' can be used like that and nl's are optional 
22:09:57 <RodgerTheGreat> I'm not sure what that's useful for aside from adding some form of function scoping. newlines or : act as an expression terminator like ; does in a normal curly-bracket language 
22:10:33 <oklopol> _list_=[1 2 3 4 5]; _doubled_=map[def[double:a]returns[double:ret][ret=a*2] _list_] 
22:10:35 <RodgerTheGreat> however, I don't see any reason that would otherwise be invalid 
22:11:06 <oklopol> functions sans names, lambdas, exist? 
22:11:27 <oklopol> (that's probable not a good explanation of a lambda though :)) 
22:11:41 <RodgerTheGreat> this isn't an object-oriented language, however, so a function can't be manipulated as a list element 
22:12:34 <oklopol> _list_=[1 2 3 4 5]; def dbl[double:a]returns[double:ret][ret=a*2]; _doubled_=map[&dbl _list_]; 
22:12:53 <oklopol> that is very easy to compile 
22:12:58 <RodgerTheGreat> pointers will probably exist, but I don't want to make their use a main feature of the language- they have a tendency to create unreadable code 
22:13:23 <oklopol> well, i love list operations with lambdas :) 
22:13:34 <oklopol> but, indeed i don't know whether it's that readable 
22:13:45 <RodgerTheGreat> what do you think about the structure of strings and arrays? 
22:13:57 <oklopol> i just like to do everything creatively... so... maybe i use that as an obfuscation feature more like :P 
22:14:13 <RodgerTheGreat> I think 1-indexed arrays make algorithms a lot clearer and might help avoid off-by-one errors 
22:15:08 <oklopol> do you have def dbl[double:x]returns[double:ret][ret=2*x]      main[][print:stdio dbl 5.0] ? because [] kinda seems like a list everywhere 
22:15:17 <oklopol> ah but yeah, a value is not [value] 
22:16:01 <oklopol> hmm... well, indexing is often errorprone anyway 
22:16:07 <oklopol> but i don't like 1-indexing 
22:16:34 <RodgerTheGreat> in most cases, a [] set indicates a series of elements or expressions of unknown length, but since this is a compiled language the "lists" cannot be manipulated at runtime 
22:16:51 <oklopol> actually, can't think of any 
22:17:28 <oklopol> but for god's sake don't make dim smth(-3 to 50) as integer :P 
22:17:42 <oklopol> (if that's the basic array syntax) 
22:18:16 <oklopol> strings and arrays, hmm, i gotta read a bit 
22:18:35 <RodgerTheGreat> my main project at the moment is the creation of something that can do what structs do, and fleshing out a vague idea I had for "algorithm prefabs" that you can plug code into like parameters to save coding time 
22:18:59 <oklopol> i'm a bit dense, can you elaborate? 
22:19:22 <oklopol> you have structs in the lang? 
22:19:58 <oklopol> arrays are 1-indexed. for example, an array of size 10 has cells 1 through 10. 
22:19:58 <oklopol> cell 0 always contains the size of the array, not counting cell 0. 
22:20:06 <oklopol> i was actually going to suggest you do that 
22:20:17 <RodgerTheGreat> but I need something *like* them to discourage rampant use of pointers and to make manipulating data easier 
22:21:14 <oklopol> you might do pass by pointer like most "clean" langs 
22:21:46 <RodgerTheGreat> java's "references" are a lot safer than pointers, because you can't do math on them 
22:21:49 <oklopol> or then... you could make it default to copy... but not really copy, just ensure no mutation is done 
22:22:19 <oklopol> somehow make pass by pointer, but make the programmer tell if he really wants to use the same object 
22:22:23 -!- sebbu2 has quit (Connection timed out). 
22:22:50 <RodgerTheGreat> pointers are very powerful and very destructive. I need to fit them carefully into the language 
22:23:14 <oklopol> well, you want them to be verrry explicit when used if aiming for usability 
22:24:04 <oklopol> "\"algorithm prefabs\" that you can plug code into like parameters to save coding time" something like a macro? 
22:24:12 <oklopol> or something completely different? 
22:24:54 <oklopol> btw did you see my problem in the code? unserializing doesn't work, since i don't think i mentioned what the problem is :D 
22:25:28 <oklopol> http://www.vjn.fi/pb/p626232154.txt 
22:25:33 <oklopol> the first echo prints Array 
22:26:23 <oklopol> the last one should try to echo a data structure... i don't think that code makes sence :  ) 
22:26:29 <RodgerTheGreat> I'll take another look at it in a bit- I need to grab some food 
22:29:50 <oklopol> okay... as i well know, fgets() does not read the whole file but until the first nl 
22:30:35 <oklopol> that's my problem, unserialize fails because it is given a broken string to unserialize 
22:31:07 <oklopol> but... now how do i read a whole file?  
22:31:29 <oklopol> i'm using file_get_contents on the line above... i think my problem's solved :P 
22:34:39 <SevenInchBread> you could use a higher level version of a pointerisms. 
22:34:58 <oklopol> www.bots2.net is a nice game, but something i really dislike about it is that it discourages using scripts, so i'm making my own game in which you MUST use a script 
22:35:48 <oklopol> it's an online game where you can create a bot by submitting a piece of code that determines how your bot fights and what kind of stuff it like to use 
22:36:18 <SevenInchBread> well... if everything is a pointer to its data... the only other reason I could think of using pointers is to alter out-of-scope variables. 
22:36:38 <oklopol> the bots automatically fight according to the tactics you code for them, tactics including both the actual fighting situation tactics and off-fight equipment buying etc 
22:38:00 <oklopol> the only thing you can do in the game is check how well your bot is doing and read details about it's fights... and if you find something you can improve, you either code a new bot or change the code for the old one 
22:38:30 <oklopol> so pretty much a java-style pointer only made explicit 
22:38:51 <SevenInchBread> so... if you wanted a swap function that swaps the values of two variables... you could pass it symbols.   swap(<x>, <y>)   --assuming <> is the syntax for denoting a symbol. 
22:40:37 <SevenInchBread> but... Java/C-like semantics are a little weird to me... so my ideas might not match up with the model of computation there. I mostly familiar with "scripting" languages and how they work. 
22:41:18 <oklopol> yeah, and you might have template[<a>];def swap[symbol[<a>]:a symbol[<a>]:b][<a> temp=a;a=b;b=temp] 
22:42:21 <oklopol> "yeah, and you might have" might be a bit out of place, i wrote that code for too long :) 
22:43:18 <oklopol> except, i use <> for use of templates and the symbol thingie quite mixedly :P 
22:45:31 <SevenInchBread> so... basically my concept of a variable is something like an entry in a hash table...  
22:45:49 <SevenInchBread> exept... in this case... you have a way to conceptually refer to "that name in the hash table"... so you can pass it around as data and alter it. 
22:46:06 <oklopol> you find it obvious you can access the name of a variable, probable 
22:46:25 <oklopol> i've just recently adapted to that 
22:47:25 <oklopol> and duck typing... was very hard to understand the logic first 
22:47:31 <SevenInchBread> in most languages I've delt with... it's hard to directly pass an out-of-scope variable to a function for it to alter... mainly because it's not terribly useful. 
22:47:46 <SevenInchBread> -snicker- static typing still confounds me to this day.  
22:47:56 <oklopol> since i did not understand why two variables with the same name should have anything in common in separate scopes 
22:48:10 <oklopol> but, when you thing in hash tables, it does make sence 
22:48:51 <SevenInchBread> and a lot of restrictions brought about by static typing make no sense to me...  
22:48:54 <oklopol> well, assign a number for each variable 
22:49:08 <oklopol> the name of a variable is not an essential part of it 
22:49:16 <oklopol> well, it is in scripting langs 
22:49:36 <oklopol> but it's certainly not in a theoretical sence 
22:49:53 <SevenInchBread> hmmm... does the number contain information about its type? 
22:50:30 <oklopol> to enable dynamic typing you have to 
22:51:24 <oklopol> but, the name is just a mnemonic for the programmer, which is why there is no similarity between two 'a' variables if in different contexts 
22:51:25 <SevenInchBread> makes sense... the only purpose compilation serves is to make things quicker... and a common trend is that using the properties of binary to do calculations gives you tremendous speed ups. 
22:52:38 <oklopol> well, not just compilation in it's normal meaning 
22:53:12 <SevenInchBread> with duck typing, the name is pretty much everything...  
22:53:15 <oklopol> i'd not save the name of a var anywhere even if just making a parse tree 
22:53:43 <SevenInchBread> computations are blind to any concept of type... unless they specifically go about plundering the data structure to find its type. 
22:55:10 <oklopol> well, duck typing can be done without names in the parsed form, you just have to ensure vars with the same name get the same index number if you represent an object as a list of it's fields 
22:55:43 <SevenInchBread> most of the safety static typing gives you seems.... unessecary. 
22:55:57 <oklopol> but you're getting closer :) 
22:56:21 <oklopol> i've seen you say nessicary many times :D 
22:56:35 <nazgjunk> "unessecary" is one beautiful piece of typo 
22:57:09 <oklopol> i have caught you 2 times with nessicary, so i don't have that much proof :) 
22:58:49 -!- GregorR has changed nick to _D6Gregor1RFeZi. 
22:58:59 <SevenInchBread> ...I have a hard time seeing myself using a static typed language soon... maybe Haskell - I like its type system. 
22:59:02 <oklopol> ...but to reply to what you actually said, static typing is not the exact opposite of duck typing :P 
22:59:30 <oklopol> my terminology might be wrong 
22:59:40 <SevenInchBread> duck typing basically means dynamic typing and strong typing. 
23:00:33 <oklopol> i'd say it's a bit different from any of those concepts 
23:01:07 <oklopol> hmm... i'm actually not exactly sure what's what 
23:02:31 <SevenInchBread> duck typing determines what can happen solely what something can do. 
23:04:06 <oklopol> well, i liked your analogy of a hash table better 
23:04:34 <oklopol> but, i know what duck typing is, but i confused weak/strong and static/dynamic typing 
23:05:02 <oklopol> duck typing however i think is something different 
23:05:45 <oklopol> you can have weak typing with duck typing, and you can have strong typing with duck typing 
23:05:47 <SevenInchBread> I think weak typing means the type is based mostly on how its stored in the computer. So, in weak typing, an ASCII character and a short integer are effectively the same thing. 
23:06:47 <oklopol> in weak typing you store the type, since the same var can carry any value 
23:06:57 <oklopol> at different parts of the program 
23:09:12 <oklopol> hmmm, you might describe it like that 
23:10:24 <oklopol> strong typing usually just means you type 'MY VARIABLE is an integer and it's value is 5' instead of 'MY VARIABLE has the integer value 5' 
23:11:27 <SevenInchBread> the difference between static and dynamic typing is generally more straightforeward. 
23:13:15 <oklopol> yes, it's whether you resolve types at runtime or not 
23:14:13 <oklopol> static typing disables function a {return 0 if (param==0) else return "non zero :<<"} 
23:14:26 <SevenInchBread> ...my biases exposure to scripting languages makes it seem weird that anything should trip an error before being ran - aside from syntax errors. :P 
23:15:33 <oklopol> well... you might wanna redefine 'syntax error' in the dict in your head then :) 
23:17:05 <SevenInchBread> hmmm... would incompatable types constitute as a syntax error in static typing? 
23:17:29 <oklopol> you mean can there be implicit conversions? 
23:17:51 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
23:18:25 <oklopol> but... no they wouldn't, i said wrong there :) 
23:19:03 <oklopol> syntax error of course can't be anything that depends on something defined 500 lines above in the code 
23:20:27 <oklopol> string s = get_string(); int i = get_int(); print s + i; even would be perfectly legal 
23:21:02 <oklopol> BUT, it's known at compile-time whether an integer can be added to a string 
23:24:40 <SevenInchBread> but that's a result of very little operator overloading - most operators do a very specific thing. 
23:26:14 <oklopol> all i know about perl is that it's pretty awesome :) 
23:31:30 <oklopol> from what i've heard it's a language where you can expect someone who knows it not to know the whole language, but only a subset of it 
23:31:44 <oklopol> which is nice, because you can... suprise people :) 
23:33:46 <SevenInchBread> I can't think of any uniform idea that Perl has about itself... Scheme is EVERYTHING IS DATA AND ALL SHALL BE THE LIST AND ALL SHALL BE CONSISTENT, Smalltalk is EVERYTHING IS AN OBJECT AND ALL THE LANGUAGE FEATURES SHALL BE EXPRESSED ENTIRELY IN THIS WAY WITH NO EXCEPTIONS, Python is THERE IS ONLY ONE WAY TO DO THINGS AND THAT WAY SHOULD MAKE SENSE AND EVERYHING SHALL BE EASY TO READ. 
23:35:03 <SevenInchBread> I guess Perl's unifying creed is that nothing is unified. 
23:35:08 <oklopol> some dislike them, i don't see any need to have two different caps 
23:36:08 <oklopol> python actually isn't exactly "one way to do things" 
23:36:24 <oklopol> but "there is always the one obvious way to do things" 
23:36:47 <oklopol> i make about 10 redundant lambdas per function 
23:37:19 <oklopol> they make the code less readable, but whaddyagonnado when they feel so good :\ 
23:37:35 <oklopol> mmmmmh i gotta make a few lambdas right now 
23:38:08 <SevenInchBread> although Python is my most heavily used language... I rarely agree with any of the scripture. 
23:38:42 <SevenInchBread> There's rarely one obvious way to do things, otherwise we'd all use the same language, and there would be no such thing as "new ideas". 
23:39:03 <oklopol> pretty sexy, lambda a,b,c:lambda i:a(b(c(i))) 
23:40:31 <oklopol> it's one of the few languages i can just have fun with... create random functions full of lambdas and... see them do what i meant them to do :D 
23:40:50 <oklopol> with type safety you have to know what you're doing.... so you can decide that on the fly 
23:41:19 <SevenInchBread> yeah... duck typing has tons of uses in my experience. I use it all the time to play around with the basics. 
23:41:58 <SevenInchBread> like... overriding the basic semantics - file-like objects, iterators and the like. 
23:42:33 <oklopol> my python version does not allow a lot of the fun stuff... i couldn't get 2.4 or 2.5 to work 
23:42:50 <oklopol> but... maybe someone installs me linux some sunny day :) 
23:43:07 <SevenInchBread> hmmm... right now I need a language that's faster than Python, fun to play with, and easy to set up on Windows. 
23:43:16 <SevenInchBread> as I want to make some serious language implementations... 
23:43:38 <SevenInchBread> usually the answer is C for language implementations... but I don't really want to deal with C. 
23:43:53 <oklopol> well, if you compile, you can use anything 
23:44:33 <oklopol> so... a script language running a script language... quite ridiculous 
23:44:49 <oklopol> compilation does not mean static typing 
23:44:56 <oklopol> i don't know what you meant 
23:44:59 <SevenInchBread> yeah... that's why I don't want a "serious" language that I plan on using to be in something like Python. 
23:45:29 <SevenInchBread> ah... bleh - I sort of associate compilation with static typing... heh, habits. 
23:45:53 <oklopol> well, they have a sort of a connection 
23:46:29 <SevenInchBread> heh... I'm nowhere near familiar enough with C to attempt transforming a language into it. 
23:46:31 <oklopol> well, you know the connection. 
23:47:10 -!- Figs has joined. 
23:47:11 <SevenInchBread> ...or I could go with a C-read VM or something... but it just seems pointlessly convuluted. 
23:47:28 <Figs> Wow, this exists :P 
23:47:51 <oklopol> do it in python, without inner functions or lambdas, and give it to me for python -> c conversion 
23:48:01 <oklopol> i've done a lot of vb -> c at least :) 
23:49:07 <SevenInchBread> I could use a decently fast compiled language that suits my likings and write an interpreter in it... 
23:49:29 <SevenInchBread> maybe... Common Lisp? I plan on making use of concurrency so maybe Erlang. 
23:49:47 <Figs> what's going on? 
23:50:23 <Figs> what type of language ;) 
23:51:36 <Figs> I'm working on a language that will be very easy to extend by adding, for example, new qualifiers to object types, etc. using meta programming 
23:52:10 <Figs> input code will be output in C++ 
23:52:23 <Figs> I'm working on parsers right now 
23:52:34 <Figs> (got bored and hit StumbleUpon and found this ;p) 
23:52:39 <Figs> http://esoteric.voxelperfect.net/wiki/IRP 
23:56:35 <oklopol> we had #irp for that for a while but it died quite quickly :D 
23:57:10 <Figs> "With his beard in the mailbox"  O_o 
23:57:21 <Figs> stumbleupon gives me some weird shit sometimes 
00:20:21 <Figs> http://www.space-invaders.com/rubikdown.html 
00:23:43 <oklopol> that's pretty easy once you know how to solve a rubik's cube 
00:34:57 <jix> except not all color combinations are legal 
00:38:38 <oklopol> once you know how to solve it, you pretty much know what's legal 
00:39:36 <Figs> so what usually goes on here? 
00:40:36 <oklopol> discussion about languages, usually 
00:40:58 <Figs> Speaking of languages... 
00:41:10 <Figs> continuations: 
00:41:20 <Figs> Good, bad, or what? 
00:41:33 <Figs> (and continuated exception handling... whatever that's called) 
00:42:56 <oklopol> but i find it a useful concept 
00:43:03 <oklopol> and a great toy used excessively 
00:43:47 <Figs> I've never really gotten into most functional languages, so I never use them, and in fact, never even heard of them `till I started doing language design research 
00:45:05 <oklopol> i learned about functional programming here, pretty much :P 
00:47:32 <SevenInchBread> well, coroutines are simply awesome... and they use a form of continuation. 
00:47:55 <oklopol> continuations are pretty obligatory in order to actually implement threading  
00:48:01 <SevenInchBread> here's what I've got on Sophia so far, for those interested : http://deadbeefbabe.org/paste/4111 
00:48:31 <SevenInchBread> coroutines are procedures that can return multiple outputs and receive multiple inputs. 
00:48:37 -!- sebbu has quit ("@+"). 
00:49:02 <SevenInchBread> a basic example would be processes running in an OS... 
00:50:42 <Figs> well, I've had a few language ideas about returning multiple values, but I think you're talking about something a little bit different :P 
00:51:10 <oklopol> Figs you mean returning multiple values simultaneously? 
00:51:16 <SevenInchBread> ...let me write up an example in Python. Familiar with it? 
00:51:35 <Figs> (yeah@oklopol, no@SIB) 
00:51:45 <oklopol> with coroutines you return something and leave the function in a state where it expects more arguments 
00:51:56 <SevenInchBread> heh... if you've ever dealt with any kind of programming language... basic Python won't take but a few seconds to figure out. 
00:52:11 <Figs> I do most of my programming in C++ 
00:52:19 <Figs> I can probably take a guess at it :P 
00:52:40 <oklopol> so... you have a statement in a funtion that is kinda like next_arg=return_and_wait(5); 
00:53:06 <oklopol> so, it returns from the function normally, but the next given argument is given to next arg 
00:53:26 <oklopol> so, it returns the continuation implicitly 
00:53:43 <Figs> I'd think of that as returning a function 
00:54:06 <Figs> (which I've done things similar to, but not exactly that) 
00:54:18 <Figs> I can see how that'd be useful 
00:54:24 <oklopol> kinda like that, though it's usually not returned, but the function itself changes into the new function, that now is the continuation waiting for more parameters 
00:55:00 <oklopol> (correct me if i'm wrong, i've never used yield, which i believe is return_and_wait) 
00:55:07 <Figs> If I was picking a syntax for it based on the way you guys've just described it, I'd do something like 
00:56:29 <Figs> where f is a function returning a function type :P 
00:57:28 <oklopol> Figs the problem with that is f(x) will actually return a value, not just the continuation 
00:57:59 <Figs> I come from C++ remember? :P 
00:58:13 <Figs> reference arguments as return path :P 
00:58:52 <Figs> void triple(int& x) {x=3*x;} 
00:59:05 <Figs> well, for lack of a better term  
00:59:28 <Figs> if you have ever done C/C++ programming 
00:59:39 <oklopol> i've done mostly c/c++ programming 
01:00:01 <oklopol> but, returning is a better way, usually 
01:00:13 <Figs> in a fair number of cases, yeah. 
01:00:28 <Figs> but you can do it that way, if you have to  
01:00:41 <Figs> one of the things I thought about for Creole (my language) was to do this: 
01:00:49 <Figs> struct Z = f(x); 
01:01:18 <Figs> if(Z.foo) {bar();} 
01:01:44 <Figs> with f returning multiple values 
01:02:09 <Figs> I haven't tried to impliment that yet 
01:02:15 <Figs> so I don't know if it is a good idea or not :P 
01:02:42 <SevenInchBread> ...I like it... and I've actually found practical uses for it. 
01:02:42 <oklopol> though i'd not do it exactly like that 
01:03:16 <oklopol> well, using names for returning makes sense in that you usually have names for the args 
01:03:18 <Figs> how could you do it, oklopol? 
01:03:54 <SevenInchBread> Here's a coroutine in Python : http://deadbeefbabe.org/paste/4112 
01:04:22 <RodgerTheGreat> "bullet" supports multiple named return values from a function: http://www.nonlogic.org/dump/text/1174856252.html 
01:04:25 <oklopol> i would do it exactly like that. 
01:05:16 <oklopol> do subdiv[val1:a val2:b] to [subresult:sub divresult:div] 
01:05:47 * SevenInchBread tries his best to stomach the type declarations to figure out what we're talking about. 
01:06:18 <Figs> heh, you'd hate the stuff I'm working on then, 7" 
01:07:19 <Figs> personally, I find [ ] for blocking to be hard to read, but that's just because I've grown up on {}'s and () 
01:07:49 <oklopol> RodgerTheGreat i assume you'll do 'struct lambdas' as i call them like Figs just showed... i mean that struct is just a hash table 
01:08:03 <RodgerTheGreat> in bullet, parameters are given in the form type:name and returned values are extracted in the form storeValueName:ReturnedValueName 
01:08:03 <SevenInchBread> I think []'s are easier to follow without "losing them"... it is a little weird though. 
01:08:24 <SevenInchBread> with Sophia, I just made everything lazy... so all ()'s are essentially blocks. 
01:08:53 <oklopol> i don't know why i assume that. 
01:09:22 <Figs> heh, my whole language is blocks @_@ 
01:09:32 <Figs> and interfaces  
01:09:52 <Figs> I still have to figure out a lot of the syntax though 
01:10:06 <RodgerTheGreat> bullet doesn't really need interfaces, because it's non-OO 
01:10:18 <SevenInchBread> Figs, if everything is blocks... you could probably afford to get rid of a block syntax. 
01:10:21 <Figs> no, it has interfaces :P 
01:10:40 <Figs> def subdiv[double:a double:b] returns [double:sub double:div] 
01:10:43 <Figs> that is an interface 
01:10:54 <Figs> two inputs (a,b) 
01:11:04 <Figs> and two outputs 
01:11:12 <Figs> unless I am misreading? 
01:11:18 <SevenInchBread> io is a good example of a language that doesn't eagerly evaluate function arguments - http://iota.flowsnake.org/ 
01:11:18 <Figs> yes. Functions have interfaces :P 
01:11:20 <RodgerTheGreat> ok, If that's how you define interfaces. I think of them how Java uses interfaces 
01:11:40 <Figs> abstract base classes (ABCs) in C++ then 
01:12:21 <Figs> the thing I've found while I've been working on Creole is that at some point, everything breaks down to actions. 
01:12:29 <Figs> it doesn't matter what language you're in. 
01:12:36 <Figs> be it Lisp or Fortran 
01:12:45 <Figs> or something in-between 
01:12:56 <Figs> statement; statement; statement; 
01:13:20 <SevenInchBread> -nod- in all my experience with language designing... everything breaks down to the primitives. 
01:13:31 <oklopol> well, that is one way to abstract any language 
01:13:41 <oklopol> but many languages do not have statements 
01:14:00 <Figs> Lisp has statements :P 
01:14:09 <Figs> though not the "blah;" 
01:14:15 <SevenInchBread> well... it has macros... which can sometimes look an awful lot like statements. 
01:14:16 <RodgerTheGreat> the main reason I designed functions in a name [params][unloads] style rather than unloads=name[params] style is that rather than getting really long lines of nested functions for some operations, you just get a series of code blocks one after another 
01:14:51 <Figs> not sure I follow that 
01:14:54 <oklopol> Figs it's all about abstraction, you can think of everything as functional as well, it's just not every language is inherently the "action" kind 
01:15:03 <SevenInchBread> Smalltalk, from what I can tell... has no statements. and currently Sophia executes as one huge expression. 
01:15:44 <Figs> unless you're doing something like prolog 
01:15:51 <Figs> then you're doing statements... essentially. 
01:15:57 <Figs> prolog is more like declarations 
01:16:01 <oklopol> RodgerTheGreat: i thought that might have something to do with it 
01:16:05 <RodgerTheGreat> bullet will never have something like Length[Mid[Input[0],5,8]] 
01:16:23 <Figs> there's probably a better way of explaining 
01:16:28 <RodgerTheGreat> because that looks nasty and matching brackets is hard to read 
01:16:50 <oklopol> actually that's one thing i thought you might've not thought through :P because... well i like the nested chaos 
01:16:57 <Figs> so, how do you do Length(mid(input(0),5,8)? 
01:18:20 <Figs> now, maybe my problem is I really don't see that big a difference between functional programming and proceedural programming... 
01:19:01 <RodgerTheGreat> I'm ignoring var types and proper return names because I just made those functions up and this is an example 
01:19:07 <oklopol> do mid[rtn,5,8] to [rtn] -> do mid[input,5,8] to [rtn] i suppose 
01:19:46 <Figs> how are you combining input[0] with 5 and 8 for mid? 
01:20:05 <oklopol> is oklotalk 'Length(mid(input(0),5,8)' is written '3' PLUS it never fails! 
01:20:36 <RodgerTheGreat> well, remember, in bullet "do foo[arg:x] to [y:val]" is equivalent to the C-style "y=foo[arg];" 
01:21:13 <Figs> does it matter? 
01:21:16 <oklopol> input[0] is input's length 
01:21:28 <oklopol> since arrays and strings are 1-indexed 
01:22:18 <Figs> so... how exactly are you combining input[0], 5, and 8? 
01:22:31 <Figs> or can you not do that as a single statement? 
01:22:53 <Figs> I don't care what it does 
01:22:59 <Figs> just how your interfaces connect 
01:23:15 <RodgerTheGreat> in bullet "do foo[arg:x] to [y:val]" is equivalent to the C-style "y=foo[arg]; 
01:23:33 <oklopol> first_input=input[1]; do mid[first_input,5,8] to [sub:ret]; Length(sub); i guess 
01:23:47 <Figs> wouldn't it be 
01:24:02 <Figs> input[1] to [first_input:notsureonthis]; 
01:24:26 <oklopol> do <function call> to <set returned vals to vars> 
01:24:29 <RodgerTheGreat> assuming foo is "def foo[int:x] returns [int:val][val = x+x] 
01:24:29 <Figs> do input[1] to [first_input] 
01:24:46 <oklopol> BUT var = value, if value needs no function call 
01:24:56 <Figs> I thought input[1] was a function O.o 
01:25:14 <oklopol> then it'd been how you said 
01:25:34 <Figs> something I read a while ago about making languages easy to teach 
01:25:45 <Figs> is to make visually distinct syntax for each concept 
01:25:53 <Figs> what was input[1] supposed to be then? 
01:26:09 <RodgerTheGreat> this was the problem with the example: I wasn't specifying return types and input types, so it's impossible to tell if foo[x] is supposed to be an array index or a function 
01:26:11 <SevenInchBread> ...hmmm, if that were true... Perl would make a great educational language. 
01:26:16 <oklopol> input(0) in the first example 
01:26:48 <Figs> Rodger, no offense meant, but you should either (a) combine functions and arrays or (b) make the syntax distinct ;) 
01:27:08 <Figs> then I'm confused :P 
01:27:33 <oklopol> the syntax is distinct... function: do <> to <>, array var=array[index] 
01:27:42 <RodgerTheGreat> when I actually write code, they're distinct. They aren't when I give pseudocode to try to explain how something works and you interpret it as real code 
01:28:02 <oklopol> (i'm not sure about the syntax though :)) 
01:28:12 <Figs> this is kind of fun :D 
01:28:25 <Figs> whee. I'm not used to talking to people who find this stuff interesting :) 
01:28:31 <RodgerTheGreat> just look at the example code in the spec so far- it is all correct 
01:28:35 <SevenInchBread> hmmm... I'm not sure visually distinct concepts makes for good educational languages. 
01:28:50 <SevenInchBread> Scheme is really good for learning... and it's completely and utterly uniform 
01:29:06 <oklopol> Figs my thoughts exactly when i first came here 
01:29:15 <SevenInchBread> Perl makes sure that every concept is visually distinct... but it's consider a complete mess to start off on. 
01:29:44 <oklopol> you are wrong there... [03:21:12] <Sukoshi> Maybe. 
01:29:44 <Sukoshi> Who in their right mind thinks that making each different programming concept visually distinct helps? 
01:30:00 <Sukoshi> That's the very *antithesis* of abstraction! 
01:30:37 <oklopol> http://www.nonlogic.org/dump/text/1174856252.html 
01:30:50 <Figs> making syntax for different operations visually distinct 
01:30:51 <Sukoshi> I've been cramming (and am, and will be) AP test stuff, mostly Physics. 
01:31:19 <Sukoshi> I plan on trying to build a magnetic engine after the AP test based on an idea I got. 
01:32:06 <Figs> let me see if I can find the examples from before... 
01:32:15 <Sukoshi> Did Tesla make a magnetic engine? 
01:32:46 <SevenInchBread> ...I actually like some of Perls ideas... and I like a good deal of Schemes ideas too... but are very different. 
01:33:11 <Figs> I haven't gotten far in learning perl 
01:33:17 <Figs> but that's because I haven't spent much time at it 
01:33:21 <Figs> (about 15 minutes?) 
01:33:27 <Figs> what I've seen so far, I've liked 
01:33:44 <Sukoshi> I had a hard time working with message-passing OOP after having fun with CLOS for so long. 
01:34:57 <Figs> ok, here was the example I found that made me think distince syntax was a fairly good idea 
01:35:05 <Figs> note, I haven't programmed in the language 
01:35:27 <Figs> A(B) supposedly has 5 possible meanings in Turing 
01:35:40 <Figs> [1] call function A and pass parameter B 
01:35:57 <Figs> [2] dereference pointer B to access an object in collection A 
01:35:57 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
01:36:06 <Figs> [3] access the Bth element of array A 
01:36:20 <Figs> [4] construct a set of type A with a single element having the value of B 
01:36:37 <Figs> [5] create a one-letter substring of the string A consisint of its Bth character 
01:36:55 <SevenInchBread> ...I think a lot of languages get a little too caught up in their ideology... like Scheme. Lisp and Smalltalk create religious fanatics. 
01:38:13 <SevenInchBread> ...while I like all of their ideas... I don't like how forceful they are about their philosophy. 
01:38:25 <Sukoshi> I think there are fanatics of every language. 
01:38:30 <Figs> that's part of what's driving my development of Creole 
01:38:36 <Sukoshi> Although the ASM fanatics get sparer every generation. 
01:38:39 <Figs> the fact that "There are many ways to do things" 
01:38:59 <SevenInchBread> Languages like Perl are nice because it doesn't force you to succumb To The Grand and Absoltute Plan. 
01:39:10 <Figs> I think it's already been done though 
01:39:15 <Figs> I can't remember what 
01:39:54 <SevenInchBread> One of Python's mottos is "There should be one obvious way to do it". 
01:39:57 <RodgerTheGreat> well, bullet's design philosophy is the creation of failsafe code... I'm not sure that's really an ideology that'll incite fanaticism, just fanaticism for the compiler-writers. :) 
01:41:17 <SevenInchBread> I like languages that are fun to play around with... and let you do what you want. The first language I learnt was Python - and I loved it until I discovered other languages. Now Python seems kind of conservative and bland... but I still use it the most because I know it really well. 
01:41:30 <Figs> some of the things that I'm trying to do with my language (dunno how well I'll succeed) are: (1) flexibility for extension, (2) good error handling and debugging, (3) documentation after I finish designing the syntax 
01:42:14 <Figs> I think error handling is one of the keys to building a really good language. 
01:42:26 <Figs> Few languages focus on error handling as well as they should. 
01:42:27 <oklopol> i've made one language while we've been talking :) 
01:42:48 <SevenInchBread> Sophia's Grand Principle of Construction is:  (1) THE AWAKENING OF THE ABSOLUTE MODE OF THOUGHT   (2) A LANGUAGE THAT CREATES ORGASMS WHILE DOING THINGS VERY VERY WELL UNDER A SINGLE AND ALL CONSISTENT IDEAL 
01:43:54 <Figs> am I in #esoteric or #ecstacy ? :P 
01:44:10 <SevenInchBread> ...Homespring is an excellent language - which has already done this: http://web.archive.org/web/20041011092543/http://www.rpi.edu/~bindej/hs.html 
01:47:05 <RodgerTheGreat> "Because programming isn't like a river, but it damn well ought to be!" 
01:47:35 <Sukoshi> Well, CLers are said to most proficient when under acid. 
01:47:58 <Sukoshi> Because even though the underlying brain pattern changes, they can abstract the language to work with their new brain patterns. 
01:48:21 <Figs> eh, makes sense :P 
01:48:57 <SevenInchBread> ...but now Sophia is the best language to use for anything ever... even though it's incomplete and kind of completely unspecified. 
01:48:59 <oklopol> talking about orgasms, http://www.vjn.fi/pb/p115251624.txt i'm pretty sure i had a boner when i finished this 
01:49:05 <oklopol> not sure about the rest of the night 
01:49:54 <Figs> have fun at the international obfuscated C coding contest :) 
01:50:31 <oklopol> i just bruteforced the seeds for the functions and obfuscated manually for 3 hours 
01:50:47 <oklopol> python loves to be obfuscated 
01:51:12 <SevenInchBread> most of Python obfuscation comes in the form of syntatic substitutions for very very simple things. 
01:51:48 <Figs> http://www0.us.ioccc.org/1985/lycklama.c 
01:52:21 <Figs> found that on ioccc 
01:52:27 <Figs> couldn't find the ball program :\ 
01:52:43 <oklopol> well, in python you can redefine variable types... so you can have type and value separate... and that gets really kinky 
01:53:05 <oklopol> http://www0.us.ioccc.org/1985/lycklama.c 
01:53:54 <oklopol> it has a non obfuscated version in the comment 
01:54:33 <Figs> I think it scrolls text to the right? 
01:54:51 <Figs> compile it and see :P 
01:55:07 <RodgerTheGreat> based purely on the defines, it could do a lot of things... 
01:55:26 <oklopol> i once had the trouble of manually demacroing such a program 
01:55:33 <oklopol> it usually gets quite simple 
01:55:43 <oklopol> i mean the lycklama is a define thingie 
01:56:07 <Figs> doesn't compile for me :P 
01:56:26 <Figs> but I know what's wrong... I think 
01:57:30 <Figs> invalid preprocessing directive #o 
01:58:27 <oklopol> http://www.vjn.fi/pb/p514653524.txt 
01:58:36 <oklopol> read(a,b,c,d), what's that? 
01:59:32 <oklopol> it defines a part of the rest of the defines, something c++ seems to deny 
02:00:14 <Figs> I thought C supported it 
02:00:49 <Figs> http://www0.us.ioccc.org/1985/Makefile 
02:00:51 <Figs> makefile for it 
02:01:56 <Figs> I assume it's part of a set of these 
02:03:57 <RodgerTheGreat> I tried manually translating all the defines for that program, and I just get a mess 
02:04:44 <Figs> have you guys read the Crenshaw "Lets make a compiler!" series? 
02:05:03 -!- ShadowHntr has quit ("End of line."). 
02:06:23 <Figs> I found it from bloodshed.net 
02:07:08 <Figs> looking for it 
02:07:15 <Figs> I have it downloaded and can reupload if I can't find it 
02:07:42 <Figs> http://iecc.com/compilers/crenshaw/crenshaw-txt.zip 
02:07:48 <RodgerTheGreat> feel free to use my team's pastebin at nonlogic.org/dump 
02:07:59 <Figs> I usually use rafb.net/paste 
02:08:16 <oklopol> hmm.... does someone have a dismacroer for c? 
02:08:21 <RodgerTheGreat> I used to use rafb until we went ahead and coded our own. :) 
02:08:52 <oklopol> i tried to use my one-step thue but... it does not work of course 
02:09:02 <Figs> how far along are you guys in actually building compilers for your languages? 
02:09:11 <oklopol> i've never made a compiler 
02:09:29 <RodgerTheGreat> Figs: this looks awesome! thanks, man- I'm sure it'll be fascinating reading 
02:09:33 <oklopol> i've made prolly 50 or something interpreters 
02:09:39 <Figs> warning though, it is in pascal :P 
02:09:42 <RodgerTheGreat> it might push a real Bullet compiler closer to existence 
02:09:42 -!- mvivian has joined. 
02:09:54 <Figs> but it is easy enough to read 
02:10:26 <oklopol> hmm... guess i'll do it manually 
02:10:50 <RodgerTheGreat> c is an ass ugly language that only survives because of it's legacy codebase and a dearth of viable alternatives 
02:11:05 <Figs> the target language the guy is using is 68000 asm 
02:11:51 <oklopol> c is the most beautiful language i know 
02:11:51 <RodgerTheGreat> pascal +68k asm... sounds like the early days of the macintosh 
02:11:54 <Figs> unfortunately, my assembly skills are next to nothing :P 
02:12:13 <Figs> I've dabbled with FASM before I got good at C++... which was years ago 
02:12:40 <Figs> that didn't come out right :P 
02:12:45 <Figs> let me rephrase... 
02:13:33 <Figs> I tried learning Fasm years ago before I got sufficiently proficitent in C++ to really see how things fit together from the low to high level. 
02:14:02 <Figs> now... manually fix the typoes I just made and you'll have a fairly good description ;) 
02:14:19 <Figs> I'm reading these with less 
02:14:28 <Figs> since notepad doesn't like the formatting 
02:14:58 <Figs> (yes. I'm still on Windows.) 
02:15:05 <Figs> (please don't kill me ;p) 
02:15:38 <Figs> seems like they have a link to a book on parsing 
02:15:38 <Figs> http://www.cs.vu.nl/~dick/PTAPG.html 
02:15:41 <Figs> but I haven't read it 
02:21:44 <Figs> C can be nice... 
02:21:52 <Figs> much of the time, I don't think it is 
02:21:54 <Figs> but it can be ;) 
02:22:26 <Figs> right now, I'm working on my rule-parser system 
02:22:56 <Figs> eventually, my compiler will be able to have rules handed to its parser stage 
02:24:12 <Figs> if I get this to work :P 
02:24:24 <Figs> out of curiousity 
02:24:31 <Figs> have any of you blogged about your language design? 
02:26:23 <SevenInchBread> vars(__import__("".join(map(lambda x: chr(ord(x)+42), "558K?BJ?D55"))))["".join(vars(__import__("".join(map(lambda x: chr(ord(x)+42), "558K?BJ?D55"))))["".join(chr(aracter) for aracter in [99, 104, 114])](think) for think in [103, 108, 111, 98, 97, 108, 115])]().__getattribute__("".join(map(lambda x: chr(ord(x)+42), "55C;J?J;I55"))[::-1])(chr(2*2*2*5*3), map(lambda n: n-100, xrange(101,106))[::-1] 
02:27:03 <oklopol> obfuscation is fun, deobfuscation is hard 
02:27:28 <oklopol> obfuscation looks cool, deobfuscation looks boring 
02:27:45 <Figs> wot? fsck me? :P 
02:28:03 <Figs> my roots are in good working order, thanks for asking. D: 
02:28:25 <SevenInchBread> ...there's nothing much that I can find that points to the original x = [5,4,3,2,1] 
02:28:40 <Figs> so, that's what it was supposed to do :D 
02:28:56 <Figs> missed that above 
02:29:07 <oklopol> http://www.vjn.fi/pb/p263653563.txt 
02:29:38 <oklopol> i've done the part i could've done in a second if i'd been using a better compiler 
02:30:07 <oklopol> that's the http://www0.us.ioccc.org/1985/lycklama.c 
02:30:14 <SevenInchBread> I've never used control flow to mung up Python... I usually just substitute in various encrptions and the like. 
02:30:32 <oklopol> that's nice because you can do it automatically 
02:31:01 <Figs> you got that out of lycklama.c? 
02:31:05 <oklopol> control flow can be used to obfuscate the program from tedious to decrypt into impossible to decrypt 
02:31:18 <Figs> that's impressive :D 
02:31:31 <oklopol> Figs i just demacroed it, calculated the 1<<1<<... thingie and calculated the calculations 
02:32:06 <oklopol> i thought i was there already 
02:32:58 <oklopol> my hello world had no part that could be trivially made simpler 
02:33:10 <Figs> you guys can take a look at my blog if you want 
02:33:11 <Figs> http://student.hpa.edu:16080/weblog/cmcfarland/ProgrammingDesign/ 
02:33:25 <Figs> it's on my design and implimentation of Creole 
02:33:29 <Figs> updated occasionally 
02:33:41 <SevenInchBread> ...the most obvious give-away to what the code does is the very last part - (chr(2*2*2*5*3), map(lambda n: n-100, xrange(101,106))[::-1]) 
02:34:12 <Figs> if you say so :P 
02:34:55 <oklopol> since that uses multiple things my python does not have i won't try to decrypt it 
02:35:01 <SevenInchBread> once you de-factorize that to 120 and find the ASCII value of that to be "x"... and substraction 100 from every element in [101,102,103,104,105]... and then do a reverse step (that's the [::-1] part) 
02:35:33 <oklopol> [::], getattribute, (... for ... in ...), etc 
02:36:02 <oklopol> "my python does not have i won't try" can you supply me the word i was looking for for 'have' 
02:36:33 <Figs> impliment? support? 
02:36:39 * Figs scratches head 
02:37:07 <oklopol> support... i get stupider by the day :) 
02:38:02 <Figs> write a C obfuscator 
02:38:06 <Figs> that outputs your code 
02:38:11 <Figs> to look like a picture :D 
02:38:15 <Figs> (you give it code and a picture 
02:38:25 <Figs> and it will try to match the picture in terms of ascii 
02:39:27 <oklopol> hmm wonder why i never thought of that 
02:40:09 <Figs> I think it would give me a headache :P 
02:43:54 <SevenInchBread> ...I saw an excellent photoshop of a C quine in the shape of a ying-yang. 
02:45:04 <SevenInchBread> it doesn't... they just gave it color and made it look cooler. :) 
02:46:49 <SevenInchBread> ...I need to start considering how I'm going to do an audio language. 
02:47:22 <SevenInchBread> ...like... an interactive prompt type language for generating live music. 
02:47:50 <oklopol> deobfuscated further: http://www.vjn.fi/pb/p654653315.txt 
02:48:00 <oklopol> at this point it's clear enough 
02:48:04 <Figs> >start beat 1'2!'3~~tah 
02:48:50 <oklopol> and yes, i program c but use c++ libraries. 
02:49:08 <Figs> I think I do that 
02:49:27 <Figs> I even found a way of making singleton classes without using the 'class' or 'struct' keyword ;) 
02:50:35 <Figs> use namespaces 
02:50:36 <SevenInchBread> most of the actual music would  come from pre-existing files... naturally recorded and the like. 
02:50:52 <Figs> and unnamed namespaces ;) 
02:50:55 <SevenInchBread> the programmer can just manipulate them and paly them in sync... as processes. 
02:50:58 <Figs> so, for example: 
02:51:16 <Figs> 7"  : look at the format of trackers like IT and MOD and XM 
02:51:26 <Figs> (if you haven't already) 
02:51:33 <Figs> oklopol, I'll write an example 
02:52:48 <SevenInchBread> countless languages, at least two OSes, I'm still working on a MUD (which is supposed to be my "top priority" job at the moment)... 
02:56:05 <Figs> http://rafb.net/p/GTuSUz28.html 
02:56:14 <Figs> not a good example 
02:56:17 <Figs> but you get the idea 
02:56:21 <Figs> this would be like, 
02:56:30 <Figs> string_handlers.cpp 
02:56:33 <oklopol> if anyone knows what c's write() does, it'd help 
02:56:49 <oklopol> write(1,"\n",(unsigned)(1)) will write a newline 
02:56:55 <Figs> I would guess it writes output to the console 
02:57:00 <Figs> I'll look it up 
02:57:20 <oklopol> but write(1,string,arbitrary number)... i don't know what that means 
02:58:04 <Figs> http://www.cs.bgu.ac.il/~omri/Humor/write_in_c.html 
02:58:12 <Figs> but you might like that oklopol 
02:59:40 <Figs> I think I got it 
02:59:52 <Figs> int write(int handle, char *buffer, unsigned length); 
03:00:16 <Figs> does that make sense? 
03:01:12 <SevenInchBread> the file handle, a reference to a buffer, and a length itneger. 
03:04:05 <Figs> I can't find any good info on it 
03:05:16 <Figs> how much asm do you know? 
03:05:54 <Figs> if you thought that previous version oklopol had was confusing 
03:06:19 <Figs> it doesn't seem that hard, really. 
03:06:33 <Figs> but I think it gets very complicated because you have to keep a lot in your head 
03:06:49 <Figs> you can do most of it in C 
03:06:57 <Figs> once you port the libraries 
03:07:13 <Figs> I have a friend who was working on an OS 
03:07:28 <SevenInchBread> I know the basics about C... I've just never practically used it. 
03:07:30 <Figs> I like C... sort of 
03:07:39 <Figs> C strings are a pain in the ass though 
03:07:45 <Figs> most of the time 
03:08:02 <SevenInchBread> like I know how pointers, structs, and namespaces and such work... I've just never, uh, used any of the libraries or the builtins or whatever. 
03:08:27 <Figs> I'm not sure namespaces were in C 
03:08:33 <Figs> I think that was something added in C++ 
03:09:27 <SevenInchBread> ...I could write a sweeter language, with the same purposes as C... but more badass. 
03:10:02 <Figs> a better cross-platform assembly language? 
03:11:23 <SevenInchBread> ...or I could even just a just-in-time compiled Python... or some other language I like. 
03:11:35 <oklopol> hmm... http://www.vjn.fi/pb/p556343545.txt i might have some errors but seems to me it's just a verbose nop :P 
03:11:53 <oklopol> i'm not sure about io specifics. 
03:12:32 <Figs> I think I found write() 
03:13:29 <Figs> doesn't match though 
03:13:45 <oklopol> i think your previous write was correct 
03:13:55 <Figs> but I can't find it  
03:14:01 <Figs> except that one site 
03:14:09 <oklopol> i couldn't find a use for the first param 1, but it was the handle 
03:14:16 <oklopol> everything else made sence 
03:14:37 <oklopol> it takes input, then prints it out, backspacing it all away 
03:15:11 <Figs> write is included in <iostream> 
03:15:17 <Figs> as a 2 param function though :P 
03:15:21 <oklopol> fuck... i have school in 3 hours :OOOOOOOO 
03:15:21 <Figs> not a 3 param one 
03:15:40 <Figs> where is it getting the 3 param version from? :P 
03:15:40 <oklopol> but i think substr is clearer 
03:15:53 <oklopol> i have no idea, but the first param is handle 
03:16:24 <oklopol> anyway, that code was trivial 
03:16:54 <oklopol> i could've seen that in a few seconds if i'd had tools... i'm very slow when manually deobfuscating 
03:17:34 <Figs> did you know that Notepad can function as a logging tool? 
03:17:39 <Figs> put .LOG at the top of a notepad file 
03:17:43 <Figs> and a new line 
03:18:40 <Figs> it will add a line like 
03:18:41 <Figs> 4:16 PM 3/25/2007 
03:19:35 <Figs> you can also manually insert date/time by pressing F5 
03:19:48 <Figs> or going edit -> time/Date 
03:20:08 <Figs> and if you want to change the format of a printed document' 
03:20:12 <Figs> there are a lot of things you can do 
03:20:15 <Figs> with headers and footers 
03:21:18 <oklopol> you sure know a lot about notepad 
03:21:46 <Figs> open a new notepad document 
03:21:51 <Figs> 'bush hid the facts'  
03:22:00 <Figs> open it up again ;) 
03:22:11 <oklopol> i could just watch obfuscated c code for hours..... it's so beautiful with my black-white-blue highlighting 
03:22:30 <Figs> are you stoned? 
03:22:33 -!- SevenInchBread has quit (Read error: 145 (Connection timed out)). 
03:23:10 <Figs> all I see is ?'s  
03:23:18 <Figs> but I'm assuming you pasted chinese characters ;) 
03:23:27 <Figs> it doesn't say anything 
03:23:38 <Figs> it's a bug from the way notepad saves files 
03:23:58 <Figs> since it has to guess at the encoding 
03:24:06 <Figs> with very short files 
03:24:10 <Figs> sometimes, it guesses wrong 
03:24:46 <Figs> did you know about the secret 10-times zoom and 3rd color option in MS-Paint? 
03:25:13 <Figs> press windows-r 
03:25:22 <Figs> and load paint 
03:25:50 <Figs> set the image size to something small like 16x16 so you can get a better impression of how it works 
03:26:04 <Figs> draw a squiggle or something 
03:26:16 <Figs> click on the magnifying tool, and click just under the 8x 
03:26:44 <Figs> it's a bit hard to do 
03:26:52 <Figs> but if you get ti right 
03:26:55 <Figs> you'll have 10x zoom 
03:27:01 <Figs> instead of just 8 
03:27:28 <Figs> now, press ctrl and then click on a color 
03:27:36 <Figs> 3rd choice for a color 
03:27:50 <Figs> you can draw with it by using ctrl 
03:28:44 <Figs> press windows-r 
03:28:56 <Figs> I've posted the 10x zoom on there 
03:29:22 <Figs> I read it somewhere else 
03:29:25 <Figs> a long time ago 
03:29:29 <Figs> but they didn't have it 
03:29:39 <Figs> I found the log thing in notepad myself though... but 
03:29:45 <Figs> it's because it's in the documentation ;) 
03:29:57 <Figs> (which no one bothers to read) 
03:30:01 <oklopol> the bush thing cannot be a bug 
03:30:28 <Figs> you will get the 'private character editor' program 
03:30:56 <Figs> it's a font editor that lets put your own characters into the "private use area" 
03:31:08 <Figs> for insertion in, for example, MS-Word docs 
03:31:16 <Figs> via the symbol thing 
03:31:37 <Figs> pretty much like paint 
03:32:10 <Figs> want to see the ancient version of notepad? 
03:32:53 <Figs> seen it before? 
03:33:24 <Figs> I just type edit 
03:33:49 <Figs> it's still there :P 
03:33:55 <oklopol> and, i've used it for my java assignments from school 
03:34:08 <Figs> I set up my own batch commands 
03:34:16 <Figs> by modifying the path variable 
03:34:25 <Figs> and changed the shortcut buttons on my laptop 
03:34:42 <Figs> the DVD button runs the show desktop command 
03:34:56 <Figs> and the Music button loads a new command prompt 
03:35:28 <oklopol> well, my laptop has a program which lets you decide what button does what 
03:35:49 <Figs> has the wrong buttons listed 
03:35:56 <Figs> (they aren't even on my computer!) 
03:36:12 <Figs> some of the programs I added were 
03:36:19 <Figs> which calls the show desktop command 
03:36:46 <Figs> which changes to my desktop path 
03:37:11 <Figs> (I think there's already a way to do this but I can't remember how :P) 
03:37:22 <Figs> which checks a number's primality 
03:37:26 <Figs> (up to any length) 
03:37:42 <Figs> which opens a new window 
03:37:47 <Figs> (really easy to write that one) 
03:38:00 <Figs> it's just a redefinition of  
03:38:36 <Figs> since I kept typing 'clear' instead of cls 
03:38:52 <Figs> (my tech class makes us use macs) 
03:39:33 <Figs> I think I also wrote a program to index a folder 
03:39:46 <Figs> so I could just drop it the folder onto my server 
03:39:55 <Figs> (which has indexing disabled by the admin) 
03:40:32 <oklopol> what's it called when you move forward, then moves sideways without changing your direction? 
03:41:42 <Figs> there's a word 
03:41:44 <Figs> starts with an s 
03:41:46 <Figs> I don't remember 
03:42:55 <Figs> I think it's gaming jargon 
03:43:04 <Figs> corruption of the military term :P 
03:44:51 <oklopol> but... do you know tk ultimate? 
03:45:59 <oklopol> i do not feel so good, should've slept :< 
03:46:17 <Figs> I'll be hitting the hay soon 
03:46:45 <Figs> it's only 4:44 where my computer thinks it is ;) 
03:47:32 <Figs> quick! what time zone does my computer think it's in? ;) 
03:48:14 <Figs> to use 24 hour clock  
03:48:49 <oklopol> hmm, i'll warm up a pizza and watch some simpsons... 
03:49:05 <Figs> let's see, you're in GMT+3? 
03:50:17 <Figs> where are you? 
03:51:53 <oklopol> nope, and that's the wrong time zone 
03:52:43 <Figs> you have some version of DST where you are? 
03:53:27 <Figs> it's in eastern europe 
03:53:50 <Figs> South Africa? :P 
03:53:58 <oklopol> nope, and you gave me a good laught 
03:54:21 <oklopol> you meant lithuania is in eastern europe 
03:54:31 <oklopol> i thought you meant egypt, would've been funny :P 
03:54:43 <Figs> no, I'm silly, 
03:54:46 <Figs> but not that silly 
03:54:58 <oklopol> but still you haven't guessed 
03:55:25 <oklopol> we're spamming the channel with important content, i'd say :P 
03:56:00 <Figs> Are you in Europe, Africa, or Asia? 
03:57:08 <Figs> http://home.wanadoo.nl/~timpol/gmt_map.gif 
03:57:50 <Figs> you can see what I was guessing off of  
03:58:09 <Figs> I haven't memorized what countries are in which time zones 
03:59:07 <Figs> where am i? :P 
03:59:31 <Figs> America's a big place 
03:59:35 <Figs> two continents 
03:59:44 <Figs> USA is a big place :P 
04:00:15 <Figs> I think that's a different time zone 
04:00:53 <oklopol> hmm..... somewhere on the east coast anyways 
04:01:15 <Figs> but usually, I'm in Hawai'i 
04:01:24 <oklopol> yeah... i'd never've guessed 
04:01:40 <Figs> hell, I could be in Peru :P 
04:02:21 <Figs> is it cold there? 
04:02:39 <Figs> I just got back from pittsburgh a couple days ago 
04:02:46 <Figs> and it was a bit chilly for me :P 
04:02:48 <oklopol> it's hot in a t-shirt here 
04:03:04 <RodgerTheGreat> actually, we're having the beginnings of a beautiful spring here at Michigan Tech 
04:03:26 <Figs> actually, RTG, you might know a friend of mine 
04:03:38 <oklopol> did you know water actually MELTS at 0 degrees? 
04:08:08 <Figs> she goes to U of Michigan 
04:08:34 <Figs> (this->memory == crappy) == true; 
04:13:04 <Figs> I wish I had some cheap quasi-mexican food right now :( 
04:13:09 <Figs> and some hot sauce 
04:13:41 <oklopol> hehe, i love how ppl say things like "oh you live in finland, my sister lives in europe too you prolly know her" :P 
04:14:15 <Figs> I keep that to state-level at least 
04:14:36 <Figs> usually just to Indiana 
04:14:46 <Figs> since I know waaaaay too many people from Indiana 
04:15:36 <oklopol> well, since i know about 5 ppl, i find that quite funny as well 
04:17:51 <Figs> my computer scares me when firefox uses 90% CPU time 
04:18:19 <oklopol> my computer scares me when i can't open new windows without closing others 
04:58:38 <Sukoshi> Well, what should it matter. You EU bums and your horrible intra-EU cultural jibes make it seem like you're countr... err union is doing well. 
04:59:57 <Figs> where did that come from? 
05:00:16 <Sukoshi> Watching annoying Finnish, Swedish, and Italian people make bad jokes about small cultural differences. 
05:01:18 <Sukoshi> s/Norse/Norweigan/ (wtf was I thinking?) 
05:03:42 <oklopol> Sukoshi where were you watching that? 
05:04:39 <oklopol> okay... you must've misunderstood something if it was this chatroom :) 
05:40:03 -!- _D6Gregor1RFeZi has changed nick to GregorR. 
06:08:10 <Figs> anyone know how to do low-level console output in C on windows? 
06:08:20 -!- RodgerTheGreat has quit. 
06:08:22 <Figs> (like place a specific character at a specific position?) 
06:08:33 <Figs> (without clearing the screen) 
06:16:39 -!- wooby has joined. 
06:32:11 -!- Figs has quit (Read error: 60 (Operation timed out)). 
06:37:15 -!- ShadowHntr has joined. 
07:08:11 -!- oerjan has joined. 
07:48:21 -!- wooby has quit (Remote closed the connection). 
07:48:38 -!- wooby has joined. 
07:50:13 -!- wooby has quit (Remote closed the connection). 
07:50:23 -!- wooby has joined. 
07:55:30 <wooby> in case anyone didn't know 
07:55:37 <wooby> asp.net blows and never ever use it 
07:58:49 -!- ShadowHntr has quit (Read error: 145 (Connection timed out)). 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
10:53:37 -!- oerjan has quit ("leaving"). 
11:14:09 -!- eclectro has joined. 
11:40:44 -!- oklopol has quit. 
11:41:23 -!- jix has joined. 
11:43:01 -!- oklopol has joined. 
11:46:15 -!- oklopol has changed nick to oklofok. 
11:46:35 -!- oklopol has joined. 
11:50:23 -!- eclectro has left (?). 
15:00:41 -!- clog has joined. 
15:00:41 -!- clog has joined. 
15:01:33 <ais523> Try writing the interpreter! 
15:01:46 <Figs> how about making semetric languages? 
15:01:47 <ais523> (The fact that I'm writing it in Thutu2 probably doesn't help too much) 
15:02:02 <Figs> and you have to use both of them to write a program :P 
15:02:20 <Figs> of which, the length of one has to be the same as the length of the other 
15:02:30 <Figs> not counting whitespace ;) 
15:02:37 <ais523> Well, Prelude's often written in two corresponding voices 
15:03:03 <ais523> well, I modify the language whenever I want to add a new feature 
15:03:20 <ais523> so the spec's evolving so fast it would be unfair to post it (I normally don't post specs until I'm finished) 
15:03:33 <ais523> Thutu2's the wimpmode for Thutu that's actually useful in writing programs 
15:03:47 <ais523> It keeps all the same features, and adds various wimpmody stuff 
15:04:14 <ais523> Figs: 'Fire and Ice' is a very Haifu-like concept, although Haifu's not symmetric the way you suggest 
15:05:07 <Figs> well, it comes because I'm listening to British video game inspired metal music O.o 
15:05:20 <Figs> playing vision of RPGs in the back of my head :P 
15:05:28 <Figs> (z ? x : y) (a, b); //<--w00t! 
15:05:33 <ais523> BTW, what does 'O.o' actually mean? I've seen it around a lot but nobody's ever explained it 
15:05:47 <ais523> I take it x and y are function pointers? 
15:05:56 <Figs> try make the face 
15:06:12 <Figs> it's sort of surprised or like, 
15:06:52 <Figs> I'm reading C-tricks that'll get you fired ... if your manager has any sense ;) 
15:07:41 <RodgerTheGreat> surfing the net, reading some webcomics, doing further work on "bullet" 
15:08:26 <Figs> ehh -- What is qsort 
15:08:31 <ais523> Here's a neat C99 trick; in\u006E main(int argc, char** argv) 
15:08:32 <Figs> I've never seen it 
15:08:55 <Figs> I've never seen it in C :P 
15:09:01 <Figs> I feel silly now :) 
15:09:25 <ais523> unfortunately, my C compiler is too old to handle C99 
15:09:44 <ais523> As for qsort, it's a function that takes a function pointer as argument 
15:09:54 <ais523> and that function tells it how to compare for the sort 
15:12:46 <ais523> not necessarily, I don't think, just usually 
15:13:04 <ais523> google for "n1124.pdf" if you want to see the draft of the C standard newer than the newest version 
15:13:26 <ais523> (As far as I remember, all the drafts except the official ones are posted online, so you'll have to settle for a new or old version) 
15:15:05 <ais523> grr... my 99-bottles-of-beer program wasn't working because I forgot the final newline 
15:15:28 * Figs is one of the weird people who does pseudo-functional programming in C++ 
15:15:44 <Figs> actually, I've got a way to make C++ look like Lisp 
15:16:17 <ais523> I've heard of making C look like Algol or even Fortran or COBOL, but Lisp? You can't redefine ( 
15:16:29 <Figs> but you can redefine , 
15:16:38 <Figs> so, it's not exactly like lisp 
15:16:45 <Figs> but to the untrained eye, it looks like it 
15:16:52 <Figs> let me post an example 
15:17:39 <Figs> and actually, it is not completely true... 
15:17:43 <Figs> you can redefine () ;) 
15:17:55 <Figs> and () operator 
15:18:34 <Figs> ah... yeah, I changed it before 
15:18:38 <Figs> let me rewrite my example 
15:20:12 <ais523> SimonRC: as for the Thutu2 spec at the moment, I have # for numeric function library, $ for string function library, 
15:20:49 <ais523> | for immediate output without dequoting, , for input one char from stdin even if a filename was given on the command line 
15:21:30 <ais523> and everything in Thutu 
15:21:41 <ais523> so it's not that different really 
15:21:58 * ais523 's 99-bottles-of-beer program just finished 
15:22:09 <ais523> and it even got to the end properly 
15:22:23 <ais523> (except that my Forte interpreter needs an END line for guidance at the moment) 
15:23:19 <ais523> because in Thutu (and Thutu2), execution speed is proportional to the amount of memory the program's using 
15:23:31 <ais523> and in Forte, n-bottles-of-beer is O(n) in space 
15:23:49 <ais523> (Forte's an order of n worse in space than most programming languages) 
15:24:11 <ais523> because the list of redefined numbers grows constantly as the program progresses 
15:26:16 <ais523> The program itself is http://pastebin.ca/410563 
15:26:46 <ais523> (I think the Forte interpreter linked from the wiki page should be good enough to run it if you replace the final REM with an END) 
15:32:54 <Figs> http://rafb.net/p/T8FTst86.html 
15:33:14 <Figs> I could have made it more general and added a print object 
15:33:22 <Figs> but I just left it with cout 
15:35:00 <ais523> Figs: that's one of the worst abuses of operator overloading I've ever seen! I'm impressed! 
15:35:02 <SimonRC> ais523: don't numbers get "use up"? 
15:35:18 <ais523> SimonRC: yes, but with a bit of care you can prevent it trashing your program 
15:35:42 <ais523> if you don't take enough care, you end up with the stupid arithmetic programs I was mentioning earlier 
15:36:14 <ais523> One important trick is to leave low-valued numbers (say up to about 1000) alone in long programs, because you'll need them 
15:36:33 <ais523> (The 99 bottles of beer program is sufficiently short that trashing all the small integers isn't a problem.) 
15:37:29 <SimonRC> have you *written* a long program? 
15:38:15 <ais523> Not in full, but I've thought about what they'd be like 
15:39:02 <Figs> the funny thing though is 
15:39:10 <Figs> I've done nothing particularly new 
15:39:14 <Figs> this is used ALL THE TIME 
15:39:19 <Figs> usually with operator << 
15:39:26 <Figs> because it's precedence is better 
15:39:31 <Figs> but also with operator+= 
15:39:45 <SimonRC> I think that the two ops need a superclass to avoid the repetition seen there 
15:40:02 <Figs> this was something I hacked together a while ago 
15:40:07 <Figs> as a proof of concept 
15:40:14 <Figs> I'm working on a better verion right now 
15:40:47 <Figs> the thing is, the way I've written it is actually useful 
15:41:06 <Figs> for what I will be doing eventually 
15:41:13 <SimonRC> you need the operator' ' mentioned a few days ago 
15:42:15 <Figs> that's why I said "lisp-like" instead 
15:42:19 <Figs> since you need the commas 
15:42:41 <Figs> well, there are a couple ways to sort of get the effects 
15:42:48 <Figs> using operator() overloaded 
15:43:00 <Figs> but it's not quite the same :P 
15:43:16 <Figs> the main objection I've gotten is the lack of a quote function 
15:43:27 <ais523> (I'm,redefining,space,to,comma,so,that,you,can,overload,it,properly) 
15:45:02 <Figs> I wish C++ had virtual member template functions 
15:45:19 <ais523> Invent your own language with them in 
15:45:25 <Figs> I'm working on that 
15:45:40 <Figs> although, it isn't meant as an esolang 
15:46:01 <Figs> it's only the functionality that'll be there 
15:46:06 <ais523> I'm working on a language in which it's possible to redefine EOF if you really want to 
15:48:08 <Figs> can I overload global operator , ? 
15:48:14 <Figs> (and put it in a namespace...) 
15:50:07 <ais523> well in my language, all characters are commands (including EOF...) 
15:50:34 <ais523> Figs: did you just /notice/ a _feature_ of your *IRC client* for the first time? 
15:50:50 <ais523> what was the OH WOW for then? 
15:50:59 <Figs> I found out I can overload operator , to be called when it is placed BEFORE an object ;) 
15:51:22 <ais523> MyObject::operator ++(int) 
15:51:25 <Figs> be afraid... be very afraid... 
15:51:32 <Figs> not operator ++, opertaro , 
15:51:39 <ais523> where the int is just ignored, but serves to make the prototype different 
15:51:47 <ais523> You mean it works with , as well? 
15:51:56 <Figs> there is a way to do it like that, yes 
15:52:02 <Figs> http://www.cs.ust.hk/~dekai/library/ECKEL_Bruce/TICPP-2nd-ed-Vol-one/TICPP-2nd-ed-Vol-one-html/Chapter12.html 
15:52:17 <Figs> run a quick search for 
15:52:24 <Figs> C12:OverloadingOperatorComma.cpp 
15:52:53 <ais523> As opposed to my C programs, the syntax in my C++ programs tends to stay somewhat sane 
15:53:25 <Figs> I am not sure what happens when I have both a pre-comma and post comma defined... 
15:53:38 <Figs> time to write a test program! :D 
15:56:50 <Figs> http://rafb.net/p/y0e7Vn77.html 
15:56:59 <Figs> guess what this outputs 
15:57:12 <Figs> (without compiling) 
15:57:37 * ais523 goes off to look up the C++ standard 
15:57:54 <Figs> it outputs "called 2" 
15:58:07 <Figs> at least, with gcc 
16:04:04 <Figs> oh, this is too much fun 
16:10:38 <ais523> I've just read all the relevant parts of 13.3 and 14 in the C++ standard, and can't find where it says the overriding's done that way round 
16:11:08 <ais523> In fact, I would have guessed that the member template takes precedence, because it's only got one unknown type and the other has 2 
16:12:22 <Figs> Breaking standards every day... :P 
16:13:06 <Figs> I'll take a look in the standard and see if I can figure out why 
16:13:24 <Figs> I've got a copy of it around here somewhere 
16:17:20 <Figs> this is the problem with C++ 
16:17:25 <Figs> it has too many features 
16:17:46 <Figs> and, it is not at all obvious how they are supposed to interact in quite a few situations 
16:17:48 <Figs> like this one :P 
16:18:21 <Figs> imagine trying to track down a bug in a real application that did that... with multiple inheritance, templates, and overloaded definitions 
16:20:09 <Figs> ok... remind me, when I finish my language... 
16:20:19 <Figs> to not write a 786 page standard for it 
16:21:30 <ais523> Microsoft's Office Open standard (not to be confused with the rival OpenOffice) is over 6000 pages long 
16:21:41 <Figs> that's the size of the C++ standard 
16:21:44 <Figs> at least the version I have 
16:22:33 <Figs> that's terrible 
16:23:27 <Figs> I can think of too many ways to make C++ programs complicated before trying to obfuscate them 
16:23:43 -!- jix__ has joined. 
16:25:00 <Figs> two kinds of exception handling, goto statements, member function pointers, inherited behavior in multiple inheritance (diamond problem), templates, static data, const type parameter overloading... in the same function! 
16:25:20 <ais523> is setjmp still legal in C++? 
16:25:58 <Figs> I do know that I have used atexit() in a couple of my programs :D 
16:26:47 <Figs> pointer arithmetic! 
16:27:00 <Figs> how could I forget that? :P 
16:27:11 <ais523> as for atexit... my C++ compiler had a compiler to do the opposite and write a function that would run /before/ main() 
16:27:22 <ais523> s/(a )compiler/$1pragma/ 
16:27:31 <Figs> have you ever used function references? 
16:27:41 <ais523> Only function pointers 
16:27:44 <Figs> I use them quite a lot, actually 
16:28:04 <Figs> they have a nicer synax in some cases for the user 
16:28:17 <Figs> I can do something like 
16:28:23 <Figs> call_times(function,100); 
16:28:29 <Figs> instead of &function,100 
16:29:01 <Figs> with a little care, you can do quite a bit of functional programming in C++ :D 
16:30:05 <ais523> In C, at least, function is a pointer and the &function syntax is only supported for compatibility with confused programmers 
16:30:41 -!- jix has quit (Read error: 110 (Connection timed out)). 
16:32:29 <Figs> one of my favorite tricks was to make a function operator call a template function to determine whether or not the class's template parameter was void or not at compile time instead of runtime 
16:32:46 <Figs> that was the constructor 
16:32:53 <Figs> what am I saying now? :P 
16:33:33 <ais523> I heard rumours of a program that someone wrote using nested templates where the (quite complex in effect) program ran entirely during compilation and created an executable which simply printed the answer out 
16:33:44 <ais523> however, I don't know any of the details, so it might just be an urban legend 
16:33:49 <Figs> no, you can do it 
16:33:52 <Figs> metaprogramming 
16:34:09 <Figs> usually though, for those sorts of things, you'd want to use the preprocessor 
16:34:25 <ais523> the preprocessor isn't Turing-complete. (I suppose templates aren't either, though.) 
16:34:34 <Figs> templates might be 
16:34:35 <Figs> I don't remember 
16:34:56 <Figs> C++ templates are turing complete 
16:35:00 <ais523> although once at the IOCCC someone implemented an ALU in the preprocessor without using preprocessor arithmetic at all 
16:35:04 <Figs> http://osl.iu.edu/~tveldhui/papers/2003/turing.pdf 
16:36:02 * ais523 tries to find a browser they have access to that isn't so old it can't handle PDF 
16:36:44 <ais523> I found a copy of IE on a Windows computer :-( and I have to retype the URL for that 
16:37:49 <ais523> if it were Firefox I wouldn't mind retyping the URL so much... 
16:38:02 <Figs> C++ templates suck 
16:38:08 <Figs> they are just such a pain :P 
16:38:28 <Figs> and they're hard to read, damnit! 
16:38:49 <ais523> they're much better than Java templates 
16:38:55 <Figs> Java has templates O.o? 
16:39:05 * Figs is not a Java programmer 
16:39:09 <ais523> sort of, but they don't really work like you'd expect 
16:39:18 <Figs> why do you need templates in Java? :P 
16:39:34 <ais523> it makes it easier to do things like abstract containers 
16:39:56 <ais523> otherwise you have to cast back-and-forth from Object in a totally type-unsafe manner 
16:40:10 <ais523> and then write exception-handling code to prevent the compiler complaining 
16:41:57 <ais523> looking at the page you linked, C++ template programming doesn't seem all that different from functional programming 
16:42:27 <Figs> I usually do functional programming like things with pointers :P 
16:42:44 <ais523> if only regexps had a 'matching-nested-brackets' code, a version of Lazy K or similar written using regexps would be interesting 
16:43:12 <Figs> I wrote an unordered_set class a while back 
16:43:18 <Figs> that had a nice function 
16:43:51 <Figs> you could give it a set and a unary predicate and it would give you all the true elements 
16:44:58 <Figs> I'm working on a language that will be very expressive because you can extend the compiler in the source code :P 
16:45:11 <Figs> give it new rules and things to look for 
16:45:19 <Figs> like operator overloading... but more interesting 
16:46:04 <ais523> CLC-INTERCAL had an operation for dynamically extending its own syntax, I think 
16:46:34 <Figs> I'll have to look into that 
16:46:43 <Figs> part of what I am doing is 
16:46:56 <Figs> making really good debugging tools 
16:47:13 <Figs> if you can just add a small function call before every single function 
16:47:21 <Figs> printing out the name of the funciton... :P 
16:47:30 <Figs> you can see exactly what happens when your program executes 
16:47:41 <Figs> I've already got a couple ways of doing that 
16:48:01 <ais523> BTW, can you read from cerr? 
16:48:16 <Figs> I assume you can, but why would you want to? 
16:48:34 <ais523> fgets(stderr, ...) works in C and reads from the keyboard, generally speaking, rather than wherever stdin's been redirected 
16:48:42 <ais523> it's really helpful when implementing more, for instanc 
16:48:57 <Figs> what is this slash syntax you guys keep using? 
16:49:10 * Figs is new here :P 
16:49:11 <ais523> it's a sed command using regexps 
16:49:28 <ais523> so s/a/b/ means 'change the first a in my previous comment to a b' 
16:49:42 <ais523> and s/$/e/ means 'change the end of my previous comment to an e' 
16:49:47 <ais523> i.e. add an e on the end 
16:50:11 <ais523> My language Thutu is based on this sort of thing, so I tend to go overboard with it 
16:51:05 <ais523>  /([^ ]*) ([^ ]*) ([^ ]*)/$3 $2 $1/ 
16:51:22 <ais523> that isn't regexp-based, but otherwise similar 
16:51:30 <ais523> except that it's flow control is all over the place 
16:51:40 <ais523> I tried for over a day to write a non-trivial infinite loop 
16:51:47 <ais523> I'm pretty sure it's possible, but I didn't manage it 
16:52:20 <Figs> to be honest, I prefer things to be intelligible 
16:52:38 <nazgjunk> that's why you're in #esoteric 
16:52:47 <ais523> what, you prefer things to be intelligible to Turing-Complete? 
16:52:47 <RodgerTheGreat> although, arbitrary storage and flow control is rather nontrivial in /// 
16:52:58 <ais523> storage is easy. Flow control is difficult 
16:53:21 <RodgerTheGreat> tell me storage is easy again when you implement an array 
16:53:25 <Figs> I'm trying to find ways to keep Creole from being esoteric :P 
16:53:40 <Figs> unfortunately, I'm afraid it may end up that way 
16:53:51 <Figs> if Perl is so easy to corrupt... I doubt my language has much chance 
16:54:06 <ais523> RodgerTheGreat: it should be easy enough to implement as a list. Retrieving the data, now that's difficult! 
16:54:10 <Figs> damned if I don't try to do it once though :P 
16:54:54 <Figs> hit caps instead of shift :P 
16:55:08 <ais523> (I tend to think of retrieving the data as a flow control problem. If you just want to output the data, all you have to do is let flow control run into it.) 
16:55:35 <ais523> s/(.*)flow control/$1program execution/ 
16:55:59 <Figs> I think my language is going to end up being syntactic LSD... O.o 
16:56:12 <ais523> Figs: I'm replacing the second occurrence of 'flow control' 
16:56:47 <Figs> I don't program in Ruby. 
16:57:02 <ais523> Given a non-esoteric language: how many characters can be removed from it whilst leaving it still Turing-complete? 
16:57:23 <ais523> I imagine Lisp could get by on the parentheses and just a few letters of the alphabet 
16:57:34 -!- crathman has joined. 
16:58:28 <ais523> OTOH, a language like C isn't Turing-complete at all 
16:59:22 <Figs> actually, there is a one character or maybe two character turing complete language 
16:59:30 <Figs> I'll see if I can find it again 
16:59:57 <ais523> Iota and Jot are both TC with 2 characters 
17:00:09 <ais523> and of course, you can encode any language in binary 
17:00:22 <ais523> 1L has just two characters and metadata like newlines, 
17:00:42 <ais523> and there's a language where the length of the program is all that matters, so you can type it with just one character 
17:01:02 <Figs> http://en.wikipedia.org/wiki/OISC 
17:01:03 <ais523> there's also Wait, which uses a zero-character character set 
17:01:11 <ais523> and languages that use input 
17:01:38 <ais523> http://esolangs.org/wiki/Wait is something of a classic 
17:01:45 <ais523> what a program does depends on when you run it 
17:01:53 <ais523> and there's only one possible program, the null program 
17:01:59 <ais523> but the language is TC 
17:02:58 <Figs> I just lost a program opportunity! 
17:03:02 <Figs> *resets clock* 
17:03:32 <Figs> one instruction set computer :P 
17:03:41 <Figs> "Subtract and branch if negative " 
17:03:56 <ais523> http://code.iamcal.com/pl/wait/wait.cgi is one example of a Wait interpreter. (It's not due to do anything interesting any time soon, I don't think.) 
17:04:23 <ais523> My own contribution to single-command languages is Black, which I think (but don't know) is TC 
17:04:33 <ais523> http://esolangs.org/wiki/Black 
17:05:44 <Figs> sounds like Conway's Game of Life 
17:05:55 <ais523> it works in an entirely different manner 
17:06:07 <ais523> because Black has an instruction pointer, and Life doesn't 
17:06:31 <Figs> pushing the boundries of what counts as language :D 
17:06:32 <ais523> BackFlip drew more interest, though, even though it definitely isn't TC 
17:07:29 <Figs> I got a db error 
17:07:30 <Figs> http://esolangs.org/wiki/Main_Page 
17:07:53 <ais523> just refresh when that happens, it usually works the second time 
17:11:27 <ais523> Of course, you could limit the expanded HQ9+ version to only have X 
17:11:37 <ais523> which is defined as 'makes the language Turing-complete' 
17:12:14 <ais523> consensus on the wiki, though, is when the language defined X to make the language Turing-complete, it was lying 
17:12:47 <Figs> I'm gonna go eat lunch 
17:12:51 <Figs> and decompress my brain 
17:16:13 <lament> ais523: Forte is cool. 
17:16:44 <ais523> thanks. As well as the motivation given on the wiki (which is the main one), the idea came when thinking about irreversible programming languages 
17:17:03 <ais523> There are languages like Kayak where every operation is reversible 
17:17:14 <ais523> but in Forte, every operation is either a NOP or can't be reversed 
17:17:43 <lament> forte is just fun to read the spec of 
17:17:52 <lament> programming would be a huge pain i'm guessing 
17:18:03 <ais523> I linked my 99-bottles-of-beer program above 
17:18:18 <ais523> (and it took a couple of days to debug, so yes, programming is somewhat problematic) 
17:18:25 <lament> OTOH having to put brackets around expressions with two numbers and an operator is not pretty 
17:18:59 <ais523> but LET 4=1+1+1 isn't, because it's ambiguous. (That has to be bracketed) 
17:19:18 <ais523> so you have to put brackets around expressions containing three numbers and an operator, but two's okay 
17:19:28 <lament> i'm just saying it's not pretty 
17:20:09 <ais523> it's either that, or have the interpreter go into an infinite loop (when Thutu programs come across an error, they generally either go into a loop or exit) 
17:20:41 <ais523> as for the brackets, I've never had to use more than three numbers in an expression before 
17:20:54 <ais523> and when I did, the bracketing was pretty important to its meaning 
17:22:14 <ais523> the bracketing's much uglier inside the interpreter, though; it thinks of 99 = (99 + 5000) - 5001 
17:22:50 <ais523> as %(99%) = %(%(%(99%) + %(5000%)%) - %(5001%)%) 
17:23:29 <lament> that looks like perl :) 
17:24:05 <ais523> Perl runs a lot faster 
17:24:17 <ais523> and I think it's meaningless in Perl, anyway 
17:26:05 <ais523> My interpreter now does everything but GET and INPUT. INPUT's like gets() anyway, in that it's impossible to use without a chance of the user invoking undefined behaviour, so I may as well just program GET now. 
17:26:21 <ais523> the other problem is that I haven't programmed the way to end a program given by the spec... 
17:41:15 <Figs> does anyone know how to output characters to a specific place on the console? 
17:41:23 <Figs> preferably portably 
17:41:40 <ais523> can't be done completely portably, but libcurses can manage it reasonably portably 
17:41:54 <ais523> (there's an example in my Black interpreter, I think) 
17:43:21 <Figs> how large is the console? 
17:43:28 <Figs> something like that? 
17:43:46 <ais523> I think it actually queries the size 
17:43:57 <ais523> either that, or I guessed and chose something sensible 
17:44:22 <ais523> BTW, in DOS the console's always 80x25 or 80x50 on modern computers, which is exploitable if you know what you're doing 
17:44:45 <Figs> yay buffer overflow 
17:45:05 <ais523> I didn't mean in that sense; it's just that you can't measure the screen size in DOS 
17:45:24 <ais523> so you query the text-mode and attempt to use that to guess whether it's 25- or 50-row resolution 
17:45:37 <ais523> either that, or you set it yourself so you know it's right 
17:46:38 <Figs> or I could just rethink the way I'm writing this 
17:47:57 * ais523 has just written the first cat program they've ever seen that /keeps on accepting input/ after EOF, somehow 
17:48:22 <ais523> as in, I type an EOF, it ignores it, and it accepts the next characters anyway 
17:49:18 <ais523> I know I wasn't checking for EOF, but that's just silly 
17:50:08 <Figs> cat program? O.o 
17:51:58 <Figs> I just got cppreference.com as a .chm 
17:53:51 <ais523> I was thinking about what the null program does in various esolangs 
17:53:58 <ais523> In Forte it's cat, for instance 
17:54:15 <ais523> In BF it's a NOP (that seems to be the most common behaviour) 
17:54:22 <ais523> in many langs it's an error, 
17:54:34 <ais523> and in HOMESPRING, it prints "In HOMESPRING, the null program is not a quine". 
17:55:48 <ais523> ... it could do anything 
17:56:06 <Figs> you know what I hate? 
17:56:13 <ais523> in Unneccessary, the only legal programs are those for which the file didn't exist when run 
17:56:17 <lament> in at least one other lang it's cat 
17:56:22 <Figs> and the fact you have to count the params :( 
17:56:23 <lament> don't remember the lang 
17:56:26 <ais523> (if the source file given exists, it's an error) 
17:57:09 <ais523> it's cat in Thutu, in sed (which is almost esoteric), and a program consisting of only a newline is cat in HOMESPRING, minus newlines 
17:57:47 <lament> i remember liking it quite a bit 
17:58:24 <lament> a null program was cat and it conceptually made sense for it to be cat 
17:59:31 <lament> null program = identity function = cat 
18:00:32 <ais523> yep. In Overload (my work-in-progress that I tarpitised into Underload), null string = 1 = identity function = NUL 
18:00:59 <ais523> (more languages should probably use incremented ASCII as a character set. It solves the EOF problem quite neatly.) 
18:01:32 <ais523> incremented ASCII: each character's codepoint is 1 more than the corresponding ASCII character's codepoint 
18:01:48 <ais523> So newline is 11, space is 33, etc. 
18:03:38 <lament> EOF should be infinity. 
18:04:09 <ais523> it's kind-of hard to detect infinity in most languages 
18:04:33 <lament> in brainfuck it would be perfect 
18:04:40 <lament> on eof, your program would likely freeze 
18:05:40 <ais523> except that if it had been optimised, [->+<] might actually be able to handle infinity 
18:06:00 <ais523> and besides, infinity could be detected, by eliminating each of the other possible values one by one 
18:07:13 <lament> were you involved in that "provably goes into an infinite loop" idea 
18:07:30 <lament> i forgot, some brainfuck variant 
18:07:33 <Figs> anyone have documentation for libncurses? 
18:07:51 <ais523> man curses works for me 
18:08:13 <lament> esowiki keeps crashing 
18:08:23 <ais523> refreshing the page tends to work, I find 
18:08:32 <Figs> I don't have the man pages for it 
18:09:06 <lament> http://esolangs.org/wiki/Onoz 
18:09:21 <ais523> Figs:google for 'man libcurses', and you'll find some online 
18:10:28 * ais523 is getting a frustrating error 
18:10:35 <ais523> Can anyone see what's wrong with 
18:10:56 <ais523> nevermind, I figured it while I was typing out the question 
18:11:28 <lament> what computational class is onoz 
18:11:53 <lament> i suppose is just one-above-turing?.. 
18:12:25 <ais523> it says 'provably', so it's probably going to end up in trouble 
18:12:55 <ais523> the problem is that I think that by Goedel's incompleteness theorems, a program can't prove its own provability 
18:13:04 <lament> no, you just need an oracle 
18:13:18 <lament> which raises the computational class above turing, but only slightly 
18:13:29 <ais523> it's not a matter of termination testing: you could set up what was inside the loop to terminate if and only if it provably doesn't terminate 
18:13:40 <ais523> by quining the program and putting an interpreter inside the brackets 
18:14:09 -!- nooga has quit (SendQ exceeded). 
18:14:26 <ais523> Actually... it might work after all, because the interpreter would require an interpreter to be able to test provability 
18:14:26 <lament> i think that would fail 
18:14:39 <lament> i think the problem is 
18:14:39 <ais523> and so an infinite number of nested interpreters would be needed 
18:14:44 <lament> onoz is probably not even turing-complete 
18:15:19 <ais523> who said it always halts? 
18:15:32 <lament> because if it doesn't, then the entire loop is skipped 
18:15:34 <Figs> a program will always halt 
18:15:41 <ais523> set it up to halt when it finds a zero to the Riemann hypothesis 
18:15:45 <Figs> in the real world :) 
18:15:57 <ais523> then, either it never halts, or it's proved the Riemann hypothesis and we can all go home rich 
18:16:09 <lament> ais523: it will halt regardless 
18:16:14 <lament> ais523: either when it finds it, or before it even begins 
18:16:19 <ais523> it isn't allowed to skip the loop unless it can prove that it never halts 
18:16:35 <ais523> so it would need the proof in order to decide whether to enter the loop in the first place 
18:16:45 <lament> that's not a big deal, it's super-turing 
18:16:57 <lament> it might be super-turing in a dysfunctional way 
18:17:11 <lament> i'm not sure if you even CAN write a program that would simply search for the zero :) 
18:17:19 <lament> well no, i suppose you can. 
18:17:36 <ais523> most BF programs are going to run as normal 
18:17:36 <lament> just have to avoid all potential infinite loops... 
18:18:01 <lament> nevermind, you're right 
18:18:29 <lament> and its computational class i suppose is the same as brainhype 
18:20:14 <lament> then it should be compilable to brainhype... 
18:20:59 <ais523> I'm wondering now if there are two distinct legal versions of the language, one of which is brainhype-complete, the other of which isn't even TC 
18:21:10 <ais523> because the language is defined in terms of itself, that might be possible 
18:21:37 -!- sebbu has joined. 
18:21:50 <lament> it's defined in terms of brainfuck 
18:22:31 <ais523> no, because [do something 1 [-]+[]] still does something 1 
18:23:08 <ais523> the program inside the main loop terminates in Onoz, because the [] is skipped 
18:23:15 <ais523> but doesn't terminate in BF, obviously 
18:23:31 <ais523> so Onoz can run the main loop, but couldn't if it were defined in terms of BF 
18:24:52 <lament> either that or the _entire_ loop is skipped 
18:24:59 <lament> that also seems consistent with the spec 
18:25:04 <lament> in which case nothing runs 
18:25:19 <lament> (but the lang is still TC) 
18:25:30 <ais523> in any reasonable Onoz implementation, [-]+[] has to skip the second loop 
18:25:37 <ais523> because a null string must always be NOP 
18:25:54 <ais523> so as long as there aren't any infinite loops in the 'do something' I think the main loop has to run 
18:26:11 <lament> you can interpret the spec both ways 
18:26:15 <lament> "When [] is encountered, everything in it is looped as in brainfuck, unless doing so would provably result in an infinite loop" 
18:26:37 <lament> the entire loop, if you loop it as in brainfuck, is provably infinite 
18:26:49 <ais523> ah... the spec doesn't make it clear whether the program inside the [] is BF or Onoz 
18:27:11 <ais523> I'm interpreting it as 'looped until the current tape cell is 0', which is BF's definition of [] 
18:27:23 <ais523> but you're interpreting it as 'looped as if it were a BF program' 
18:28:12 <lament> if you interpret it my way, then the language is really boring 
18:28:31 <lament> it either works like normal brainfuck, or the program's main loop is skipped entirely 
18:29:57 <ais523> yay! I got my Forte cat program to end on EOF, with an END keyword in the language 
18:30:15 <ais523> In fact, I think I'll save myself implementing trouble and yet more inefficiency by adding END to the spec 
18:31:22 <lament> if you interpret the onoz spec my way, then onoz is trivial to compile to brainhype. 
18:32:31 <lament> almost trivial, anyway. 
18:33:58 <ais523> actually, seeing as the programs whose termination it's testing are merely TC, it could probably be compiled into Banana Scheme-1 quite easily 
18:34:12 <ais523> which would mean it's only TC-plus-1 complete after all 
18:34:15 <lament> replace > with >>, < with <<, and each outernmost [LOOP] with >+{<[LOOP]}[-<[LOOP]>]< 
18:35:08 <lament> if you interpret the spec your way, it's harder; and yes, i suppose you're right. 
18:35:47 <ais523> cat in Forte's actually quite elegant. I'll type it all out here: 
18:36:04 <ais523> 515 LET 514=514+4: GET 518-1: LET ((518-1)+257)+1 = 1 
18:36:16 <ais523> 518 LET 515=515+4: LET 520=520+4: PUT 518-1 
18:36:39 <ais523> I like the way that all the numbers are significant, even though they look kind-of random 
18:37:11 <lament> oh, {} works the opposite way, so my "translation" is completely broken 
18:38:26 <ais523> Wow, my cat program's the slowest cat program in history too, it seems 
18:38:37 <ais523> I set it to cat its own source code and it's still doing the first line 
18:39:21 -!- sebbu2 has joined. 
18:41:18 <ais523> just finished the first line 
18:41:53 -!- oerjan has joined. 
18:42:58 <lament> explain http://esolangs.org/wiki/Onoz 
18:48:43 <ais523> time forte.pl cat.4te <<EOF 
18:48:51 <ais523> The quick brown fox jumps over the lazy dog. 
18:49:10 <ais523> That's definitely the slowest cat program I've ever seen 
18:55:41 -!- marcin has joined. 
18:55:52 -!- marcin has changed nick to sirKIIdB. 
18:56:09 <sirKIIdB> is it channel about esoteric languages? 
18:56:47 <ais523> esoteric programming languages are what are on-topic here 
18:57:00 <lament> on the surface, it appears to be about esoteric languages 
18:57:04 <ais523> ~bf ,[.,]!and the channel's geared up to help us discuss them too 
18:57:06 <lament> the truth is much, much more sinister 
18:57:21 <ais523> ~bf ,[.,]!and the channel's geared up to help us discuss them too 
18:57:21 <bsmnt_bot> and the channel's geared up to help us discuss them too 
18:57:46 <sirKIIdB> i wrote an interpreter for "my" eso-language based on bf ::) 
18:57:55 -!- sebbu has quit (Read error: 110 (Connection timed out)). 
18:57:57 <ais523> what is your language? 
18:58:29 <lament> That's fine, i don't think we have a nameless one yet. 
18:58:43 <sirKIIdB> but i think "T" is very good name 4 it 
18:58:44 <lament> Is it different from brainfuck in any way? :) 
18:59:39 <ais523> is it Turing-complete? 
19:00:30 <ais523> does it have an infinite amount of storage and the ability to manage all conventional flow control patterns somehow? 
19:00:43 <ais523> (If the answer is yes to both, then it's probably, but not necessarily, Turing-complete.) 
19:02:23 <ais523> ~bf >,[>,]<[.<]!Brainfuck manages Turing-completeness by having an infinite tape 
19:02:23 <bsmnt_bot> epat etinifni na gnivah yb ssenetelpmoc-gniruT seganam kcufniarB 
19:03:48 <ais523> one sure test: if you can compile Brainfuck into a language, that language must be Turing-complete 
19:04:23 <ais523> I wonder why the bot's ignoring you? 
19:04:27 <ais523> ~bf >,[>,]<[.<]!Kcufniarb 
19:05:09 <ais523> there's a space at the start of your commands 
19:05:13 <ais523> the bot doesn't like that 
19:06:34 <ais523> EgoBot seems not to be here at the moment, which is a pity as it knows more languages than bsmnt_bot does 
19:06:55 <sirKIIdB> in which eso-language do you "speak" 
19:07:27 <ais523> Well, I wrote quite a few 
19:07:28 <ais523> Underload's one of the more elegant of them 
19:07:43 <ais523> and I'm busy on a Forte interpreter at the moment 
19:07:58 <ais523> http://esolangs.org/wiki/Forte 
19:08:20 <ais523> (that URL will serve to answer your questions about most esolangs if you change the bit at the end) 
19:09:29 <ais523> it was designed to be as similar to BASIC as reasonable 
19:09:45 <ais523> because flow-control is based on redefining line numbers 
19:09:46 <sirKIIdB> i wrote simple basic interpretator 
19:10:05 <ais523> so I wanted something that seemed familiar until the 'WTF?' reaction when you realise what it's actually doing 
19:11:07 <sirKIIdB> Polish "WTF" is "O co kurwa łazi?" 
19:11:28 <lament> reverse polish "WTF" is FTW. 
19:12:02 <ais523> or `W`TF in Unlambda notation, I suppose 
19:12:17 <GregorR> Or rather, WFT ... I forget which is reverse X-P 
19:12:20 <ais523> it depends on which words are operands and which are operators 
19:12:39 <ais523> if 'the' and 'what' are both unary operators, then lament was right 
19:12:53 <sirKIIdB> what do you think about intercal? 
19:13:08 <ais523>  I released the most recent version of the C-INTERCAL compiler 
19:13:20 <ais523> I started with some existing code and added features like multithreading and backtracking 
19:13:38 <sirKIIdB> in wich languages do you program? 
19:13:55 <ais523> well, the C-INTERCAL compiler's written in C, as the name would suggest 
19:14:18 <ais523> but I'm using C++, Perl, and Thutu2 to write implementations for various esolangs in at the moment 
19:14:36 <ais523> and I wrote bsmnt_bot's Brainfuck interpreter in Python 
19:14:49 <ais523> Thutu2's incredibly inefficient, but not too bad when you get used to it 
19:15:04 <sirKIIdB> I'm using c++ or sometime pascal 
19:15:09 <ais523> it's an esolang itself, a wimpmode for Thutu, which I use to write other esolangs in 
19:15:26 <ais523> I wrote a Thue implementation in sed once 
19:15:38 <ais523> it compiled Thue to sed, and was written in sed itself 
19:15:39 <GregorR> ... Pascal? Are you logging into IRC via a time machine? 
19:15:44 <ais523> I think it had several bugs, though 
19:15:56 <ais523> GregorR: I still use Pascal on occasion 
19:16:04 <ais523> (only when maintaining old Pascal programs, though) 
19:16:21 <ais523> what? It's not as bad as COBOL 
19:16:22 <lament> intercal is older than pascal, isn't it. 
19:17:22 <ais523> Pascal was 1970 it seems, so INTERCAL's two years younger 
19:18:14 <ais523> One thing that I do know is that a Pascal program I was maintaining was about 5 times faster than its C equivalent 
19:18:25 <ais523> which probably says something about the quality of the compilers... 
19:18:41 <ais523> sirKIIdB: I haven't noticed any problems with it yet 
19:19:10 <ais523> you know, apart from the B and the lack of backquotes, your nick's almost legal Unlambda 
19:19:28 <ais523> I wonder if ``````sirkiid does anything interesting? 
19:20:02 <ais523> it seems to be just a NOP, unfortunately 
19:20:22 <ais523> no wait... it prints a single newline 
19:22:24 <ais523> this Internet connection is a Solaris terminal running under Windows (not through choice). 
19:22:58 <ais523> At home, I use DJGPP running on top of Windows; again, the Windows isn't through choice, and it's the closest to Linux/UNIX syntax I can reasonably get 
19:23:09 <oerjan> ``````sirkiid -> `````ik`rkiid -> ````k`rkiid ->(\n) ````kkiid -> ``kid -> i 
19:23:20 <ais523> or sometimes, when Windows is acting up too much, I use DOS 
19:25:16 -!- ais523 has quit ("the clocks have changed, and I've got about half-an-hour late without realising"). 
19:29:05 <oerjan> right, you talk like mad until i've _just_ managed to finish the logs, then you stop. :/ 
19:30:16 <oerjan> it's not my language, but let me take a look. 
19:33:17 <oerjan> hm, seems i must have had a hand in it somehow... 
19:33:37 <lament> yepyep! it's all YOUR fault. 
19:34:28 <oerjan> anyway i take the word "provable" to mean that there exists an actual written proof.  So while the language is super-Turing, it is only one class above, a simple halting oracle suffices. 
19:36:39 <oerjan> i also take "as in brainfuck" to mean just the loop itself, not the contents, so the contents are essentially in onoz. 
19:37:56 <oerjan> there is also a question of what mathematical foundation the proof should be in.  I have a vague recollection that we discussed it at the time. 
19:39:09 <oerjan> however as long as it contains Peano arithmetic or thereabouts, the whole system should still be super-Turing. 
19:39:54 -!- jix__ has changed nick to jix. 
19:41:49 <lament> oerjan: so it can still go into an infinite loop 
19:41:54 <lament> oerjan: thanks to goedel 
19:42:44 <sirKIIdB> because tape in turing's machine 
19:43:27 <sirKIIdB> e.g int tablica[ and what here ? ] 
19:43:56 <oerjan> you could use a linked list 
19:45:45 <oerjan> let each cell contain a pointer or reference to the next.  If you get to a null pointer, allocate more. 
19:46:22 <oerjan> make that a doubly linked list.  Pointers both backward and forward 
19:46:57 <sirKIIdB> but can I go backward or only forward on list? 
19:48:28 <oerjan> A Turing tape allows you to go both ways.  If not it wouldn't be Turing complete for exactly the reason you write. 
19:49:25 <oerjan> Nothing can be Turing complete if memory is bounded in size. 
19:50:22 <oerjan> The tape must be able to grow, but at each point in time it can be finite. 
19:52:58 <oerjan> Of course it is finite.  You would delete the old tablica[0] when you wrap. 
19:54:22 <oerjan> Only if the Turing machine uses a lot of tape. 
19:56:35 <oerjan> You don't need pointers for every cell however.  You can have an array in each struct. 
19:57:56 <GregorR> Have we discovered that Turing machines are not efficient? Wooooooooow :-P 
19:57:57 <sirKIIdB> I don't know how to make array like that in c++... 
20:00:09 <lament> C++ is the language of the devil, anyway 
20:00:27 <oerjan> Something like: struct node { struct node *forward; struct node *back; int contents[30] } *tablica; 
20:00:41 <oerjan> except my C is a bit rusty 
20:04:24 <oerjan> But doubly linked lists can be a bit difficult so you should look up the algorithms. 
20:06:23 <oerjan> lament: Who do you know that uses b****fuck? :D 
20:22:04 <lament> there was a joke about that on the esolang list a long time ago. I forgot the details. 
20:22:21 <lament> somebody considered the word 'brain' to be offensive. 
20:25:33 <oerjan> Creationists probably. 
20:25:59 -!- Arrogant has joined. 
20:33:17 * oerjan guesses you mean "game" 
20:46:43 <lament> i believe the english word is still 'game'. 
20:52:43 -!- Arrogant has quit ("Leaving"). 
21:33:51 -!- sirKIIdB has quit ("Sleeping and ..."). 
21:35:23 <Figs> what rhymes with purple? 
21:49:25 <oerjan> http://en.wiktionary.org/wiki/Rhymes:English:-%C9%9C%CB%90%28r%29p%C9%99l 
21:57:52 -!- SevenInchBread has joined. 
22:29:28 <SevenInchBread> MY LATEST MASTERPIECE:  http://esoteric.voxelperfect.net/wiki/Sprout#99BoB 
22:35:12 <lament> i don't understand the description of the semantics at all. 
22:36:39 <lament> it seems there's quite a lot of built-ins 
22:36:43 <lament> and you never describe what they are 
22:37:35 <lament> well, the problem is, your description of semantics doesn't even leave any room for builtins. 
22:37:57 -!- crashmatrix has joined. 
22:38:24 <SevenInchBread> the builtins are... macros basically... although I cheat a little and give some of them a little more power like speak and die. 
22:38:56 <SevenInchBread> : is something along the lines of a macro call... and # is something like a macro def... they can both work that way. 
22:40:41 <lament> so how is your language different from lisp? 
22:41:50 <SevenInchBread> the main difference is that # also serves as a "point of substitition"... change allows you to modify the source code at all the points marked by a certain label. 
22:42:11 <lament> SevenInchBread: you haven't described change at all. 
22:42:26 <SevenInchBread> and... : isn't strictly deterministic... it randomly selects one of the labelled expressions. 
22:42:50 <SevenInchBread> lament: pfft, so demanding with your "explain fundamental parts of the language" stuff. 
22:43:37 <SevenInchBread> change is a macro that takes a label name and a little chunk of code... and basically substitutes the code in place of every expression in the source marked by the label. 
22:43:57 <SevenInchBread> ...the only time the examples really show this is in 99BaB 
22:44:16 <SevenInchBread> ...guess I could factor out some of the builtins... makes it a little too Lispy. 
22:45:00 <RodgerTheGreat> and being simple doesn't keep a language from being esoteric 
22:47:10 <SevenInchBread> if I took out all of the lispy builtins and added a few more commands... I could probably make it way weirder. 
22:54:43 <RodgerTheGreat> the best esoteric languages are those whose complete semantics can be described in a few setences, yet still manage to make people's brains hurt 
22:55:53 <SevenInchBread> well... the basic idea here is really neat... I just need to work on the actual specification a bit. 
22:56:55 <RodgerTheGreat> crashmatrix: BF, ///, SevenInchBread's earlier project dupdog, OISC, etc 
22:59:25 <crashmatrix> Idea: promote dupdog to make engineers go wow instead of Vista :) 
23:00:25 <RodgerTheGreat> ais523 and I made some significant inroads to doing something useful with that language, but it's still a tough nut to crack 
23:03:56 <lament> i'm still not certain whether it's completely impossible to program in, or just kinda difficult 
23:04:29 <crashmatrix> not completely impossible, you wrote hello world in dupdog, didn't you? 
23:05:22 <lament> yeah, but that program never actually has to duplicate stuff 
23:05:45 <crashmatrix> ah, I didn't get to the part of trying to interpret the code yet 
23:05:46 <lament> thanks to wrapping mod 257 
23:07:33 <RodgerTheGreat> the *really* tough part we've been trying to wrap our heads around is truly useable conditional branching 
23:08:08 <lament> what would it condition on? 
23:09:03 <lament> fun fact: all vowels are on odd-numbered positions in the alphabet. 
23:09:31 <lament> coincidence? i think not! 
23:10:44 <crashmatrix> conspiracy? it's more likely then you think 
23:11:08 <lament> anybody got the dupdog interpreter? 
23:12:09 <oerjan> Probability 1/32 and sometimes 1/64. 
23:12:25 -!- nazgjunk has changed nick to na[zZz]gjunk. 
23:13:10 <lament> i have no idea how to use that interpreter. 
23:13:56 <RodgerTheGreat> and I have no godly idea how it works, because it was compiled into perl. 
23:15:13 <oerjan> I could upload my half-finished Haskell interpreter. 
23:15:32 <lament> the perl thing seems to work, just feed the program as stdin 
23:15:45 <crashmatrix> now there is a esoteric language for ya (well, me actually)... I never got my head around it properly :( 
23:16:26 <RodgerTheGreat> perl itself isn't too bad, but whatever compiler created that interpreter is a machine of pain 
23:17:35 <SevenInchBread> dupdog was spawned in about a minute... I put no thought whatsoever on how it could be used. 
23:17:50 <lament> but how did you come up with the names for sub-interpreters? :) 
23:19:36 <SevenInchBread> eh... I'll continue Sprout another day. I want to do like a "structured self-modification". Where you can give bits of the parse tree a label and then say "replace everything at x with SomeCode" 
23:21:27 <lament> looks like the perl interpreter is broken after all 
23:22:46 <lament> my programs fail and i'm not sure why 
23:23:32 <lament> for the purposes of counting evenness/oddness, it does not include the currently read character. 
23:24:23 <lament> i wonder if i can work around that 
23:24:30 <SevenInchBread> -nod- that sounds right... that part of the spec was invented as I was writing the interpreter... so it's not actually a requirement to be "pure dupdog" - or whatever. 
23:28:03 <SevenInchBread> ....so... I'd like to get Kallisti started... maybe I should eso-factory-ize it.. instead of requiring interpreters to be made by the folks. 
23:28:08 <oerjan> the Hello World program worked in my interpreter 
23:28:20 <oklopol> "<ais523> OTOH, a language like C isn't Turing-complete at all" ? 
23:28:40 <lament> oerjan: for example, ?~ 
23:29:04 <lament> oerjan: it's supposed to produce no output; it outputs 1 
23:29:19 <lament> because the evenness/oddness is counted wrongly 
23:30:42 <SevenInchBread> hmmm... the only real conditional instruction seems to be ? 
23:33:51 <lament> oerjan: can you try running http://pastebin.ca/411254 with wrapping 128? 
23:36:13 <SevenInchBread> maybe Mfit, instead of spitting out the decimal representation of the length... should spit out the base-5 representation of the number, starting at 1 instead of 0 
23:36:23 <lament> SevenInchBread: yes, '?' is a conditional instruction and it already works in a fashion; i just don't think 'length of program' is a useful condition 
23:37:22 <oerjan> Should the line breaks be removed? 
23:37:29 <lament> oerjan: i see no line breaks 
23:39:42 <oerjan> It writes "Awesome100" 
23:40:18 <lament> of course it only works because all those characters have the same parity 
23:40:28 <lament> so you can write 'awesome', but not 'hello world' 
23:40:31 <SevenInchBread> Maybe incorporate some new stuff into Kallisti to make it bearably workable. 
23:41:02 <oerjan> lament: Can you run Haskell? 
23:41:43 <lament> i also have my own dupdog interpreter in python 
23:41:54 <lament> i just want third-party confirmation :) 
23:41:58 <SevenInchBread> like... instead of checking source-code evenness... ? could check the character in front of it for some condition. 
23:42:24 <oerjan> The files are oerjan.nvg.org/esoteric/Dupdog.hs and oerjan.nvg.org/esoteric/FingerTree.hs (third party module) 
23:42:45 <oerjan> but its interface is atrocious at the moment 
23:43:07 <oerjan> however, it uses shared datastructures for duplication 
23:43:23 <lament> so is it super-efficient? 
23:43:52 <oerjan> probably not, but it should be miles above a string-based one 
23:45:01 <lament> my interpreter: z3.ca/~lament/dupdog.py 
23:45:20 <oerjan> it also contains a tracer, but the actual debugging commands and command-line options are not implemented 
23:45:25 <SevenInchBread> ...or you could make other changes... like have instructions that alter the number at which the length calculation wraps. ...but I'd like the new ideas to go into the construction of Kallisti. 
23:48:35 <oerjan> Most importantly it should support many duplications without running out of memory, although I haven't tested it 
23:49:05 <SevenInchBread> ...yeah... with Python at least... huge string modifications take forever... because of the non-in-placicity. 
23:51:51 <oerjan> Also I am clever about substitution and reversal 
23:52:16 <oerjan> No actual change of program, just a couple of status flags 
23:53:13 <SevenInchBread> yeah... there's only three substitution states possible... and two reversal states. 
23:55:07 <SevenInchBread> heh.... since dupdog reverses its source code often... does that make it reversible? 
23:57:16 <oklopol> whew... took like an hour to read the logz 8|| 
23:58:56 <oklopol> i woke up an hour ago, it's 2 am now 
23:59:41 <oerjan> FWIW, the command to actually run a dupdog program is like: runStateT (runErrorT (runLoop (tracer 30 []) 0)) (initPState (DS "" "?~" 257 0 0 30 [] False True)) 
00:00:10 <Figs> I have a fun one for you guys 
00:00:10 <Figs> http://weblog.raganwald.com/2006/12/just-because-we-can.html 
00:00:15 <Figs> what does this program do... 
00:00:19 <Figs> in 10 different languages! 
00:02:46 <oerjan> (set 30 to 0 to turn off tracing, 257 to your output wrapping, and "?~" is the program.) 
00:03:50 <Figs> is it the same as #? 
00:06:01 <Figs> and that's the only thing I can think of 
00:06:05 <Figs> but I'm not familiar with it 
00:06:54 -!- crathman has quit (Read error: 113 (No route to host)). 
00:09:45 <Figs> is there wiki software for local use? 
00:09:49 <Figs> or blog software? 
00:11:42 <Figs> http://www.funny-jokes.net/funny-pictures/imgs/177.jpg 
00:14:27 <RodgerTheGreat> http://www.trichotomy.ca/images/cats/whatisthispwnedyouspeakofandwhyamiabouttogetsome.jpg 
00:14:29 <SevenInchBread> SUBMIT SUBMIT SUBMIT - http://esoteric.voxelperfect.net/wiki/Kallisti   (changes made, SUBMIT) 
00:15:00 <SevenInchBread> ...is the eso wiki supposed to automatically log me out very frequently. 
00:15:47 <oklopol> http://osl.iu.edu/~tveldhui/papers/2003/turing.pdf <<<<< this seems like something one could do for brainfuck as well 
00:16:24 <Figs> preferably without having to run a webserver locally.. :| 
00:18:53 <oerjan> SevenInchBread: Have you set it to remember your password? 
00:19:47 <oerjan> I had the same problem before I did that 
00:22:10 -!- atrapado has joined. 
00:22:28 <oklopol> c++ has two turing complete langs and one almost turing complete, and i hear haskell's type system is turing complete too.... wonder if you could make a non turing complete lang with a non turing complete type system such that they together make up a turing complete system 
00:25:12 <lament> oklopol: yes, very easily. Brainfuck with limited tape size, unbounded cells. 
00:25:21 <SevenInchBread> if dupdog were Turing complete... I'm sure it's very likely that mfit or shanty alone isn't 
00:28:17 <oklopol> hmm... it's pretty hard to do any kind of factorization in brainfuck but that'd be one way to do it i guess? 
00:28:29 <oklopol> though no question mark, since i DO guess. 
00:34:45 <Figs> Why can't anyone fucking program!?!?!??!?!?!! 
00:35:02 * Figs wants to kill the idiot who wrote his school's webmail interface 
00:35:24 <lament> Figs: it is very difficult to program while fucking. Can't concentrate. 
00:35:34 <Figs> maybe for you :P 
00:36:12 <oerjan> This reminds me of an xkcd strip 
00:37:00 <lament> oerjan: i suppose any combination of 'program' and 'fuck' in the same sentence would. 
00:37:22 <oerjan> actually i don't think it was about programming. 
00:38:52 <lament> but its mention serves as a catalyst. 
00:40:42 -!- sebbu2 has quit ("@+"). 
00:40:53 <oklodok> hmmm.... not a good idea to idle here with oklodok... two mircs kinda mess up logs being the same executable :) 
00:41:06 <Figs> http://www.lojban.org/tiki/tiki-index.php?page=Home+Page&bl 
00:41:11 <Figs> different kind of language 
00:41:23 -!- oklodok has left (?). 
00:41:47 <lament> oklopol: even one mirc is a bit sketchy 
00:42:55 <oklopol> i know, but they all seem to suck so i'll make my own when i see fit 
00:47:17 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
00:47:24 <oklopol> hmm.... is there another way to do string -> bf output 
00:49:11 <Figs> ^.*(?=.{10,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$ 
00:53:55 <Figs> that's a regular expression 
00:53:58 <Figs> not sure what language 
00:57:06 -!- atrapado has quit ("l3nz"). 
01:00:08 <Figs> http://img467.imageshack.us/my.php?image=1579dx8.jpg 
01:01:16 <oklopol> hmmm has there been any proof on shortest possible ways to create a string in bf? 
01:02:04 <oerjan> in general there cannot be - Kolmogorov complexity, so undecidable 
01:02:52 <oklopol> well... i guess it's understandable i couldn't do it then :) 
01:04:34 <lament> that's right. nevermind. 
01:07:58 <Figs> http://fukung.net/images/527/DeadeyeDick.jpg 
01:09:01 <SevenInchBread> I seriously need to gather a band of conspiracy pirates to make A MOST EXCELLENT SYSTEM OF OPERATING. 
01:09:26 <Figs> I have a friend from Lithuania who might be interested 
01:10:52 <Figs> Showing BF to be turing-complete 
01:10:52 <Figs> http://www.iwriteiam.nl/Ha_bf_Turing.html 
01:12:36 <lament> bf is turing complete. That page is like a decade old. 
01:13:31 <RodgerTheGreat> we had pretty advanced plans for an OS a while back, then gregor did his usual buzzkill and the fervor kinda died down 
01:13:33 <SevenInchBread> well... I was also thinking about doing a lot of distributed stuff.... like cryptography, stenography, and stuff across a decentralized network... functioning as one OS. 
01:13:38 <Figs> I'm just stumbling 
01:14:06 <Figs> "Analyze license agreements for interesting words and phrases" 
01:14:17 <RodgerTheGreat> but the entire discussion did produce one of my nicer creations: Def-BF! It's Brainfuck with pointers! woo 
01:14:30 <oerjan> there are two different ways in which BF can be Turing complete. either you can have unbounded tape length, or you can have unbounded cell size. 
01:14:38 <SevenInchBread> ...and like... a less boring operating system. BASED ON THE WILL OF GODDESS. 
01:22:57 <SevenInchBread> hmm... so... taking a tip from Erlang here... any sort of process will have message passing in cues... 
01:24:44 <SevenInchBread> ...aaaand... files are more like hash tables than actual files... HASH TABLES OF LINKED LISTS... IF YOU'D LIKE 
01:29:27 -!- calamari has joined. 
01:31:56 <oerjan> speaking of cue-based message systems... 
01:33:47 <Figs> like, cue ball? :P 
01:36:05 <oklopol> cue-based.... isn't that like event based? 
01:36:25 <oerjan> hm... guess you are right 
01:36:42 <oerjan> too boring. balls it is then. 
01:37:05 <oklopol> i'm reading a book called programming the universe 
01:37:05 <Figs> http://www.cartalk.com/content/features/hell/Bestof/mit-letter.html 
01:37:19 <Figs> cue as in... actions O.o 
01:37:43 <SevenInchBread> the main problem with hash tables and stuff is that hard disks have slower seeking times than active memory. 
01:37:55 <SevenInchBread> so... pointer-based structures are inherently slower to traverse. 
01:38:06 <Figs> http://www.m-w.com/cgi-bin/dictionary?va=cue 
01:38:16 <SevenInchBread> ...but, it shouldn't be hard to stuff all the data close to each other...  
01:38:55 <Figs> http://www.m-w.com/cgi-bin/dictionary?va=queue 
01:47:03 <oklopol> hmmmm.... i just figured out why it's impossible to make a general algorithm for the shortest possible way to produce a string 
01:47:25 <oklopol> and.... i now see i was quite stupid to take so long :D 
01:50:11 <SevenInchBread> I BELIEVE I WILL NEED TO MINDS OF MANY GENII TO PULL THIS ONE OFF 
01:50:21 <SevenInchBread> MAINLY BECAUSE I KNOW NOTHING ABOUT ASSEMBLY OR HARDWARE. 
01:52:21 <oklopol> i think i read the first 100 or something pages of http://www.intel.com/design/pentium/manuals/24319101.pdf 
01:52:53 <Figs> "What does a dog do that a man steps into?" 
01:53:00 <Figs> I don't get it. 
01:53:25 <oklopol> panting is the act of making an inhaling sound and drooling 
01:54:00 <SevenInchBread> oklopol,  ....that's far too much boring crap for me to read. 
01:54:33 <oklopol> but i didn't understand it anymore at some point 
01:54:41 <RodgerTheGreat> if you guys help me create a Bullet -> x86 compiler, I shall gladly write you a Kernel for this brave new operating system! 
01:54:59 <oklopol> you make the spec first :) 
01:56:29 <RodgerTheGreat> and I'm contemplating the inclusion of labels and gotos. They're useful and simple to compile, but most people don't use them properly 
01:56:33 <SevenInchBread> ...I was thinking about doing some nifty self-modifying crap.... like Synthesis. 
01:56:52 <RodgerTheGreat> they might end up morphing into a better version of break statements 
01:57:53 <SevenInchBread> ...the only reason assembly is sane to code in is macros. 
01:57:58 <RodgerTheGreat> I'm trying to weigh the benefits of having them with the havoc shitty programmers would cause with them 
01:58:14 <oklopol> asm is a pretty good language 
01:58:23 <Figs> I need to learn asm :P 
01:58:23 <RodgerTheGreat> GOTOs are almost as dangerous as pointers, but for a different reason 
01:58:32 <Figs> I forgot it all 
01:58:41 <SevenInchBread> RodgerTheGreat,  Never restrict anything just cause people might use them. ;) 
01:59:22 <Figs> RTG: Assembly is ALL goto statements ;D 
01:59:28 <Figs> (and some other stuff) 
01:59:36 <RodgerTheGreat> the most useful things you can do with gotos are computed jumps (fuck pointers) and escaping from deep logic. 
01:59:36 <oklopol> loops have been there for ages 
01:59:48 <oklopol> plus, actually, for_eaches 
01:59:49 <RodgerTheGreat> so I might make more specialized versions for those two purposes 
02:00:06 <Figs> oklopol... are we talking about the same assembly language? 
02:00:11 <oklopol> well... there are functions. 
02:00:20 <oklopol> i don't know what macros are 
02:00:49 <oklopol> a function is a number indicating the position of a function in the memory 
02:01:04 <oklopol> you just stuff stuff on the stack and change execution to that function 
02:01:22 <oklopol> then when returning, put stuff on the stack or in a register 
02:01:39 <RodgerTheGreat> function pointers seem really useful to manipulate at runtime, but insanely easy to fuck up in subtle ways 
02:01:39 <oklopol> returning: store current code pointer on the stack when calling the funciton 
02:01:54 <oklopol> fucking up is a matter of debugging 
02:02:06 <Figs> what asm are you using? 
02:02:29 <oklopol> well... when i was little i made a program that beeped randomly 
02:03:08 <oklopol> and i've read a few books about asm, though mostly about the technical part 
02:03:18 <oklopol> BUT you are wrong to say asm hasn't got functions 
02:03:52 <oklopol> it has concurrency (because of quite a direct metaprogramming) as well 
02:04:53 <oklopol> in asm it's very easy to do continuations too 
02:05:04 <oklopol> functional programming is easy 
02:05:33 <Figs> I wrote a hello world program once 
02:05:34 <oklopol> i've been thinking of making darkasm, an interpreted asm-like programming language 
02:06:23 <oklopol> i don't know asm spesifics well 
02:06:32 <oklopol> i couldn't make a compiling program 
02:06:39 <Figs> why not compile to C? 
02:06:41 <oklopol> unless the empty program is legal 
02:06:45 <Figs> it's more portable, anyway 
02:07:10 <oklopol> bullet -> c -> asm at least 
02:07:16 <oklopol> asm because it's for the os 
02:07:29 <Figs> you can do system programming in C 
02:07:39 <Figs> it's meant to be portable assembly 
02:07:49 <RodgerTheGreat> you guys *do* realize bullet is meant as a *replacement* for C, right? 
02:07:56 <SevenInchBread> hmmm... interesting... I've never seen functions in what little I've touched of asm. 
02:08:08 <oklopol> yes, but we also realize c has good compilers 
02:08:27 <Figs> I don't think Asm has functions... 
02:08:30 <Figs> but you can make them :D 
02:08:35 <oklopol> it's a substitute for c programming, compilation is different 
02:08:42 <Figs> I think it has proceedure calls :P 
02:08:57 <RodgerTheGreat> I made bullet because I thought C had antiquated syntax and compiler technology 
02:08:57 <Figs> if I remember right 
02:08:59 <SevenInchBread> ...I'm fine with C myself... it might be fun to actually use it once. 
02:09:21 <oklopol> that will autodo all address savings etc 
02:09:49 <oklopol> procedure==function if you can access the call stack directly 
02:10:16 <oklopol> RodgerTheGreat i understand, but i'm afraid none of us know any asm really 
02:10:35 <oklopol> since i feel like i know most of us.... and i don't know any 
02:10:56 <oklopol> now... what's an asm macro? 
02:11:14 <SevenInchBread> it's just like... a thing that takes args, and substitutes in some code. 
02:11:18 <RodgerTheGreat> I have a fairly good understanding of ASM programming in general, I just don't have much platform-specific instruction set knowledge 
02:11:49 <oklopol> but anyway, that's not necessary 
02:12:25 <Figs> I guess what I'm saying is 
02:12:27 <oklopol> RodgerTheGreat well, you prolly have about the same backround as me then 
02:12:32 <SevenInchBread> well... sometimes functions arne't necessary... macros have the benefit of being compiled before execution. 
02:12:38 <Figs> you have to manually impliment calling convention 
02:13:05 <oklopol> SevenInchBread you can use a calculator / paper for that 
02:13:22 <oklopol> handy, maybe, but redundant 
02:13:31 <RodgerTheGreat> I guess we could use a bullet->c compiler as a proof of concept for the language, and then we'd be able to play with the language as I tackle the slower task of building an actual compiler. 
02:13:46 -!- mvivian has left (?). 
02:14:06 <oklopol> well, if someone was to set me up an asm compiler, i might learn the language quite quickly 
02:14:21 <Figs> it's very easy to use 
02:14:50 <Figs> http://flatassembler.net/ 
02:15:58 <Figs> the problem of course though is 
02:16:10 <Figs> you'll need an assembler at some point :P 
02:16:15 <Figs> and maybe a linker 
02:16:19 <Figs> depending what you're doing 
02:16:54 <Figs> http://www.iecc.com/linker/ 
02:16:57 <Figs> a book on linking and loading 
02:17:11 <oklopol> http://class.ece.iastate.edu/cpre211/lectures/assembly_functions.htm asm functions.... though i have no idea what this page talks about 
02:17:57 <oklopol> Figs you give me a fasm link and say i will also need an assembler? 
02:18:25 <Figs> if you make it compile to asm 
02:18:31 <Figs> you will still need an assembler 
02:19:14 <Figs> if I could learn x86 opcodes 
02:19:18 <Figs> then we'd be in business 
02:19:30 <Figs> if I remember right 
02:19:44 <Figs> I don't know all the specifics, but I do know at least 2 ways to call functions 
02:19:46 <oklopol> hmm... i could try and make a bf compiler 
02:20:05 <Figs> what really matters is who cleans up the stack 
02:20:11 <SevenInchBread> I'd imagine so.... functions are actually using assembly to do its magic... where macros are substituted in during assembling. 
02:20:51 <oklopol> cdecl == caller clears, stdcall == callee clears iiird 
02:20:52 <Figs> does the function clean up the stack after itself, or does the caller clean up the stack after calling the function? 
02:21:27 <oklopol> cdecl changed the convention for varargs 
02:21:53 <oklopol> all my sentences will, from now on, have an implicit iirc, for the rest of my life. 
02:21:54 <Figs> the number of args (variable vs fixed) is one consideration 
02:22:17 <oerjan> and thereby ruined tail call optimisation 
02:22:46 <oklopol> Figs: if i recall correctly 
02:23:13 <oklopol> macros are nothing special 
02:23:38 <oklopol> any decent ide should have a general purpose macro system. 
02:24:04 <oklopol> though, from what i've seen there is no such thing today as a decent ide 
02:24:42 <oklopol> oerjan you can make exceptions though, since you can use stdcalls in c 
02:24:58 <Figs> if you do that, you need to make the hardware too :P 
02:25:18 <SevenInchBread> no no I mean... an assembler... basically a compiler into assembly opcodes. 
02:25:35 <oklopol> that'd be like saying you have to breed your own population of people to be able to create a new esperanto 
02:26:30 <Figs> it'd be more interesting if we had to figure out how to make his hardware work 
02:26:43 <oklopol> a friend of mine created this language called zx3, he's thinking of adopting a few chinese kids now to teach it to 
02:26:48 <Figs> send pulses into the bus... 
02:26:55 * SevenInchBread tries to think at stuff he's good at in making an OS... 
02:27:33 <SevenInchBread> ..ummm... basically just parsing and networking... and code obfuscators. 
02:28:48 <Figs> you're good at networking? :D 
02:29:51 <SevenInchBread> and I can make a kickass text-based adventure game... for like a GUI or something. 
02:30:25 <oerjan> is stdcall part of the C standard? 
02:30:40 <oklopol> oerjan __stdcall int func(args){} 
02:30:44 <Figs> I don't think so 
02:31:00 <Figs> but it is important for practical programming 
02:31:01 <oklopol> hmm... might be a part of the c++ standard actually :) 
02:31:10 <Figs> I very much doubt it 
02:31:23 <SevenInchBread> ...but... the only language I've honestly ever used for anything practical is Python. 
02:31:23 <oklopol> and... might be it's c but it's not standard 
02:31:23 <oklopol> i think the last one ^^^^^^^^ 
02:31:29 <SevenInchBread> I simply know how the rest of them work... but I have no experience using them. 
02:32:08 <Figs> it's, and I quote, "Microsoft Specific" 
02:32:21 <Figs> http://msdn2.microsoft.com/en-us/library/zxk0tw93.aspx 
02:34:01 <Figs> __cdecl is the default convention 
02:34:57 <Figs> it would seem there is also __fastcall 
02:36:57 <Figs> http://en.wikipedia.org/wiki/Calling_convention 
02:37:49 <oklopol> can't compile towers of hanoi 
02:38:13 <SevenInchBread> so... here's what I've got so far... some ideas that probably won't be around till much later. 
02:38:56 <oerjan> ah.  stdcall and cdecl are available in gcc for i386 
02:39:21 <Figs> there is also fastcall 
02:40:49 <oklopol> wow something actually compiled 
02:41:10 <Figs> did you make a .com? 
02:41:25 <oklopol> 30 lines, an msgbox hello world, exe 
02:42:23 <oklopol> exactly 30 actually, i just picked a random number 
02:42:44 <Figs> http://en.wikipedia.org/wiki/Name_decoration 
02:43:02 <oklopol> this is the main code, it seems :P 
02:43:21 <oklopol> now... where have i seen this before... 
02:43:37 <Figs> that would call the Windows API MessageBox() function with 4 args 
02:43:48 <Figs> 0, _caption, _mesage, and 0 
02:43:56 <Figs> if I remember correctly, 
02:43:59 <Figs> the first is the parent 
02:44:01 <Figs> second is caption 
02:44:03 -!- oklobot has joined. 
02:44:03 <Figs> 3rd is message 
02:44:12 <Figs> and 4th is the style 
02:44:19 <oklopol> !exec "caption" "message" PrntNl 
02:44:36 <oklopol> i just realized there are no msgboxes neither in oklobot nor in irc 
02:45:05 <Figs> http://en.wikipedia.org/wiki/Name_decoration 
02:45:15 <Figs> it's like MB_OK 
02:45:29 <Figs> you can binary OR styles together 
02:45:33 <Figs> to create more complex styles 
02:45:41 <Figs> but I don't remember any of them :P 
02:47:00 <Figs> MSDN is so friggen slow :P 
02:47:33 <SevenInchBread> ...a good thing to set up first would be a way to spit out info to the screen... for the crumbing of breads. 
02:47:52 <Figs> if you're doing COM programming 
02:47:57 <Figs> just use int 21h 
02:48:06 <Figs> it's old but it works 
02:48:15 <Figs> I don't remember the variable 
02:48:22 <Figs> but it gives you $ terminated strings 
02:49:27 <Figs> try setting the style to  
02:49:30 <Figs> MB_YESNOCANCEL 
02:49:37 <Figs> or MB_ICONERROR 
02:50:56 <oklopol> !exec "!exec ""34ChrDblRotAddDblAddRotRotAddDblAddSwpAddPrntNl"34ChrDblRotAddDblAddRotRotAddDblAddSwpAddPrntNl 
02:50:57 <oklobot> !exec "!exec ""34ChrDblRotAddDblAddRotRotAddDblAddSwpAddPrntNl"34ChrDblRotAddDblAddRotRotAddDblAddSwpAddPrntNl 
02:51:32 <oklopol> SevenInchBread "int" means interruption, it's a kind of a function in asm... 
02:51:37 <Figs> !exec "MessageBox" PrintNl 
02:52:08 <oklopol> do not omit Nl for multiple prints per line. 
02:52:24 <oklopol> !exec "asd ""foo"AddPrntNl 
02:52:24 <Figs> !exec "Hello World" PrntNl 
02:52:43 <Figs> 5 second latency 
02:53:07 <oklopol> !exec 1 1 8[RotRotDblRotAddRot1SubDbl]Drp""Rot[RotRotSwpDbl"-"SwpAddRotAddRotRotSwpDblRotSwpSubSwpRotRotDbl]DrpAddPrntNl 
02:53:19 <oklopol> !exec 0 10[Dbl1SubDbl]Drp[MulSwpDbl]DrpPrntNl 
02:53:27 <oklopol> !exec 0 2[Dbl1SubDbl]Drp[MulSwpDbl]DrpPrntNl 
02:53:30 <oklopol> !exec 0 3[Dbl1SubDbl]Drp[MulSwpDbl]DrpPrntNl 
02:53:42 <Figs> !exec 2[Dbl]PrntNl 
02:53:44 <SevenInchBread> I was just... generally confused about what we were talking about. 
02:54:09 <Figs> !exec 0 2[Dbl]DrpPrntNl 
02:54:30 <oklopol> SevenInchBread he just said you can output with interruption 21h 
02:54:43 <Figs> it's a DOS command 
02:54:48 <Figs> to output characters to the string 
02:54:56 <Figs> (among other things) 
02:55:01 <Figs> int 21h does a crap load of stuff 
02:55:09 <SevenInchBread> the apple - it's like a pear... but shaped differently. 
02:55:17 <oklopol> that's exactly what my book said 
02:55:45 <oklopol> Figs i think it's the OS int 
02:56:13 <Figs> to quit the program 
02:57:31 <oklopol> can you write me a non windowed hello world? 
02:58:04 <Figs> let me fire up fasm 
02:58:07 <Figs> it has been ages... 
02:58:19 <oklopol> like... mov ax, smth \n int 21h \n data db "Hello, world!",0 ? 
02:58:26 <SevenInchBread> memory management could probably draw on some spiffy mathematical properties... to associate virtual to physical memory. 
02:58:27 <oklopol> but then you need a lot of weird stuff 
02:59:10 <SevenInchBread> ...anything in programming that can be solely described in some form of arithmetic is usually blindingly fast. 
02:59:42 <SevenInchBread> anytime you need a number... use a number related in some way to 5. 
03:01:20 <Figs> what is the ascii for 'a'? 
03:02:14 <oerjan> this reminds me of the old puzzle - to write any number from 1 up to something using 4 4's 
03:02:53 <Figs> I got a way to put an 'a' on the screen 
03:03:10 <Figs> sure, but it is a poor way of doing things :P 
03:03:31 <Figs> http://rafb.net/p/Psz7PD47.html 
03:03:43 <Figs> no... I didn't use the other thing 
03:04:16 <Figs> I am working on a slightly better way 
03:04:37 -!- Sukoshi has quit ("."). 
03:06:02 <SevenInchBread> 11100000  is a beautiful number...  as is 10101000 and all its various adjustments. 
03:06:15 <oklopol> oerjan can you use any lambdas in that game? 
03:06:37 <oklopol> <insert lambda> 4 <insert lambda> 4 <insert lambda> 4 <insert lambda> 4 
03:08:12 <oerjan> well the usual version starts with arithmetic. if you put on to many operations you eventually reach the point where you can make a trivial recursive pattern to get everything. 
03:09:33 <Figs> almost got it now... 
03:09:38 <Figs> just need to remember how to do pointer arithmetic 
03:14:36 <Figs> we're trying to print "Hello World!" 
03:15:10 <Figs> it doesn't like me 
03:15:17 <Figs> illegal instruction 
03:15:58 <Figs> that's what I'm doing 
03:16:22 <Figs> or did that not make sense? 
03:16:27 <Figs> ok... what I'm trying to do is: 
03:16:36 <Figs> define a sequence of bytes 
03:16:42 <Figs> "Hello World!\0" 
03:16:47 <SevenInchBread> I think if you had a sort of thin language atop assembly to deal with large amounts of data... like a high-level macro-language for plotting out assembly instructions... you could do some nifty stuff. 
03:16:47 <Figs> and print that 
03:17:08 <Figs> that's the idea behind C, I think... 
03:17:10 <oklopol> SevenInchBread it's called c 
03:17:29 <Figs> you have direct access to assembly 
03:17:43 <oklopol> that compiler when you select something and click ctrl 
03:18:52 <oklopol> 4-4+4/4, 4/4+4/4, (4+4+4)/4, 4*(4-4)+4, 4!/4-4/4, (4+4)/4+4, 4+4-4/4, 4*4-4-4, 4+4+4/4, 4*4-(4!/4), (4!+4)/4+4 
03:19:16 <SevenInchBread> basically... you're still writing assembly... but you also have a macro language with some high-level constructs for substituting in instructions... like you could have an entire "string" macro of some sort... to make strings by using macro loops and stuff. 
03:19:17 <oklopol> i couldn't think of another way to do 5 
03:19:53 <Figs> 4+4+4 doesn't work for you? 
03:19:58 <oklopol> but.... SevenInchBread i think c is kinda thattish 
03:20:14 <oklopol> otherwise it's ridiculously trivial 
03:20:27 <oklopol> (4/4)*n, where n is teh num 
03:21:06 <SevenInchBread> basically what this would be is... the instructions for how you want your code to compile to assembly...  
03:21:22 <oklopol> int dbl(int a){_asm mov ax,a;_asm mul ax,2;_asm mov a,ax;return a} 
03:21:26 <oklopol> int dbl(int a){_asm mov ax,a;_asm mul ax,2;_asm mov a,ax;return a;} 
03:21:37 <Figs> actually, it is asm {}, I think 
03:21:40 <oerjan> oh right - you can use things like 44 as well. 
03:21:43 <Figs> but i have never used it 
03:22:03 <Figs> I could be wrong 
03:22:06 <oklopol> Figs _asm <instruction>; or _asm {instruction \n instruction \n etc} in microsoft at least 
03:22:19 <Figs> yeah, I don't use microsoft 
03:22:25 <Figs> I may be thinking of C++'s asm 
03:22:39 <Figs> that is 5 fours, oklopol 
03:22:40 <SevenInchBread> The macros  would be like a string manipulation language of sorts... with the return value being the  assembly instructions...  
03:23:44 <oerjan> of course when doing this as a "family" puzzle some of the point is to know the most operations, but I think in present company that constitutes overkill 
03:23:48 <oklopol> 11 i have already... if ! is ok 
03:23:57 <Figs> 4*4-(sqrt 4)-(sqrt 4) 
03:24:29 <oklopol> or, at least if it is, ! is definately ok 
03:24:43 <Figs> so, is it multiples of 4? 
03:24:56 <oklopol> anyway, i was a lot faster than you, and that's the most important 
03:25:04 <Figs> I only just started :P 
03:25:16 <oerjan> i don't remember exactly.  It may be that it is up to 4 4's, but definitely not more 
03:25:44 <SevenInchBread> hopefully this has nothing to do with the OS... I will NOT permit the rampant use of 4s in the OS. 
03:25:50 <oklopol> don't jump to easy numbers 
03:26:16 <oklopol> SevenInchBread i'm sorry to tell you this but it's going to consist entirely of fours :\ 
03:27:23 <Figs> I think I remember doing this in 5th grade 
03:27:41 <oklopol> i think i got up to 8 or smth 
03:27:41 <Figs> we did a lot of puzzle type math in 6th grade 
03:27:44 <Figs> and it got annoying 
03:28:08 <oklopol> energy drinks kill the brain 
03:28:45 <Figs> another way to get 12 
03:29:13 <Figs> let's see here :P 
03:29:26 <oklopol> 44/((4+4)/4)=4*4-(sqrt 4)-(sqrt 4)=4!-4-4-4 
03:29:46 <Figs> 16 is easy too 
03:29:55 <Figs> 17 you did already 
03:30:39 <Figs> 4! -4 -sqrt(4) 
03:31:09 <oklopol> if less than 4 can be used, which indeed is the case i guess :P 
03:31:27 <Figs> let's do 18 again 
03:31:30 <Figs> and do it right 
03:33:41 <Figs> 44/4*sqrt(4)-4 
03:34:04 <Figs> 44/4+4+4 = 19, btw 
03:36:23 <Figs> (4^4)/(4!)*4 = 42.666... 
03:36:44 <Figs> we're trying to get 18 
03:36:49 <Figs> I already did 19 
03:37:00 <Figs> right above [16:32:10] Figs: 44/4+4+4 = 19, btw 
03:37:01 <Figs> [16:32:47] * SevenInchBread wins. 
03:37:01 <Figs> [16:33:28] SevenInchBread: ...23 is al 
03:38:51 <Figs> 4!-4-4+sqrt(4) 
03:39:37 <oklopol> ...i thought we tried to do without sqrt 
03:39:45 <oklopol> i found that sqrt thing :\ 
03:39:56 <oklopol> but.... hey Figs found this already 
03:40:28 <oklopol> i found it just now, but thought it's no good 
03:40:37 <Figs> I'm using sqrt 
03:40:37 <oklopol> because that was the thing we decided to make better 
03:40:44 <Figs> since I can't think of another way 
03:40:53 <Figs> but no cubed rutes 
03:42:05 <Figs> I think we did 23 already 
03:43:10 <SevenInchBread> http://en.wikipedia.org/wiki/Register_Transfer_Language 
03:44:12 <Figs> in any case... 4!-(sqrt(4))+4/4 
03:47:13 <Figs> I like mine better :P 
03:47:28 <Figs> is that right? 
03:47:59 <Figs> 4!+s(4)+s(4)+s(4) 
03:50:43 <Figs> (4!)/4+(4!)/4 = 12 
03:51:14 <Figs> I LIKE TALKING IN CAPS LOCK TOO :D 
03:51:31 <Figs> I AM NOT INTO GUYS 
03:51:54 <Figs> help us solve 31 
03:52:41 <Figs> 44/4 + 4! = 35 
03:53:04 -!- wooby has quit. 
03:53:06 <Figs> f(4)/4 * f(4)/4 = 36 
03:53:21 <Figs> 4!+4!-(4*4) = 32 
03:53:25 <oklopol> f(4)+4+4+4 = 36, f(4)+4+4+s(4) = 24 
03:54:09 <Figs> f(4)+(f(4)/4)+4 = 24 
03:56:20 <Figs> we need to finish 31 
03:56:52 <oklopol> i've done that a million times :P 
03:57:01 <oklopol> but though OH HE DID IT DAMN! 
03:58:17 <Figs> sqrt(4)*4^2 - (4/4) 
03:58:26 <Figs> if you allow ^2 
03:59:11 <Figs> let's see if there's another way 
03:59:26 <oklopol> all my attempts crash at 4*4 taking 2 numbers 
03:59:36 <oklopol> oerjan comes in and pwns us all :) 
04:00:12 * oerjan has been reading lots of mad science webcomics 
04:01:44 <Figs> 44-(4!-4) = 24 :p 
04:02:22 <Figs> I'm tempted to say we allow ^2 
04:02:29 <Figs> just so we can move on 
04:02:44 <oklopol> well, it's obvious we'll have to constantly increase the amount of operators 
04:02:50 <oerjan> nah. definitely nothing is allowed whose mathematical notation contains a digit other than 4 
04:03:18 <oklopol> oerjan now give us 31 or stop ruining our fun :) 
04:03:46 <Figs> 4!^(4-(4/4)) = 13,824 
04:04:29 <Figs> but it's probably useless :P 
04:05:03 <Figs> got another idea 
04:05:08 <Figs> if you find a way to do something w/ 3 
04:05:17 <Figs> use derivative :P 
04:07:02 -!- ShadowHntr has joined. 
04:08:21 <Figs> I looked up a way to do it 
04:08:32 <Figs> it required a different operator 
04:08:54 <Figs> if we allow .4 
04:08:56 <Figs> it is possible 
04:09:04 <Figs> but you will have to figure out how 
04:09:20 <Figs> (and that version allowed ^2 for somethings, but I don't think used it for that) 
04:09:52 <Figs> no, that uses a 4 
04:10:05 <Figs> only uses 1 four 
04:10:14 <Figs> I forgot the solution already 
04:10:23 <Figs> *tries to figure it out* 
04:10:34 <oklopol> we'll try until you REMEMBER or we others figure it out 
04:10:41 <oklopol> because you figuring it out now 
04:10:46 <oklopol> would be merely remembering. 
04:11:13 <Figs> yeah I got it again 
04:11:25 <Figs> 4!+sqrt(4)+(sqrt(4)/.4) = 31 
04:12:05 <oklopol> yeah... 5 is one of the numbers i've been wanting 
04:12:11 -!- sekhmet has quit ("omgp90"). 
04:12:20 <Figs> s(4)/0.4 * 4/4 
04:12:36 <Figs> do we have 33? 
04:12:46 <Figs> I have a solution 
04:12:56 <Figs> 4!+4+(sqrt(4)/.4) 
04:14:00 <oklopol> (i just pasted 32 35 and 36 here) 
04:14:45 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 
04:15:26 <Figs> 4*4/0.4 -s(4) = 38 
04:16:11 <Figs> let's see if we can get to 100 
04:17:13 <Figs> hmm, let's make this more readable 
04:22:48 <Figs> 4^2 +4^2 + 5 = 37 
04:22:54 <Figs> if we allow ^2 
04:23:15 <Figs> what if we allowed bar? 
04:23:27 <Figs> .444444......... 
04:23:43 <Figs> usually you put a - over the 4 
04:23:49 <Figs> we could do .4` 
04:24:01 <oklopol> i thought like foo's brother bar 
04:26:31 <Figs> (24 / .4` ) - (4*4) = 38 
04:27:22 <oklopol> (lambda a:2**a+a)(s(4)/(.4)) 
04:27:59 <Figs> I think I did a way requireing only square as the weird thing we disallowed 
04:28:22 <oklopol> yeah, that's make it trivial 
04:28:34 <Figs> 4^2 +4^2 + s(4) / .4 
04:28:55 <oklopol> yeah, exactly that actually :D 
04:29:35 <oklopol> well.... we'll allow that and let oerjan slap us with his large trout if he doesn't like it! :D 
04:29:45 <Figs> so we can do ^2? 
04:29:53 <Figs> I think we'll need it higher up 
04:29:55 <oklopol> though i'm pretty sure that's a mirc feature 
04:30:15 * oerjan slaps oklopol with a large trout 
04:30:26 <Figs> do you have a better way oerjan 
04:30:28 <oklopol> well... i kinda like the idea of having lambdas... THOUGH might get quite easy :DD 
04:31:15 <Figs> Z(4,4,4,4) = 37 
04:31:47 <oklopol> hmm... does unlambda have a wimpmode like `p4 -> 4, ``s``a424 -> 2? 
04:32:54 <oklopol> now 38, we'll stick with that 37. 
04:32:56 <Figs> 44/(.4')-4 = 95 
04:33:51 <Figs> yeah... I just got mixed up 
04:34:09 <Figs> so, assuming we can use squares 
04:34:14 <Figs> I'll use @ to mean square 
04:36:07 <Figs> I know it is ^2, but what word? 
04:36:29 <Figs> so, we have 40 next! 
04:36:30 <oklopol> felt right... but i don't know 
04:37:16 -!- sekhmet has joined. 
04:37:38 <Figs> I used 5 fours 
04:38:46 <Figs> one letter functions are single ops, right? 
04:39:13 <Figs> d(4)/b(4) = 36 
04:40:29 <Figs> 44... I did 44 didn't I? 
04:42:23 <oklopol> i'm afraid of oerjan since this is his game, i feel like we are raping him while he's not watching 
04:42:38 <Figs> the version I looked up had d() in it 
04:42:43 <oerjan> it's not like i invented it or anything :) 
04:42:51 <Figs> yeah, I've played it before 
04:42:56 <Figs> though I think I only went to 20 
04:43:01 <Figs> that was a pain in the ass :P 
04:43:37 <oklopol> 44+s(4)+s(4) 48 (again prolly) 
04:44:00 <oerjan> i was thinking about the combination function for binomial exponents 
04:44:42 <oerjan> (n over m) = n!/(m! * (n-m)!) 
04:45:03 <Figs> two things at once 
04:45:49 <oerjan> for this puzzle i mean 
04:46:13 <Figs> what are we up to? 
04:46:28 <Figs> oh, that's easy 
04:46:51 <Figs> I got a way with 5 by mistake 
04:48:17 <Figs> ah so easy! yeah ... 
04:50:19 <Figs> f(4)/.4 - 4/b(4) - 51 
04:51:20 <Figs> f(4)/b(.4) *4/4 = 54 
04:52:08 <oklopol> we have so many numbers it's becoming easy :) 
04:54:26 <Figs> ah, I'm too slow :P 
04:55:12 <Figs> d(4)*4 - (4/4) 
04:55:36 <Figs> d(4)*4 * 4/4 = 64 
04:55:57 <Figs> d(4)*4 + 4/4 = 65 
04:56:42 <oklopol> "4*4*4" damn that's too long..... 
04:57:09 <oklopol> d(4)*4 + 4/s(4) = 66 i mean 
04:58:28 <Figs> how to make 60 again? 
05:00:54 <Figs> f(4)/b + d(4) - s(4) = 68 
05:06:00 <Figs> well, remember, we can use f() d() and b() and s() as functions of other things too 
05:07:41 <Figs> I think I got one 
05:09:06 <Figs> d(4/b(.4))-(4/b(4)) = 72 
05:10:34 <Figs> but I did find something cool 
05:11:00 <Figs> 44 / s(b(4)) = 66 
05:11:11 <Figs> only uses 3 fours though 
05:11:36 <oklopol> darn, i had all the functions in python... now i crashed it :) 
05:12:08 <oklopol> oerjan what's your haskell interpreter like btw? 
05:12:34 <oklopol> since the reason i'm not using haskell is i can easily use the python interpreter, the haskell interpreter sucks 
05:13:53 <oklopol> i'm making a list of the shortest possible way to construct a number 
05:14:01 <oklopol> http://pb.vjn.fi/p363163442.txt 
05:14:12 <oklopol> i think you can do it with 2 
05:14:30 <oklopol> since i'm forgetting some nice ways to do numbers 
05:14:41 <Figs> d(4) -( 4 / b(4)) 
05:15:07 <Figs> b(.4) , I mean 
05:15:21 <Figs> well, I guess b(4) makes sense too :P 
05:15:27 <Figs> since 44444444.... is useless 
05:15:43 <Figs> 44 / s(b(44)) = 66 
05:15:58 <Figs> .44 44 44 44 44 
05:16:40 <Figs> the rest of the people here are going to hate us :P 
05:16:44 <Figs> when they see the size of their logs 
05:17:12 <oklopol> i think they'll find this most entertaining 
05:18:11 -!- oerjan has quit ("Lost terminal"). 
05:18:42 -!- RodgerTheGreat has quit. 
05:19:15 <oklopol> i think these are pretty good... but i'd like to have allz 
05:19:40 <oklopol> wanna copy/paste all from the logs? :X 
05:19:53 <Figs> that's the kind of thing that awk and sed should be used for 
05:20:13 <Figs> if only we'd been nicer :P 
05:20:18 <Figs> and put = on all lines with answers 
05:20:35 <Figs> well, let's see 
05:20:39 <Figs> did you add that to the file? 
05:23:20 <Figs> make rules for 24, 36, 54, 60, and 81 
05:23:26 <Figs> since we have those 
05:23:36 <Figs> and whatever is obvious from those 
05:23:59 <Figs> my server is slow is why 
05:25:52 <Figs> http://student.hpa.edu/~cmcfarland/bits.txt 
05:28:43 <Figs> that'd give you 5 
05:29:14 <oklopol> let's allow lambdas, (lambda a,b,c,d : <function here>)(4,4,4,4) 
05:29:20 <Figs> how do I unsuspend a job? 
05:29:35 <Figs> I don't understand lambdas :( 
05:29:46 <oklopol> lambda is just a nameless function 
05:30:37 <oklopol> (\ a, b, c, d -> a + b) 4 4 4 4 would be 8 
05:30:50 <oklopol> the lambda is called with 4,4,4 and 4 
05:31:23 <oklopol> that was a haskell lambda (almost at least) 
05:31:30 <Figs> but I think that's kind of cheating :P 
05:31:46 <oklopol> since it actually means infinite 4's 
05:32:07 <oklopol> making n (4/4)+(4/4)+(4/4)... 
05:32:07 <Figs> well, that's another sort of problem 
05:32:10 <Figs> for our next game 
05:32:44 <Figs> shortest possible 
05:33:01 <Figs> if you can find a way to work it 
05:33:04 <oklopol> we can start having unlambda competitions 
05:33:07 <Figs> but it adds to the count 
05:33:18 <Figs> I could write a simple interpreter for this :D 
05:33:42 <Figs> I mean, specifically 
05:33:44 <Figs> for the 4's game 
05:33:52 <Figs> (with an ini file for the number worked with) 
05:34:05 <Figs> once you do something like 
05:34:18 <Figs> it counts the number of x's needed to do it 
05:34:38 <Figs> and would create a set of observers 
05:34:45 <Figs> to update dependancies 
05:34:57 <Figs> so if you find a faster way to do 3, for example 
05:35:01 <Figs> and 17 relies on 3 
05:35:06 <Figs> 17 gets faster :D 
05:35:36 <Figs> could get very complicated :P 
05:35:50 <Figs> I'll try that later 
05:35:53 <Figs> now, let's find 67 
05:36:47 <Figs> is there a faster way to do 36 than d(4+s(4))? 
05:37:35 <oklopol> you can't do 32 with ONE 4 
05:38:31 <oklopol> you might be able to do anything with just one 4 
05:39:05 <Figs> you can do it with 2 easily 
05:39:39 <oklopol> you have factorization, squareroot and square 
05:39:57 <oklopol> you might be able to make any number with those 
05:40:15 <oklopol> assuming factorization is generalized for non natural numbers 
05:40:26 <Figs> you mean factorial, I presume? 
05:40:42 <Figs> factorization is like, 36 = 6*6 = 3*2*3*2... 
05:40:51 <oklopol> let's have a factorization function though 
05:41:17 <Figs> how did i do 54? 
05:41:18 <oklopol> i know what factorization is, i just confuse terms :) 
05:41:57 <Figs> no, the short way ;) 
05:44:27 <Figs> I'm updating my rules list 
05:44:39 <Figs> to include bigger ones 
05:45:07 <Figs> can you access it still? 
05:45:57 <oklopol> i could make a pagebin on vjn.fi 
05:46:07 <oklopol> so you could make pages quickly 
05:46:17 <Figs> well, I can update relatively quickly 
05:46:19 <oklopol> so... pastebin with mutability 
05:46:29 <Figs> it is just a matter of connecting to my school's network 
05:46:45 <oklopol> yeah, i mean for general usage 
05:47:08 <Figs> this is useful for me for now 
05:47:12 <oklopol> and... my usage, i can't connect to your school's network :) 
05:47:14 <Figs> that will probably grow faster 
05:47:28 <Figs> well, you probably could 
05:47:33 <Figs> the security isn't very good 
05:47:37 <Figs> but I wouldn't recommend it 
05:47:59 <Figs> then I need to go to bed 
05:48:04 <oklopol> i wouldn't... but fucking 67 
05:48:19 <Figs> I kept you up all night 
05:48:20 <oklopol> i'll start reading in a mo 
05:49:31 <oklopol> meh... i think i'll go read, i'll make a program to brute me 67 later today ;) 
05:55:28 <oklopol> Figs if you know asm && seveninchbread if you making the os, http://www.kernelthread.com/hanoi/ check out hanoi os 
05:55:40 <oklopol> (plus of course the others if you haven't yet) 
05:55:44 <Figs> my asm is crappy :) 
05:55:56 <oklopol> did you finish the hello world? 
05:56:03 <Figs> I forgot about that, lol 
05:56:07 <Figs> I got so caught up in this :P 
05:56:23 <Figs> I can't figure out why  
05:56:26 <oklopol> yeah... can't claim i've done anything else either :) 
05:56:26 <Figs> mov dl, ptr msg 
05:57:52 <Figs> (I have set AH to 02h) 
05:57:56 <Figs> it shouldn't matter 
05:58:18 <oklopol> so it just prints one char? 
05:58:34 <oklopol> but anyway, easy to do it with that 
05:58:39 <Figs> http://rafb.net/p/Psz7PD47.html 
05:58:48 <Figs> that's the idea 
05:59:09 <oklopol> BUT i'm pretty sure there is a way to print a whole string built-in... 
05:59:18 <Figs> if you want to terminate wtih $ 
05:59:20 <Figs> which I didn't want to do 
06:00:57 <oklopol> hmm... it'd be fun to do something like hanoimania with another problem 
06:00:59 <Figs> I am a fucking idiot! 
06:01:30 <Figs> I'm defining it in the code for goodness sakes 
06:01:34 <Figs> so it's executing 'a' 
06:01:55 <Figs> look where I have it 
06:02:10 <Figs> 'a' is the first instruction being called >.< 
06:02:14 <Figs> no seperation of code and data :P 
06:02:37 <Figs> that just skips some space for like, magic stuff :) 
06:02:52 <Figs> (ie, I need it, or it doesn't work, but I don't remember what it does ...) 
06:03:25 <oklopol> now why is 'a' the first instruction being called? 
06:04:16 <Figs> ok... if I looked at the output 
06:04:19 <Figs> it'd be something like 
06:04:29 <Figs> a 0xFE 0x21 ... 
06:04:51 <Figs> it put the byte, 'a', literally 
06:05:02 <Figs> so it see's OH, first instruction is "a" 
06:05:32 -!- calamari has quit ("Leaving"). 
06:05:38 <oklopol> actually... i still don't see why 'a' is the first instruction 
06:05:45 <oklopol> or... why would it be an instruction 
06:05:56 <Figs> put it in fasm 
06:06:02 <Figs> and look at the output 
06:06:04 <Figs> with a hex editor ;) 
06:06:12 <Figs> you will see 'a' there 
06:06:15 <oklopol> i assume you meant you were outputting values at address 97 in memory 
06:06:33 <Figs> it will make more sense 
06:07:49 <oklopol> it outputs 'a' as it's supposed to :O 
06:10:14 <oklopol> B402B261CD21B8004CCD21 is the .com 
06:10:32 <Figs> you didn't change it 
06:10:48 <Figs> (after org 100h) 
06:11:56 <oklopol> msg db 'a' means put 'a' here and substitute this address for every 'msg' in the code? 
06:12:10 <Figs> make the byte 'a' in the output  
06:12:14 <Figs> and when I refer to msg 
06:12:19 <Figs> refer to the address of that byte 
06:12:48 <oklopol> isn't that exactly what i said? 
06:12:48 <Figs> output = object code  
06:13:20 <Figs> I misread it :P 
06:13:29 <oklopol> thought so, i wasn't being that clear 
06:13:36 <Figs> I thought you wrote "substitute this" 
06:13:55 <Figs> (ie, replace msg with 'a' litterally, which it does not do) 
06:14:20 <oklopol> yeah, i almost wrote that, but corrected just before saying it 
06:15:20 <oklopol> but, i'm gonna go now :) check out the hanoi os if you have a spare machine or smth, i read the source, seems trivial -----> 
06:47:55 -!- ShadowHntr has quit ("End of line."). 
06:56:33 <Figs> http://rafb.net/p/SWRswb26.html 
06:56:42 <Figs> now I am going to bed! :P 
06:58:16 -!- na[zZz]gjunk has changed nick to nazgjunk. 
07:16:05 -!- Figs has quit (Read error: 110 (Connection timed out)). 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
10:16:15 -!- ais523 has joined. 
11:07:57 -!- ais523 has quit. 
11:09:58 -!- nazgjunk has quit ("going to backup some to prepare for almost full switch to linux"). 
11:24:18 -!- lament has quit (Read error: 54 (Connection reset by peer)). 
11:24:18 -!- lament_ has joined. 
11:24:32 -!- nazgjunk has joined. 
12:13:51 -!- jix has joined. 
12:22:30 -!- nazgjunk has quit (Read error: 131 (Connection reset by peer)). 
12:22:50 -!- nazgjunk has joined. 
12:27:38 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
12:30:41 -!- nazgjunk has joined. 
12:55:32 -!- nazgjunk has quit ("Leaving"). 
13:04:01 -!- nazgjunk has joined. 
13:38:24 -!- nazgjunk has quit ("Bi-la Kaifa"). 
13:44:08 -!- nazgjunk has joined. 
13:51:35 <SimonRC> http://student.hpa.edu/~cmcfarland/bits.txt 
14:54:41 -!- sirKIIdC has joined. 
14:55:25 <sirKIIdC> how I can give the bot brainfuck-script 
15:01:17 <oklopol> ~bf ++++++++[>++++++++<-]>+. 
15:01:29 <oklopol> if your mean any bot / bsmnt_bot 
15:04:43 <sirKIIdC> ~bf +++++++++++++++++++++++++++++++++++++++++. 
15:04:48 <sirKIIdC> ~bf ++++++++++++++++++++++++++++++++++++++++++++++++. 
15:04:56 <sirKIIdC> ~bf +++++++++++++++++++++++++++++++++++++++++++++++++. 
15:06:21 <oklopol> you seems to be a real brainfuck wiz 
15:10:21 -!- crathman has joined. 
15:13:08 -!- nazgjunk has quit ("Bi-la Kaifa"). 
15:52:38 -!- Figs has joined. 
15:53:28 <Figs> 40 byte hello world program 
15:54:37 -!- RodgerTheGreat has joined. 
15:54:55 <oklopol> !exec "Hello, world!"PrntNl 
15:55:43 <oklopol> i call it oklobot, since i never really named it 
15:56:19 <oklobot> LalaPRIVMSG #esoteric :LalaPRIVMSG #esoteric :Lala 
15:56:27 <Figs> oklopol -- did you see? I pasted code last night 
15:56:31 <oklopol> it fails if nl's are abused 
15:56:37 <oklopol> i did, but i've been reading all day 
15:57:11 <oklopol> now once again, oerjan's quine 
15:57:12 <oklopol> !exec "!exec ""34ChrDblRotAddDblAddRotRotAddDblAddSwpAddPrntNl"34ChrDblRotAddDblAddRotRotAddDblAddSwpAddPrntNl 
15:57:13 <oklobot> !exec "!exec ""34ChrDblRotAddDblAddRotRotAddDblAddSwpAddPrntNl"34ChrDblRotAddDblAddRotRotAddDblAddSwpAddPrntNl 
15:57:49 <oklopol> i remember adding something to that while keeping it quine still... but couldn't find a trivial way to do that 
15:58:19 <oklopol> something like: "look, an oklobot quine! :P" 
15:58:42 <Figs> quines give me headaches :( 
15:58:53 <Figs> imagine writing a program to write quines in assembly... 
15:59:19 <Figs> I'll bet quines are easy in Lisp 
15:59:32 <oklopol> Figs i think not especially 
15:59:50 <Figs> http://student.hpa.edu/~cmcfarland/bits.txt 
15:59:52 <Figs> RodgerTheGreat 
16:00:01 <Figs> some short-ish ways to do various numbers 
16:00:06 <Figs> we got stuck on 67 
16:01:04 <RodgerTheGreat> are you doing this entirely with 4s to attempt to generate numbers with bit-switching, or just for fun? 
16:01:23 <Figs> you must use four 4s 
16:01:27 <Figs> to make each number 
16:01:43 <Figs> these are just short ways so we can put them together for other ones 
16:02:32 <Figs> the short version... yeah 
16:02:42 <Figs> but for the game, 
16:02:44 <Figs> you would need 
16:02:46 <Figs> something like 
16:02:54 <Figs> (d(4)+d(4))*4/4 
16:07:00 <sirKIIdC> i am writing another interpreter for my language, wich is like whirl - it has two commands - 0 and 1 
16:13:56 <Figs> ( d(d(4)) +d(4)-4 ) / 4 = 67 
16:15:21 <RodgerTheGreat> does anyone think we could have success by writing a program to bruteforce these combinations? 
16:15:45 <Figs> maybe, but I wouldn't recommend it :P 
16:16:13 <Figs> you'd have to set up the entire program in a tree 
16:16:26 <Figs> with god knows how many levels of depth 
16:17:06 <Figs> I thought of another way to make the game last night 
16:17:31 <Figs> shortest combinations to get to n 
16:17:32 <RodgerTheGreat> I'd just say, 8 possible operations, a limit of nested functions, and a requirement to use 4 4s. 
16:17:57 <Figs> don't forget I can do things like 
16:18:30 <Figs> (d(d(d(d(d(d(d(d(4)))))))-s(4))*d(4)-d(4) 
16:19:06 <RodgerTheGreat> that's part of the "limit of nested functions" thing so the program doesn't i-loop 
16:19:10 <Figs> well, if you would like to write the program 
16:19:34 <Figs> there are 9 operations 
16:20:00 <Figs> +, -, *, /, s,d,f,b,^ 
16:20:11 <Figs> and you can use 44, .4, etc 
16:21:40 <Figs> f(4)+f(4)+f(4)-4 = 68 
16:23:58 -!- jix__ has joined. 
16:26:33 <Figs> (d(d(4))+f(4)-4)/4 = 69 
16:27:21 <Figs> 4*d(4)+4+s(4) = 70 
16:28:48 <Figs> (d(d(4))+f(4)+4)/4 = 71 
16:28:52 <Figs> we did 42 last night 
16:28:54 <Figs> let me look it up 
16:29:28 <Figs> it's shortcuts 
16:30:14 <Figs> oklopol: f(4)+f(4)-4-s(4) = 42 
16:31:37 <Figs> f(4)*(s(4)+4/4) = 72 
16:31:44 <RodgerTheGreat> will there ultimately be an esolang based on this concept, seeing as it appears you can use the 4x4 approach for virtually any number, at least <100 
16:32:08 -!- jix has quit (Read error: 113 (No route to host)). 
16:32:53 <RodgerTheGreat> but remember, the larger you get the more difficult it'll be to obtain precisely the number you need through addition and subtraction of lower power values 
16:32:55 <Figs> your task, rodger, should you choose to accept it.... and ye must! ... is to determine whether or not there is a number that cannot be made with our rules 
16:33:48 <RodgerTheGreat> very large numbers must be made via factorials or powering. 
16:34:14 <RodgerTheGreat> with each increasing term of these functions, their output grows faster 
16:34:35 <RodgerTheGreat> thus, there is greater separation between the numbers that can be created with this method 
16:35:27 <Figs> the question just seems to be whether or not there are enough tricks to bridge that gap 
16:35:35 <Figs> and there probably aren't ... :P 
16:35:55 <Figs> where is the first number we cannot derive from 4 fours? 
16:36:00 <RodgerTheGreat> how about we try a simpler proof that can be used to prove the larger one? 
16:36:22 <RodgerTheGreat> what is the largest series of consecutive numbers that can be generated with 3 fours? 
16:36:32 <Figs> I have no idea :P 
16:36:44 <RodgerTheGreat> and I mean largest in terms of "most" AND "highest value" 
16:37:04 <RodgerTheGreat> because knowing *THIS*, we'll be able to determine what the largest "gap" is we can cross 
16:37:07 <Figs> I'm gonna find the rest up to 100 
16:38:31 <RodgerTheGreat> see if you can find some type of repeating pattern for generating consecutive numbers 
16:38:47 <Figs> (d(d(4))+s(4)/b(4))/4 = 73 
16:40:36 <RodgerTheGreat> we could do the "gap" proof recursively, by first proving the largest series of consecutives for one, then 2, and finally 3 4s 
16:41:23 <Figs> f(4)+f(4)+f(4)+s(4) = 74 
16:42:03 <Figs> (d(d(4))+44)/4 = 75 
16:42:06 <RodgerTheGreat> I see the general form of these as always (foo1(4) operator foo2(4) operator foo3(4) operator foo4(4)) 
16:42:24 <Figs> I think it is a bit more complex 
16:42:26 <Figs> since it can be 
16:42:35 <Figs> op(op(op.... 4) 
16:43:06 <Figs> functions are effectively unary operators 
16:43:12 <Figs> and operators are binary operators 
16:43:43 <Figs> f(4)+f(4)+f(4)+4 = 76 
16:45:03 <Figs> d(4/b(4)) -s(4) - s(4) = 77 
16:45:28 <RodgerTheGreat> I think the trick might be a huge number with a difference that's a large multiple of 3 or 7 away from a power or ! of 4. 
16:45:49 <Figs> don't forget I can also do d(d(4)) = 256 
16:45:50 <oklopol> 67 was indeed trivial once you figured you 268 is close to 256 
16:45:58 <oklopol> that was a clever one indeed 
16:46:38 <RodgerTheGreat> multiples of 3 and 7 require at least two fours to express, and a third would be dedicated to the large number 
16:46:46 <oklopol> clever, though trivial, since i found the answer before i'd read what was inside (...)/4 = 67 :) 
16:48:53 <oklopol> oh! let's do 4 i 4 i 4 i 4 i + same ops -> complex natural numbers n + mi :DDDDDDDDDDDDDDDDDDDDDDDDDDDDD 
16:49:30 <oklopol> GO oklopol GO --------------------> 
16:49:46 <Figs> let's finish 100 first ;D 
16:51:52 <Figs> 4*f(4)-(d(4)+s(4)) 
16:52:05 <Figs> 4*f(4)-(d(4)+s(4)) = 78 
16:53:58 <Figs> d(4/b(4))-s(d(4)/4) = 79 
16:54:23 <Figs> d(4/b(4))-4/4 = 80 
16:54:49 <Figs> that would be 81 - sqrt( 16 / 4 ) = 79 ;) 
16:55:35 <Figs> d(4/b(4))+4/4 = 82 
16:56:06 <Figs> d(4/b(4)) + s(d(4)/4) = 83 
16:56:25 <Figs> d(4/b(4)) * 4/4 = 81 :) 
16:57:33 <Figs> 4*(d(4)+s(4)/.4) = 84 
16:58:01 <Figs> d(4/b(4)) + s(4) +s(4) = 85 
16:58:22 <Figs> d(4/b(4)) + s(4)/.4 = 86 
17:01:17 <sirKIIdC> what do cholery are you doing? 
17:03:08 <Figs> (d(d(4))+4*f(4))/4 = 88 
17:03:50 <Figs> find a combination of 4 fours that make each number up to 100 
17:03:57 <Figs> http://student.hpa.edu/~cmcfarland/bits.txt 
17:04:02 <Figs> some short ones 
17:11:45 <Figs> d(4/b(4)) + 4 + s(4) = 87 
17:12:54 <Figs> d( 4/b(4) ) + 4 + 4 = 89 
17:13:12 <Figs> 4/.4 * 4/b(4) = 90 
17:17:31 <Figs> d(4/b(4)) + 4/.4 = 91 
17:17:44 <Figs> 44*s(4)+4 = 92 
17:17:50 -!- lament_ has changed nick to lament. 
17:19:04 <Figs> d(4/b(4)) + d(4) - 4 = 93 
17:19:24 <Figs> I'm almost done 
17:21:12 -!- sirKIIdC has quit (Remote closed the connection). 
17:21:14 <oklopol> yes, i find it interesting this has taken about 4 hours 
17:21:26 <oklopol> well... might be a lot wrong, but gotta check 
17:21:43 <oklopol> oh... 100 isn't really anything special 
17:21:49 <oklopol> so... it's not interesting 
17:22:28 <Figs> http://student.hpa.edu/~cmcfarland/bits.txt 
17:24:38 <Figs> 95  = 44/b(4) - 4 
17:25:27 <Figs> 97  = 44/b(4) - s(4)  
17:25:27 <Figs> 98  = d(4/.4) - s(d(4)/4) 
17:25:27 <Figs> 99  = d(4/.4) - 4/4 
17:25:27 <Figs> 100 = 4/.4 * 4/.4 
17:25:47 <Figs> I found those while I was looking for 94 
17:25:58 <oklopol> haha, i found it in 5 secs :) 
17:26:16 <Figs> so we got all 100! 
17:26:28 <Figs> we have a starting set 
17:26:32 <Figs> from which we can optimize 
17:26:41 <Figs> ie, we can do 1 - 100 in 4  
17:26:46 <Figs> there are better ways to do them 
17:26:50 <Figs> for the other game 
17:26:53 <oklopol> we oughtta collect them all, plus make another list with the shortest possibilities 
17:27:06 <Figs> well, we should make a table 
17:27:10 <Figs> 1, 2, 3, 4 ways :P 
17:27:22 <Figs> 400 values O_O 
17:27:22 <oklopol> YOU should make the table, i should read :) 
17:29:38 <Figs> this looks like a job for... 
17:29:45 * Figs plays theme music 
17:31:39 <lament> hm, what was hte Sprout page? 
17:34:37 <Figs> how can I make one out of 3 fours? 
18:13:11 <Figs> I fucking hate open office 
18:13:15 <Figs> it's slow and buggy!!! 
18:13:58 <Figs> I don't want to pay money for another slow buggy program ;P 
18:14:43 <Figs> how do I turn off auto-capitalize in Calc? 
18:14:48 -!- sebbu has joined. 
18:23:05 <Figs> we never got 94 
18:23:41 <Figs> d(4/.4)-4-s(4) = 94 
18:29:30 <Figs> I have extracted a substantial amount 
18:29:32 <Figs> and I am tired now 
18:42:37 <SimonRC> ((lambda (x) (list x (list (quote quote) x))) (quote (lambda (x) (list x (list (quote quote) x))))) 
18:46:58 <SimonRC> (\s->s++show s)"(\s->s++show s)" 
18:47:40 <SimonRC> the haskell one works on almost the same principle as the LISP one 
18:49:01 <Figs> I still think Lisp and even further, Haskell are totally hard to read :P 
18:49:13 <Figs> maybe I'm just not familiar with them 
18:49:23 <Figs> but still... O.o 
18:49:46 <Figs> although, I'd be hard pressed to find a language that is always easy to read ;) 
18:53:33 <oklopol> [19:21:17] <oklopol> (f(4)+d(4))/b(4)+4 
18:54:06 <Figs> lament, you didn't see what 7" bread made then ? :P 
18:54:10 <Figs> he obfuscated python 
18:54:25 <lament> oh, of course it's possible to obfuscate everything 
18:54:38 <lament> obfuscation is implicit in turing-completeness 
18:54:50 <Figs> you can't obfuscate wait 
18:54:53 <lament> if you want something approaching natural language syntax, try inform 7 
18:55:17 <oklopol> you could have a theoretical programming language that disallows obfuscation though 
18:55:31 <lament> oklopol: define 'obfuscation' 
18:55:42 <lament> once you define it, you can disallow it 
18:55:55 <oklopol> one that errs if you try to do something that could be done more simply 
18:57:31 <oklopol> hmm... that haskell quine is very easy to read if you know what (\...) is 
18:59:25 <Figs> http://edkrebs.com/herb/petoons11/desrt.jpg 
19:39:27 <bsmntbombdood> I have a small and pitiful interpreter for FOOS now 
19:39:45 <Figs> I am just so tired of my parser 
19:50:24 <Figs> I'm just so fucking burned out right now 
19:51:29 <Figs> it's really frustrating when you're on revision 14 of what should be an easy project 
19:54:19 <bsmntbombdood> @'foo [@'foo-executed %str print] @object %inherit add-method done create foo 
19:55:48 <oklopol> "@ - pushes the builtin object onto the stack 
19:55:55 <oklopol> i don't understand even the first line :< 
19:57:10 <oklopol> what's the builtin object? 
20:01:00 <bsmntbombdood> @'foo ["Hello, world"  print] @object %inherit add-method done create foo 
20:01:12 <oklopol> so... your code makes the stack go <empty> -> bi -> bi "foo" -> bi "foo" [code] -> ?? 
20:01:23 <Figs> what is the include for boost lambda? O.o 
20:01:55 <bsmntbombdood> @ object is the base object, that everything inherits from 
20:02:10 <oklopol> @<something> is always a push? 
20:02:22 <Figs> you know what is weird? 
20:02:29 <Figs> I know exactly how boost::lambda works 
20:02:34 <Figs> and I could rewrite it if I needed to 
20:03:42 <oklopol> hmm... you have an interpreter? 
20:04:25 <oklopol> you may have pasted a link but i don't remember 
20:05:59 <oklopol> i just need the basics to work... since i still don't understand how it works :) 
20:06:41 <Figs> I just wrote a tokenizer in... 44 lines of code 
20:07:05 <lament> def tokenize(s): return s.split(' ') 
20:07:12 <oklopol> i can write you a bf tokenizer in conciderably less 
20:07:51 <oklopol> well, a nesting parser can be done in less than that 
20:08:26 <Figs> nothing magical 
20:08:32 <oklopol> i don't see that requiring 44 lines :) 
20:08:57 <Figs> from a file? :P 
20:09:32 <Figs> I used lambda to output it 
20:09:41 <Figs> since I was too lazy to write a new function 
20:11:45 <Figs> rapid share sucks 
20:13:44 <bsmntbombdood> python looks like it's having trouble with mutual imports 
20:15:08 -!- bsmntbombdood has changed nick to xor. 
20:24:05 -!- atrapado has joined. 
20:27:56 <oklopol> http://www.vjn.fi/pb/p654524162.txt 
20:29:35 <Figs> got to take my sister to the park :( 
20:30:01 <Figs> I should be back in an hour or so 
21:25:45 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.3/2007030919]"). 
21:34:51 -!- ShadowHntr has joined. 
22:10:21 <xor> I broke my interpreter 
22:14:36 <oklopol> though i'd just understood what bsmntbombdood means 
22:31:30 -!- Figs has quit (Read error: 60 (Operation timed out)). 
22:56:38 -!- Figs has joined. 
23:23:26 -!- sebbu has quit ("@+"). 
23:29:28 <Figs> does anyone know a good open source firewall for windows? 
23:30:11 <Figs> I take it not? 
23:30:26 <GregorR> Well, certainly I wouldn't, I don't use Windows :P 
23:30:38 <Figs> I wish I didn't have to use windows any more 
23:31:04 <Figs> if I was more knowledgable of sys. programming 
23:31:06 <Figs> I'd do it myself 
23:33:33 -!- SevenInchBread has joined. 
23:38:46 <SevenInchBread> if I'm computer is connected to the net through a WLAN adapter... would that effect my ability to properly get a webserver going? 
23:39:15 <SevenInchBread> ...the IP address everything seems to be getting from me is different from the one my adapter says. 
23:39:35 <Figs> is there a way to quit norton? 
23:40:21 <oklopol> i guess 1:37 is a good time to start perusing the course book if the exam is at 8? 
23:40:32 <Figs> am I still here? 
23:41:00 -!- atrapado has quit ("l3nc"). 
23:41:04 <Figs> finally killed it 
23:41:07 <SevenInchBread> hmmm... when I logged into my router to foreward port 80 to my adapters IP I got " NAPT server IP address is not a valid host LAN address." 
23:41:08 <Figs> god, that was hard 
23:41:54 -!- Figs has left (?). 
23:46:07 -!- crashmatrix has quit ("Leaving"). 
23:50:48 -!- SevenInchBread_ has joined. 
23:57:15 -!- SevenInchBread has quit (Read error: 145 (Connection timed out)). 
00:01:06 -!- wooby has joined. 
00:03:21 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
00:58:41 -!- Figs has joined. 
01:19:09 -!- SevenInchBread_ has changed nick to SevenInchBread. 
01:52:28 <Figs> http://theory.stanford.edu/~vganesh/STPdocumentation.html 
01:52:34 <Figs> seems like the kind of thing you guys would enjoy 
01:57:02 <Figs> http://www.netscrap.com/netscrap_detail.cfm?scrap_id=85 
02:09:10 <Figs> ahhh... you can have a lot of fun putting a Brit and an American together :P 
02:11:03 <Figs> means two very different things 
02:11:11 <Figs> drunk vs angry, I guess 
02:12:19 <oklopol> or the past tense of peeing 
02:15:28 <oklopol> i wish i'd wake up to alarm clocks... i could sleep :< 
02:16:20 <Figs> why don't you go to bed Oklopol? 
02:16:24 <Figs> you're always up :P 
02:17:30 <oklopol> if i go to bed i'll never wake up early enough 
02:17:40 <oklopol> and there is no other place to sleep here 
02:17:50 <oklopol> my floor is full of bottles and books 
02:21:52 <oklopol> well, this armchair of course, but it's too cosy once again 
02:22:05 <oklopol> maybe i'll sleep on the bus :| 
02:30:55 -!- ShadowHntr has quit ("End of line."). 
02:46:11 -!- SevenInchBread has changed nick to SevenInchWizard. 
02:49:29 -!- SevenInchWizard has changed nick to SevenInchBread. 
02:51:28 <Figs> http://www.shof.msrcsites.co.uk/sins.jpg 
03:03:18 -!- pikhq has joined. 
03:10:37 -!- ShadowHntr has joined. 
03:14:23 <Figs> http://www.eldtrain.com.au/members/humour/humour11.htm 
03:44:38 -!- SevenInchBread has quit (Read error: 145 (Connection timed out)). 
03:51:30 -!- calamari has joined. 
03:52:07 <calamari> so this is what it looks like to irc from gaim 
03:53:25 <calamari> does it give a ctcp version response for me? 
03:58:03 <xor> gaim is laim 
04:02:35 <Figs> and not the language 
04:03:31 -!- pikhq has quit (Remote closed the connection). 
04:03:33 <Figs> my brain is saying 
04:03:38 <Figs> "You idiot, what are you doing!" 
04:04:07 * calamari looks up brain surgery on wikipedia 
04:05:27 -!- Sgeo has joined. 
04:07:18 <Figs> firefox's toolbar customization sucks 
04:12:13 <Figs> we can't we get a good browser? 
04:12:19 <Figs> Firefox is annoying... 
04:22:32 <Figs> http://photos1.blogger.com/x/blogger2/3718/3950/320/503462/card469.jpg 
04:29:42 -!- Sgeo has quit ("Leaving"). 
04:52:46 -!- Figs has changed nick to Himself. 
04:52:53 -!- Himself has changed nick to Figs. 
05:16:55 <Figs> have you guys played this? 
05:16:55 <Figs> http://www.thethinkingblog.com/2007/03/de-activate-bomb-in-15-minutes.html 
05:21:26 -!- Figs has left (?). 
05:48:07 <RodgerTheGreat> the third and fourth puzzles are really easy with a good knowledge of binary and a calculator, though 
05:48:28 <xor> haha flash 
06:06:59 -!- calamari has left (?). 
06:08:35 <xor> gute nacht 
06:09:47 -!- RodgerTheGreat has quit. 
06:59:18 -!- xor has changed nick to bsmntbombdood. 
07:04:44 -!- bsmntbombdood has changed nick to xor. 
07:12:15 -!- xor has quit (zelazny.freenode.net irc.freenode.net). 
07:12:15 -!- helios24 has quit (zelazny.freenode.net irc.freenode.net). 
07:12:15 -!- GregorR has quit (zelazny.freenode.net irc.freenode.net). 
07:12:25 -!- xor has joined. 
07:12:25 -!- helios24 has joined. 
07:12:25 -!- GregorR has joined. 
07:39:47 -!- ShadowHntr has quit (Read error: 110 (Connection timed out)). 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:12:39 -!- Sukoshi has joined. 
08:47:18 -!- nazgjunk has joined. 
08:53:23 -!- nazgjunk has quit ("Bi-la Kaifa"). 
08:53:52 -!- nazgjunk has joined. 
09:16:27 -!- nazgjunk has quit (Remote closed the connection). 
09:24:07 -!- nazgjunk has joined. 
10:37:54 -!- nazgjunk has quit ("Bi-la Kaifa"). 
10:48:17 -!- nazgjunk has joined. 
11:21:39 -!- jix has joined. 
11:39:30 -!- Sukoshi has quit (zelazny.freenode.net irc.freenode.net). 
11:39:51 -!- GregorR has quit (zelazny.freenode.net irc.freenode.net). 
11:39:51 -!- helios24 has quit (zelazny.freenode.net irc.freenode.net). 
11:39:51 -!- xor has quit (zelazny.freenode.net irc.freenode.net). 
11:39:51 -!- wooby has quit (zelazny.freenode.net irc.freenode.net). 
11:39:51 -!- oklopol has quit (zelazny.freenode.net irc.freenode.net). 
11:39:51 -!- bsmnt_bot has quit (zelazny.freenode.net irc.freenode.net). 
11:39:51 -!- tokigun has quit (zelazny.freenode.net irc.freenode.net). 
11:39:51 -!- nazgjunk has quit (zelazny.freenode.net irc.freenode.net). 
11:39:51 -!- lament has quit (zelazny.freenode.net irc.freenode.net). 
11:39:51 -!- sp3tt has quit (zelazny.freenode.net irc.freenode.net). 
11:39:51 -!- puzzlet has quit (zelazny.freenode.net irc.freenode.net). 
11:39:51 -!- oklobot has quit (zelazny.freenode.net irc.freenode.net). 
11:39:51 -!- cmeme has quit (zelazny.freenode.net irc.freenode.net). 
11:39:51 -!- meatmanek has quit (zelazny.freenode.net irc.freenode.net). 
11:39:51 -!- sekhmet has quit (zelazny.freenode.net irc.freenode.net). 
11:39:51 -!- SimonRC has quit (zelazny.freenode.net irc.freenode.net). 
11:39:51 -!- mtve has quit (zelazny.freenode.net irc.freenode.net). 
11:40:20 -!- nazgjunk has joined. 
11:40:20 -!- Sukoshi has joined. 
11:40:20 -!- GregorR has joined. 
11:40:20 -!- helios24 has joined. 
11:40:20 -!- xor has joined. 
11:40:20 -!- wooby has joined. 
11:40:20 -!- lament has joined. 
11:40:20 -!- sekhmet has joined. 
11:40:20 -!- oklobot has joined. 
11:40:20 -!- SimonRC has joined. 
11:40:20 -!- oklopol has joined. 
11:40:20 -!- bsmnt_bot has joined. 
11:40:20 -!- tokigun has joined. 
11:40:20 -!- cmeme has joined. 
11:40:20 -!- meatmanek has joined. 
11:40:20 -!- sp3tt has joined. 
11:40:20 -!- puzzlet has joined. 
11:40:20 -!- mtve has joined. 
12:30:45 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 
12:31:00 -!- nazgjunk has joined. 
13:30:13 -!- RodgerTheGreat has joined. 
14:27:13 <SimonRC> "Dear agony aunt.  My results for various modules this year at university are very poor.  I got 4%, 8%, 15%, 16%, 23%, and 42%.  What is going on?  Yours, Lost." 
14:30:10 * SimonRC uses continuation-passing style: 
14:30:55 <SimonRC> IRP:REQUEST(GOOGLE):TELL_RODGER_ABOUT:("4 8 15 16 23 42"). 
15:03:37 <SimonRC> Depends which one you saw. 
15:04:06 <SimonRC> And several seasons turned into big heaps of galactic politics. 
15:04:56 <SimonRC> BTW, just a little thing I'd like you to spread around... 
15:05:17 <SimonRC> http://conworlds.info/cwbb/index.php 
15:05:48 <SimonRC> It is a worldbuilding forum that I belong to that are trying to get some publicity. 
15:08:54 -!- crathman has joined. 
16:01:04 <SimonRC> http://conworlds.info/cwbb/index.php 
16:01:11 <SimonRC> it's a worldbuilding forum I'm on 
16:01:20 <SimonRC> It neds more publicity, so spread it around 
16:10:15 -!- ais523 has joined. 
16:11:12 <ais523> Could someone explain Continuation Passing Style to me? 
16:11:49 <SimonRC> continuation passign style is where you don't return the value to the caller, but instead you are given another function to pass that value to. 
16:12:13 <SimonRC> the latter is the "continuation" 
16:12:44 <ais523> I understand what a continuation is, so the explanation helped quite a bit 
16:13:01 <ais523> and the point is that call/cc combined with CPS just gives you a regular return value... 
16:14:32 <SimonRC> cps is good for avoiding mutation wen doing stuff 
16:14:43 <SimonRC> e.g. when appending to long lists. 
16:15:29 <SimonRC> you don't pass a list around, but a function that prepends that list to another. 
16:15:34 -!- sebbu has joined. 
16:16:38 * SimonRC plugs a website again:     http://conworlds.info/cwbb/index.php  It's a worldbuilding forum I'm on.  It needs more publicity, so spread it around. 
16:19:12 -!- jix__ has joined. 
16:20:23 <SimonRC> every time I plug it, someone else comes on who I haven;t told yet 
16:21:37 <ais523> I suspect many people here read the logs anyway 
16:22:06 <ais523> SimonRC was plugging a website, and got annoyed that jix__ joined just after the plug rather than just before 
16:22:16 <jix__> i was there  before 
16:22:30 <jix__> i just had a reconnect 
16:22:33 <jix__> and i got the plug 
16:23:02 <ais523> clients probably need to show duplicate names only once, as it would help to avoid this sort of problem 
16:32:50 -!- jix has quit (Read error: 110 (Connection timed out)). 
16:59:40 -!- ShadowHntr has joined. 
17:16:16 -!- wooby has quit (zelazny.freenode.net irc.freenode.net). 
17:56:45 -!- Figs has joined. 
18:17:49 <Figs> Tree = a < ((b<(d<i+j+k))+e); 
18:17:51 <lament> I think you smell bad. 
18:18:00 <Figs> that is working C++ coe 
18:18:22 <lament> that is working code in very many languages. 
18:18:25 <ais523> it's working C code too, probably with a different meaning 
18:18:32 <ais523> and it's definitely working code in HOMESPRING 
18:18:40 <lament> i would guess it's working code in the majority of languages 
18:19:04 <lament> (with minor modifications like changing = to something else that means 'equals', or removing the semicolon) 
18:19:07 <ais523> no, in BF it goes off the left-hand end of the tape 
18:19:22 <Figs> the next statement is 
18:19:26 <lament> okay, maybe not the majority. 
18:19:36 <Figs> which causes the following to be printed on the screen: 
18:19:50 <Figs> a(b(d(i,j,k),e),c(f,g,h)) 
18:20:33 <Figs> sorry, didn't copy the whole definition earlier 
18:20:34 <Figs> Tree = a < (((b<(d<i+j+k))+e)+(c<f+g+h)); 
18:21:02 <ais523> why < and + not < and > ? 
18:21:19 <Figs> because the branch is < 
18:21:43 <ais523> you should have redefined the whole nature of trees just so you could get away with using < and > 
18:21:54 <Figs> I thought about it 
18:22:09 <Figs> but I actually want this system to be useful 
18:22:21 -!- oerjan has joined. 
18:22:26 <Figs> it's already pretty hard to understand 
18:22:40 <Figs> Tree = a < (((b<(d<i+j+k))+e)+(c<f+g+h)); //Working C++ :D 
18:22:44 <lament> are a,b,c, etc, existing variables, or does the system just convert them to strings? 
18:22:47 <Figs> output: a(b(d(i,j,k),e),c(f,g,h)) 
18:23:18 * ais523 is busy trying to implement CLC-INTERCAL features in C-INTERCAL 
18:23:26 <lament> Figs: not sure what do you mean by "useful" :) 
18:23:40 <Figs> http://rafb.net/p/dbzV1598.html 
18:23:51 <Figs> like, to be used in an actual project ;) 
18:24:54 <ais523> I'll probably end up writing a project in an esolang some day 
18:25:10 <ais523> I've already ended up hardcoding bits of programs in assembler to work round compiler bugs 
18:25:37 <ais523> and assembler's halfway to being an esolang 
18:25:44 <lament> Figs: not sure what kind of "actual project" needs hardcoded definition of trees. 
18:26:09 <Figs> lament: These aren't exactly, "hard" coded ;) 
18:26:22 <Figs> think about it like this: 
18:26:30 <Figs> I have a program that reads a file 
18:26:35 <ais523> (the tree you wrote above in HOMESPRING notation) 
18:26:43 <Figs> tokenizing as it goes 
18:26:46 <ais523> easier to understand and faster to write, isn't it? 
18:26:58 <Figs> and interprets the tokens and reassembles a sequence (tree structure) by parsing it 
18:27:04 <Figs> which I can then operate on 
18:27:18 <Figs> to dynamically add and remove rules from the parser :D! 
18:29:07 * Figs can think of some weird uses for tree-manip. functions 
18:29:34 <Figs> functions that clone trees and graft the clones on as new branches... 
18:31:28 <Figs> in 5 lines of code, it works! 
18:31:41 <ais523> some languages are better for trees than others 
18:31:54 <ais523> the tree is the easiest data structure to understand in both Unlambda and Underload 
18:31:57 <ais523> (for much the same reasons) 
18:32:18 <Figs> I think the tree is most certainly one of the harder to understand ds's when you try to use it in C++ 
18:32:51 <Figs> that's my opinion on it, at least :P 
18:33:26 <lament> a tree is almost the same as a linked list 
18:33:27 <Figs> http://rafb.net/p/s9qVJt20.html 
18:35:13 * oerjan is reading the logs, and doesn't understand why Figs said bruteforcing the 4444 problem by setting up trees is hard.  Figs must not know Haskell.  :) 
18:35:26 <Figs> I don't know Haskell :P 
18:35:57 <xor> What is the bot that logs? 
18:36:04 <Figs> I missed that somehow 
18:36:07 <ais523> the tunes log (http://tunes.org/~nef/logs/esoteric/) loads faster 
18:36:46 <lament> the tunes project did one useful thing, so far. 
18:37:49 <lament> (well no, their list of resources for learning CS was pretty awesome) 
18:38:51 <lament> although it seems they have removed that 
18:39:09 <Figs> I think I talked to much on 07.03.26 
18:39:13 <Figs> the log is bigger 
18:39:15 <oerjan> i really would like to see a completely theorem-proven operating system.  It should do wonders for security. 
18:39:45 <xor> I never understood these "proven correct" programs 
18:39:51 <lament> oerjan: just wait 50 years for tunes to come out. 
18:39:53 <ais523> I would like to see a programming language in which writing a completely theorem-proven operating system would be reasonable 
18:41:23 <oerjan> I don't think it will take 50 years.  I think it will be less than 10 years until we have such a programming language. 
18:41:54 <lament> oerjan: i thought we already did? 
18:42:08 <oerjan> Well if you are a genius you do :) 
18:42:18 <Figs> what language? :P 
18:42:19 <lament> oerjan: frankly i don't believe it will ever happen 
18:42:40 <Figs> and I don't know what you mean by theorem-proven 
18:43:19 <lament> oerjan: because 1) it's still run by humans, so worms etc will still be a problem, so security gains are almost non-existent 2) it's too much effort for too little benefit 
18:43:23 <oerjan> Any of the new dependently typed languages should be usable if you are smart enough.  If your name is Oleg Kiselyov it is rumored even Haskell may do :) 
18:44:12 <oerjan> Of course the programming language is just one step. 
18:44:41 <oerjan> Actually defining what it means to be secure is just as important, in order to avoid worms and the like. 
18:45:21 <lament> anything run by humans cannot be secure by their own definition. 
18:45:42 <Figs> Machine take-over! 
18:45:51 <oerjan> I don't understand why you say that. 
18:45:54 <Figs> Yes. You cannot browse the web. 
18:46:00 <ais523> lament: Unnecessary is completely secure 
18:46:04 <Figs> I will read your mind, and browse for you. 
18:46:04 <ais523> just not particularly useful 
18:46:46 <lament> oerjan: well, look at the current generation of worms; for the most part, they don't breach security in any technical sense 
18:46:55 <oerjan> Of course you can browse the web if your web browser is proven secure. 
18:47:13 <lament> oerjan: the user freely and (technically) knowingly permits the malware to run. 
18:47:48 <lament> oerjan: that's the way it's always gonna be. 
18:48:04 <lament> oerjan: the alternative is a horribly bureaucratic OS that nobody would want to use. 
18:48:16 <Figs> Windows XP w/ access controls! 
18:48:21 <Figs> (yes, they are there) 
18:48:39 <lament> but that's different, because XP still has actual technical security issues 
18:48:50 <lament> our hypothetical OS wouldn't, but worms would be there just the same. 
18:49:05 <oerjan> I don't agree with you. 
18:49:31 <lament> You get an executable in an email. You run the executable. Bad things happen. No amount on "proof" can prevent this situation. 
18:49:50 <oerjan> The point would be to make the operating system so flexible that nearly everything you need to run _can_ contain a proof of its own security. 
18:50:04 <ais523> Alternative: you get an executable in an email. No matter how useful it might be, your OS won't let you run it. 
18:50:28 <ais523> 'Security through inability' 
18:50:44 <lament> Your password is "sex". Bad things happen. No amount of "proof" can prevent this. 
18:51:01 <oerjan> Compromise:  You _can_ make an exception, but it would be _so_ rare that no one would do it for something that came through email. 
18:51:50 <Figs> http://www.trnicely.net/misc/vista.html 
18:52:03 <lament> it is not in any way bad to receive executables, so the OS should allow you to do that. 
18:52:19 <lament> It is not in any way bad to let user to run their executables, so the OS should allow you to do that. 
18:52:35 <lament> It is not in any way bad for an executable to DOS microsoft.com, so the OS should allow the executable to do that. 
18:52:57 <lament> unless you can somehow prove that the latter is bad. 
18:53:16 <lament> the worm code _will_ be proven "secure" 
18:53:25 <lament> so you will have no problems running it 
18:53:31 <lament> but it will still do Bad Stuff 
18:53:54 <lament> it will not be able to get root or something like that. 
18:53:57 <Figs> you have to but Godlike 2.6 on the computer that analyzes all running code, and grinds your computer to a near halt 
18:54:07 <oerjan> It's the same as browsers being allowed to open annoyingly many windows, essentially. 
18:54:14 <Figs> but makes sure your computer has morals. 
18:54:38 <Figs> ("OMG, you're looking at pr0n? No more Internet Explorer for you!") 
18:55:01 <Figs> Begs the question... if my computer will be forced to have morals... whose morals? 
18:55:08 <lament> oerjan: despite the lack of theorem-proved systems, there has already been a huge switch from actually exploting holes to exploiting naive users 
18:55:32 <lament> oerjan: back when people used DOS, there were plenty of actual viruses that actually infected programs and then took over the system. 
18:55:44 <lament> these days, it's mostly worms that get the attention 
18:56:06 <ais523> these days, I suspect the average computer user is less intelligent 
18:56:21 <ais523> as evidenced by the 'How to open the box the OS comes in' in Windows Vista's FAQ 
18:56:25 <lament> well, you can't theorem-prove your users, which is my point :) 
18:56:39 <Figs> I just thought of an awful malware program ;) 
18:56:58 <Figs> but it's been done years ago ;P 
18:58:40 <oerjan> Hm... DOS attacks are somewhat difficult because they don't use excessively many resources on the computer where they are running, unlike annoying browser windows. 
18:59:14 <lament> even annoying browser windows can't exactly be proven to be annoying 
18:59:15 <oerjan> So good resource management policy would be insufficient. 
18:59:36 <Figs> the simplest way (and I use it to secure most people's win32) 
18:59:45 <oerjan> No but popup managers can do a good job. 
18:59:47 <Figs> is to block registry 
19:00:01 <lament> oerjan: sure, but that has nothing to do with proof-based security. 
19:00:02 <Figs> and manually allow/deny each change 
19:02:28 <oerjan> proof-based security will always have to prove against a policy. 
19:02:58 <Figs> I thought I said that already? :( 
19:03:32 <Figs> [07:53:02] Figs: Begs the question... if my computer will be forced to have morals... whose morals? 
19:04:01 <Figs> DOS attack may be desired by the user 
19:04:04 <oerjan> a better advantage may be that once the proof has gone through, you can drop all checks that have been proved unnecessary. 
19:05:16 <oerjan> so in a sense proof-carrying code is just a way to optimize away runtime checks. 
19:07:36 <oerjan> of course the user should in principle be able to set the policy. 
19:07:54 <ais523> that might be vunerable to social engineering methods 
19:08:27 <Figs> http://worsethanfailure.com/Articles/Checking_Your_Digits.aspx 
19:08:47 <oerjan> perhaps.  the policy changer should at least have reasonable warnings. 
19:08:49 <Figs> how about a program that looks like the Chevron logo! 
19:20:38 -!- ais523 has quit. 
19:31:14 <xor> who can come up with the shortest code to turn a number into a list of digits, base 10? 
19:31:54 <Figs> what language? 
19:32:09 <Figs> count me out then :P 
19:32:22 <xor> any language 
19:32:41 <xor> didn't think of that 
19:32:49 <lament> (strings aren't lists in python, but they ARE sequences) 
19:33:08 <xor> [int(i) for i in str(n)] 
19:33:10 <xor> will do it 
19:33:11 <lament> unless by 'digit' you mean number 
19:33:38 <lament> do you mean numbers or characters? 
19:33:59 <lament> then in python: map(int,str(n)) 
19:34:08 <oerjan> fromEnum . (:[]) . show 
19:34:09 <xor> lament: map is depreciated 
19:34:27 <xor> ok, lets make this base 53 
19:34:54 <oerjan> map (read . (:[])) . show 
19:35:17 <xor>         l.append(n%53); n /= 53 
19:35:17 <xor>     return l[::-1] 
19:35:23 <xor> my crappy python 
19:36:25 <Figs> is the number passed as a string? 
19:36:59 <Figs> #include <boost/lambda/lambda.hpp> 
19:37:05 <Figs> #include <iostream> 
19:37:07 <Figs> #include <string> 
19:37:11 <Figs> using namespace std; 
19:37:19 <Figs> using namespace boost::lambda; 
19:37:28 <xor> for some reason, I really think that C++ fails at this 
19:37:32 <Figs> #include <boost/lexical_cast.hpp> 
19:38:03 <Figs> string s = boost::lexical_cast<string>(number); 
19:38:35 <Figs> for_each(s.begin(),s.end(),cout<< _1 <<'\n'); 
19:39:12 <xor> ok, here is my code as a list comprehension: 
19:39:17 <xor> def f(n): import math; return [(n/(53**i))%53 for i in range(math.ceil(math.log(n, 53)))] 
19:39:20 <xor> that's pretty good 
19:39:52 <xor> actually, tack [::-1] onto the end of that 
19:40:04 <Figs> well, imagine doing it in C :P 
19:40:04 <xor> most significant digit first 
19:40:08 <xor> no, base 53 
19:40:35 <xor> so you can't do the converting to string copout 
19:41:11 <oerjan> f n = showIntAtBase 53 id n 
19:41:40 <lament> def f(n):return(n>52 and f(n/53)or[])+[n%53] 
19:43:21 <xor> lament: nice 
19:46:22 <oerjan> f n = reverse $ unfoldr g n where g 0 = Nothing; g n = Just (n `mod` 53, n `div` 53) 
19:47:39 <oerjan> bah, better to copy lament i think 
19:48:53 <oerjan> except his code fails at 0 
19:49:53 <lament> my code even sort of works for negative numbers :D 
19:51:04 <lament> but at least it doesn't crash or anything :D 
19:51:16 <xor> mine crashes 
19:51:26 <xor> can't take the log of a negative number 
19:51:38 <oerjan> f n = (if n > 52 then f(n `div` 53) else []) ++ [n `mod` 53] 
19:52:06 <xor> what is `x` ? 
19:52:29 <oerjan> turning a function into an operator 
19:53:53 <oerjan> it seems haskell loses on slightly less compact syntax 
19:59:20 <oerjan> f n=(if n>52 then f(n`div`53)else[])++[n`mod`53] 
19:59:35 <oerjan> ok it's a tie with all unnecessary spaces removed 
20:00:47 -!- Figs has left (?). 
20:03:27 <oklopol> though i'm of course adding built-ins as needed :) 
20:03:43 * oerjan bops oklopol on the head 
20:07:44 <oerjan> f n=[a|n>52,a<-f(n`div`53)]++[n`mod`53] 
20:07:49 <oklopol> {0->0;_%53:.$_/53} in oklotalk without the built-in function 
20:08:09 <oklopol> well, you won in existing languages... 
20:08:50 <oerjan> conveniently a list comprehension with guard at the beginning gives [] 
20:13:25 <xor> we should RAID our brains 
20:16:05 <xor> RAID 5, probably, because no one wants to be dedicated parity 
20:53:59 -!- atrapado has joined. 
21:22:54 -!- ShadowHntr has quit (Read error: 104 (Connection reset by peer)). 
21:22:55 -!- oerjan has quit (zelazny.freenode.net irc.freenode.net). 
21:22:55 -!- bsmnt_bot has quit (zelazny.freenode.net irc.freenode.net). 
21:22:55 -!- oklopol has quit (zelazny.freenode.net irc.freenode.net). 
21:22:55 -!- tokigun has quit (zelazny.freenode.net irc.freenode.net). 
21:22:55 -!- crathman has quit (zelazny.freenode.net irc.freenode.net). 
21:22:55 -!- nazgjunk has quit (zelazny.freenode.net irc.freenode.net). 
21:22:55 -!- lament has quit (zelazny.freenode.net irc.freenode.net). 
21:22:55 -!- sp3tt has quit (zelazny.freenode.net irc.freenode.net). 
21:22:55 -!- puzzlet has quit (zelazny.freenode.net irc.freenode.net). 
21:22:55 -!- oklobot has quit (zelazny.freenode.net irc.freenode.net). 
21:22:55 -!- meatmanek has quit (zelazny.freenode.net irc.freenode.net). 
21:22:55 -!- cmeme has quit (zelazny.freenode.net irc.freenode.net). 
21:22:56 -!- sebbu has quit (zelazny.freenode.net irc.freenode.net). 
21:22:56 -!- RodgerTheGreat has quit (zelazny.freenode.net irc.freenode.net). 
21:22:56 -!- SimonRC has quit (zelazny.freenode.net irc.freenode.net). 
21:22:56 -!- sekhmet has quit (zelazny.freenode.net irc.freenode.net). 
21:22:56 -!- oerjan has joined. 
21:22:56 -!- sebbu has joined. 
21:22:56 -!- crathman has joined. 
21:22:56 -!- RodgerTheGreat has joined. 
21:22:56 -!- nazgjunk has joined. 
21:22:56 -!- lament has joined. 
21:22:56 -!- sekhmet has joined. 
21:22:56 -!- oklobot has joined. 
21:22:56 -!- puzzlet has joined. 
21:22:56 -!- SimonRC has joined. 
21:22:56 -!- oklopol has joined. 
21:22:56 -!- bsmnt_bot has joined. 
21:22:56 -!- tokigun has joined. 
21:22:56 -!- cmeme has joined. 
21:22:56 -!- meatmanek has joined. 
21:22:56 -!- sp3tt has joined. 
21:46:03 -!- SevenInchBread has joined. 
21:46:36 -!- sebbu2 has joined. 
21:47:03 <SevenInchBread> yay! I'm finally learning shit about computer architectures. 
21:47:19 <xor> you eat anal residue? 
21:47:39 * SevenInchBread is working on a theretical computer system that runs with pentits (or however you call them) 
21:49:31 <oerjan> that would be logical anyhow. 
21:49:59 <oerjan> bits, terts, quits from Latin bini, terni, quini. 
21:50:35 <oklopol> binary digit, ternary digit i'm pretty sure 
21:51:03 <oklopol> ...quarternary digit next if i guessed 4 right :) 
21:51:32 <oerjan> *sigh* everybody keeps swapping mindlessly between Latin and Greek.  Hexadecimal is even a hybrid. 
21:51:50 <SevenInchBread> if you use -15, -5, 0, 5, 15   to represent the possible values - then swish will basically reverse the polarity, -5 become 5 and 5 becomes -5 
21:52:03 <SevenInchBread> PENTIT SOUNDS COOLER THAN QUIT... I WILL NOT FOLLOW YOUR CUSTOMS. 
21:52:47 <oklopol> i think 'pet' would be nice too 
21:53:12 <SevenInchBread> ...and DROOP represents the other dimension - it lowers shifts the value closer to 0   (not sure what 0 will do - might stay the same or it might wrap back around to -15 or 15) 
21:53:33 <xor> binary is the way to go 
21:55:32 <SevenInchBread> it is interesting to consider the possibilities though... the number of capacitors you'd need would plummet dramatically to represent the same amount of data... you could put 5 interupts per line (or is it 4?)...  
21:57:23 <oklopol> the thingies are as small as they get with the current technology, more states would require bigger thingies 
21:58:12 <SevenInchBread> a bit is low charge or high charge... you couldn't split it into 5 levels without making it bigger? 
21:58:41 <SevenInchBread> well yeah, I'm not really considering a practical implementation here. 
21:58:45 <xor> a transistor is binary 
21:58:58 <oklopol> you would need an exponential growth in the number of wire thingies in the storage thingie 
21:59:49 <oklopol> but it's clear even 3 states would make as microscopic stuff as in a pc impossible 
22:00:25 <SevenInchBread> ....well, transistors aren't strictly binary... otherwise they wouldn't play nice with analog devices like my guitar amp. 
22:01:27 <oklopol> well, binary transfer is faster and safer than analog 
22:02:48 <SevenInchBread> I thought.... the main advantage of analog computers was the increase in speed? 
22:03:43 <oklopol> i've no idea what an analog computer is, so i have no say there really 
22:04:22 <SevenInchBread> an analog comptuer is a comptuer that isn't... digital 
22:04:38 <SevenInchBread> like the hydraulic one the Brits made to simulate economy. 
22:05:20 <oklopol> anyway, quantum computers are the way to go 
22:05:30 -!- sebbu has quit (Connection timed out). 
22:05:56 <oklopol> yeah, but you are wrong in thinking it can be made smaller 
22:06:34 <SevenInchBread> not smaller... just hold more information per unit - I guess. 
22:07:06 <oklopol> well, that's pretty obvious :=) 
22:07:30 <oklopol> you could use a calculator for storing one ...pet 
22:11:40 <SevenInchBread> yeah... analog computers are much faster for doing computations that are related to their physical properties. 
22:13:29 <lament> SevenInchBread: that's very easy. 
22:13:33 <lament> SevenInchBread: you just need analog hardware. 
22:13:46 <lament> connected to a digital computer. 
22:14:11 <lament> (same with quantum computers - they're just regular computers equipped with a quantum register) 
22:14:46 <lament> SevenInchBread: Analog hardware is easy to get - for example, a microphone - but you will need to construct something specialized for solving differential equations or whatnot. 
22:18:10 <SevenInchBread> hmmm... guess you could just plug some analog hardware into your computer and feed certain problems through it. 
22:19:05 <SevenInchBread> it's not standardize... so you can't take advantage of having most modern computers having these certain "analog functions". 
22:23:08 <lament> think of graphics cards 
22:23:30 <lament> they do operations that your computer would otherwise do anyway, but much faster 
22:23:37 <lament> same with analog stuff 
22:23:45 <lament> you would plug in a "differential equations card" 
22:24:19 <lament> as soon as a game comes out that uses differential equations to simulate physics, and it runs fine with the card and poorly without, everybody will buy the card. 
22:28:10 -!- oerjan has quit ("leaving"). 
22:53:15 <SevenInchBread> hmmm... I didn't actually know what graphics cards did. :) 
23:00:53 -!- sebbu2 has quit ("@+"). 
23:18:28 -!- atrapado has quit ("min-computable"). 
23:20:58 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.3/2007030919]"). 
23:25:27 <RodgerTheGreat> graphics cards use totally normal digital hardware, but it's very specialized for it's purpose. 
23:26:11 <RodgerTheGreat> the heart of a modern GPU is really a vector processor- an ALU built for doing matrix multiplications. 
23:44:14 <SevenInchBread> hmmm... are there different ways to run processes in the background on different linux distros. 
23:47:53 -!- calamari has joined. 
00:03:59 -!- calamari has quit ("Leaving"). 
00:07:27 * xor starts to hate OOP 
00:08:20 <xor> @'print-hello ["Hello, World" print] @object %inherit add-method done create print-hello 
00:09:01 <lament> xor: have you looked at Slate? 
00:16:31 <xor> I wonder if I should separate classes and class builders 
00:19:32 <xor> a class has one method, create, which creates the object. class builders have two methods, add-method and done. 
00:20:48 <xor> kinda like smalltalk, except with a stack 
00:21:00 <lament> do have a look at slate, slate.tunes.org 
00:21:51 -!- Rugxulo has joined. 
00:22:45 <xor> http://bsmntbombdood.mooo.com/FOOS.txt 
00:23:06 -!- nazgjunk has quit ("crap, exam in exactly 8 hours... sleeeeep"). 
00:23:57 -!- nazgjunk has joined. 
00:24:00 <xor> everthing is anonymous and held on the stack 
00:24:05 <xor> (except @) 
00:25:31 -!- Rugxulo has left (?). 
00:26:05 <SevenInchBread> a good example I read recently was - http://en.wikipedia.org/wiki/Antiobject 
00:39:03 * GregorR considers rererererecreating Plof. 
00:41:58 -!- pikhq has joined. 
01:21:58 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
01:43:23 -!- pikhq has quit (Remote closed the connection). 
02:30:39 -!- Izzy7 has joined. 
02:31:15 <Izzy7> Could someone please write a quine to this channel? 
02:31:54 <xor> Could someone please write a quine to this channel? 
03:11:21 -!- ShadowHntr has joined. 
03:18:57 -!- Sgeo has joined. 
03:29:48 -!- UpTheDownstair has joined. 
03:34:49 -!- nazgjunk has quit (Connection timed out). 
04:05:19 <lament> Could\ someone\ please\ write\ a\ quine\ to\ this\ channel? 
04:25:45 <xor> This is a quine. 
04:33:40 <lament> Could someone please write something other than a quine? 
04:34:50 -!- ShadowHntr has quit ("End of line."). 
04:40:05 <xor> This is not a quine. 
05:06:09 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 
05:14:43 -!- Abednego has joined. 
05:17:05 -!- Abednego has changed nick to Abedneg0. 
05:17:42 -!- Abedneg0 has changed nick to Abednego. 
06:10:39 -!- RodgerTheGreat has quit. 
06:16:07 -!- Sukoshi has quit ("ERC Version 5.1 (CVS) $Revision: 1.796 $ (IRC client for Emacs)"). 
06:31:44 -!- Sgeo has quit ("Leaving"). 
06:55:27 -!- UpTheDownstair has changed nick to nazgjunk. 
07:43:58 -!- ShadowHntr has joined. 
07:50:52 -!- oerjan has joined. 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:09:21 -!- ShadowHntr has quit (Read error: 110 (Connection timed out)). 
08:35:36 -!- Sukoshi has joined. 
10:26:52 -!- oerjan has quit ("leaving"). 
13:48:10 -!- Sukoshi has quit (zelazny.freenode.net irc.freenode.net). 
13:48:10 -!- Abednego has quit (zelazny.freenode.net irc.freenode.net). 
13:48:10 -!- xor has quit (zelazny.freenode.net irc.freenode.net). 
13:48:11 -!- helios24 has quit (zelazny.freenode.net irc.freenode.net). 
13:48:11 -!- GregorR has quit (zelazny.freenode.net irc.freenode.net). 
13:48:36 -!- Sukoshi has joined. 
13:48:36 -!- Abednego has joined. 
13:48:36 -!- xor has joined. 
13:48:36 -!- helios24 has joined. 
13:48:36 -!- GregorR has joined. 
13:50:17 -!- jix has joined. 
14:02:41 -!- jix has quit ("This computer has gone to sleep"). 
14:46:22 -!- sebbu has joined. 
14:59:48 -!- Abednego has quit ("quitted"). 
15:31:19 -!- RodgerTheGreat has joined. 
15:39:19 <oklopol> ~bf +++++++++++++++++++++++++++++++++++. 
15:52:15 -!- crathman has joined. 
16:09:10 -!- jix has joined. 
16:24:33 -!- jix__ has joined. 
16:33:54 -!- jix has quit (Read error: 113 (No route to host)). 
17:35:19 -!- Sukoshi` has joined. 
17:42:55 -!- oerjan has joined. 
17:47:10 -!- Sukoshi has quit (Read error: 110 (Connection timed out)). 
18:16:53 <oklopol> how easy is it to make a function "a" that takes as params a function "b" and a number "c" that returns function "d" which is "b" except it only allows "c" recursion depth? 
18:17:01 <oklopol> that might be a bad explanation :P 
18:18:02 <oerjan> sounds impossible the way you say it 
18:18:08 <oklopol> it seems impossible in oklotalk, so i'd like to know if it's in haskell 
18:18:15 <oerjan> because haskell cannot deconstruct b 
18:19:29 <oklopol> hmm, you can access the tokenized form of the function in oklotalk so everything is possible, but i'm looking for a way to make that possible sensibly 
18:20:08 <oklopol> because i have these stdlib kinda functions... and decided it'd be nice if i could implement them in oklotalk 
18:20:21 <oklopol> but... that one proved pretty tricky :P 
18:20:45 <oerjan> if you have b = fix b' then you can construct such a thing from b' 
18:21:11 <oklopol> but i think i know what you mean 
18:21:16 -!- pikhq has joined. 
18:21:38 <oerjan> it's in the Control.Monad.Fix module 
18:22:21 <oklopol> can you try to walk me through those 15 characters? 
18:22:37 -!- RodgerTheGreat has quit. 
18:22:39 <oerjan> well to be precise it should be: 
18:22:48 <oerjan> fix f = x where x = f x 
18:23:06 <oerjan> (otherwise you lose sharing) 
18:23:25 <oklopol> i see that as an identity function 
18:23:53 <oklopol> it's recursive in a weird way 
18:24:28 <oklopol> i don't understand that tbh 
18:25:11 <lament> oklopol: think of 'fix' as a magic function that returns a fixed point 
18:25:35 <lament> oklopol: for example, a fixed point of square() is 1 
18:25:42 <lament> oklopol: so fix(square) could return 1 
18:25:52 <oerjan> rather unlikely to work :) 
18:25:56 <lament> (of course, square has other fixed points) 
18:26:10 <oerjan> in Haskell it only works if f is lazy in its argument 
18:26:18 <lament> oerjan: i suspect in most cases fix would return bottom, that is infinity, which is still a fixed point of square 
18:26:30 -!- digital_me has joined. 
18:27:01 <oerjan> i believe that fix f = bottom iff f bottom = bottom 
18:27:05 <oklopol> eeeeeh fixed point...? like non infinitesimal? 
18:27:18 <lament> oklopol: square(1) = 1 
18:27:30 <lament> oklopol: that's called a fixed point 
18:27:59 <lament> if we have a function f(x) = 42 
18:28:05 <lament> then its fixed point is 42 
18:28:14 <lament> so fix(f) ought to be 42 
18:28:39 <oerjan> because x is not used in the expression, f is obviously lazy in it 
18:28:42 <lament> fix magically finds it :) 
18:28:57 <oerjan> not magically, it depends on lazyness 
18:29:43 <lament> oerjan: it still seems like magic to me. Fix is handed a black box. We know it always returns 42, but fix doesn't. 
18:30:02 <lament> so fix magically goes through all possible inputs, until it finds one that is a fixed point (that is, 42). 
18:30:24 <oerjan> fix f essentially evaluates f(fix f) 
18:30:45 <oklopol> but.......... how do i import a module in ghci? 
18:31:11 <oerjan> it's that in Hugs at least 
18:31:18 <lament> oerjan: sorry, i like my explanation more! 
18:31:38 <oerjan> i think ghc is more flexible and can import more than one module interactively 
18:32:03 <oklopol> <no location info>: module `Control.Monad.Fix is a package module 
18:32:15 <oklopol> Failed, modules loaded: none. 
18:32:27 <oerjan> that package system, hm... 
18:34:08 <oklopol> i hope i don't learn too much haskell, i don't wanna become one of those "if something is hard, do it in haskell" people 
18:34:21 <oerjan> :set package -name whatever 
18:35:05 <oklopol> since it's not the Control.modna.agre thing 
18:35:23 <oerjan> need to look up the package name 
18:35:24 <oklopol> "unrecognized flags: <whatever>" 
18:36:04 <oklopol> and unknown package: Control.Monad.Fix 
18:36:20 <oerjan> eh, it says package is base on the hierarchical library page 
18:36:35 <oerjan> however, base definitely is autoloaded 
18:36:57 <oerjan> i think you must have an old version of the hierarchical libraries 
18:37:16 <oklopol> i dl'd this when i did my thue 
18:37:26 <oklopol> i don't suppose you remember when that was 
18:37:39 <oklopol> 2 years ago - 3 weeks ago or somthing 
18:38:03 <oklopol> hmm... i'll try to dl something random and retry importing then 
18:38:11 <oerjan> anyhow: it is probably easier to just write "let fix f = x where x = f x" 
18:41:00 <oklopol> does that mean something is wrong, that lament > haskell, or that it shouldn't do that? 
18:41:02 <oerjan> indeed, because * evaluates its arguments 
18:41:15 <lament> oklopol: it doesn't fail. Infinity is a fixed point. :) 
18:41:20 <oklopol> can i do something else that works? 
18:41:30 <oklopol> but... it should return bottom then or something? 
18:41:53 <lament> "to return bottom" means "to die horribly" 
18:42:17 <oklopol> fix (1 :) what does (1 :) mean? 
18:42:29 <oerjan> it means add 1 to the beginning of a list 
18:43:34 <oklopol> hehe fixing (1 :) returns [1 1 ...] right? 
18:43:48 <oerjan> yes. in future list examples it might be an idea to put "take 100 $ " first 
18:44:43 <oerjan> yep, those are the same 
18:46:17 <oerjan> let f l = 1 : zipWith (+) l (tail l) in fix f 
18:47:06 <oerjan> eh, make that an extra 1 : 
18:48:39 <oklopol> darn, i shouldn't blindly copy code if i don't understand it throughly :) 
18:49:01 <oerjan> i _told_ to put take 100 $ first, didn't I? ;) 
18:49:05 <oklopol> haha i though let can't be harmful, but "in fix f" might make it so.... 
18:49:44 <oerjan> oh you thought it was a definition 
18:50:53 <oklopol> i don't understand that... :< 
18:51:23 <oerjan> let's do it without fix (which is not much used anyhow) 
18:51:43 <oerjan> let fib = 1 : 1 : zipWith (+) fib (tail fib) 
18:52:01 <oklopol> you were faster... how unlikely! :< 
18:52:01 <pikhq> I'm not sure I want to know what you're working on ATM. 
18:52:11 <xor> how is "fix f = x where x = f x" different from "fix f = f (fix f)"? 
18:52:29 <oerjan> it will share the x even if the compiler is stupid 
18:52:47 <oerjan> otherwise it might reevaluate it at each level 
18:53:08 <oerjan> oklopol: fib is a standard tutorial example 
18:54:02 <oerjan> on the other hand i don't know if any compilers are that stupid 
18:54:24 <oklopol> are there many langs with infinite lists? 
18:54:47 <oerjan> streams are available in a number of otherwise non-lazy languages 
18:54:51 <xor> you can do it in scheme 
18:54:55 <xor> but not as nicely as haskell 
18:55:38 <oklopol> [1 1 {!--_+!-_}] in oklotalk, in case i've not told that often enough :) 
18:56:58 <oerjan> pikhq: just playing around with the fixpoint combinator in Haskell 
18:57:12 <oklopol> and since there is no distinction between funcs and lists, `{0 1->1;.(_-1)+.(_-2)} too :) 
18:57:13 <oerjan> (the Y combinator essentially) 
18:57:14 <pikhq> source ^stdcons.bfm;source ^outs.bfm;string foo! "That's just wrong.\n";outs foo!end 
18:57:39 <pikhq> oerjan: Stop with the Lambda. 
18:58:09 <oerjan> pikhq: You on something? (No, don't answer) 
18:59:01 <oerjan> Some languages distinguish recursive from corecursive data structures. 
18:59:15 <oklopol> Can i see a haskell ackermann? 
18:59:18 <oerjan> *inductive and *coinductive 
18:59:23 <pikhq> (it's been a while, mmkay? I'm like a drug addict, just getting back in the habit) 
18:59:40 <xor> oklopol: it's almost exactly the mathy definition 
19:00:16 <oerjan> a 1 n = n + 1; a m n = a (m-1) (a m (n-1)) 
19:00:23 <xor> or you could do the fancy function power one 
19:00:44 <oerjan> add an a n 1 = a (n-1) 1 
19:03:40 <xor> ack 0 = succ 
19:03:59 <xor> ack (m+1) = iter (ack m) 
19:04:12 <xor> iter f 0 = 1 
19:04:23 <xor> iter f (n+1) = f (iter f n) 
19:05:59 <oklopol> i need to convert multiple definitions -> case of 
19:06:48 <oerjan> iter f n = (iterate f 1) !! n 
19:07:38 <oerjan> why do you need to convert? 
19:08:05 <oklopol> because i avoid files... might be a bad excuse :\ 
19:08:24 <oerjan> just put it on one line with ; between 
19:08:28 <oklopol> too hard if you have to use notepads and saves and such 
19:08:36 <oklopol> it said incorrect indentation 
19:09:07 <oerjan> let takes a definition block 
19:10:37 <oerjan> in fact the whole definition of a function must be in the same block 
19:11:11 <oklopol> hmm, that looks right to me, but a 6 6 = 7... :\ 
19:11:48 <oklopol> let a 1 n = n + 1; a n 1 = a (n-1) 1;a m n = a (m-1) (a m (n-1)) is the exact line 
19:17:13 <oklopol> 1's in the patterns -> 0's 
19:18:46 <oklopol> hmm, a 5 7 doesn't like being calculated, it seems 
19:18:53 <xor> of course not 
19:19:10 <oklopol> yeah, it's all because haskell is so lazy though 
19:19:47 <oerjan> it is rather likely that it is duplicating work as well. 
19:22:17 <oklopol> ackermann's growth is mean, it grows so fast i can't see the nice big numbers, because they're so big the program crashes 
19:22:44 <oklopol> you think a 4 1 will ever terminate? 
19:22:49 <oklopol> i'll leave it on for the night 
19:23:12 <oklopol> i mean, will it terminate during my life time 
19:23:20 <xor> a 4 2 can be calculated if you replace the a [1, 3] with their non-recursive equivalents 
19:23:28 <oerjan> it might be an idea to use memoing at some levels 
19:24:08 <oklopol> like calculating some values and putting guards for them? 
19:24:11 <oerjan> and do the level with simple multiplication directly 
19:24:21 <xor> a 0 n = n+1 
19:24:29 <xor> a 1 n = n+2 
19:24:38 <xor> a 2 n = 3 + 2*n 
19:24:50 <oerjan> you can in fact make a nested infinite list with all the ackermann values 
19:25:03 <xor> a 3 n = 5 + 8*(2**n-1) 
19:25:21 <xor> a 4 2 calculates fairly quickly with those 
19:25:27 <oerjan> but the first three levels will be a waste of time 
19:26:17 <xor> oklopol: a 4 1 == 65533 
19:26:50 <xor> a 4 2 == 5+8*(2**65533-1) 
19:27:35 <oerjan> make ** into ^ and haskell can calculate it entirely 
19:29:07 <oerjan> (** just gives floating point infinity) 
19:29:12 <oklopol> ^ can't be done since there's a different charset in ghci 
19:29:42 <oerjan> i mean ^ the ascii character 
19:31:06 <oerjan> hugs does 5+8*(2^65533-1) in an instant 
19:31:12 <oklopol> i'm pretty sure there was a different charset when i tried that just now... but it's right again :\ 
19:32:25 <oerjan> of course, its number of digits is on the order of a 4 2 
19:33:05 <oerjan> so you cannot even save it 
19:33:25 <oerjan> might be able to print it in binary though 
19:33:32 <oklopol> how do you know how many universes worth of hd i have? 
19:33:58 <oerjan> i may be making a few loosely founded assumptions there :) 
19:35:12 <oklopol> well... maybe lsb first... but i don't think normally 
19:35:44 <oerjan> i think both ways in binary can be found, because of its form 
19:37:23 <oerjan> a 3 n = 2^(n+3) - 3 to simplify a bit more 
19:38:46 <oerjan> which is simply n+1 ones followed by 01 
19:40:15 <oerjan> hm, perhaps even decimal is feasible 
19:40:30 <oerjan> (finding any given digit, i mean) 
19:41:00 <oklopol> probably, math goes over my head though 
19:43:06 <oerjan> i am not sure.  it is going to need some tricks i don't know. 
19:43:29 <oklopol> "In order to go through both slits at once and produce an interference pattern, a particle must pass through the slits undetected." 
19:43:50 <oklopol> quantum mechanics seem trivial 
19:44:02 <oklopol> and, you know, quite intuitive 
19:44:37 <oerjan> then you cannot have understood it ;) 
19:44:57 <oerjan> (someone else _must_ have said that before) 
19:45:09 <oklopol> since i've seen that twice in the book :) 
19:46:30 <oklopol> i've read a lot of weird physics books, mostly when i was little, but this book was pretty tempting, since this guy somewhat writes from a programmers point of view 
19:47:00 <oerjan> i don't know that much QM but my impression is things get much worse when you have more than one particle, since then the waves are no longer in ordinary space 
19:48:12 <oerjan> (i should qualify that "i don't know that much QM" somehow.  i certainly know more than the average guy.) 
19:48:13 -!- pikhq has quit (Read error: 54 (Connection reset by peer)). 
19:48:45 <oklopol> i was being sarcastic there, in case i hid that too well :) one particle is hard enough :P 
19:49:07 <oklopol> oerjan by the way, how old are you? 
19:49:10 <oerjan> ok you did hide that too well. 
19:49:29 <oklopol> well, i understand it, but not well enough to actually understand what that means... 
19:49:50 <oklopol> since if you'd been 14 or smth, i'd be out the window by now 
19:50:47 <oklopol> i have some issues with younger people beating me. 
19:51:46 <oerjan> hm, i would advise you against that attitude here.  one of our resident 14-year olds seems frightfully smart. 
19:52:52 <oklopol> that's exactly where i got that exact age :) 
19:54:20 <lament> good for you i'm not that smart, huh 
19:54:36 <oerjan> isn't it your bedtime? 
19:54:54 <oklopol> "When you ask the particle where it is, it is forced to confess that it is in one place or another and no longer in both places at once." :D 
19:55:22 <oerjan> is this according to the Geneva conventions? 
19:57:47 <oklopol> it's so cool it abides by no rules i think 
20:00:01 -!- xor has changed nick to bsmntbombdood. 
20:00:34 <oklopol> it says the interference pattern in case of two slits is destroyed if information about it is gathered... but does this mean it's destroyed if it's gathered in such way the viewer will never find it out? for example collisions between air and the photon in question 
20:00:50 <oklopol> hmm that question might assume reading this page, though :D 
20:01:24 <oerjan> yes, if the rest of the universe finds out 
20:01:59 <oklopol> oh :< would've been cool if it could've seen the future 
20:02:04 <oerjan> there have been experiments on erasing the information again - it can be done if carefully controlled 
20:03:00 <oklopol> why the heck don't they teach this at school, i might listen :D 
20:03:48 <oklopol> good for sleeping, since you aren't allowed do anything else. 
20:04:13 <oklopol> well, we could take a laptop, but i don't like unplugging it 
20:31:03 -!- Keymaker has joined. 
20:31:50 <Keymaker> it almost finished me but i managed to finish it in the end: http://koti.mbnet.fi/yiap/aeolbonn/kquine.aeo 
20:37:58 <oklopol> "Even values perform a conditional jump. Jump is performed if flip is true, otherwise the execution continues on the next line." jump to line indicated by the number in question i take? 
20:48:00 <Keymaker> a few days, with extremely long breaks :D every time i had to think something i started to do something different. i started making quine in this a long time ago, but stopped quite soon, but now had nerves to make it because i invented a new way for memory stuff. in this language it's really annoying if one has to add data somewhere; you need to calculate again all the jumps before the new data and probably add some 'nop' data too 
20:48:01 -!- oklobot has quit (Read error: 104 (Connection reset by peer)). 
20:49:16 <Keymaker> it happens often that i don't work on some program for months, and then i suddenly invent a new shorter/easier/better way to do something and then i write the program 
20:50:31 <oklopol> yeah, i was like that, but i try to program every day nowadays 
20:51:25 <Keymaker> have you been working on anything interesting? (not that my work is interesting...) 
20:52:22 <oklopol> maintaining old projects mostly, i mostly design my new language, oklotalk, i'm pretty obsessed about it 
20:52:47 <oklopol> but i'll soon be failing at implementing it :) 
20:54:03 <Keymaker> heh, yea. i should finish some of my esolang plans, i haven't published a new language for months. 
20:54:31 <Keymaker> and i always have problems writing the interpreter, as well. 
20:54:39 <oklopol> well, oklotalk is not an esolang, though looks like it :) 
20:55:07 <oklopol> well, esolangs are often easy to write an interpreter for 
20:55:57 <Keymaker> that's the problem, i don't have nerves to use normal languages 
20:56:32 <oklopol> i've never coded interpreters in esolangs, though you should always use them for everything, of course 
20:56:48 <Keymaker> but the aeolbonn interpreter i managed to do in python (with some help asked here :)), so i guess i'll use python in the future too, if i have to. 
20:57:11 <Keymaker> i've made a few interpreters in esolangs 
20:59:00 <Keymaker> i assume everyone has time to run the program for a few years, so speed is not an issue ;) 
21:05:39 <Keymaker> ais523: it was interesting to see some forte programs, hopefully you'll link the programs to the forte article at esowiki 
21:07:17 -!- sebbu has quit ("reboot"). 
21:09:55 <Keymaker> well, i'll terminate. good bye 
21:10:02 -!- Keymaker has left (?). 
21:34:18 -!- sebbu has joined. 
21:46:39 -!- pikhq has joined. 
22:14:45 -!- digital_me has quit ("Lost terminal"). 
22:24:23 -!- ShadowHntr has joined. 
22:32:19 -!- ihope has joined. 
22:38:41 -!- ihope_ has joined. 
22:40:35 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.3/2007030919]"). 
22:56:02 -!- ihope has quit (Connection timed out). 
23:35:06 -!- SevenInchBread has joined. 
00:00:18 <GregorR> Plof2 is coming along nicely :) 
00:01:17 <GregorR> I made some fairly major changes to areas in Plof1 that bugged me. 
00:01:27 <GregorR> Particularly deep returns and associative arrays. 
00:01:33 <oklopol> cool, i liked how you did if's and such, though don't remember that well anymore :) 
00:01:53 <oklopol> yeah, i remember you complaining about them 
00:02:07 <GregorR> I sort of designed myself into a corner with them :-P 
00:03:01 <GregorR> Well, since things like if() and while() took functions as arguments. return was a bit ambiguous. 
00:03:26 <GregorR> e.g. if I do: if({a == 3}, {return(6);}); it's questionable whether that return should just go to the if, or out of the function the if is in. 
00:03:47 <GregorR> Mind you, it's not ambiguous to the programmer, but the language was designed in such a way that it's ambiguous. 
00:04:07 <oklopol> that was exactly what i liked :) 
00:04:15 <oklopol> but, i understand how it's bad... 
00:04:24 <GregorR> Well, I haven't changed how if is handled and such, but I've made that part less ambiguous. 
00:04:34 <GregorR> Basically, I made two classes of functions: thick functions and thin functions. 
00:04:48 <GregorR> If you return from a thin function, it falls all the way down to the latest thick function. 
00:05:18 <GregorR> So: if(:{a == 3}, {return(6);}); will return all the way up to the function that called if(). 
00:05:23 <oklopol> you'll prolly be able to do everything pretty nicely like that 
00:05:30 <GregorR> It's working fairly well :) 
00:05:55 <oklopol> if i wasn't so tired i might try to think of an example where you might wanna have something in-between those two types 
00:06:11 <oklopol> though you might've thought it through since you're making the language :) 
00:06:36 <GregorR> I'm trying to find a balance between complexity and confusion, so to speak. 
00:08:03 <GregorR> There are certainly more /possible/ classes. 
00:08:17 <GregorR> But I think that adding them would create unnecessary confusion without enough benefit. 
00:08:34 <oklopol> making anything more complex than thick/thin for returning would probably eventually lead to a tc function call system 
00:08:36 <pikhq> So, Plof2 is basically a redesign of Plof, simply due to limitations of the basic concepts of Plof1 
00:09:33 <pikhq> Although one could surely think of function classes that'd not affect returning. 
00:10:31 <GregorR> My new interpreter is rampantly incomplete as of yet :P 
00:10:46 <GregorR> Anyway, I still haven't found a nice balance for operator overloading. 
00:12:53 <pikhq> I need to see the spec as it stands. . . 
00:13:06 <GregorR> I haven't written it yet :-P 
00:14:36 <pikhq> So, I need to see a core dump of your brain. 
00:16:14 <oklopol> or you can see the old one, fix it yourself and assume GregorR has done essentially the same 
00:16:42 <oklopol> although i'm not sure if it was really a spec 
00:16:49 <pikhq> Indeed, I could do that, except for Gregor's different idea of reality. 
00:16:52 <oklopol> might've been just a few examples 
00:17:12 <pikhq> It was a semispec. 
00:17:21 <pikhq> For all intents and purposes, the *interpreter* was your spec. 
00:18:32 <oklopol> yeah, that's often the case 
00:18:41 <oklopol> (with lazy lang developers) 
00:18:58 <GregorR> Like myself for example ;) 
00:20:02 <oklopol> well, specs are for wimps, why recode it in english if it's already done in a real language 
00:20:45 * GregorR begins writing something resembling a spec. 
00:21:49 -!- sebbu has quit ("@+"). 
00:26:01 <oerjan> specs are for allowing the possibility of several mutually incompatible implementations. 
00:26:21 <oerjan> At least that's why I wrote a spec for Malbolge Unshackled. 
00:27:08 <oerjan> and then i made my interpreter support several of them, randomly selected. 
00:30:45 <oerjan> it sort of got out of hand. 
00:31:23 -!- pikhq has quit (Remote closed the connection). 
00:34:59 -!- Figs has joined. 
00:35:12 <Figs> (\d{4}[- ]){3}\d{4} 
00:35:18 <Figs> what the hell does that mean? O.o 
00:35:24 <Figs> any regex experts around? :P 
00:36:11 <oklopol> three times (4 digits, possibly "- ") then 4 digits 
00:36:34 <Figs> that seams reasonable  
00:36:40 <Figs> but it's darned esoteric ;) 
00:37:07 <GregorR> Something in the form of: 1234-5678-9012-3456 
00:37:22 <oklopol> 0000000000000000 is legal though? 
00:37:40 <GregorR> Mus thave either '-' or ' ', not neither. 
00:37:48 <oklopol> i though it's optional... silly me :) 
00:38:08 <Figs> 1234 5678-9012-3456 
00:38:16 <oklopol> yeah, was just thinking that 
00:38:27 <oklopol> can you define it's jsut one of them? 
00:39:20 <GregorR> \d{4}([- ])(\d{4}\1){2}\d{4} 
00:41:40 <oklopol> hmm, i have a hard time understanding this... a quantum computer is supposed to be able to factorize numbers fast etc because they can brute force all possible cases simultaneously 
00:41:40 <oklopol> now to actually be able to do any calculations that lead to the answer the qubits have to interact i assume, but why do they let other qubits touch them without losing they omnipresence? 
00:41:57 -!- SevenInchBread has quit (Read error: 104 (Connection reset by peer)). 
00:44:33 -!- SevenInchBread has joined. 
00:45:53 <oerjan> relative to each other they are not "omnipresent", but relative to the outside observer they are. or so i think. 
00:46:04 <Figs> what is the point of regex? 
00:47:17 <oklopol> that was my exact point with the air example... but it does not foresee then, merely know exactly which particles are known by which? 
00:49:18 <SevenInchBread> regex is basically intended to match patterns in strings that would otherise take a lot of screwing around with regular code. 
00:49:58 <Figs> I think I may be too lazy 
00:51:25 <oklopol> you don't know lazy. it took  an hour for me to leave for the shop across the street because i was too lazy to put on shoes 
00:52:22 <Figs> I'm so lazy I wrote a shell script that shows my desktop 
00:52:30 <Figs> even though I already have button to do it 
00:52:45 * oerjan is reminded of a norwegian tv ad where someone wants to go naked to the shop because it's just a short trip 
00:52:49 <Figs> because I didn't want to move my fingers to the top of the keyboard :P 
00:54:44 <oklopol> okay, it took me 2 weeks to decide to actually download all simpsons episodes after i'd decided to do it 
00:55:04 <oklopol> and it requires me to do 5 clicks and typing the word simpsons 
00:55:49 <oklopol> AND i dl'd cube 2 in french, but didn't want to do the work again, so i watched it 3 times hoping i'd just learn french 
00:58:11 -!- SevenInchBread has quit (Read error: 104 (Connection reset by peer)). 
01:21:24 -!- RodgerTheGreat has joined. 
01:22:58 -!- SevenInchBread has joined. 
01:37:15 -!- Sukoshi` has changed nick to Sukoshi. 
01:43:31 -!- Figs has left (?). 
02:13:41 -!- SevenInchBread has quit (Read error: 104 (Connection reset by peer)). 
02:27:44 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
02:29:19 -!- SevenInchBread has joined. 
02:37:02 <GregorR> http://www.codu.org/Kill_Yourself.ogg 
02:38:01 <SevenInchBread> I just need to figure out... what the wav format looks like 
02:42:18 <GregorR> I'd just plot raw waves *shrugs* 
02:42:31 <GregorR> Then use something capable of playing raw audio. 
02:44:58 <SevenInchBread> hmmm... I don't really know a lot about audio hardware... you can play plain ol' wave coordinats? 
02:45:18 <GregorR> This has nothing to do with hardware ... I'm talking about software :) 
02:47:15 <SevenInchBread> alrighty then.... I don't know anything about audio software either. 
02:48:00 <GregorR> With many audio players, you can give it files containing just raw waveform data. 
02:48:10 <GregorR> e.g. unsigned 8-bit values, 22000 per second 
02:48:27 <GregorR> .wav files are pretty similar, but have a header to specify those things. 
02:49:20 <SevenInchBread> but I mean... what's the waveform data look like? What does each byte value represent? 
02:50:26 <Sukoshi> The format tells you. For example, unsigned 8-bit 22 kHz sampling rate tells you that each sample point is interpolated between 0 and 255 and that 22,000 samples constitute the waveform for one second. 
02:50:57 <Sukoshi> And that the origin is considered 126-127. 
02:53:13 <oerjan> apparently it was a boomerang :) 
02:57:18 * oerjan doesn't understand why the origin should be 126.  127.5 is the mid value after all. 
02:59:08 -!- Sukoshi has quit ("ERC Version 5.1 (CVS) $Revision: 1.796 $ (IRC client for Emacs)"). 
03:09:17 <oerjan> i mean i'ld expect the origin to be either 127, 128 or not actually represented. 
03:33:53 -!- ihope_ has quit (Read error: 110 (Connection timed out)). 
04:00:25 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 
04:25:32 <GregorR> You can use 64 bits and 128kHz :) 
04:26:17 <GregorR> Sure - raw, 64-bit, 128kHz audio data X-P 
04:26:56 <GregorR> Anybody have an SCM they could recommend that can have a repository easily uploadable to any server? I used darcs before, I'm wondering if there's anything else y'all'd recommend. 
04:28:55 <GregorR> subversion doesn't fit the criteria. 
04:29:13 <GregorR> I don't know how to put stereo in raw audio, but I think it's just simple interlacing of some kind. 
04:31:11 <GregorR> And then checking out involves downloading every revision X_X 
04:31:57 <GregorR> Can you just upload the repository as it appears on disk to anywhere accessible via HTTP? 
04:33:09 <GregorR> I mean: I can upload stuff accessible via HTTP. Not WebDAV, not ssh, not custom servers. HTTP. 
04:33:57 <GregorR> Are those scripts somewhere online I don't know of? Some kind of PHP WebDAV? :) 
04:34:49 <GregorR> Sooo, you're suggesting I use scripts that don't actually exist? 
04:35:14 <bsmntbombdood> Well, you'd have to write them before you could use them 
04:36:18 <bsmntbombdood> Very simple, just except the dump file, then run one svnadmin command on it 
04:40:30 -!- oerjan has quit ("Good night"). 
05:19:39 -!- GreaseMonkey has joined. 
07:31:43 -!- Sukoshi has joined. 
07:33:51 <Sukoshi> Supplementing the earlier discussion, the reason the origin is at 126 or 127 is because that's how Linux reads in the ADC input. 
07:40:03 -!- ShadowHntr has quit ("End of line."). 
07:46:48 <GregorR> ........... I'd say the reason is probably because that's the middle of the range. 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:19:30 <GregorR> I'm thinking about making the object combination operator be nothing. 
08:19:49 <GregorR> e.g.: var DerivedType = A :[ stufftoadd = "bler" ]; 
08:21:03 <GregorR> That would leave + open to operator overloading. 
09:01:15 -!- RoboMonkey has joined. 
09:04:22 <GregorR> I need to talk to ... pikhq or jix. 
09:13:26 -!- sebbu has joined. 
09:37:41 <GregorR> bsmnt_bot: You have any opinions? :P 
09:38:50 -!- EgoBot has joined. 
09:43:18 <oklopol> ...not as an imperative though 
09:44:57 <GregorR> ^(I'm Plof and I frown :[ ) 
09:45:21 <oklopol> !ul (I'm Plof and I frown :[ )^ 
09:45:44 <EgoBot> 1 EgoBot: daemon ul reload 
09:45:46 <EgoBot> 2 EgoBot: daemon deadfish reload 
09:45:48 <EgoBot> 3 EgoBot: daemon irp reload 
09:45:50 <EgoBot> 4 EgoBot: daemon dog reload 
09:46:29 <oklopol> it just doesn't do anything in unlambda :) 
09:46:38 <oklopol> !ul (I'm Plof and I frown :[ )S 
09:46:40 <EgoBot> I'm Plof and I frown :[  
09:46:53 <oklopol> !ul (I'm Plof and I frown :[ )aS 
09:46:56 <EgoBot> (I'm Plof and I frown :[ ) 
09:47:11 <oklopol> !ul (I'm Plof and I frown :[ ):aSS 
09:47:14 <EgoBot> (I'm Plof and I frown :[ )I'm Plof and I frown :[  
09:47:28 <oklopol> ah, the interpreter is made in brainfuck :P 
09:47:36 <oklopol> i wondered why it's that slow 
09:47:50 <GregorR> Feel free to give me one in $OTHER_LANGUAGE. 
09:48:23 <GregorR> !irp Blah blah blah words words, please. 
09:50:17 <oklopol> no no, i think it's good it's in brianfuck, i just didn't remember that right away 
09:50:54 <GregorR> That was a weird way to end that. 
09:51:27 <oklopol> yeah, i'm bad with sentences. 
10:34:31 -!- Sukoshi has quit ("後でね。"). 
10:42:35 -!- RoboMonkey has quit ("byes"). 
10:42:37 -!- GreaseMonkey has quit ("gonna go, gnight"). 
10:44:00 -!- lament has quit (Read error: 104 (Connection reset by peer)). 
10:44:03 -!- lament has joined. 
12:58:13 -!- jix has joined. 
14:29:07 -!- oerjan has joined. 
14:31:38 <oerjan> GregorR: My point it that 126-127 is _not_ the middle of the range, 127-128 is. 
14:54:59 -!- ihope_ has joined. 
14:55:10 -!- ihope_ has changed nick to ihope. 
15:00:23 -!- crathman_ has joined. 
16:24:51 -!- jix__ has joined. 
16:33:34 -!- jix has quit (Read error: 110 (Connection timed out)). 
17:09:54 -!- ihope has quit (Read error: 104 (Connection reset by peer)). 
17:16:58 -!- oerjan has quit ("leaving"). 
17:27:09 -!- crathman_ has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.3/2007030919]"). 
17:31:00 -!- crathman has joined. 
19:03:45 -!- sebbu2 has joined. 
19:22:29 -!- sebbu has quit (Connection timed out). 
19:22:30 -!- sebbu2 has changed nick to sebbu. 
19:39:30 -!- oerjan has joined. 
19:51:10 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 
20:03:29 -!- crathman_ has joined. 
20:05:06 -!- crathman has quit (Connection timed out). 
20:05:11 -!- crathman_ has changed nick to crathman. 
20:06:39 -!- crathman has quit (Client Quit). 
20:37:47 <GregorR> l'I still don't know whether I like letting the null operator be object combination. 
20:40:58 <GregorR> I'm in the other one too ;) 
20:59:23 -!- RodgerTheGreat has quit. 
21:00:02 -!- ShadowHntr has joined. 
21:38:26 -!- crathman has joined. 
21:39:39 -!- sebbu2 has joined. 
21:58:37 -!- sebbu has quit (Connection timed out). 
22:17:36 -!- GregorR has quit (Remote closed the connection). 
22:17:47 -!- GregorR has joined. 
22:40:01 -!- sebbu has joined. 
22:59:46 -!- sebbu2 has quit (Connection timed out). 
23:00:27 -!- Srekel2 has joined. 
23:14:15 <bsmntbombdood> so many representations of the natural numbers, each stating the same axioms in slightly different ways 
23:14:35 -!- sebbu has quit (Client Quit). 
23:19:23 -!- crathman_ has joined. 
23:20:13 -!- crathman_ has quit (Remote closed the connection). 
23:21:48 <bsmntbombdood> \exist \mathbf{N}: \varnothing \in \mathbf{N} \and (\forall x: x \in \mathbf{N} \implies x \cup \{x\} \in \mathbf{N}) 
23:27:55 -!- Srekel2 has left (?). 
23:37:06 -!- crathman has quit (Read error: 113 (No route to host)). 
23:52:57 <bsmntbombdood> so it seems the set of all important numbers is countable 
23:54:29 <bsmntbombdood> which is interesting, because the set of reals isn't countable 
23:54:34 <oerjan> there exists a countable model for the ZF axioms. 
23:55:24 <lament> bsmntbombdood: it's actually not all that interesting. 
23:55:55 <lament> most reals are not important, they're just there for consistency. 
01:19:57 -!- Sukoshi has joined. 
01:45:26 -!- Sgeo has joined. 
01:51:19 -!- lament has changed nick to lament3. 
02:46:46 -!- SevenInchBread has joined. 
02:55:44 -!- ShadowHntr has quit (Client Quit). 
02:57:36 -!- Lunaris has joined. 
02:57:53 <Lunaris> http://www.geocities.com/dark_mage60/home.html - Donate to my site please ;) 
02:58:10 -!- Lunaris has left (?). 
03:09:23 -!- Figs has joined. 
03:09:51 <Figs> you guys should make a 'h4x0r' asm where 'omg' 'wtf' 'rofl' and 'pr0n' are opcodes :P 
03:11:21 <oerjan> have you looked at Omgrofl? 
03:11:31 <Figs> already been done? :P 
03:11:50 <Figs> heh heh heh @.@ 
03:19:06 <Figs> http://www.google.com/search?q=define%3Agify&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:en-US:official 
03:19:08 <oerjan> well that's where i found tldr anyhow 
03:19:20 <Figs> http://www.google.com/search?q=define%3Atldr&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:en-US:official 
03:19:25 <Figs> it suggested ntldr 
03:19:40 <Figs> maybe I'm just being too smart 
03:19:46 <Figs> and should have just searched more directly... 
03:20:10 <oerjan> indeed, because wiktionary came up on top 
03:20:29 <Figs> wikitionary is your friend? 
03:20:41 <Figs> wiki -X is your friend 
03:21:41 <Figs> can I call operations without a variable in OMGROFL? 
03:21:44 <oerjan> what is wiki -X? google is not particularly friendly on that 
03:22:00 <Figs> instead of l33t lol 
03:22:11 <Figs> wiki(fill in the blank)  
03:23:06 <Figs> wiki -tionary, -pedia 
03:24:18 <oerjan> i don't think you can leave out variables 
03:26:00 <oerjan> although there is no real reason why not 
03:28:41 <Figs> wtf lol iz leik 0 
03:29:54 <Figs> is this right? --> s/brb/brb\nlmao lol 
03:35:38 <oerjan> it's not a whole program 
03:35:58 <Figs> I didn't define lol 
03:36:33 <Figs> wtf lol iz leik 0 is a comparison 
03:37:07 <oerjan> i should know this since i actually cleaned up that page 
03:37:28 <Figs> does x86 have a page? 
03:37:31 <Figs> it really should 
03:37:48 <oerjan> not on our wiki i presume 
03:38:30 <Figs> it just seems like it to me :P 
03:38:42 <oerjan> intention matters quite a bit 
03:41:00 <Figs> on the other hand, it seems to only be used by a relatively small subset of programmers 
03:41:39 <Figs> which seems to match at least one definition of I've read of esoteric 
03:41:57 <Figs> 'limited to a small circle' (ex. esoteric persuits) 
03:42:12 <Figs> but I could be misunderstanding that meaning :P 
03:42:42 <oerjan> by that definition most programming languages would be esoteric 
03:43:05 <Figs> most people consider programming in general to be esoteric :P 
03:43:31 <Figs> but I meant within the context of programming :) 
03:43:45 <Figs> namespace Programming {};//rofl  
03:44:24 <Figs> I'm just lazy :) 
03:44:48 <oerjan> well, x86 assembler might be in the top 100, and there are thousands of languages 
03:45:09 <Figs> ok. I see your point 
03:45:28 <oerjan> i wonder where to check that... 
03:45:53 * Figs starts searching for the instruction set for UNIVAC 
03:50:18 <Figs> http://www.fourmilab.ch/documents/univac/instructions.html 
03:51:43 <Figs> Imagine programming for that thing O.o 
04:15:03 <Figs> 252 out of 256 single-byte op codes :P 
04:19:50 <Figs> with the other 4 enabling extended ops :P 
04:21:56 <Figs> http://en.wikipedia.org/wiki/Z80#Instruction_set_and_encoding 
04:22:16 <Figs> "extensively as opcode prefixes" 
04:22:24 <Figs> only two enable extra instructions 
04:22:41 <Figs> the other two do something else that I don't understand :P 
04:27:57 <Figs> might I recommend playing with xLogicCircuits? 
04:28:10 <Figs> Slow as molasses :) 
04:28:26 <Figs> xLogicCircuits is a program for designing... logic circuits :P 
04:28:30 <Figs> it's a java app 
04:28:33 <Figs> meant for teaching 
04:28:52 <Figs> I made most of a 4-bit CPU in it 
04:29:11 <Figs> and then I my browser crashed and I forgot to save 
04:29:22 <Figs> got bored trying to rewrite the stack :P 
04:29:41 <SevenInchBread> Fuck RISC - computer architectures need to add more crap and be extremly confangled. 
04:30:04 <Figs> rofl, I kind of like RISC after looking at x86 and going 'wtf?' 
04:30:50 <Figs> I actually pulled out my hex editor and started working out what the binary in the instructions meant... 
04:31:39 <Figs> I got a fair ways, too 
04:33:35 <Figs> is SI a general use register? 
04:34:28 <Figs> 7", I take it you don't like the "subtract and branch if negative" view of computing? 
04:36:50 <Figs> I suppose if(x) {a();} else {b();} would be a branch 
04:51:30 <Figs> what is the x86 equivalent of ax << 1 
04:51:36 <Figs> (multiply by 2) 
04:59:51 <Figs> I get GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG 
05:06:33 <Figs> HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 
05:06:40 <Figs> which is more reasonable :) 
05:06:44 <Figs> but still WRONG 
05:09:40 -!- ShadowHntr has joined. 
05:40:30 <Sukoshi> I like OISC and think it would be nifty, especially since memory is the only bottleneck. 
05:41:45 <Figs> question for asm guys 
05:41:54 <Figs> will it fuck up? 
05:42:28 <Figs> it will pop a word from the stack, right? 
05:52:50 <Sgeo> Well, g'night all 
05:54:11 -!- Sgeo has quit ("Leaving"). 
06:10:44 -!- oerjan has quit ("Gooed knight"). 
07:20:47 -!- Figs has quit (Read error: 110 (Connection timed out)). 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:08:57 -!- ShadowHntr has quit (Read error: 110 (Connection timed out)). 
08:46:59 -!- ShadowHntr has joined. 
09:06:38 -!- ShadowHntr has quit ("End of line."). 
09:23:15 -!- sebbu has joined. 
11:36:44 -!- jix__ has joined. 
12:03:29 -!- nazgjunk has quit ("restarting xchat"). 
12:04:15 -!- nazgjunk has joined. 
12:05:02 -!- nazgjunk has quit (Client Quit). 
12:05:31 -!- nazgjunk has joined. 
12:25:06 -!- sebbu has quit ("reboot"). 
12:34:58 -!- oklopol has quit (Read error: 145 (Connection timed out)). 
12:43:36 -!- sebbu has joined. 
13:37:24 -!- nazgjunk has quit ("reboot"). 
13:43:48 -!- nazgjunk has joined. 
13:53:22 -!- sebbu has quit ("Leaving"). 
14:16:22 -!- helios24 has quit ("leaving"). 
14:16:30 -!- helios24 has joined. 
14:23:52 -!- sebbu has joined. 
14:30:55 -!- UpTheDownstair has joined. 
14:31:01 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 
14:50:39 -!- nazgjunk has quit (Remote closed the connection). 
14:54:36 -!- nazgjunk has joined. 
15:33:09 -!- SevenInchBread has quit ("haaaaaaaaaa"). 
15:59:09 -!- jupiter3888 has joined. 
16:12:35 -!- jupiter3888 has quit. 
16:13:24 -!- ais523 has joined. 
16:23:29 -!- jix__ has quit (Read error: 104 (Connection reset by peer)). 
16:25:13 -!- jix__ has joined. 
16:27:13 -!- nazgjunk has quit (Remote closed the connection). 
16:30:11 <EgoBot> 1 EgoBot: daemon ul reload 
16:30:13 <EgoBot> 2 EgoBot: daemon deadfish reload 
16:30:15 <EgoBot> 3 EgoBot: daemon irp reload 
16:30:17 <EgoBot> 4 EgoBot: daemon dog reload 
16:30:40 <ais523> !ul (so this is still working, then?)S 
16:30:43 <EgoBot> so this is still working, then? 
16:44:26 -!- nazgjunk has joined. 
16:56:53 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 
16:56:55 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 
17:08:42 -!- calamari has joined. 
17:13:17 -!- SevenInchBread has joined. 
17:25:08 -!- SevenInchBread has changed nick to CakeProphet. 
17:53:38 -!- oerjan has joined. 
17:54:15 -!- Figs has joined. 
17:59:45 <oerjan> but "gooed" _must_ be a word, even if not in the dictionary.  After all it has obvious meaning. 
18:00:05 <oerjan> at least two of them, i think. 
18:22:58 <ais523> This conversation is getting redundant quickly 
18:27:13 <ais523> looking forward to tomorrow, anyone? 
18:27:23 <ais523> (or I suppose today in some timezones) 
18:37:59 <ais523> I might even make a special attempt to obtain Internet access tomorrow. 
18:38:15 <ais523> (The fact that I have Internet access today is due to the fact that I need to prepare.) 
18:42:48 <Figs> what are you doing? :P 
18:43:19 -!- calamari has quit (Remote closed the connection). 
18:44:38 <ais523> I was sending some new esolang files to graue so he could put them on the archive, and I could let everyone know about them tommorow 
18:45:03 <Figs> CakeProphet... look at a calendar 
18:45:13 <ais523> CakeProphet: the anniversary of the release of Whitespace 
18:50:39 <ais523> your output string ended with the first ., because NUL is an end-of-string marker in many programming languages, so the remaining 3 are redundant 
18:54:05 <CakeProphet> omote prepares the mysterious ointment... for overview of ais523's constituents. 
18:54:15 * CakeProphet prepares the mysterious ointment... for overview of ais523's constituents. 
18:56:10 * ais523 wonders how they became an MP without realising it 
18:56:55 <ais523> In England, an MP (member of Parliament) is in charge of one constituency, and everyone living there is their constituent 
18:56:59 -!- oklopol has joined. 
18:58:04 <CakeProphet> ...I have this strange feeling that ais523 is some kind of robot. 
19:06:31 <SimonRC> ais523: *where* in England? 
19:06:50 <ais523> I'm not an MP, as far as I know 
19:07:04 <ais523> unless I misunderstand you 
19:07:12 <ais523> besides, if you really want to know, a whois will tell you 
19:10:58 <SimonRC> I am in durham during term-time 
19:17:39 <oklopol> ais523 i think CakeProphet meant the no-gender thing 
19:18:13 <ais523> I don't see why a gender is important in online communication 
19:18:21 -!- dog4 has joined. 
19:18:45 * CakeProphet usually doesn't disclose his gender... althought it's probably obvious. 
19:19:41 <ais523> hello everyone I haven't said hello to yet 
19:19:59 <ais523> not just people in #esoteric, /everyone/ 
19:20:11 <ais523> (although they're less likely to get the message) 
19:20:41 <dog4> just tell them to turn up their telepathic receivers to 11 
19:21:24 <ais523> we seem to have a record number of people here whose screennames end in numbers now 
19:21:38 <ais523> I don't think I've seen as many as 5 before 
19:21:42 -!- Figs has changed nick to Figs42. 
19:21:43 -!- Figs42 has changed nick to Figs. 
19:22:00 <Figs> why the fsck is my program not working STILL? :( 
19:22:52 <Figs> x86 asm .COM program to take any set of address to null-terminated strings and print them to the console 
19:23:02 <Figs> and then clean up inside the function 
19:23:16 <Figs> (like stdcall instead of regular cdecl) 
19:23:47 <ais523> I was working on an interesting variant of .COM programs a while ago 
19:24:03 <ais523> If you want to send someone a program over Usenet, one way is by uuencoding it 
19:24:21 <ais523> but if they're using an outmoded operating system like Windows, they won't necessarily be able to un-uuencode it 
19:24:31 <ais523> so I came up with the idea of self-extracting uuencode 
19:24:53 <ais523> (or to be precise, I saw it mentioned elsewhere and liked the idea) 
19:26:10 <oerjan> you mean like a COM/EXE UUENCODE polyglot? 
19:26:17 <Figs> I think I figured it out 
19:26:34 <Figs> I'm pushing the value of BP that I popped 
19:26:38 <SimonRC> well, theoretically the UUE data does not start until the "begin" line, so... 
19:26:39 <ais523> http://pastebin.ca/raw/418585 
19:27:04 <ais523> is the program itself (in a self-uudecoding format, written in obfuscated C) 
19:27:11 <Figs> which is where SP was before... 
19:27:31 <ais523> except that my version uses 2 bytes per byte, rather than 1.33, so is less efficient 
19:27:39 <ais523> and it doesn't contain any newlines, because newlines are nonportable 
19:28:11 <ais523> oerjan: a COM/UUENCODE polyglot would be even better, if it could be managed somehow 
19:28:23 -!- atrapado has joined. 
19:29:44 <ais523> 'begin' doesn't disassemble into anything, unfortunately, because lowercase letters don't correspond to anything AFAIK 
19:29:46 <Figs> does anyone have an x86 simulator so I can see what my program is doing? 
19:29:57 <SimonRC> simple, you have a COM file that starts with the decoder, followed by a newline, then the usual UUE format. 
19:30:26 <ais523> Figs: on Windows/DOS, you can use the DEBUG program to single-step through a COM file 
19:31:18 <Figs> how do I get the values of the registers? 
19:31:46 <ais523> In DEBUG, ? lists all the commands available 
19:31:53 <Figs> yeah, I'm looking at that 
19:31:57 <Figs> and I've looked at it before 
19:31:59 <ais523> I'm pretty sure there's one to get/set registers, but I can't check it at the moment 
19:32:51 <Figs> maybe there is 
19:32:59 -!- ais523 has quit ("somehow it reached half past seven without me noticing. Clock changes are annoying"). 
19:33:12 <Figs> I really hate debug, to be honest... it's help is next to useless 
20:01:31 -!- Figs has left (?). 
20:13:22 -!- calamari has joined. 
21:21:09 <SimonRC> It could be done in some Fortran compilers that targetted machines without immediate constants 
21:21:22 <SimonRC> every constant had to be somwhere in memory 
21:21:35 <SimonRC> and there was little checking 
21:21:49 <SimonRC> and identical constants would be shared, so... 
21:22:07 <SimonRC> a constant was like an initialised variable 
21:22:58 <oklopol> random poll: minesweeper records :) 
21:23:43 <oklopol> on windows standard sizes, i have 7, 60 and 192 
21:24:37 <oerjan> hm... i have a vague idea that i was better than that in my time 
21:25:06 <oerjan> i am sure i was below 150 
21:25:37 <oklopol> i get goddamn slow when it's almost done 
21:25:54 <oerjan> nowadays my hands cannot cope with it :( 
21:28:13 <oklopol> i made a minesweeper once that had nice keyboard shortcuts... the problem is it did board refreshing by printing it again with stdout... looked ugly.. and i didn't know how you can read input without the user having to press return 
21:28:34 <oklopol> i still don't though, if you wanna use console 
21:29:03 <CakeProphet> Like, a few days ago I considered hijacking ICANN's traffic so I could redo the entire domain name structure of the internet 
21:30:59 <SimonRC> CakeProphet: gov.us now wants ICANN to hand over the master key for DNS signing (see slashdot for more) 
21:31:32 <CakeProphet> alright - I'm tempted to do something radical. 
21:31:52 <CakeProphet> I SHALL FORM A GROUP... A BAND OF CONSPIRACY PIRATES... TO ENSURE THAT NO ONE OWNS ANY PART OF THE INTERNET. 
21:33:18 <SimonRC> ICANN needs a standing army 
21:35:09 -!- atrapado has quit ("ribadeo"). 
21:37:15 <CakeProphet> thre really shouldn't be any regultation of domain names other than being globally consistent and first-come-first-serve. 
21:37:50 <CakeProphet> being a business shouldn't make you more entitled to having a name. 
21:38:21 <SimonRC> that would enable spoofing 
21:38:52 <SimonRC> In the sense of people setting up a site with the company's name that looks like an official site 
21:39:35 <SimonRC> I wonder why none of these phishing websites just act like a web proxy but with MITM on the secure stuff? 
21:42:07 <oerjan> they can usually not fake the sertificates, which are tied to the exact domain name, i think 
21:42:48 <oklopol> oerjan really, expert under 150 :O feck i have some work to do... 
21:44:34 <oerjan> i vaguely recall something around 129. 
21:46:26 <oklopol> hehe you just robbed me of a few nights of sleep :P 
21:49:45 <oklopol> what did you have in the small one? 
21:50:09 <oklopol> it's much more about luck so i might stand a chance :) 
21:50:18 * SimonRC finds an article from Jan 2001 that predicted Bush would start at least one war. 
21:50:21 <SimonRC> http://www.theonion.com/content/node/28784 
21:52:37 <oerjan> um, i don't think the onion are usually trying to be accurate 
21:53:50 <oerjan> oklopol: i don't remember at all. 
21:56:35 <bsmntbombdood> You aren't even allowed to leave the us without the goverment's permission anymore 
21:58:31 <oerjan> eh, it is not midnight yet 
21:59:15 <SimonRC> feck, forgot to type up my stuff for this AFJ 
22:10:50 -!- Figs has joined. 
22:10:55 <Figs> it works !!! O_O 
22:10:56 <Figs> http://rafb.net/p/y5eay298.html 
22:12:09 <Figs> Goodbye, World. 
22:12:39 <Figs> the idea was to write a function that takes any number of arguments 
22:12:44 <Figs> and cleans itself up 
22:13:12 <Figs> that's what I did 
22:14:54 <Figs> you have to remember I am a complete n00b at asm 
22:15:03 <Figs> so making this work is a big achievement for me 
22:16:35 <Figs> I finally did figure out how to get debug to do what I wanted 
22:17:20 <Figs> my test code is rather dirty 
22:18:52 -!- sebbu2 has joined. 
22:21:19 <oerjan> i suppose that's part of why lisp has symbols 
22:21:42 <oklopol> but it's O(logn) if most strings are different... though i'm most probably wrong 
22:22:17 <oklopol> where n is the number of chars in the shorter str 
22:22:31 <Figs> isn't the operation based on the slowest possible case? 
22:22:45 <oerjan> yep, so it's O(n) regardless. 
22:22:47 <Figs> O(n) or better 
22:23:06 <oklopol> well, okay, but quicksort is O(n^2) then 
22:23:42 <oerjan> but O() doesn't really say anything about worst or average 
22:23:52 <Figs> wait... which is better, O(k^n) or O(n^k)? 
22:24:25 <oerjan> yep, k^n is exponential 
22:24:42 <Figs> what's n^k? polynomial? 
22:24:51 * Figs is not big on Big-O 
22:25:04 <Sukoshi> The derivative is also exponential, assuming n > 2. 
22:25:06 <oerjan> anyhow even with average case it will be O(n) unless the fraction of strings that are equal goes to zero. 
22:27:42 <Figs> I'm reading old tutorials 
22:27:50 <Figs> probably circa 1995 
22:29:28 <Sukoshi> XP meaning the number of the beast, no? 
22:29:47 <Figs> Microsoft Windows XP... yes 
22:30:46 <Sukoshi> XP looks like a smily. It can't be the name of an OS, can it ? 
22:31:54 <oerjan> i am pretty sure both are available. 
22:32:09 <Sukoshi> Does anyone actually use F# ? 
22:33:59 <oklopol> okay, i made 1000 tests with length 50 strings, 1.371 was the average number of single character comparisons 
22:34:13 <oklopol> i might have done something wrong :) 
22:34:46 <oklopol> well, only 1/28 require > 1 comparisons 
22:34:52 <oklopol> i had 50 different strings 
22:35:04 <oerjan> it depends greatly on where the strings come from. 
22:35:28 <oerjan> if you are comparing two random strings, then it will be something like O(log n) 
22:36:07 <oerjan> but if you are comparing two strings that might actually be from the same source, it will be O(n). 
22:36:40 <oklopol> i'll do it with 5 different strings 
22:37:02 <oklopol> 5.7 tries, length 50 strings 
22:38:13 <oklopol> but, well, any excuse to write a program :) 
22:43:55 <oklopol> ~bf +++++++++++++++++++++++++++++++++++++++++++++++++. 
22:44:32 <oklopol> !ul (Just checked whether i still was here)S 
22:44:33 <EgoBot> Just checked whether i still was here 
22:45:06 * CakeProphet is pondering COMPUTER ARCHITECTURES loudly. 
22:45:54 -!- sebbu has quit (Connection timed out). 
22:47:45 <CakeProphet> ...what's the difference between a register and a stack, exactly? 
22:48:28 -!- Figs has quit (Read error: 110 (Connection timed out)). 
22:48:39 <oerjan> like that a register holds only _one_ value? 
22:49:25 <CakeProphet> As far as I know... a register is just a block that you stuff something in. 
22:53:38 <CakeProphet> ah okay... a register is basically... a single unit of information. 
23:06:44 <lament3> CakeProphet: a _register_ is a hardware term. 
23:06:48 <lament3> it is not a data structure. 
23:07:19 <lament3> registers are named places where CPU stores values. 
23:07:20 * CakeProphet suddenly feels like he's being cornered for something nasty he said. :/ 
23:07:59 <CakeProphet> I was just confused over whether a register was intended for holding multiple units of information or just one. 
23:08:29 <CakeProphet> when I imagine a register I imagine a big jar of data that you can fetch stuff from... but now I realize it's singular. 
23:09:49 -!- Figs has joined. 
23:13:30 -!- jix__ has changed nick to jix. 
23:14:58 <Figs> duck typing, or implicit typing? 
23:16:20 <Figs> data and instructions are the same thing! 
23:16:41 <Figs> it'd be funny to take a program and use the code to build output messages 
23:17:03 <Figs> obfuscation, ftw 
23:20:35 <CakeProphet> hmmm... it's a shame that instruction jumps take less effort than modifying the program... in assembly. 
23:20:57 <CakeProphet> ...at least - with my shoddy conceptualization of a comptuer 
23:20:59 <Figs> you should look at the Synthesis Kernel :) 
23:21:20 <Figs> Cake, are you 7"B? 
23:21:45 <Figs> I didn't put 2 and 5 together to get Cake. :| 
23:21:58 * Figs adds 6 and 1... cake? 
23:22:13 <CakeProphet> hmmm... well, I guess it depends on how you build the computer which one goes quicker... 
23:33:30 -!- CakeProphet has quit (Read error: 104 (Connection reset by peer)). 
23:33:51 -!- CakeProphet has joined. 
23:38:13 -!- nazgjunk has quit ("Bi-la Kaifa"). 
23:55:30 <Sukoshi> Go outside and hope enough charge accumulates in the clouds to exceed the dielectric capacity of air. 
23:58:22 <bsmntbombdood> a machine where the only storage is a single natural number 
23:58:30 <oerjan> Myself, I would not lightly assume that death cures boredom.