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.