←2007-02 2007-03 2007-04→ ↑2007 ↑all
2007-03-01
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:09:03 <RodgerTheGreat> hi everyone
17:10:20 <oerjan> hi
17:11:15 <RodgerTheGreat> how goes it, oerjan?
17:11:31 <oerjan> writing a Forte interpreter
17:11:40 <RodgerTheGreat> cool
17:11:50 <RodgerTheGreat> what language are you coding it in?
17:11:54 <oerjan> Haskell
17:13:05 <oerjan> using a purely functional parsing library to parse an interactive interpreter with continuation lines has its, ahem, issues.
17:13:17 <RodgerTheGreat> heheh
17:13:34 <RodgerTheGreat> well, that's why this is #Esoteric
17:13:47 <RodgerTheGreat> it wouldn't be proper if it wasn't a challenge
17:14:31 <oerjan> well - there are many esoteric languages that are much easier to implement than to use.
17:16:56 <RodgerTheGreat> like bitwise cyclic tag.
17:16:59 * RodgerTheGreat shudders
17:19:56 <helios24> !help
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.
2007-03-02
00:04:13 -!- crathman has quit (Read error: 104 (Connection reset by peer)).
01:00:10 -!- lament has joined.
01:00:14 <lament> |
01:00:35 <RodgerTheGreat> _
01:00:56 <oerjan> \
01:02:30 <fizzie> I guess I'm left with /, then.
01:03:50 <lament> .
01:05:24 <oerjan> :
01:06:25 <fizzie>
01:06:30 <lament>
01:06:44 <oerjan> oh no, Unicode
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:13:06 <bsmntbombdood> hi
01:14:57 <oerjan> 'lo
01:40:34 <bsmntbombdood> I wonder how to simplify things like ``SKx
01:41:03 <bsmntbombdood> exstentionaly
01:42:19 <oerjan> well it's simple in lambda calculus, but i don't know about SKI.
01:43:16 <bsmntbombdood> yeah
01:53:21 <bsmntbombdood> ok i've got it to do one variable to I and K
01:54:18 <bsmntbombdood> ``SKx ==> I
01:54:47 <bsmntbombdood> ``S`Kx`Ky ==> `K`xy
01:58:59 <oerjan> and of course ``S`KxI = x
02:01:02 <bsmntbombdood> ?
02:03:57 <bsmntbombdood> can't do ``S`KKI = K yet
02:05:21 <oerjan> why not?
02:05:41 <bsmntbombdood> It's possible, but the algorithm doesn't
02:05:51 <bsmntbombdood> aah, there
02:08:43 -!- SevenInchBread has joined.
02:08:58 <bsmntbombdood> now for multiple variables....
02:09:05 <SevenInchBread> hmmm... this is interesting...
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:10:26 <bsmntbombdood> fun
02:11:52 <SevenInchBread> http://deadbeefbabe.org/paste/3839
02:12:05 * SevenInchBread is messing around with fractals, thue, and turtles :)
02:14:49 <bsmntbombdood> what are some multiple argument extensional simplifications?
02:15:35 <SevenInchBread> ....uh, what?
02:15:42 * SevenInchBread doesn't understand your lingo.
02:16:11 <bsmntbombdood> ``SKK is extensionaly equal to I
02:16:23 <bsmntbombdood> because ```SKKx = x
02:16:26 <oerjan> i think it may be simpler to convert to lambda calculus, eta-reduce, then convert back.
02:17:01 <bsmntbombdood> I don't understand eta reduction
02:17:24 <oerjan> \x.fx = f where f does not contain x
02:17:59 <bsmntbombdood> oh
02:18:20 <bsmntbombdood> you mean Kf
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:18:46 <oerjan> no.
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:18 <oerjan> let's see.
02:20:38 <oerjan> the only changing parameter is dist.
02:20:52 <SevenInchBread> it just flips back and forth from what I can tell.
02:21:00 <SevenInchBread> to True and False for that condition.
02:21:23 * SevenInchBread breadcrumbs to find out for sure.
02:21:24 <bsmntbombdood> ooh, it does ``S`KxI now
02:22:06 <oerjan> i think i understand.
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:23:38 <SevenInchBread> just... minute enough to... draw a circlish thing?
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:25:39 <bsmntbombdood> ``S``S`KSK`KI
02:25:46 <bsmntbombdood> is equal to I
02:26:20 <SevenInchBread> ah... yeah that makes sense.
02:26:38 <SevenInchBread> darn... I thought I might have found some weird mathematical pattern.
02:27:10 <oerjan> alas
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:51 <SevenInchBread> **= and /= maybe :)
02:29:56 <oerjan> then dist could change in a more complicated pattern.
02:30:40 <SevenInchBread> hmmm..
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:37 <oerjan> oh.
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:32:43 <oerjan> *If
02:33:01 <SevenInchBread> could be floating point?
02:33:07 <oerjan> yeah
02:33:16 * SevenInchBread uses Python's decimal format thing.
02:33:21 <SevenInchBread> just to see.
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:38:13 <SevenInchBread> decimal.InvalidOperation: x ** (non-integer)
02:40:08 <bsmntbombdood> yessss it works now
02:40:55 <bsmntbombdood> ``S``S`KSK`KI ==> I
02:42:20 <SevenInchBread> bah... using Decimal just makes the floating point math done in the turtle module screw up.
02:42:20 <bsmntbombdood> sweet
02:43:41 <bsmntbombdood> It's noticably slower now though
02:44:37 <bsmntbombdood> `x`x`x`x`x`xx takes like 1.5 seconds
02:44:44 <SevenInchBread> hmmm... is decimal arithmetic considerably slower than good ol' floating point?
02:45:44 * bsmntbombdood disappears
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:10:10 <bsmntbombdood> ...huh?
03:11:41 <SevenInchBread> decimal format... instead of binary floating point.
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:37 <bsmntbombdood> rationals for the win
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:14 <SevenInchBread> yeah... mostly finance.
03:16:29 <oerjan> and that's not really because decimals are more accurate.
03:16:39 <SevenInchBread> more... precise? or something like that?
03:17:01 <bsmntbombdood> because .1 has to be 1/10
03:17:22 <oerjan> it's because financial calculations are strictly defined by old traditions from before there were binary computers.
03:18:00 <bsmntbombdood> this simplifier is sloow now
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:19:54 <bsmntbombdood> heh
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:27 <bsmntbombdood> maybe
03:20:34 * SevenInchBread is reading up on number representations.
03:20:43 <oerjan> as in, repeating work bugs
03:21:10 <bsmntbombdood> yeah, there is one
03:23:50 <bsmntbombdood> http://pastebin.ca/377911
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.
13:59:54 <EgoBot> 42
14:11:10 -!- ais523 has quit.
14:29:00 <oklofok> -1
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.
2007-03-03
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:12 <UnrelatedToQaz> !help
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:44 <UnrelatedToQaz> !help funge93
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:18 <UnrelatedToQaz> !help bf
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:07:52 <UnrelatedToQaz> funge93 "h".@
12:08:02 <UnrelatedToQaz> didn't think so
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:15:06 <nooga_> yo yo yyo
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:32:53 <bsmntbombdood> An ELF loader, eh?
19:32:57 <bsmntbombdood> how does that work?
19:34:28 <bsmntbombdood> Can that be just a user program?
19:34:32 <bsmntbombdood> GregorR: ^
19:56:59 -!- tgwizard has quit (Remote closed the connection).
20:04:31 * GregorR reappears.
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:07:02 <bsmntbombdood> hmm
20:07:38 <bsmntbombdood> How do you load the program?
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:52:45 <SevenInchBread> hmmm...
20:52:52 <SevenInchBread> so...
20:53:09 <SevenInchBread> I've come to a problem with Sophia.
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:06:11 <SevenInchBread> but... I don't think that will work with this.
21:08:59 <SevenInchBread> you've got expression := "(" expression* ")" | word | StringLiteral | NumberLiteral
21:09:05 <SevenInchBread> ...which is a lot like lisp
21:09:53 <SevenInchBread> but it's OO... instead of (func arg1 arg2 ...) you've got (object message arg)
21:11:53 <bsmntbombdood> ...
21:13:01 <SevenInchBread> ...
21:13:01 <bsmntbombdood> ...
21:13:01 <SevenInchBread> YOU THERE
21:13:01 <SevenInchBread> HELP ME OUT WITH THIS... IT'LL BE FUN.
21:13:01 <SevenInchBread> It's my Lisp/Erlang/Smalltalk thing.
21:13:27 <SevenInchBread> OH
21:13:28 <SevenInchBread> I KNOW
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.
21:47:26 <SevenInchBread> bsmntbombdood, aaaaah
22:18:45 -!- sekhmet has quit (Read error: 104 (Connection reset by peer)).
22:18:47 -!- sekhmet has joined.
22:24:14 <bsmntbombdood> what?
22:24:44 <bsmntbombdood> SevenInchBread:
22:25:14 <SevenInchBread> >.>
22:25:18 <SevenInchBread> nothing. :)
22:25:44 <bsmntbombdood> <SevenInchBread> I'll do the implicit-line-continuation-on-parenthesis thing... like Python.
22:25:47 <bsmntbombdood> ?
22:25:59 <bsmntbombdood> I don't know of a lisp that doesn't
22:26:14 <bsmntbombdood> lisps don't have a concept of lines
22:27:06 <SevenInchBread> well... lisp uses -only- parenthesis... where I'll be using newlines-but-only-if-no-parenthesis-are-open.
22:27:16 <SevenInchBread> because my syntax doesn't play nice with that.
22:28:10 <bsmntbombdood> hmm
22:29:18 <bsmntbombdood> so everything on a line would be one sexp?
22:29:34 <bsmntbombdood> "foo bar baz\n" is (foo bar baz)?
22:31:11 -!- SevenInchBread has quit (Read error: 113 (No route to host)).
22:31:28 -!- SevenInchBread has joined.
22:31:47 <bsmntbombdood> ?
22:33:15 <bsmntbombdood> You see what I said?
22:34:05 <bsmntbombdood> that's not going to work well
22:35:35 <bsmntbombdood> better to keep the syntax nice and regular
22:44:26 <SevenInchBread> well see...
22:45:16 <SevenInchBread> method calls sort of skew the syntax away from being Lispable.
22:45:36 <SevenInchBread> (SophiaObject method 2) + 2
22:47:04 <SevenInchBread> parenthesis don't signify the start and end of an expression.
22:47:18 -!- GreaseMonkey has joined.
22:47:35 <bsmntbombdood> huh?
22:49:07 <SevenInchBread> >.>
22:49:09 <SevenInchBread> well...
22:49:20 <SevenInchBread> ...
22:49:31 <bsmntbombdood> (send object 'method)?
22:51:46 <bsmntbombdood> or (object 'method), same thing
22:52:13 <SimonRC> ooh @ moon
22:56:56 -!- Rugxulo has joined.
22:57:05 -!- Rugxulo has quit (Remote closed the connection).
22:57:47 * bsmntbombdood went out and howled last night
22:59:18 <SevenInchBread> hmmm...
22:59:29 <SevenInchBread> see.... parenthesis don't signify a call in Sophia... they just group expressions.
22:59:41 <SevenInchBread> so that can't be used to separate lines.
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:04:11 <bsmntbombdood> ok then, (method object arg) and use CLOS
23:05:10 -!- ShadowHntr has joined.
23:09:03 <SimonRC> bsmntbombdood: No you twallock I was talking about the eclipse.
23:09:15 <bsmntbombdood> eclipse?
23:09:27 <SimonRC> duh
23:09:47 <SimonRC> http://news.bbc.co.uk/1/hi/sci/tech/6411991.stm
23:11:07 <bsmntbombdood> fun
23:20:41 -!- sebbu has joined.
23:20:52 <SimonRC> sebbu: have you been watching?
23:21:02 <bsmntbombdood> ~raw PRIVMSG #esoteric :bsmntbombdood
23:21:25 -!- bsmnt_bot has joined.
23:21:30 <bsmntbombdood> wtf?
23:22:21 <bsmntbombdood> ~raw PRIVMSG #esoteric :bsmntbombdood
23:22:21 <bsmnt_bot> bsmntbombdood
23:39:20 -!- sebbu2 has quit (Connection timed out).
2007-03-04
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:28:54 <bsmntbombdood> And I need your help to fulfil this urge
00:28:58 <bsmntbombdood> Ideas please.
00:29:17 * GreaseMonkey points: (::'''
00:30:01 <bsmntbombdood> ?
00:30:41 <SevenInchBread> not much you can do with an integer pointer to make it esoteric... floating point, imaginary, rational?
00:31:00 <SevenInchBread> ...quaternion?
00:31:05 <bsmntbombdood> The actual pointer doesn't have to be esoteric, just its use
00:31:21 <SevenInchBread> ...make it point to a pointer.
00:31:31 <bsmntbombdood> boring
00:31:38 <SevenInchBread> that points to an integer, which becomes to pointers new value.
00:31:51 <sebbu> SimonRC, watching what ?
00:31:56 <bsmntbombdood> what for?
00:32:22 <SevenInchBread> well... it gives you some moderate form of control flow.
00:32:44 <SimonRC> sebbu: the moon
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:55 <bsmntbombdood> sure
00:33:56 <SimonRC> actually, make that cons cells as your only primitive type
00:34:07 <bsmntbombdood> ...
00:34:11 <SimonRC> nil is a cons cell that points to itself twice
00:34:17 <SevenInchBread> hahaha... lists with nothing to put in them :)
00:35:13 <bsmntbombdood> more lists
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:35:55 <SevenInchBread> yeah.
00:35:56 <SimonRC> in log-space
00:36:05 <bsmntbombdood> how?
00:36:08 <SevenInchBread> so then concatenation of the trees would be like addition.
00:36:22 <SimonRC> well, you have 0 = nil...
00:36:32 <SimonRC> ah, wait, no...
00:36:38 <SimonRC> oh, yes
00:36:41 <SimonRC> 0 = NIL
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:26 <bsmntbombdood> oh
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:14 <bsmntbombdood> SevenInchBread: cons takes two arguments
00:38:26 <SevenInchBread> ... just assume all of those have nill on them or whatever :P
00:38:42 <SevenInchBread> basically what simon said
00:38:49 <SimonRC> nil = (nil . nil), BTW
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:16 <bsmntbombdood> nil = NULL
00:39:27 * SimonRC searches for the thing he needs
00:39:31 <SimonRC> bsmntbombdood: nonono
00:39:35 <SimonRC> or maybe yes
00:39:58 <SevenInchBread> yeah, I'm pretty sure nil is a null pointer by itself.
00:40:11 <bsmntbombdood> 1 doesn't make sense
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:40:58 <SevenInchBread> 1 = (nil nil)
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:41:09 <SevenInchBread> you basically making a base-1 nuimeral system.
00:41:10 <SimonRC> just what we need
00:41:20 <SimonRC> and it works in log-space
00:41:29 <bsmntbombdood> bah, ps
00:41:52 <bsmntbombdood> and sideways
00:42:16 <SimonRC> for me it is upside-down
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:43:29 <bsmntbombdood> there
00:43:46 <bsmntbombdood> xpdf renders it nicely
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:46:13 <bsmntbombdood> I don't understand the notation though
00:46:34 <bsmntbombdood> page 5
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:33 <bsmntbombdood> lightweight proceses
00:50:49 <bsmntbombdood> http://en.wikipedia.org/wiki/Image:PM1%2B1%3D2lemma.jpg
00:50:52 <SevenInchBread> eh... so then you'd communicate solely by address?
00:50:58 <bsmntbombdood> that's some dense notation right there
00:51:24 <SimonRC> SevenInchBread: eh?
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:00 <bsmntbombdood> 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:54:34 <SevenInchBread> How do you make a thread exactly?
00:56:23 <SimonRC> you start by RTFM
00:56:26 <bsmntbombdood> pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);
00:56:34 <bsmntbombdood> like that
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*.
00:59:17 <bsmntbombdood> Then you remember that it was implemented in C
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:00:58 <bsmntbombdood> I've seen COME FROM somewhere
01:01:06 <SimonRC> you might be able to do some dreadful hashing trick
01:01:07 <GreaseMonkey> um, with an instruction trap perhaps?
01:01:15 <oerjan> in INTERCAL, but that is for program flow.
01:01:15 <SimonRC> bsmntbombdood: INTERCAL
01:01:24 <bsmntbombdood> ph
01:01:27 <bsmntbombdood> oh
01:01:34 <oerjan> i meant for data.
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:05:44 <SevenInchBread> ...reverse pointers... like...
01:05:59 <SevenInchBread> ...
01:06:02 <SevenInchBread> hmmm...
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:06:56 <SevenInchBread> ...what would a reverse pointer do? Point to itself?
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:35 * bsmnt_bot ACTION ACTION
01:11:46 <ihope_> Mm-hmm.
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:02 * bsmnt_bot ACTION
01:12:06 <SimonRC> ah...
01:12:10 <SimonRC> http://www.scottaaronson.com/writings/bignumbers.html
01:12:21 <ihope_> ...Never mind?
01:12:25 <SimonRC> I meant "union-find"
01:12:26 <oerjan> thank you.
01:17:29 <ihope_> Oh, huh.
01:17:36 <ihope_> ~exec self.raw("PRIVMSG #esoteric :Foobar\001")
01:17:36 <bsmnt_bot> Foobar<CTCP>
01:17:48 <ihope_> ~exec self.raw("PRIVMSG #esoteric :Foo\001ACTION bar\001")
01:17:48 <bsmnt_bot> Foo<CTCP>ACTION bar<CTCP>
01:17:57 <oerjan> hm...
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:42 <bsmnt_bot> SyntaxError: invalid syntax
01:22:50 <ihope_> ~exec self.raw("PRIVMSG #esoteric :\001ACTION bar\001Foo")
01:22:50 <bsmnt_bot> <CTCP>ACTION bar<CTCP>Foo
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:30 <bsmnt_bot> foo<CTCP>bar<CTCP>
01:23:30 <bsmnt_bot> <CTCP>bar<CTCP>foo
01:23:45 <ihope_> I didn't see anything there either.
01:24:06 <oerjan> you mean you saw absolutely nothing?
01:24:20 <ihope_> 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:00 <bsmnt_bot> foo<CTCP><CTCP>bar
01:25:07 <ihope_> ~exec self.raw("PRIVMSG #esoteric :foo\001\001")
01:25:08 <bsmnt_bot> foo<CTCP><CTCP>
01:25:15 <ihope_> ~exec self.raw("PRIVMSG #esoteric :\001\001bar")
01:25:16 <bsmnt_bot> <CTCP><CTCP>bar
01:25:32 <ihope_> ...wait a minute...
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:06 <bsmnt_bot> <CTCP><CTCP>bar
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:26:45 <bsmnt_bot> <CTCP><CTCP>
01:26:52 <oerjan> *A=\A
01:27:10 <ihope_> ~exec self.raw("PRIVMSG #esoteric :\001ACTION throws a \001 at ihope_\001")
01:27:10 * bsmnt_bot throws a <CTCP> at ihope_
01:27:19 <ihope_> ~exec self.raw("PRIVMSG #esoteric :\001\001\001")
01:27:20 <bsmnt_bot> <CTCP><CTCP><CTCP>
01:27:53 <oerjan> unknown CTCP \A
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:28:49 <oerjan> or, wait.
01:28:57 <oerjan> not quite.
01:29:27 <oerjan> it should have been unknown CTCP "" followed by a single \A in a message, I think.
01:29:58 <ihope_> All so very weird.
01:30:03 <oerjan> anyhow, the conclusion is that you can count on \A working only at the ends of messages.
01:30:21 <oerjan> *beginning and end
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:22 <oerjan> (irssi)
01:32:24 <ihope_> Maybe #tapthru would be a better place to ask...
01:32:53 <oerjan> probably
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:45:45 <bsmntbombdood> ackerman function is funny
01:47:37 <bsmntbombdood> gah
01:47:45 * bsmntbombdood wants to understand that bignums paper
01:48:14 <oerjan> anything in particular?
01:48:40 <bsmntbombdood> the notation
01:49:10 <bsmntbombdood> I'm lost after page 3
01:49:38 <oerjan> eh, the pages aren't numbered
01:50:02 <bsmntbombdood> "Representation of natural numbers" is page 3
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:41:05 <SevenInchBread> mmm... parsers are very easy to make messy. :)
02:43:37 <SimonRC> the solution is the Use a parser-generator or a monadic parsing library
02:43:42 <SimonRC> *to use
02:44:11 <SimonRC> the latter give you unbelievably awful code but you never have to look at it.
02:44:15 <SimonRC> *former
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:03:50 <SevenInchBread> well... I see it happening in "stages" so to speak...
03:04:18 <SevenInchBread> this part of it is building the AST by just finding literal characters and reacting to them.
03:04:45 <SevenInchBread> so far I've managed to keep it fairly clean.
03:08:29 <SevenInchBread> What's the... uh.. typical way to do it?
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:14 <SevenInchBread> I made it for a different purpose...
03:15:21 <SevenInchBread> but... it would work great for parsing.
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:16:27 <SimonRC> SevenInchBread: do tell
03:16:39 <SevenInchBread> let me see if I can find it...
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:00 <SevenInchBread> http://deadbeefbabe.org/paste/3859
03:19:34 <SevenInchBread> _read will be the most relevant
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:23:53 <SevenInchBread> ...
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:25:54 <SevenInchBread> or something.
03:26:07 <oerjan> so this is exactly the opposite of what i suggested.
03:26:18 <SevenInchBread> ...probably
03:26:26 <oerjan> if you let the parser do the calling, you don't need coroutines.
03:26:42 <SevenInchBread> ...it does
03:26:51 <SevenInchBread> that's what I'm doing right now...
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:30:44 <SevenInchBread> that's what Im... doing? :)
03:31:13 <oerjan> ok then
03:31:19 -!- calamari has joined.
03:31:24 <calamari> hi
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:19 <SimonRC> I will last weeks usually
03:35:46 <ihope_> Who'd last the longest?
03:35:49 <ihope_> clog?
03:35:52 <ihope_> :-P
04:01:34 -!- GreaseMonkey has joined.
04:01:50 -!- thematrixeatsyou has quit (Nick collision from services.).
04:29:58 * SimonRC goes to bed
04:31:28 <bsmntbombdood> 9:28PM up 83 days, 4:38, 1 user, load averages: 0.10, 0.09, 0.08
04:31:54 <bsmntbombdood> Irssi uptime: 39d 2h 31m 20s
04:31:55 <bsmntbombdood> :)
04:32:09 <ihope_> Who's that, now?
04:32:16 <bsmntbombdood> me
04:32:23 <ihope_> 39 days?
04:32:32 <ihope_> Not bad :-)
04:33:00 <bsmntbombdood> that's actually not running on one of my boxes
04:33:04 <bsmntbombdood> but the 83 days is
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:15:24 <oklopol> hmmmm
16:15:25 <oklopol> ....
16:15:32 <oklopol> this window is broken.
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:25 <oklopol> here goes!
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:22 <oklopol> i doubt it
16:31:25 <oerjan> indeed, why doesn't Glass have a window system?
16:31:33 <oklopol> yep, wondering the same thing
16:31:35 <oerjan> it's illogical!
16:31:49 <oklopol> it should have a lot of inbuilt window stuff
16:32:00 <oklopol> class W to be precise
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:21 <RodgerTheGreat> something like fluidic logic?
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:39:57 <RodgerTheGreat> I guess there's always optical computing as well
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:50:31 <oklopol> i meant better
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:36:03 <ihope> Eh.
19:37:25 <jix> ~ctcp #esoteric Version
19:37:42 <jix> ~ctcp #ruby-de Version
19:37:44 <ihope> Heh.
19:38:56 <ihope> ...I could have just used /names, eh?
19:39:24 <jix> hm?
19:39:33 <jix> yeah
19:45:05 * bsmntbombdood writes a VM
19:45:10 <bsmntbombdood> register machine
19:47:21 <bsmntbombdood> for no particular reason
19:48:43 <ihope> Minsky?
19:50:23 <bsmntbombdood> no
19:53:04 <bsmntbombdood> Segmentation fault (core dumped)
19:53:25 <bsmntbombdood> wtf.
19:54:21 <bsmntbombdood> hmmm
19:54:38 <bsmntbombdood> that's odd
19:54:46 <oerjan> off-by-one error?
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:55:52 <oerjan> ???
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:02 <SimonRC> :-P
19:57:11 <bsmntbombdood> nope
19:57:16 <bsmntbombdood> struct instruction cur;
19:57:41 <oerjan> is it a global?
19:57:46 <SimonRC> Sorry, I've just been reading about fictional objects and tasks that noobs are sent to fetch/do.
19:57:51 <bsmntbombdood> no, local
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.
19:58:58 <bsmntbombdood> other locals are broken too
19:59:04 <SimonRC> :-S
19:59:20 <oerjan> is cur a parameter?
19:59:36 <bsmntbombdood> no
19:59:58 <bsmntbombdood> stack is undereferenceable too
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:42 * bsmntbombdood laughs at ihope
20:00:47 <oerjan> have you set any strange options?
20:01:02 <bsmntbombdood> nope
20:01:04 <bsmntbombdood> gcc -g
20:01:31 <SimonRC> (The root window in X Windows is "root" in the graph theory sense, not like the "root user".)
20:01:58 <bsmntbombdood> mmm hmmm
20:02:04 * SimonRC asks ihope to fetch an optical mouse ball from the cupboard.
20:02:13 <bsmntbombdood> heh
20:02:17 <SimonRC> sorry, i am having an attack of silly creativity.
20:02:29 * ihope does so
20:02:42 <oerjan> :D
20:03:10 <bsmntbombdood> this is weird
20:03:32 <oerjan> what other variables are broken?
20:03:47 <bsmntbombdood> stack, an array
20:03:49 <SevenInchBread> hmmm... bugSophia actuallys looks pretty fun... I should implement it.
20:04:06 <bsmntbombdood> of struct state s
20:04:33 <SimonRC> maybe your linker fucked up
20:05:04 <bsmntbombdood> It's all one file
20:05:19 <oerjan> pastebin
20:06:07 <bsmntbombdood> http://pastebin.ca/381344
20:06:32 <bsmntbombdood> line 17 is where is segfaults
20:08:47 <oerjan> immediately, or does it go throught the loop?
20:09:40 <bsmntbombdood> immediatly
20:09:42 <oerjan> what happens if you make cur global?
20:11:05 <bsmntbombdood> segfaults on line 18
20:11:39 -!- ShadowHntr has quit ("End of line.").
20:12:39 -!- helios24 has quit ("Leaving").
20:14:11 <oerjan> well i give up
20:25:34 -!- oerjan has quit ("leaving").
20:26:35 <bsmntbombdood> this is weird
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:37 <bsmntbombdood> we don't care
20:28:38 <oklopol> i just coded a working game ai in python
20:28:43 <oklopol> took about 3 hours
20:28:47 <oklopol> ...and now it's gone
20:28:56 <jix> how could that happen?!
20:29:03 <oklopol> i have no idea.
20:29:13 <oklopol> i opened the file and it loaded a 4 hour old version
20:29:14 <oklopol> :)
20:29:28 <oklopol> maybe python doesn't save on alt-f-s
20:29:31 <oklopol> like notepad
20:29:41 <oklopol> i just do thatit does
20:29:44 <oklopol> *it does
20:29:52 <oklopol> so... no idea
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:22 <oklopol> pyidle
20:30:30 <jix> hmm
20:30:31 <jix> dunno
20:30:46 <oklopol> idle is the name i think
20:30:51 <oklopol> an ide for python
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:32 <oklopol> and i do!
20:32:40 <oklopol> just got one
20:32:41 <jix> oklopol: you have one?
20:32:44 <oklopol> yeah
20:32:47 <jix> i got one a month ago
20:32:53 <oklopol> :D
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:15 <oklopol> what?
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:00 <ihope> Aye.
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:34:46 <SevenInchBread> ....business programming always makes me nauseas...
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:50 <oklopol> :P
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:36:34 <oklopol> human
20:36:36 <oklopol> maybe
20:39:34 <jix> well but now i have time to code :)
20:40:41 <oklopol> i'm pretty furious now, fuck this
20:40:49 <oklopol> python
20:40:52 <oklopol> i'll strangle it
20:40:59 <lament> python is nice.
20:41:13 <bsmntbombdood> WHY YOU SEGFAULT!
20:41:14 <oklopol> python is mean
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:07:24 <bsmntbombdood> ok, figured it out
21:07:35 <bsmntbombdood> I was requesting too much memory from the stack
21:32:01 <bsmntbombdood> I am confused
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:48:45 <bsmntbombdood> ok my vm fails
21:50:04 <SevenInchBread> mmm... http://esolangs.org/wiki/BugSophia#99_bottles_of_beer_.28truncated_lytics.29 <--coolest looking 99BoB ever.
21:50:32 <bsmntbombdood> heh
21:51:59 <bsmntbombdood> I thought I had a good idea but I didn't
21:53:58 <SevenInchBread> >.>
21:54:37 <bsmntbombdood> Can't figure out how to return values from subroutines
21:55:23 <SevenInchBread> in?
21:55:47 <bsmntbombdood> This little vm I was writing
21:56:19 <SevenInchBread> I've never figured out what a vm was other than some kind of abstract-assembly type thing.
21:56:26 <bsmntbombdood> yeah
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:57:49 <bsmntbombdood> ?
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:58:51 <bsmntbombdood> yeah
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.
21:59:53 <SevenInchBread> the 99 BoB would be at least a hundred.
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:20 <oklopol> okay, 30
22:04:23 <oklopol> maybe 40
22:04:26 <oklopol> but you get the point
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:09:50 <SevenInchBread> 5150
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:13:42 <SevenInchBread> ...wow... what a coincidence?
22:16:37 <bsmntbombdood> indeed
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:25 <oklopol> a brute force ai :)
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:22:35 <oklopol> yes
22:22:57 <SevenInchBread> How far do you go with each of them?
22:23:12 <oklopol> you can specify it for the
22:23:13 <oklopol> ai
22:23:32 <oklopol> but, the problem is never depth, it's width
22:23:35 <oklopol> bredth
22:23:37 <oklopol> whatever
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:40 <oklopol> hmm, sounds like fun :D
22:25:53 <oklopol> i wish i had irl friends who could program befunge...
22:26:15 <bsmntbombdood> heh
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:43 <SevenInchBread> IN TKINTER.
22:26:45 <oklopol> do it and well have fun together ;D
22:26:45 <SevenInchBread> :)
22:26:51 <SevenInchBread> ...suuure
22:26:53 <oklopol> *we'll
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:29:10 <bsmntbombdood> http://freedns.afraid.org/
22:29:47 <SevenInchBread> ....sweet. :)
22:31:46 <SevenInchBread> ...will they spam your email? :)
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:37:44 <bsmntbombdood> no
22:40:12 -!- sebbu3 has quit (Connection timed out).
22:41:37 <bsmntbombdood> (am bored i)
22:41:55 <oklopol> okay... anybody wanna explain something to me
22:41:59 <oklopol> (wait, i'll tell)
22:42:27 <oklopol> i made a timeout for my algo, it only does 300000 iterations before terminating
22:42:41 <bsmntbombdood> heh
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:45:48 <bsmntbombdood> It's a sign from the jeebus
22:46:27 <SevenInchBread> hmm... alright.
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:46:56 <SevenInchBread> aah.. wait nevermind.
22:47:05 <SevenInchBread> duh... it just goes to my IP address. :P
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:49:01 <SevenInchBread> otherwise I'll just make my own.
22:51:08 <oklopol> make your own!
22:51:30 * oklopol loves torturing his computer
22:52:11 <SevenInchBread> ...I wonder how terrible of a server my computer makes. :)
22:52:22 * SevenInchBread has the cheapest Dell he could have bought.
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:09 <oklopol> i don't know
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:54:51 <oklopol> huh?
22:54:56 <oklopol> server you mean?
22:55:02 <oklopol> ah yeah
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
22:57:02 <bsmntbombdood> and proccessor...and bus speed...
22:58:56 <bsmntbombdood> and 1337n355
23:02:36 <SevenInchBread> it would depend on what you're using it for though.
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:26:37 <oklopol> 1+1 is pretty computable
23:26:48 <oklopol> doesn't explode though
23:27:03 <SimonRC> nonono, a particular thing
23:27:36 <oklopol> i misread your typo, sorry
23:27:37 <oklopol> :P
23:27:46 <oklopol> hmm
23:27:49 <oklopol> there was no typo
23:27:56 <oklopol> yes there was
23:34:13 <SevenInchBread> ....this is basically just an echo server.
23:34:28 <SevenInchBread> takes input and shouts it out to everyone.
23:38:32 <SevenInchBread> ...with a number next to it.
23:38:53 <bsmntbombdood> what's the point of ackermann's function
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:17 <bsmntbombdood> in general
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:15 <SevenInchBread> yaaay... got the server done..
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:58:40 <SevenInchBread> er...
23:58:42 <SevenInchBread> HTTP
23:59:09 <Asztal> camping!
23:59:16 <SevenInchBread> ...heh, I'll just write one... while I'm at it.
23:59:37 <oerjan> Asztal: Here? And did you bring a tent?
2007-03-05
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 <Asztal> 1..10
00:05:22 <SevenInchBread> link?
00:05:22 <RobHu> lol
00:05:22 <oerjan> 1 2 3 4 5 6 7 8 9 10
00:05:22 <RobHu> lupine_85: http://esoteric.voxelperfect.net/wiki/IRP
00:05:22 <RobHu> thank you :-)
00:05:22 <SevenInchBread> ....that's the whole program?
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 <SevenInchBread> ...is there a lazier way to get it?
00:05:22 <Asztal> it's more of a joke framework, I think, but I love it
00:05:22 <Asztal> through rubygems
00:05:22 <RobHu> people write real stuff in camping
00:05:22 <SevenInchBread> ....pardon?
00:05:22 <Asztal> Do you know any Ruby? That would be a nice start.
00:05:22 <lupine_85> RobHu: ah...
00:05:22 <lupine_85> sleep(lupine_85);
00:05:22 <SevenInchBread> ...nope
00:05:34 * SevenInchBread is on Windows... probably doesn't have a Ruby interpreter thing.
00:05:52 <bsmntbombdood> Please output the proof that P=NP.
00:05:53 <SevenInchBread> BUT I SHALL GET IT
00:06:53 <oerjan> bsmntbombdood: Sorry, that question is undecidable. Of course that cannot be proved.
00:07:29 <bsmntbombdood> x^2 - x^2 = x^2 - x^2
00:07:41 <bsmntbombdood> x(x - x) = (x + x)(x - x)
00:07:48 <bsmntbombdood> x = x + x
00:07:50 <bsmntbombdood> 1 = 2
00:07:52 <oerjan> BZZT!!!! wrong!
00:08:29 <bsmntbombdood> I know, I know
00:08:39 <oklopol> bsmntbombdood no you don't
00:08:52 <oerjan> U R ZEH IGNORANT
00:09:10 <bsmntbombdood> I DIVIDE BY ZERO ALL THE TIME!
00:09:43 <lupine_85> mm, me too
00:09:51 <SevenInchBread> I'M DIVIDING SOMETHING INTO ZERO PARTS ALL THE TIME.
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:11:53 <SevenInchBread> lol tk is the best GUI toolkit evar
00:12:10 <lament> use curses
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:35 <oerjan> what is F?
00:12:36 <bsmntbombdood> ha, rings
00:12:42 <SimonRC> F being the set and operations of IEEE floating point numbers.
00:12:45 <bsmntbombdood> I tried to understand GNFS once
00:12:51 <SimonRC> ??
00:13:01 <SimonRC> generalised normal forms?
00:13:18 <bsmntbombdood> general number field sieve
00:13:29 <bsmntbombdood> fast(est) factoring algorithm
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:37 <bsmntbombdood> oh?
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:16:38 <bsmntbombdood> what's the algorithm?
00:19:10 <oklopol> someday i'll understand p/np
00:19:27 <SevenInchBread> yaay... I'm getting Ruby.
00:19:43 <oklopol> rube all over you
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:20:30 <oklopol> well said...
00:21:35 * SevenInchBread should make an EsoUI toolkit.
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:23:48 <SevenInchBread> It's -too- consistent. :P
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:25 <Asztal> irb
00:36:39 <bsmntbombdood> yes
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:37:02 <bsmntbombdood> heh
00:37:52 <oerjan> *nondeterministic
00:37:59 <oerjan> always that.
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:08 <SevenInchBread> It doesn't really seem all that Perly.
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 <SevenInchBread> ...what does that have to do with anything then?
00:40:34 <lament> Asztal: the conscious decision on the part of the language designers to borrow from Perl.
00:40:45 <SevenInchBread> ...Perl isn't all bad.
00:40:50 <lament> Asztal: that is a sign of deep brain damage
00:41:03 <bsmntbombdood> heh
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:49:20 <SevenInchBread> Nothing special, but nothing terrible either.
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:55:45 <SevenInchBread> I would use like -> or something.
00:56:01 <lament> I would use :
00:56:06 <Asztal> I'd just use : like normal people :)
00:56:16 <SevenInchBread> pfft.. normal people.
00:56:51 <bsmntbombdood> like python
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:02 <oklopol> that's what i'd use
00:58:30 <SevenInchBread> and I'd use string keys by default...
00:58:42 <SevenInchBread> ...the quotes get kind of tiring when you're a lazy bastard.
00:59:15 <SevenInchBread> well... nevermind
00:59:19 <SevenInchBread> it could be a variable. :P
00:59:40 <bsmntbombdood> yeah
01:01:39 <SevenInchBread> I like the ! and ? convients too... with Python you just have to know from experience.
01:01:43 <SevenInchBread> conventions
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:06:50 <Asztal> wazup?!!!?!??1:!
01:06:50 <SevenInchBread> ...I like the range syntax.
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:16:58 <bsmntbombdood> Asztal: what does that mean?
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:24:57 <lament> what do ? and ! do?
01:26:17 <Asztal> here, they do different things in different places :/
01:27:22 <Asztal> it calls wazup?(true), eventually
01:29:38 <SevenInchBread> I thought they were just naming conventions
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:31:29 <EgoBot> Huh?
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:45:50 <bsmntbombdood> the predicate one?
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:11 * SimonRC sealthily calls main()
02:05:38 <bsmntbombdood> 973,694,665,856,161
02:05:40 * pikhq stealthily calls in the Chewbacca Defense
02:05:59 <SimonRC> bsmntbombdood: ???
02:06:04 <bsmntbombdood> the pope is the biggest cardinal
02:06:10 <bsmntbombdood> but every pope has a successor
02:06:21 <SevenInchBread> hmmm...
02:06:31 <SevenInchBread> which way do you guys like to work?
02:06:32 <bsmntbombdood> SimonRC: a charmicheal number
02:06:38 <SevenInchBread> top-to-bottom or bottom-to-top?
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:18 <SevenInchBread> hmmm... actually I do that a lot too.
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:11:03 <SimonRC> bsmntbombdood: define
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:14:59 <bsmntbombdood> fermat primality test, yes
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:21 <bsmntbombdood> there's small charmicheal numbers too
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:18 <ihope> Aww.
02:32:24 <pikhq> NOBODY expects the Spanish Inquisition!
02:45:24 <SevenInchBread> ...so...
02:45:53 <pikhq> Yes. We're a bunch of geeks who need lives. . .
02:45:58 <bsmntbombdood> yes.
02:46:04 <bsmntbombdood> ooh fun
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:04 <bsmntbombdood> s/if/iff/
02:48:40 <pikhq> And that demonstrates what I'm talking about quite well. :)
02:49:07 <bsmntbombdood> that is, the interval contains a positive integer
02:50:01 <oerjan> what if you take negative integers? do you get the continuation of fibonacci numbers to the left?
02:50:59 <bsmntbombdood> a few trials say yes
02:51:04 <oerjan> hm, somewhat dubious ...,8,-5,3,-2,1,-1,0,1,1,
02:51:25 <oerjan> eh wait.
02:51:31 <oerjan> that -1 is an error.
02:52:28 <oerjan> not much better ...,-8,5,-3,2,-1,1,0,1,1,
02:52:47 <bsmntbombdood> what?
02:53:27 <oerjan> every number is the sum of the two left ones.
02:53:37 <oerjan> *to the left
02:54:05 <bsmntbombdood> oh
02:54:16 <oerjan> so the continuation is not quite the same as the negatives.
02:54:27 <bsmntbombdood> but the test is
02:54:32 <oerjan> yep
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:54:52 <pikhq> 0,-1,-1,-2,-3...
02:56:16 <oerjan> another sequence of the form a*phi^n + b/phi^n.
02:56:23 * SimonRC goes to bed.
02:59:33 <oerjan> eh, a*phi^n + b/(-phi)^n, I think.
03:03:00 * bsmntbombdood watches 2 2 18^^p scroll by in dc
03:04:09 <bsmntbombdood> 2 2 20^^p, even better
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:08:22 <bsmntbombdood> dc is pretty esoteric
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:09:41 <bsmntbombdood> it's esoteric
03:11:57 <bsmntbombdood> 0[2 2 12^^plax]salax
03:13:07 <bsmntbombdood> oops i mean 0[2 2 12^^+plax]salax
03:14:56 <bsmntbombdood> prints 2^(2^12), 2^(2^12)*2, 2^(2^12)*3...
03:20:04 <bsmntbombdood> and it can pretty easily be used as a turing machine
03:20:15 <bsmntbombdood> it has 257 stacks
03:26:27 <bsmntbombdood> hahahaa
03:26:30 <bsmntbombdood> 1000k26o2vp
03:28:45 <bsmntbombdood> print 1000 decimal places of sqrt(2) in base 36
03:28:59 <bsmntbombdood> s/36/26/
03:30:11 <bsmntbombdood> dc will be my sole language from now on
03:30:32 <bsmntbombdood> it's functional too!
03:30:51 <pikhq> Now implement regexps in it.
03:31:06 <bsmntbombdood> I've never done that in a real language
03:32:57 <bsmntbombdood> too bad it doesn't optimize tail recursion
03:33:06 <bsmntbombdood> [7aPlax]salax segfaults
03:33:59 <bsmntbombdood> oooh
03:34:05 <bsmntbombdood> the openbsd version doesn't
03:35:11 <bsmntbombdood> looks like it optimizes tail recursion!
03:35:53 <pikhq> Or else it has infinite storage.
03:36:20 <bsmntbombdood> Maybe.
03:36:20 <bsmntbombdood> :P
03:36:50 <bsmntbombdood> up to a million tail calls...
03:40:09 <bsmntbombdood> brainfuck:
03:40:14 <bsmntbombdood> + is 1+
03:40:18 <bsmntbombdood> - is 1-
03:40:23 <bsmntbombdood> > is Sa
03:40:27 <bsmntbombdood> < is La
03:40:42 <bsmntbombdood> . is daP
03:43:36 <pikhq> Input's a bitch.
03:44:39 <bsmntbombdood> so is []
03:46:08 <bsmntbombdood> oh cool it's got arrays too
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").
03:54:58 <bsmntbombdood> hrm
03:55:30 <bsmntbombdood> do this: if pop() is zero, push 1, else 0
03:55:30 <bsmntbombdood> ?
03:55:45 <bsmntbombdood> I only see if, not if-then-else
04:16:43 <bsmntbombdood> doing macros through registers in = is annoying
04:16:50 <bsmntbombdood> why not just take it off the stack?
04:24:43 <bsmntbombdood> 0sa1sb20sl[lalb+stlbsaltsblbpll1-dsl0!=c]sclcx
04:24:51 <bsmntbombdood> ^^ print the first 20 fibonacci numbers
04:25:14 <GreaseMonkey> uh, what lang is this?
04:26:00 <bsmntbombdood> dc
04:26:08 <bsmntbombdood> sweet, eh?
04:26:33 <GreaseMonkey> is it under development?
04:26:37 <bsmntbombdood> no
04:26:40 <bsmntbombdood> see dc(1)
04:29:33 <bsmntbombdood> how sweet is that
04:30:22 -!- chuckfromchan has joined.
04:30:28 -!- chuckfromchan has left (?).
04:30:38 <GreaseMonkey> he must've seen me
04:30:46 -!- pikhq has quit (Read error: 110 (Connection timed out)).
04:37:23 <bsmntbombdood> can't figure out drop either
04:38:10 <GreaseMonkey> wait, where's the dc reference?
04:38:20 <bsmntbombdood> dc(1)
04:38:35 <GreaseMonkey> at?
04:38:49 <GreaseMonkey> i looked at man 1 dc, nothing came up
04:38:52 <bsmntbombdood> /usr/share/man
04:38:59 <bsmntbombdood> one sec
04:39:03 <bsmntbombdood> http://www.gnu.org/software/bc/manual/dc-1.05/html_mono/dc.html
05:02:51 <bsmntbombdood> gah
05:02:55 <bsmntbombdood> how to do drop?
05:03:44 <bsmntbombdood> [SaSbScLaLcLbdSa+LarSaSbScLbLaLc1-d0!=f]sf
05:03:53 <bsmntbombdood> does fibonacci numbers nicer
05:04:03 <bsmntbombdood> without using registers for storage
05:04:53 <bsmntbombdood> funny how long it took for me to come up with those few characters
06:06:44 <AfterDeath> heh
06:11:41 <GreaseMonkey> afk food
06:43:36 <GreaseMonkey> back
07:12:07 <GreaseMonkey> ~help
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:50:37 * SimonRC fwaps goban
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:28 <lament> e2e4!
18:47:41 -!- jix__ has joined.
18:49:05 <goban> c7c5!
18:53:41 <lament> e4xe8#!!
18:57:41 -!- sebbu2 has joined.
19:01:34 -!- kxspxr has joined.
19:02:23 -!- kxspxr has quit (Client Quit).
19:03:52 <goban> oh noes!~
19:04:27 <lament> that's why i don't like chess
19:04:29 <lament> it's too easy :)
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:18 <lament> goban: ouch
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:28 <lament> eh
19:23:31 <lament> you mean harder
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:32:08 <bsmntbombdood> 0 1[dSa+Larplbx]dsbx
22:32:10 <bsmntbombdood> :D
22:32:41 <bsmntbombdood> prints all the fibonacci numbers
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:45 <bsmntbombdood> hmm that's dissapointing
23:06:54 <bsmntbombdood> using the stack is slower than using registers in dc
23:07:14 <lament> how is that disappointing?
23:07:30 <bsmntbombdood> because it's supposed to be stack based
23:07:39 <bsmntbombdood> the stack should be fast
23:08:26 <bsmntbombdood> time dc -e "10 4^3*sc 0 1[dSa+Lar lc1-dsc 1!=b]dsbx"
23:08:35 <bsmntbombdood> real 0m4.118s
23:08:44 <bsmntbombdood> time dc -e "10 4^3*sa 0sb 1sc [lb d lc + sb sc la1-dsa0!=f]dsfx"
23:08:52 <bsmntbombdood> real 0m1.963s
23:09:22 <bsmntbombdood> both of those calculate the 30000 fibonacci number, the first with the stack and the second with registers
23:10:09 <bsmntbombdood> ooh that's interesting
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:45:06 <bsmntbombdood> gah
23:45:10 <bsmntbombdood> I need drop
23:46:11 <bsmntbombdood> I guess for numbers only it could be d-+
23:46:28 <SimonRC> I thought there was a drop or discard command
23:46:37 <bsmntbombdood> not that i could find
23:51:00 <bsmntbombdood> d-+ is good enough
23:58:03 -!- crathman has quit (Read error: 148 (No route to host)).
2007-03-06
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:19:34 <bsmntbombdood> not good enoough
01:20:03 <bsmntbombdood> I'll just figure out conversions
01:23:36 <bsmntbombdood> ok
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:27:09 <bsmntbombdood> Sz should be sz
01:29:07 <bsmntbombdood> aaaand it works
01:29:27 <bsmntbombdood> all the other conversions are obvious
01:30:16 <bsmntbombdood> except input
01:31:12 <bsmntbombdood>
01:31:44 -!- oerjan has joined.
01:42:25 -!- sebbu2 has quit ("Leaving").
01:47:23 <oerjan> aha.
01:47:42 <oerjan> darn.
01:47:49 <bsmntbombdood> ahoo
01:48:05 <oerjan> i see how to pop a string in dc but only if what's below is a number.
01:48:32 <bsmntbombdood> 1r
01:48:37 <bsmntbombdood> pop = drop?
01:48:41 <oerjan> yes
01:48:45 <bsmntbombdood> how?
01:49:18 <oerjan> use Z to turn anything into a length
01:49:39 <bsmntbombdood> oh right
01:51:44 <bsmntbombdood> well, storing in an un used register works
01:51:47 <oerjan> hm, and then you can use something like d>r I think.
01:51:55 <oerjan> Zd>r should pop.
01:52:33 <bsmntbombdood> what's in r?
01:52:49 <oerjan> any register name. it is not used, since the test always fails.
01:54:06 <bsmntbombdood> clever
01:54:15 * oerjan bows
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:02:35 <bsmntbombdood> arrr
02:02:43 <bsmntbombdood> loading an empty stack isn't 0
02:03:03 <oerjan> indeed not?
02:03:36 <bsmntbombdood> lr is, Lr isn't
02:03:50 <bsmntbombdood> that complicates things
02:05:14 <oerjan> Indeed. Also, it looks like only the main stack has a depth command.
02:05:24 <bsmntbombdood> yep
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:06:36 <bsmntbombdood> ?
02:06:43 <oerjan> turing-complete
02:06:54 <bsmntbombdood> not that
02:07:04 <oerjan> what?
02:07:05 <bsmntbombdood> how do you make the array infinite
02:07:25 <oerjan> by using the main stack for the right part.
02:07:40 <bsmntbombdood> hmm
02:07:50 <bsmntbombdood> and check depth
02:07:55 <oerjan> right.
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:13:03 <bsmntbombdood> arrays are 2048 long
02:14:18 <oerjan> A bit small.
02:23:03 <bsmntbombdood> bah
02:23:06 <bsmntbombdood> still doesn't work
02:23:31 <bsmntbombdood> http://pastebin.ca/383054
02:31:22 <oerjan> I presume a contains [0].
02:31:41 <bsmntbombdood> yeah
02:31:46 <oerjan> You need to invoke it at the beginning of the program too.
02:31:57 <bsmntbombdood> [0]sa0 goes at the beginning
02:32:05 <oerjan> Right.
02:32:38 <oerjan> So I assume it is ] that isn't working, then?
02:33:31 <bsmntbombdood> yeah
02:35:33 <bsmntbombdood> oops
02:35:43 <bsmntbombdood> there was a problem in the translation file
02:36:35 <bsmntbombdood> - wasn't getting recognized
02:36:36 <oerjan> oh. because what you pasted seems right to me.
02:36:43 <bsmntbombdood> it is, to a human
02:38:11 <bsmntbombdood> hello world prints hello world, after a few "stack empty" errors
02:38:36 <oerjan> hm.
02:38:45 <oerjan> so it is still buggy?
02:38:49 <bsmntbombdood> yeah
02:39:04 <bsmntbombdood> oh
02:39:55 <oerjan> did you forget the prefix [0]sa0?
02:40:04 <bsmntbombdood> no
02:41:10 <bsmntbombdood> I was thinking that the ] rule needed some z0=a, but that doesn't change anything
02:41:28 <oerjan> It shouldn't.
02:41:47 <bsmntbombdood> why not?
02:41:54 <bsmntbombdood> it takes from the stack
02:42:01 <oerjan> The main stack should never be empty.
02:42:44 <bsmntbombdood> yeah
02:42:51 <bsmntbombdood> after a > on an empty stack
02:42:52 <oerjan> oh wait.
02:43:05 <oerjan> right. > is slightly wrong.
02:43:19 <oerjan> It should be Sr first.
02:43:32 <bsmntbombdood> z0=a Sr z0=a
02:43:43 <bsmntbombdood> that too
02:43:44 <oerjan> You don't need the first z0=a
02:43:54 <bsmntbombdood> it works
02:44:04 <oerjan> Of course, but it is redundant.
02:44:12 <bsmntbombdood> it works to the whole thing
02:44:13 <oerjan> It will never be triggered.
02:45:01 <bsmntbombdood> hooray
02:45:43 * oerjan plays a fanfare.
02:50:29 <bsmntbombdood> http://pastebin.ca/383081
02:51:28 <oerjan> i don't think you need z0=a in .
02:51:32 <bsmntbombdood> oops, . is wrong too
02:52:09 <bsmntbombdood> right
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:13 <bsmntbombdood> heh
03:11:49 <oerjan> sounds like you are ready for a new day :)
03:13:25 <oklopol> it's 5 am
03:13:31 <oklopol> and my back hurts like hell
03:34:33 <SimonRC> :-S !!! http://en.wikipedia.org/wiki/House_of_Leaves#Format
03:34:34 * SimonRC goes to bed
03:48:51 <bsmntbombdood> SimonRC: neat
04:01:45 -!- lament has joined.
04:09:40 -!- ShadowHntr has quit ("End of line.").
04:17:50 <bsmntbombdood> [1Sa [d La*Sa 1- d 0<f]dSfx Zd>r La]sf
04:17:52 <bsmntbombdood> factorial
04:20:15 <lament> in what language?
04:20:19 <bsmntbombdood> dc
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:01 <GreaseMonkey> =D
04:23:52 <oerjan> Ha. BTW do you know that all GNU programs must terminate?
04:25:11 <AfterDeath> huh?
04:25:37 <oerjan> Because they are antiloops.
04:27:36 <bsmntbombdood> haha
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:10 <oklopol> *situations
04:52:46 <oklopol> because first i thought threads for each trigger..... it's kinda impossible to actually use
04:52:47 <oklopol> :)
05:27:48 -!- ShadowHntr has joined.
05:30:41 <bsmntbombdood> too many esolangs are turing tarpits
05:34:02 <oerjan> nah
05:34:39 <oerjan> too many esolangs are minor variations on the same plot.
05:35:28 <GregorR> Not enough esolangs are Perl.
05:37:31 <GreaseMonkey> perl is an esolang in itself
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:38:45 <GregorR> At least three I'd say.
05:40:50 <oerjan> the third way would be having an unusual basic concept.
06:03:01 <GreaseMonkey> ok guys, afk
06:25:23 <GreaseMonkey> back
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:46:26 <oerjan> NO PARSE
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:01:30 <lament> tarpits are cool.
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:31:31 <GreaseMonkey> ok, gtg, gnight
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:42:54 <Sukoshi> No.
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.
18:47:38 <Black_Phoenix> Hello
18:53:58 <Black_Phoenix> I have an idea for a language
18:55:17 <lament> hello
19:00:00 <Black_Phoenix> I will prepare something and show you later
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").
2007-03-07
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:24:57 <bsmntbombdood> dirty little logreader
01:24:58 <bsmntbombdood> :P
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.
01:41:49 <SimonRC> :-S
02:28:21 -!- ShadowHntr has joined.
02:44:21 <bsmntbombdood> nooo they be takin my bucket
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:17 <SimonRC> hehehe
03:07:31 <SimonRC> Haskell numeric classes are a bloody mess.
03:07:43 <bsmntbombdood> square the circle, man!
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:10:20 <SimonRC> duhbdbdbdbdd
03:11:47 <bsmntbombdood> rationals for the wi
03:11:48 <bsmntbombdood> n
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:21:29 <GreaseMonkey> that is indeed a statement
03:21:50 <GreaseMonkey> because it follows the "noun, verb" format
03:22:02 <GreaseMonkey> with quite a few modifiers
03:22:32 <bsmntbombdood> i'm in ur $location $verbing (your|my) $noun
03:23:11 <GreaseMonkey> that is a *statement*.
03:23:36 <GreaseMonkey> i believe that most sentences spoken in english are statements, including this sentence.
03:24:39 <GregorR> No.
03:24:47 <oerjan> Yes!
03:24:57 * oerjan is feeling paradoxical.
03:26:27 <SimonRC> hm
03:27:16 <oerjan> well?
03:28:07 <GreaseMonkey> the verb "is" can accept a verb as an adjective.
03:28:36 <GreaseMonkey> "No." and "Yes!" are expressions.
03:28:56 <GreaseMonkey> "well?" is an incomplete query
03:29:48 <GregorR> The verb 'is' cannot accept a verb as an adjective X_X
03:29:51 <GregorR> He is eat?
03:29:58 <GregorR> -ing turns a verb into an adjective.
03:30:10 <GreaseMonkey> yah
03:30:27 <GregorR> So does -ed IIRC
03:30:45 <GreaseMonkey> sometimes requires -ed to be -en
03:30:53 <GreaseMonkey> sometimes IT requires -ed to be -en
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:46:17 <GreaseMonkey> ^expression tagged onto a statement
03:46:39 <GreaseMonkey> you can tie types of sentences together
03:47:20 <GreaseMonkey> eg: "i'm a fag, so are you?" <- statement + incomplete query
03:47:31 <GreaseMonkey> (i'm straight though)
03:48:37 <bsmntbombdood> taylor series are the shit
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:37:55 * bsmntbombdood calculates e and sqrt(e)
04:42:44 <bsmntbombdood> http://pastebin.ca/384562
04:42:48 <bsmntbombdood> for no particular reason
04:48:24 <oerjan> wow, that actually crashed Hugs.
05:00:46 <bsmntbombdood> O.o
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:03:57 <bsmntbombdood> yeah
05:04:37 <oerjan> I would expect (1+x)/(799!) where x ~ 1/800
05:13:25 -!- anonfunc has joined.
05:36:36 <GreaseMonkey> afk food
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:02:24 <GreaseMonkey> back
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)).
2007-03-08
00:13:01 -!- sebbu2 has quit (Client Quit).
00:40:05 <bsmntbombdood> ell
00:49:54 <RodgerTheGreat> o?
00:50:02 <RodgerTheGreat> or as in "bloody ell"
00:50:05 <RodgerTheGreat> ?
00:54:33 <bsmntbombdood> Unspecified
00:57:08 <bsmntbombdood> yay, recursion without using registers
00:57:25 <bsmntbombdood> 1[r 2*p r dx]dx
01:24:28 <RodgerTheGreat> neato
01:26:11 <bsmntbombdood> dc is sweet
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:15:25 <SimonRC> hi
05:18:42 <GreaseMonkey> hi
05:18:49 <GreaseMonkey> im working on an IRC bot :D
05:19:44 <lament> how exciting.
05:19:50 <lament> *yawn*
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:31:12 <GreaseMonkey> #PRIVMSG #esoteric :test
05:31:13 <GreaseBot> test
05:31:29 <GreaseMonkey> ok, so i now have a bot. cool?
05:31:31 <GregorR> #QUIT Hahaha
05:31:39 <GregorR> :(
05:31:40 <GreaseMonkey> nice try
05:31:47 <GreaseMonkey> but it's nick-dependent
05:32:00 <GreaseMonkey> #QUIT :OK GregorR, I give up
05:32:00 -!- GreaseBot has quit (Client Quit).
05:32:21 <GreaseMonkey> wtf? why didn't i get a quit message?
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:41 <GreaseMonkey> do i have to register to get a quit message?
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:35:51 <GreaseMonkey> i can't find the question :(
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:41:31 <GregorR> *IIRC
05:41:35 <GregorR> I hate this keyboard X_X
05:48:49 <RodgerTheGreat> GregorR: I have an intel-based mac
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:02 <GregorR> [uploading]
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:53:57 <RodgerTheGreat> alright, one sec
05:54:09 <GregorR> [If it segfaults after that, don't worry about it, rtload is still a bit funky :P ]
05:55:17 <RodgerTheGreat> hrm..
05:55:19 <RodgerTheGreat> wads-5-232-13:~/Desktop/rtload-r10 Rodger$ make
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: In function 'bbuffer':
05:55:20 <RodgerTheGreat> bbuffer.c:143: error: PIC register 'ebx' clobbered in 'asm'
05:55:21 <RodgerTheGreat> make: *** [bbuffer.o] Error 1
05:55:43 <GregorR> Hm, apparently Mac OS X does all code as PiC ...
05:55:45 <GregorR> I can fix that.
05:56:57 <GregorR> Whoops - hahaha, it doesn't even actually clobber it, it just claims to :P
05:57:17 <RodgerTheGreat> ... meaning?
05:57:33 <GregorR> In bbuffer.c, on line 118, remove: , "ebx"
05:58:21 <RodgerTheGreat> so the line is just
05:58:22 <RodgerTheGreat> : "eax",); \
05:58:24 <RodgerTheGreat> ?
05:58:31 <GregorR> No comma ther
05:58:38 <RodgerTheGreat> ah, alright
05:58:46 <RodgerTheGreat> that's what I was about to ask
05:59:03 <GregorR> I did put a comma in what I told you to remove ;)
05:59:10 <RodgerTheGreat> oh
05:59:32 <RodgerTheGreat> it builds cleanly now, but then I get this:
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
05:59:49 <RodgerTheGreat> there's a newline in there somewhere...
06:00:03 <RodgerTheGreat> what next, chief?
06:01:15 <GregorR> I'll be back in a few minutes ;)
06:01:21 <RodgerTheGreat> ok
06:01:29 <GregorR> Unfortunately, debugging rtload and crosslibc is about as big of a PITA as there is >_>
06:01:39 <RodgerTheGreat> I can only imagine
06:03:27 <RodgerTheGreat> wow- not a bad deal: http://www.woot.com/
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:05:12 <RodgerTheGreat> *easy
06:10:54 <GreaseMonkey> afk, food
06:12:52 -!- Arrogant has joined.
06:12:55 * GregorR reappears.
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:22 <GregorR> You could give me SSH ;)
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:07 <RodgerTheGreat> if I still had my backup box, I'd say have at it
06:16:40 <RodgerTheGreat> but one of my roommate's friends gave that computer a bath, and it has mysteriously ceased working
06:16:44 <RodgerTheGreat> if you get my meaning
06:16:49 <GregorR> Heh
06:35:15 -!- calamari has quit ("Leaving").
06:38:08 <GreaseMonkey> back
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:09:53 <GreaseMonkey> my bot works
08:10:06 <GreaseMonkey> and it's pretty cool
08:10:09 <GreaseMonkey> wanna see?
08:16:01 -!- jix__ has joined.
08:23:42 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
08:25:13 <GreaseMonkey> night everyone
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:06 <oerjan> oh.
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:08:52 <SimonRC> he
09:08:52 <SimonRC> heh
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:01 <SimonRC> also JNZ
09:11:26 <SimonRC> and a clever macro system that is not too bad at replacing subroutines
09:11:28 <oerjan> Minsky machines
09:12:10 <SimonRC> no indexing of course
09:12:30 * SimonRC goes to breakfast
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:28 <oklopol> hmm
17:18:43 <oklopol> can i find the list of argument a function need somehow?
17:18:43 <oklopol> eh
17:18:46 <oklopol> in python
17:18:48 <oklopol> *arguments
17:18:53 <oklopol> at runtime of course
17:19:04 <oklopol> *needs
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:51:41 <oklopol> that seems to work fine
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:20 <oklopol> *thigs
20:57:22 <oklopol> *things
20:57:49 <oklopol> X would thus be the opposite of unlambda's ` (maybe)
21:14:45 <bsmntbombdood> what's the opposite of application?
21:15:06 <Arrogant> displication
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:17:23 <oklopol> i'd say
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:14 <oklopol> X9 -> (\a->9)
21:19:14 <oklopol> XXH -> (\a->(\a->H))
21:19:22 <oklopol> i still have no idea what you can do with this
21:19:26 <oklopol> :)
21:21:41 <bsmntbombdood> so, delay
21:21:53 <oklopol> maybe.
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:52 <bsmntbombdood> hmmm
23:27:54 <bsmntbombdood> http://en.wikipedia.org/wiki/Lagrange_inversion_theorem
2007-03-09
01:18:24 -!- Insineratehymn has joined.
01:18:36 <Insineratehymn> hey EgoBot
01:19:28 -!- Insineratehymn has quit (Client Quit).
01:20:10 <EgoBot> :( Aw, I thought I had a friend.
01:22:53 <graue> you did
01:22:57 <graue> just not anymore
01:24:03 <bsmntbombdood> heh
01:24:25 <bsmnt_bot> I have lots of friends!
01:44:21 <bsmntbombdood> a prize of infinite money!!
01:44:38 <bsmntbombdood> $1 the first day, 1/2 the next, 1/3, 1/4...
01:44:41 <bsmntbombdood> :P
02:08:05 <graue> how did you win that?
02:08:43 <bsmntbombdood> i didn't
02:08:45 <bsmntbombdood> it was a joke
02:10:24 -!- SevenInchBread has joined.
02:12:03 <lament> i wonder for how much money you could sell that prize
02:12:09 <lament> quite a lot, probably
02:13:25 <lament> or maybe not
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:17:33 <bsmntbombdood> yeah
02:19:09 <lament> the market gets you infinite money faster :)
02:27:46 <graue> isn't 11.7% interest pretty good?
02:28:41 <lament> it is
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:29:48 <lament> about 30 cents.
02:30:17 <bsmntbombdood> after the 3rd year you have $7.575
02:30:51 <fizzie> And if you live 70 years, you almost but not quite get to $11. Yay.
02:31:01 <bsmntbombdood> after 20 years it's 9.4728
02:31:20 <bsmntbombdood> 100 years, $11
02:32:22 <lament> even if the prize was a dollar a day, it would still be outperformed by a small initial investment
02:32:32 <bsmntbombdood> 1000 years, $13
02:33:38 <lament> therefore the "value" of the prize is smaller than the value of the investment
02:33:52 <bsmntbombdood> 10,000 years, $15.6
02:34:31 <lament> we can actually calculate how much the "prize" is worth
02:34:50 <lament> under specific market conditions
02:34:50 <bsmntbombdood> what do you mean?
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:35:31 <bsmntbombdood> ...it wouldn't
02:36:20 <lament> well no
02:36:25 <lament> it's clearly worth more than a dollar
02:36:45 <lament> i mean no
02:36:53 <lament> nevermind
02:36:59 <lament> i mean it's not :)
02:37:10 <graue> sure it is
02:37:28 <graue> pay a dollar for it and you'd have $1.50 the next day, that's worth it
02:39:29 <bsmntbombdood> http://www.mathbin.net/8782
02:39:41 <bsmntbombdood> where x is the amount worth it to pay
02:41:55 <bsmntbombdood> or something link that
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:49:23 <bsmntbombdood> after 2 days, the prize is worth $1.49
02:49:36 <bsmntbombdood> at 10% per year
02:50:17 <bsmntbombdood> after 1 year, it's worth $5.86
02:53:00 <bsmntbombdood> hmm
02:53:08 <bsmntbombdood> 5 years only $4.9
02:56:30 <lament> hehehe
02:56:33 <lament> find the peak price
02:56:59 <bsmntbombdood> somewhere between 2 and 5 years
02:57:34 <lament> i'm surprised it ever gets to more than 5 bucks
02:58:45 -!- Sgeo has joined.
03:03:24 <bsmntbombdood> looks like 2 years
03:03:26 <bsmntbombdood> about
03:03:58 <bsmntbombdood> i'm just trying random stuff here
03:04:47 <lament> maybe it's e years :)
03:05:51 <bsmntbombdood> nope
03:05:58 -!- GreaseMonkey has joined.
03:06:00 <bsmntbombdood> e years is $5.69
03:06:14 <bsmntbombdood> 2 years is $5.87
03:06:47 <GreaseMonkey> 2*$5.87=e*5.69
03:06:54 <GreaseMonkey> 2*$5.87/5.69=e
03:07:05 <GreaseMonkey> solved
03:07:18 <lament> thanks
03:07:21 <lament> you're a genius
03:07:33 <GreaseMonkey> ah whoops
03:07:39 <GreaseMonkey> 2*5.69/5.87=e
03:07:43 <bsmntbombdood> except, no
03:07:58 <GreaseMonkey> 1.938671209540034 years
03:08:05 <GreaseMonkey> what was it for?
03:08:27 <lament> GreaseMonkey: 'e' is Euler's constant :)
03:08:43 <lament> GreaseMonkey: and the relationship is highly non-linear
03:08:51 <bsmntbombdood> GreaseMonkey: a harmonic series prize
03:08:54 <GreaseMonkey> k
03:08:59 <bsmntbombdood> GreaseMonkey: compared to investing the money
03:09:21 <GreaseMonkey> you never know, it might come in handy
03:09:38 <GreaseMonkey> just in case you have something that says $5.87 for 2 years
03:09:53 <GreaseMonkey> and you only want 1.938671209540034 years
03:10:01 <GreaseMonkey> so you know it's $5.69
03:12:45 <bsmntbombdood> uuuuh
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:30:53 <bsmntbombdood> yeah :P
03:31:53 <lament> (for the rest of eternity)
03:33:49 <bsmntbombdood> ooh
03:33:53 <bsmntbombdood> mistake
03:34:01 <bsmntbombdood> we have to invest the return
03:36:00 <bsmntbombdood> the 1, 1/2, 1/3...
03:36:06 <bsmntbombdood> dunno how to do that
04:01:56 * Sgeo created http://uncyclopedia.org/wiki/SpySheriff
04:02:14 <GreaseMonkey> oh, you like uncyc, huh?
04:02:25 <Sgeo> yep
04:04:55 <GreaseMonkey> that's a good article, made me lol
04:05:08 <Sgeo> ty
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:12:05 <bsmntbombdood> what language is it written in?
05:22:11 <bsmntbombdood> actually, it's pretty far off for big numbers
05:22:22 <bsmntbombdood> guess it grows a little faster than ln
05:25:11 <bsmntbombdood> ha
05:25:21 <bsmntbombdood> off by x/c
05:26:29 <GreaseMonkey> um, GreaseBot is coded in C
05:26:50 <bsmntbombdood> logfuck
05:27:24 <bsmntbombdood> dc
05:27:25 <GreaseMonkey> hmm, i'll look into it
05:27:49 <GreaseMonkey> ah, yes, good idea, VERY good idea
05:28:02 <bsmntbombdood> what?
05:29:28 <GreaseMonkey> dc
05:30:17 <bsmntbombdood> dc rocks
05:31:16 <GreaseMonkey> i cud build my own lang tho
05:31:39 <GreaseMonkey> like miniscript but using single-symbol stuff and more strin-oriented
05:32:51 <GreaseMonkey> Apparently, %-1% gives it %1%% at %2%
05:32:55 <GreaseMonkey> stuff like that
05:33:11 <GreaseMonkey> say = %1%
05:33:46 <GreaseMonkey> act = $01ACTION %1%$01
05:33:56 <GreaseMonkey> wait
05:34:14 <GreaseMonkey> act = PRIVMSG %-1% $01ACTION %1%$01
05:34:17 <GreaseMonkey> better
06:27:35 <GreaseMonkey> afk, food, pulling GreaseBot offline
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.").
08:59:42 <GreaseMonkey> gnight
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:41 <ais523> !ps d
13:06:43 <EgoBot> 1 ais523: daemon ul bf
13:06:46 <EgoBot> 2 ais523: daemon deadfish funge93
13:06:48 <EgoBot> 3 ais523: ps
13:07:26 <ais523> !help
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:36 * ais523 googles HQ9+
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:22:42 <oklopol> :D
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:00 <ais523> q
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:03:39 <oerjan> i should think not.
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:48 <oerjan> ah.
16:10:50 <ais523> Thutu's so conducive to writing multithreaded programs in, it's even possible to do it by accident
16:10:59 <oerjan> heh
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:18 <ais523> s
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:35:58 <oerjan> you're welcome
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:56:38 <graue> cool, thanks
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:42 <oerjan> ?
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:17 <oerjan> ah
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:06:06 <oerjan> pure evil
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 <oerjan> ais523: ^
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:10:59 <oerjan> no.
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:13 <ais523> that you never see
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:14:07 <oerjan> right.
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:39:59 <UpTheDownstair> hah
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:08:24 <lament> suuure.
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").
2007-03-10
00:21:21 <SimonRC> bah
00:27:06 -!- ShadowHntr has joined.
00:30:52 -!- RodgerTheGreat has joined.
00:30:59 <RodgerTheGreat> hi everyone
00:32:59 <bsmntbombdood> i
00:54:48 <bsmntbombdood> http://www.cs.duke.edu/~rodger/baking/cs030327.html
00:58:54 <RodgerTheGreat> hunh
00:59:06 <RodgerTheGreat> Original, I guess
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:35:45 <RodgerTheGreat> like, a muffin could be an unpunched cell on a tape
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
01:37:41 <RodgerTheGreat> haha- true, true
02:18:14 -!- GreaseMonkey has joined.
03:03:36 <bsmntbombdood> what's the difference?
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:05:06 <GreaseMonkey> what lang is this?
03:06:47 <graue> i believe it's a turing machine
03:06:59 <bsmntbombdood> yeah
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:22 <RodgerTheGreat> good night everyone
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:41:23 <GreaseMonkey> afk food
05:50:32 -!- digital_me has quit (Read error: 110 (Connection timed out)).
05:52:39 -!- calamari has quit (Remote closed the connection).
05:58:36 <GreaseMonkey> back
06:10:56 -!- ShadowHntr has quit ("End of line.").
06:50:28 -!- anonfunc has joined.
07:28:45 <GreaseMonkey> getting off now, cya
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:12 <mike_the_person> !help
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:00:23 <oerjan> (+(+x)y)y
19:00:27 <oerjan> i think
19:01:02 <twice11> You mean ++x~y~~y~?
19:01:49 <oerjan> eh...
19:01:58 <twice11> That does not work, because (+x)y gets already executed when I try to build the function.
19:02:06 <oerjan> oh.
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:34 <oerjan> \z. ``+``+xyy =
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:09:22 <oerjan> you mean (+x)y
19:10:00 <oerjan> oh?
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:11:25 <twice11> Sorry, yes.
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:24 <twice11> Might be.
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:22:21 <oerjan> looks good
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.
19:43:50 <RodgerTheGreat> hi, everyone
19:44:01 <oerjan> hi
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:24:44 <oerjan> *register
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:28:03 <oerjan> or similar variants.
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:35:24 <oerjan> heh, i wonder...
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:38:52 <oerjan> essentially.
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:20 <twice11> got an endless 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:26:59 <oerjan> right
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:03 <oerjan> hm, wait...
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:35:45 <oerjan> and is shorter.
22:36:00 <oerjan> *makes
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:43:53 <oerjan> right
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:54:55 <oerjan> eh wait
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:17:58 <twice11> s/by/on/
23:18:25 <oerjan> cool
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:11 <SevenInchBread> mainly steganography, anonymous proxies and stuff.
23:20:27 <twice11> How permanent is the pastebin? Can I link to there?
23:21:03 <SevenInchBread> LOL CRYPTO-ANARCHISM
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 <SimonRC> D'oh.
23:25:32 <xor> SimonRC: old
23:26:01 <xor> haha
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:15 <SimonRC> indeed
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:27 <oerjan> that too :)
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.
2007-03-11
00:04:23 <oerjan> Well, good night.
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:52:38 <GreaseMonkey> hello bsmnt
04:52:44 <bsmntbombdood> hi
04:53:04 <GreaseMonkey> hey, are you gonna set your bot up to return a CTCP VERSION request?
04:53:34 <bsmntbombdood> no
04:53:36 <GreaseMonkey> like: :Host PRIVMSG chanOrNick \1VERSION\1
04:53:38 <GreaseMonkey> k
04:53:42 <GreaseMonkey> my bot does that
04:53:44 <bsmntbombdood> why?
04:55:25 <GreaseMonkey> it's always a nice feature
04:56:02 -!- GreaseBot has joined.
05:07:56 <GreaseMonkey> afk, getting a life
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:22 <RodgerTheGreat> 'night, all
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:32:20 <GreaseMonkey> ok, i'm going to bed, gnight
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:30:28 <oklopol> O(logn)
09:31:12 <oklopol> it's nice since you can then easily translate any assembly code into brainfuck
09:31:14 <oklopol> ...
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.
17:56:01 <SevenInchBread> DEAD BEEF C0FFEE BABE CAFE FADE
18:11:33 -!- UpTheDownstair has quit (Connection timed out).
19:01:36 -!- RodgerTheGreat has joined.
19:01:44 <RodgerTheGreat> howdy, folks
19:44:56 -!- twice11 has joined.
19:46:19 -!- twice11 has quit (Client Quit).
19:48:24 <nazgjunk> SevenInchBread, lovely idea.
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:16 <nazgjunk> rofl
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:07:44 <bsmntbombdood> wiki down?
20:10:11 <twice11> http://esolangs.org/wiki works here.
20:10:21 <bsmntbombdood> nevermind
20:12:58 <bsmntbombdood> dc for the win
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:38:21 <bsmntbombdood> ok
22:39:38 -!- sebbu has quit ("@+").
22:39:38 <bsmntbombdood> ~exec globals()["popen2"] = __import__("popen2")
22:41:13 <bsmntbombdood> ~exec self.ev_dc = lambda x: popen2.popen2("dc -e '%s'" % x)[0].read()
22:41:25 <bsmntbombdood> ~exec sys.stdout(self.ev_dc("1p"))
22:41:40 <bsmntbombdood> ~exec sys.stdout("foo")
22:41:40 <bsmnt_bot> foo
22:42:24 <bsmntbombdood> ~exec self.ev_dc = lambda x: popen2.popen2("/usr/bin/dc -e '%s'" % x)[0].read()
22:42:34 <bsmntbombdood> ~exec sys.stdout(self.ev_dc("1p"))
22:42:40 <bsmntbombdood> grar
22:43:14 <bsmntbombdood> ~exec sys.stdout( popen2.popen2("/usr/bin/dc -e '%s'" % "1p")[0].read() )
22:43:19 <bsmntbombdood> ~ps
22:43:19 <bsmnt_bot> None
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:52 <bsmntbombdood> ~exec sys.stdout(x)
22:44:53 <bsmnt_bot> NameError: name 'x' is not defined
22:44:56 <bsmntbombdood> ~exec sys.stdout(self.x)
22:44:56 <bsmnt_bot> <built-in method read of file object at 0xb7cac140>
22:45:10 <bsmntbombdood> ~exec self.foo = self.x()
22:45:21 <bsmntbombdood> ~exec sys.stdout(self.foo)
22:45:28 <bsmntbombdood> ~exec sys.stdout(type(self.foo))
22:45:28 <bsmnt_bot> <type 'str'>
22:45:38 <bsmntbombdood> ~exec sys.stdout(len(self.foo))
22:45:38 <bsmnt_bot> 0
22:45:41 <bsmntbombdood> arghh
22:45:43 <nazgjunk> hehe
22:46:25 <bsmntbombdood> ~exec sys.stdout(self.x())
22:46:39 <bsmntbombdood> wtf
22:46:58 <nazgjunk> o.O
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:47:35 <bsmntbombdood> ~exec sys.stdout(self.x)
22:47:40 <nazgjunk> ..
22:47:45 <bsmntbombdood> ~exec sys.stdout(len(self.x))
22:47:45 <bsmnt_bot> 0
22:47:48 <bsmntbombdood> gah!
22:48:14 <bsmntbombdood> ~exec os.system("/usr/bin/dc -e '[hello, world]p'")
22:48:37 <bsmntbombdood> weird
22:49:02 <bsmntbombdood> ~exec sys.stdout(os.system("/usr/bin/dc -e '[hello, world]p'"))
22:49:02 <bsmnt_bot> 32512
22:50:03 <bsmntbombdood> ~exec self.x = popen2.popen2("/usr/bin/THIS_COMMAND_IS_NOT_THERE -e '1p'")[0].read()
22:50:12 <bsmntbombdood> great.
22:50:24 <bsmntbombdood> ~exec sys.stdout(type(self.x))
22:50:24 <bsmnt_bot> <type 'str'>
22:50:30 <bsmntbombdood> ~exec sys.stdout(len(self.x))
22:50:30 <bsmnt_bot> 0
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:52:12 <bsmntbombdood> how is that not an exception
22:53:27 <bsmntbombdood> ~exec self.x = os.popen("/usr/bin/dc -e '1p'", "r")
22:53:38 <bsmntbombdood> ~exec sys.stdout(self.x)
22:53:39 <bsmnt_bot> <open file '/usr/bin/dc -e '1p'', mode 'r' at 0xb7cacc38>
22:53:44 <bsmntbombdood> ~exec sys.stdout(self.x.read())
22:53:49 <bsmntbombdood> oh come on
22:53:54 <bsmntbombdood> ~exec sys.stdout(self.x.read())
22:56:00 <bsmntbombdood> that works fine in my python repl
22:56:33 <bsmntbombdood> hmm
22:56:39 <bsmntbombdood> not in a chrooted repl though
22:59:56 <bsmntbombdood> ~exec sys.stderr(os.environ)
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)).
2007-03-12
00:07:11 -!- nazgjunk has quit ("Leaving").
00:16:59 -!- bsmntbombdood has changed nick to Zorpon.
00:32:55 <Zorpon> hmm
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:20 <SimonRC> Zorpon: yes
00:43:39 * Zorpon makes it so
00:43:43 <SimonRC> It's a *real* OO language, unlike Java
00:48:04 <Zorpon> eww 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:12:18 <SevenInchBread> yeah smalltalk is nifty.
01:12:27 <SevenInchBread> it's just the call syntax.
01:12:54 * SevenInchBread is basing his Sophia language partially on Smalltalk.
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:25 <Zorpon> reminds me of ruby
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:21:44 <SimonRC> :-P
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:34:05 <SevenInchBread> Ruby was partially based off of Smalltalk
01:36:41 <GregorR> !ps d
01:36:43 <EgoBot> 1 ais523: daemon ul bf
01:36:45 <EgoBot> 2 ais523: daemon deadfish funge93
01:36:47 <EgoBot> 3 GregorR: ps
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:08 <Sukoshi> Java users home?
02:56:18 <Sukoshi> (I'm sorry, I'm in a big hurry.)
03:03:27 <Zorpon> eew java
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:26:43 * RodgerTheGreat cackles maniacally.
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:37:39 <RodgerTheGreat> heheh
03:43:09 -!- oerjan has quit ("Good night").
03:50:19 -!- SevenInchBread has quit (Read error: 113 (No route to host)).
04:11:14 <RodgerTheGreat> good night, guys
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.").
06:36:56 <GreaseMonkey> afk food
06:56:15 <GreaseMonkey> back
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:01:35 <bsmnt_bot> SyntaxError: invalid syntax
13:02:36 <ais523> ~exec eval("for n in count(4):\n sys.stdout(n)\n")
13:02:36 <bsmnt_bot> SyntaxError: invalid syntax
13:02:47 <ais523> ~exec eval("sys.stdout(4)")
13:02:48 <bsmnt_bot> 4
13:02:54 <ais523> ~exec eval("sys.stdout(4)\n")
13:02:55 <bsmnt_bot> 4
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:03:24 <bsmnt_bot> SyntaxError: invalid syntax
13:04:49 <ais523> ~exec eval("for n in [1, 2, 3]:\n sys.stdout(n)\n")
13:04:49 <bsmnt_bot> SyntaxError: invalid syntax
13:06:06 <ais523> ~exec eval("for n in [1, 2, 3]:\n sys.stdout(n)\nsys.stdout('Finished.')\n")
13:06:06 <bsmnt_bot> SyntaxError: invalid syntax
13:06:43 <ais523> ~exec eval("sys.stdout(1)\nsys.stdout(2)")
13:06:43 <bsmnt_bot> SyntaxError: invalid syntax
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:13 <bsmnt_bot> SyntaxError: invalid syntax
13:07:26 <ais523> ~exec sys.stdout(1)\nsys.stdout(2)
13:07:26 <bsmnt_bot> SyntaxError: invalid token
13:07:32 <ais523> ~exec sys.stdout(1)\n sys.stdout(2)
13:07:38 <bsmnt_bot> SyntaxError: invalid syntax
13:09:35 <ais523> ~exec eval('''sys.stdout(1)\nsys.stdout(2)''')
13:09:35 <bsmnt_bot> SyntaxError: invalid syntax
13:09:46 <ais523> ~exec sys.stdout("1\n2")
13:09:46 <bsmnt_bot> 1
13:09:46 <bsmnt_bot> 2
13:09:53 <ais523> ~exec sys.stdout("1\r2")
13:09:53 <bsmnt_bot> 1
13:10:02 <ais523> ~exec sys.stdout("1\t2")
13:10:02 <bsmnt_bot> 12
13:11:10 <ais523> ~exec sys.stdout("for n in [1, 2, 3]: sys.stdout(n)")
13:11:11 <bsmnt_bot> 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:18 <bsmnt_bot> SyntaxError: invalid syntax
13:11:24 <ais523> ~exec exec("for n in [1, 2, 3]: sys.stdout(n)")
13:11:27 <bsmnt_bot> 1
13:11:29 <bsmnt_bot> 2
13:11:31 <bsmnt_bot> 3
13:11:39 <ais523> ~exec sys.stdout("for n in [1, 2, 3]:\n sys.stdout(n)")
13:11:40 <bsmnt_bot> for n in [1, 2, 3]:
13:11:40 <bsmnt_bot> sys.stdout(n)
13:11:52 <ais523> ~exec exec("for n in [1, 2, 3]:\n sys.stdout(n)")
13:11:53 <bsmnt_bot> 1
13:11:53 <bsmnt_bot> 2
13:11:53 <bsmnt_bot> 3
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:21 <bsmnt_bot> Hello, world!
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:03 <bsmnt_bot> H
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:38 <SimonRC> you thought not
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:42 <SimonRC> then re-run
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:18:48 <bsmnt_bot> 4
13:18:48 <bsmnt_bot> 3
13:18:48 <bsmnt_bot> 2
13:18:50 <bsmnt_bot> 1
13:18:52 <bsmnt_bot> 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:29 <bsmnt_bot> TypeError: unsubscriptable object
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:20:57 <bsmnt_bot> 5
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:42 <bsmnt_bot> SyntaxError: invalid syntax
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:12 <bsmnt_bot> SyntaxError: invalid syntax
13:25:36 <ais523> ~exec sys.stdout(1==2)
13:25:36 <bsmnt_bot> False
13:25:39 <ais523> ~exec sys.stdout(1!=2)
13:25:39 <bsmnt_bot> True
13:25:45 <SimonRC> ais523: hmm
13:25:52 <SimonRC> I wonder...
13:26:11 <ais523> At least, what I've been arguing is what I've come to believe the conventional wisdom is
13:26:15 <ais523> but I wonder too
13:26:32 <SimonRC> so, a subset of C is Turing-complete, but the whole of C isn't.
13:26:33 <SimonRC> weird
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:27:25 <bsmnt_bot> 5
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:28:28 <bsmnt_bot> 5
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:30:00 <bsmnt_bot> 5
13:30:00 <bsmnt_bot> -2
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:33:54 <bsmnt_bot> SyntaxError: invalid syntax
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:28 <bsmnt_bot> SyntaxError: invalid syntax
13:34:47 <ais523> ~exec exec("self.test=lambda(x):\n sys.stdout(x)")
13:34:47 <bsmnt_bot> SyntaxError: invalid syntax
13:34:57 <ais523> ~exec exec("self.test=def test(x):\n sys.stdout(x)")
13:34:58 <bsmnt_bot> SyntaxError: invalid syntax
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:35:53 <bsmnt_bot> 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:37 <bsmnt_bot> 3
13:36:37 <bsmnt_bot> 2
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:36:57 <bsmnt_bot> SyntaxError: invalid syntax
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:37:37 <bsmnt_bot> 4
13:37:37 <bsmnt_bot> -4
13:37:37 <bsmnt_bot> 4
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:39:02 <bsmnt_bot> True
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:15 <bsmnt_bot> 6
13:47:20 <ais523> yay!
13:47:30 <ais523> !bf_txtgen Hello, world!
13:48:16 <EgoBot> 121 ++++++++++++++[>+++++>+++++++>+++><<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+. [609]
13:49:39 <ais523> ~exec self.bf("++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.")
13:49:40 <bsmnt_bot> 72
13:49:40 <bsmnt_bot> 101
13:49:40 <bsmnt_bot> 108
13:49:40 <bsmnt_bot> 108
13:49:40 <bsmnt_bot> 111
13:49:40 <bsmnt_bot> 44
13:49:42 <bsmnt_bot> 32
13:49:44 <bsmnt_bot> 119
13:49:46 <bsmnt_bot> 111
13:49:48 <bsmnt_bot> 114
13:49:50 <bsmnt_bot> 108
13:49:52 <bsmnt_bot> 100
13:49:54 <bsmnt_bot> 33
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:02 <bsmnt_bot> H
13:55:03 <bsmnt_bot> e
13:55:03 <bsmnt_bot> l
13:55:03 <bsmnt_bot> l
13:55:03 <bsmnt_bot> o
13:55:03 <bsmnt_bot> ,
13:55:05 <bsmnt_bot> w
13:55:07 <bsmnt_bot> o
13:55:09 <bsmnt_bot> r
13:55:11 <bsmnt_bot> l
13:55:13 <bsmnt_bot> d
13:55:15 <bsmnt_bot> !
13:55:18 <EgoBot> Huh?
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:56:47 <bsmnt_bot> SyntaxError: invalid syntax
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("++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.")
13:57:43 <bsmnt_bot> Hello, world!
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:40 <bsmnt_bot>
14:04:47 <ais523> ~exec self.bf("++++++[->++++++<]>.")
14:04:47 <bsmnt_bot> $
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:00 <bsmnt_bot> $
14:06:22 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~cat(.*)", lambda x,y: sys.stdout(y.group(2)))
14:06:27 <ais523> ~cat Hello, world!
14:06:27 <bsmnt_bot> Hello, world!
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:47 <ais523> ~cat Hello, world!
14:06:48 <bsmnt_bot> Hello, world!
14:06:48 <bsmnt_bot> Hello, world!
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:07:41 <ais523> ~cat Hello, world!
14:07:41 <bsmnt_bot> Hello, world!
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:16 <bsmnt_bot> '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:05 <bsmnt_bot> '++++++[>++++++<-]>.'
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:47 <SimonRC> ah, ok
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:09 <bsmnt_bot> Hello, world!
14:11:12 <SimonRC> Sorry, I thought you were still learning python.
14:11:27 * SimonRC goesr
14:11:28 <ais523> Like this? It wouldn't be very good
14:11:28 * SimonRC goes
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:32 <bsmnt_bot> SyntaxError: invalid syntax
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:11 <bsmnt_bot> *
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:17:47 <bsmnt_bot> Hello, world!
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:23:34 <bsmnt_bot> $
14:23:45 <ais523> yay again!
14:25:20 <ais523> ~bf ++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.
14:25:20 <bsmnt_bot> Hello, world!
14:33:14 <ais523> ~exec sys.stdout("Hello, world!"[1:])
14:33:15 <bsmnt_bot> ello, world!
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:36:52 <ais523> ~bf ,>,>,.<.<.!abc
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:38:55 <ais523> ~ps
14:38:56 <bsmnt_bot> None
14:39:12 <ais523> ~exec sys.stdout(self.bf4)
14:39:13 <bsmnt_bot> if p[i]=='+': t[l]=t[l]+1
14:39:13 <bsmnt_bot> if p[i]=='-': t[l]=t[l]-1
14:39:13 <bsmnt_bot> if p[i]=='<': l=l-1
14:39:13 <bsmnt_bot> if p[i]=='>': l=l+1
14:39:14 <bsmnt_bot> if p[i]=='.': o=o+unichr(t[l])
14:39:15 <bsmnt_bot> if p[i]==',':
14:39:16 <bsmnt_bot> t[l]=ord(a[0])
14:39:18 <bsmnt_bot> a=a[1:]
14:39:19 <bsmnt_bot> i=i+1
14:39:21 <bsmnt_bot> sys.stdout(o)
14:39:23 <bsmnt_bot> self.register_raw(r'\S+ PRIVMSG (\S+) :~bf (.*)(!(.*))?',bfarg)
14:39:50 <ais523> ~quit
14:40:04 <ais523> ~exec exec(self.bf3+self.bf4)
14:40:12 <ais523> ~bf ,.!a
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:41:56 <ais523> ~bf ,.!a
14:41:56 <bsmnt_bot> a
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:17 <ais523> ~bf ,.!a
14:43:28 <ais523> ~exec exec(self.bf3+self.bf4)
14:43:29 <ais523> ~bf ,.!a
14:43:30 <bsmnt_bot> a
14:43:38 <ais523> ~bf ++++++[->++++++<]>.
14:43:38 <bsmnt_bot> $
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:05 <bsmnt_bot> 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/.-,+*)('&%$#"!
14:48:06 <bsmnt_bot> <CTCP>
15:13:05 <ais523> ~bf >,[>,]<.[<.]!Hello, world!
15:13:05 <bsmnt_bot> !dlrow ,olleH
15:13:09 <EgoBot> Huh?
15:19:45 <ais523> !bf >,[>,]<.[<.]
15:19:53 <ais523> !i 1 Hello, world!
15:20:02 <ais523> !i 3 Hello, world!
15:20:04 <ais523> !eof 3
15:20:07 <EgoBot> !dlrow ,olleH
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:27:50 <bsmnt_bot> Hello, nazgjunk!
15:27:57 <nazgjunk> !
15:27:59 <nazgjunk> hi
15:28:01 <EgoBot> Huh?
15:28:22 <ais523> I spent ages trying to get bsmnt_bot to do Brainfuck
15:28:30 <ais523> * 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:02:23 <bsmnt_bot> Hello, oerjan!
16:17:15 <oerjan> hello
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:13 <ais523> * as
16:18:37 <ais523> but I suppose it might be possible to do the redefinition table more efficiently
16:19:52 <oerjan> Trees.
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.
17:57:29 <lament> "meh"
17:58:00 <GregorR> la "meh" nt
18:11:25 <nazgjunk> ais523, sounds like a plan
18:12:27 <ais523> I'll go and set up esoteric.pastebin.ca, then, if there are no objections soon
18:13:04 <lament> i have an objection!
18:13:19 <ais523> what is it?
18:13:31 <lament> "why"
18:13:36 <GregorR> Second.
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:20 <lament> would it.
18:14:36 <GregorR> Public pastebins die after 3mo.
18:14:44 <GregorR> (Of unuse)
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:02 <oerjan> almost 100%
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:16 <bsmntbombdood> someone was having fun with bsmnt_bot ...
18:33:17 * ais523 looks into their own filesystem
18:33:24 <GregorR> !ps d
18:33:25 <EgoBot> 1 ais523: daemon ul bf
18:33:25 <ais523> ~bf ,[.,]!that was me
18:33:26 <bsmnt_bot> that was me
18:33:27 <EgoBot> 2 ais523: daemon deadfish funge93
18:33:29 <EgoBot> 3 GregorR: ps
18:35:09 <ais523> bsmntbombdood: anyway, I don't see why bsmnt_bot shouldn't have a BF interpreter too
18:35:23 <bsmntbombdood> because EgoBot has one?
18:36:27 <ais523> that's like saying "no need to make any more esolangs, INTERCAL is Turing-complete"
18:36:41 <bsmntbombdood> heh
18:36:44 <bsmntbombdood> go ahead
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:27 <bsmntbombdood> fun
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:40:09 <bsmnt_bot> bsmnt_bot does Brainfuck!
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:47:46 <bsmnt_bot> ^'-.,_,.-'-.,.-.
18:48:21 <ais523> ~bf >,[>,]<.[-]<[.<[.<]>[-]>[.>]<[-]<]!<({[|]})>
18:48:21 <bsmnt_bot> >)}]|[{(<({[|]})}]|[{({[|]}]|[{[|]|[|
18:49:36 <GregorR> My brain hurts.
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:51:37 <GregorR> :P
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.
2007-03-13
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.
04:34:56 <bsmntbombdood> oh joy
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:00:46 <GreaseMonkey> afk food
07:16:09 <GreaseMonkey> back
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:22:46 <RodgerTheGreat> CSAP?
21:24:30 -!- sebbu has quit (Connection timed out).
21:27:02 <bsmntbombdood> required standardized tests in colorado
21:27:34 <bsmntbombdood> http://en.wikipedia.org/wiki/CSAP
21:27:58 <bsmntbombdood> it fuckin sucks
21:30:00 <RodgerTheGreat> hm. reminds me of the MEAP we use in Michigan
21:30:49 <bsmntbombdood> At least this is the last year I have to take it
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:41 <RodgerTheGreat> yeah
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:12:59 <bsmntbombdood> graue: huh?
23:15:02 <bsmntbombdood> graue: what research?
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.
2007-03-14
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:05:59 <oklopol> :P
00:09:58 <oklopol> i lasted for like 10 rounds though!
00:23:59 <lament> what board game?
00:30:51 <oklopol> sujomilo... my own
00:31:01 <lament> sounds esperantoish
00:31:04 <graue> bsmntbombdood: research to support the thesis that you can't concentrate on reading books after taking that test
00:31:19 <bsmntbombdood> graue: oh, that's just my own experience
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:12:23 <oerjan> 14
02:12:29 <Caphi> Thank you.
02:12:55 <oerjan> You're welcome.
02:13:02 <Caphi> \[\]=a
02:13:07 <Caphi> 0
02:13:22 <Caphi> Sorry. Someone else tried to take my computer.
02:17:07 <bsmntbombdood> 56`1
02:20:58 <RodgerTheGreat> oerjan: 17 has been proven to be more random than 14
02:21:01 <RodgerTheGreat> :D
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:24:49 <Caphi> Quite so.
02:25:05 <bsmntbombdood> man
02:25:15 <bsmntbombdood> prefix application makes parsing so easy
02:25:21 <bsmntbombdood> (unlambda style)
02:25:26 <Caphi> I just realized, I didn't actually specify an integer.
02:26:07 <Caphi> Or indeed a rational number.
02:26:35 <bsmntbombdood> e^pi - pi
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:28:58 <bsmntbombdood> BB(144)
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:29:18 <oerjan> nope :)
02:29:30 <Caphi> So it's complex?
02:29:34 <oerjan> nope
02:29:49 <oerjan> it's surreal
02:29:54 <bsmntbombdood> defined, but uncomputable
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:48 <Caphi> Out of curiosity
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:32:35 <RodgerTheGreat> Caphi: for what purpose do you request this number?
02:32:42 <Caphi> Just curious.
02:33:01 <RodgerTheGreat> so am I, that's my point. :)
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:49:35 <bsmntbombdood> hmm, that's interesting
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:50:36 <bsmntbombdood> (extensionally equal to S)
02:52:15 <bsmntbombdood> I'm writing an abstraction eliminator
02:54:22 <bsmntbombdood> oh man
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:54:39 <bsmntbombdood> church numeral addition
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:01:06 <bsmntbombdood> yeah :/
03:02:28 <bsmntbombdood> wonder why it doesn't reduce it
03:02:52 <bsmntbombdood> oh
03:03:30 <bsmntbombdood> When reducing extensionally, it only works with the whole expression
03:06:18 <bsmntbombdood> ahh, now it at least does something
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").
03:24:04 <bsmntbombdood> dummy variables are annoying
04:14:36 -!- GreaseMonkey has joined.
04:27:57 <RodgerTheGreat> good night, guys
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:47:36 <tokigun> 18.
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:03:41 <nooga> y0
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.
16:38:47 <RodgerTheGreat> hi everybody
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:08 <bsmntbombdood> ooh fun
23:20:20 <bsmntbombdood> the max shifts function solves the halting problem
23:30:01 <RodgerTheGreat> wha?
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:19 <RodgerTheGreat> ah, I see
23:35:41 <bsmntbombdood> hmm
23:35:41 <oerjan> Are there uncomputable problems strictly weaker than the halting problem?
23:35:58 <lament> sounds unlikely
23:36:02 <bsmntbombdood> S(4) on a 2 symbol machine is known
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:41:33 <oerjan> yes.
23:41:41 <RodgerTheGreat> one would assume so
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:16 <RodgerTheGreat> hm
23:43:21 <RodgerTheGreat> interesting
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
23:56:30 <lament> i totally missed it
2007-03-15
00:18:54 -!- RodgerTheGreat has quit.
00:20:05 -!- RodgerTheGreat has joined.
00:23:06 <RodgerTheGreat> #$@% cars
00:23:10 <RodgerTheGreat> *cats
00:25:37 -!- Sgeo has joined.
00:28:57 -!- oerjan has quit ("leaving").
00:29:30 <bsmntbombdood> sweet
00:29:37 <bsmntbombdood> my dad got me a pocket protector
00:29:39 <bsmntbombdood> :P
00:29:51 <RodgerTheGreat> ooh, neat
00:30:07 <bsmntbombdood> indeed
00:30:30 <RodgerTheGreat> if I had shirts with pockets, I'd wear one all the time
00:30:54 <bsmntbombdood> me too
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:31:56 <RodgerTheGreat> what logo does your pocket protector have on it?
00:32:02 -!- tgwizard_ has quit (Remote closed the connection).
00:32:26 <bsmntbombdood> a very small "JM" imprint
00:32:43 <bsmntbombdood> nothing else
00:33:04 <RodgerTheGreat> classy
00:48:54 -!- cmeme has quit (Read error: 104 (Connection reset by peer)).
00:49:09 -!- cmeme has joined.
00:52:15 <lament> holy crap
00:52:15 <lament> http://mathforum.org/kb/message.jspa?messageID=1375971&tstart=0
00:56:48 <RodgerTheGreat> is that written by *the* John Conway?
00:57:06 -!- sebbu has quit (Client Quit).
00:57:07 <bsmntbombdood> I know pi to 51 decimal places
00:57:43 <RodgerTheGreat> I never find myself needing more than the first seven- I've never really tried memorizing them
01:00:18 <lament> RodgerTheGreat: yes
01:00:28 <RodgerTheGreat> cool
01:00:36 <lament> that's what impressed me
01:00:50 <RodgerTheGreat> cellular automata and memorizing pi.
01:00:53 <lament> although his technique is pretty nice too
01:00:57 <RodgerTheGreat> I agree
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:03 <bsmntbombdood> lament: couple boring days in middle school math
01:10:16 <RodgerTheGreat> haha
01:10:36 <bsmntbombdood> it breaks itself up into easily memorizable pieces
01:11:58 <bsmntbombdood> 1415 92 653 5897 9323 846264 3383...
01:12:54 <RodgerTheGreat> another way to "memorize" it could be to memorize an algorithm for finding successive places....
01:13:12 <RodgerTheGreat> slower in recall, but at least as useful
01:13:32 <bsmntbombdood> that would be terrible difficult
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:19:22 <bsmntbombdood> that's true
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
01:23:16 <bsmntbombdood> concur
02:08:00 -!- oerjan has quit ("Good night").
03:06:07 <Sgeo> Today is (ln -1)/i day!
03:06:55 <RodgerTheGreat> cool
03:07:11 <RodgerTheGreat> we need to do something special at 1:59
03:07:23 <Sgeo> Whose 1:59?
03:07:34 <bsmntbombdood> mmm, pi
03:10:08 <RodgerTheGreat> Sgeo: good question
03:10:29 <Sgeo> GMT-92 ?
03:10:41 <Sgeo> Whatever that turns out to be equivelent to?
03:10:51 <RodgerTheGreat> sounds equitable
03:11:09 <RodgerTheGreat> what would be an appropriate celebration?
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:31:56 <bsmntbombdood> hmm
03:32:27 <lament> his is almost like a poem
03:33:22 <lament> "1415 9265 35" - rhymes
03:33:53 <bsmntbombdood> reading it doesn't make any sense
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:31 <RodgerTheGreat> at last, taking AP English seems worthwhile
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:42:05 <RodgerTheGreat> 1233564- quoth the constant, nevermore.
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:44:13 <RodgerTheGreat> but I'm not certain that would always work
03:46:29 -!- GreaseMonkey has joined.
03:46:31 -!- thematrixeatsyou has joined.
03:46:46 <RodgerTheGreat> howdy GreaseMonkey, thematrixeatsyou
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:50:24 <GreaseMonkey> i accidentally opened two server tabs
03:50:33 <bsmntbombdood> \sum_{i=1}^\infty{10^{-i}i}
03:50:39 <GreaseMonkey> hmm....
03:50:46 <GreaseMonkey> what's the formula for pi again?
03:50:50 <GreaseMonkey> i can never remember it
03:50:53 <bsmntbombdood> lots
03:51:06 <GreaseMonkey> there's a couple of tangents in it
03:51:12 <bsmntbombdood> 1/1 - 1/3 + 1/5 + 1/7...
03:51:15 <bsmntbombdood> is one
03:51:35 <bsmntbombdood> converges very slowly though
03:52:32 <RodgerTheGreat> should that second + be a -?
03:52:53 <GreaseMonkey> i think so
03:52:56 <RodgerTheGreat> terms usually alternate in a mclaurin series (which that vaguely resembles) or stay constant
03:53:06 <RodgerTheGreat> if you get my meaning
03:53:30 <lament> the upcoming pi day?
03:53:46 <bsmntbombdood> yeah
03:53:49 <bsmntbombdood> typed wrong
03:53:52 <bsmntbombdood> lament: today
03:54:14 <RodgerTheGreat> I'm defining the official celebration as 1:59, GMT
03:54:19 <RodgerTheGreat> because that makes sense
03:54:20 <bsmntbombdood> and that's actually pi/4
03:54:53 <bsmntbombdood> why GMT?
03:55:00 <bsmntbombdood> it should be GMT-pi
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:02:54 <bsmntbombdood> impossible.
04:02:56 <lament> pidaymon
04:04:23 <RodgerTheGreat> lament: brilliant!
04:04:55 <RodgerTheGreat> #EsoMon: gotta appt-get 'em all!
04:27:13 <RodgerTheGreat> good night, folks
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.
06:59:15 <GreaseMonkey> afk, food
07:19:44 <GreaseMonkey> back
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:05:18 <GreaseMonkey> gtg, gnight
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.
16:13:06 <RodgerTheGreat> hello everyone
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:42 <bsmntbombdood> haha
22:23:56 <bsmntbombdood> C is a sad language, because most lines end with );
22:24:03 <lament> );
22:28:38 <RodgerTheGreat> haha
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:40:29 <RodgerTheGreat> hm
22:40:36 <RodgerTheGreat> a good question
22:41:24 <GregorR> Plof has a lot of });
22:41:31 <RodgerTheGreat> I know one way it's *possible*, but not in a functional expression
22:41:43 <GregorR> A static struct.
22:41:57 <RodgerTheGreat> there you go
22:41:58 <GregorR> struct foo a = { b:{stuff in a.b} };
22:42:10 <oerjan> ah
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:44:06 <oerjan> ok
22:45:49 <bsmntbombdood> huh?
22:45:52 <bsmntbombdood> :{ ?
22:50:53 <oerjan> found a BNF for C at http://www.cs.man.ac.uk/~pjj/bnf/c_syntax.bnf
22:51:02 <bsmntbombdood> i don't think you can have that
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:09 <oerjan> oh wait.
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:03 <lament> ={
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:51 <GregorR> *snaps*
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:05:13 <oklopol> oerjan do you know C?
23:05:49 <oerjan> a bit
23:06:12 <bsmntbombdood> C is fun
23:06:23 <oklopol> quite
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:45 <oerjan> :D
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:09:23 <bsmntbombdood> fizzie: wtf?
23:09:29 <bsmntbombdood> I've never seen that syntax
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:10:59 <bsmntbombdood> busy beaver!
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:15:52 <bsmntbombdood> I want a turing machine interpreter
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:10 <bsmntbombdood> what, turing machines?
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:23:51 <bsmntbombdood> There's just more than one
23:24:05 <oerjan> except that does have a name and syntax
23:24:11 <lament> oerjan: ... :)
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:34 <lament> no issues there...
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:18 <bsmntbombdood> hmph
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:26:35 <bsmntbombdood> what about the busy beaver function?
23:26:43 <bsmntbombdood> oh, it is
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:10 <RodgerTheGreat> haha
23:30:35 <lament> your MOM doesn't halt!
23:32:54 <bsmntbombdood> I know, she just bitches forever
23:33:11 <lament> loop(bitch)
23:34:59 -!- sebbu2 has quit (Connection timed out).
23:50:00 -!- sebbu has quit ("@+").
2007-03-16
00:11:06 <bsmntbombdood> (Y (lambda (f) (cons 'bitch (f)))
00:12:07 -!- ShadowHntr has joined.
00:13:39 <RodgerTheGreat> heh
00:14:03 <oerjan> that seems a bit too strict. You need lazy evaluation for any conses to actually happen.
00:14:30 <oerjan> let f = Bitch:f in f
00:15:05 <oerjan> or you could do it in reverse:
00:16:15 <bsmntbombdood> yeah
00:16:33 <RodgerTheGreat> 10:BITCH:GOTO 10
00:16:41 <oerjan> ((Y (lambda (f) (lambda (l) (f (cons 'bitch l))))) '())
00:17:24 <RodgerTheGreat> RUN
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:19:31 <oerjan> ok then:
00:20:16 <bsmntbombdood> SII is simpler anyway
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:21:28 <oerjan> no, that won't work.
00:22:04 <bsmntbombdood> ?
00:22:15 <oerjan> without lazy evaluation, you cannot apply (f f) without another intervening lambda.
00:22:45 <bsmntbombdood> yeah you can
00:22:49 <bsmntbombdood> it just doesn't halt
00:22:58 <oerjan> it never bitches either
00:23:19 <oerjan> because it doesn't get to that part
00:23:34 <bsmntbombdood> yeah it does
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:30 <bsmntbombdood> and so on
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:26:42 <bsmntbombdood> but not functional
00:28:11 <bsmntbombdood> I guess bitching does have side effects, though
00:28:17 <oerjan> you bet
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:18:44 <bsmntbombdood> dummy variables are no fun
01:23:38 <bsmntbombdood> that's probably not the right word
01:24:25 <oerjan> fix (bitch>>)
01:24:57 <bsmntbombdood> what?
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:28:24 <bsmntbombdood> the x in \x.E
01:28:55 <bsmntbombdood> or \forall x.E
01:28:57 <bsmntbombdood> and so on
01:30:42 <oerjan> you mean unused variables?
01:31:40 <oerjan> in Haskell/ML, you use _ for those.
01:32:25 <bsmntbombdood> no, x can be used in E
01:33:08 <oerjan> so it's actually basic lambda calculus abstraction you don't like? :)
01:33:16 <bsmntbombdood> yeah
01:33:24 <bsmntbombdood> combinatory logic for the win!
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
01:36:00 <bsmntbombdood> ooh, I didn't think about a stack
02:34:06 <bsmntbombdood> interesting, disjunct types
02:50:08 -!- RodgerTheGreat has quit.
02:51:22 -!- RodgerTheGreat has joined.
03:34:51 -!- ShadowHntr has quit ("End of line.").
03:41:57 <RodgerTheGreat> 'night everyone
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:48:02 <bsmntbombdood> what are the input symbols of a turing machine?
04:55:37 <bsmntbombdood> hmmm
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.
04:59:10 <bsmntbombdood> which means it is solvable on real computers
05:00:45 <bsmntbombdood> if it doesn't halt after 2**(number of bits in memory), it doesn't halt at all
05:01:30 <bsmntbombdood> 2**(number of bits in memory) steps, that is
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:34:48 <bsmntbombdood> lament: IO is included in the input
05:35:03 <bsmntbombdood> The halting function is given the program and its input
05:39:22 <bsmntbombdood> goodnight
05:51:10 <GreaseMonkey> gnight
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:39 <GreaseMonkey> !bf-txtgen all your base aare belong to me!
08:30:42 <EgoBot> Huh?
08:30:50 <GreaseMonkey> !help
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.
08:59:17 <helios24> !ps
08:59:20 <EgoBot> 3 helios24: ps
09:03:41 <GreaseMonkey> !ps d
09:03:44 <EgoBot> 1 ais523: daemon ul bf
09:03:46 <EgoBot> 2 ais523: daemon deadfish funge93
09:03:48 <EgoBot> 3 GreaseMonkey: ps
09:04:02 <GreaseMonkey> !ul testing
09:04:11 <GreaseMonkey> !ul sfda
09:04:14 <GreaseMonkey> !ul
09:44:40 <GreaseMonkey> gtg, gnight
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:11 <bsmnt_bot> SyntaxError: invalid syntax
14:43:13 <nazgjunk> o.O
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:02 <oerjan> i wanted to try
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:23 <ais523> umm...
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:10 <bsmnt_bot> 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:19 <oerjan> *spent
14:46:42 <ais523> is it the language that's the problem, or the development environment
14:46:48 <ais523> s/$/?/
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:03 <ais523> naturally, I failed
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:54:09 <ais523> !bct 111001010011110
14:54:13 <ais523> !bct 1110111
14:54:23 <EgoBot> 1110111
14:54:48 <ais523> !kill 3
14:55:16 <ais523> uh oh, maybe I shuldn't feed it programs without checking what they do first
14:55:18 <ais523> !pd
14:55:20 <ais523> !ps
14:55:38 <EgoBot> 3 ais523: ps
14:55:46 <ais523> !ps d
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:55:54 <EgoBot> 3 ais523: ps
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:31 <ais523> /^0.*?!./$1/
14:58:51 <oerjan> ~exec list_dir("/")
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:30 <ais523> I just noticed that
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:43:45 <oerjan> hm, another subtlety:
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:08 <RodgerTheGreat> howdy, everybody
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:56:39 <RodgerTheGreat> ooh, neat!
15:56:53 <RodgerTheGreat> glad I showed up, then
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:03:05 <RodgerTheGreat> ah
16:03:07 <RodgerTheGreat> nvm
16:05:31 * RodgerTheGreat rifles through the logs
16:09:33 -!- nazgjunk has joined.
16:09:48 <oerjan> hm...
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:41 <RodgerTheGreat> neat- what was the implementation called?
16:24:57 <ais523> QBASIC, if I remember. It was bundled with some versions of DOS
16:25:08 <RodgerTheGreat> ah, yes- QBASIC
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:27:36 <ais523> what, not BFBASIC?
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:35 <RodgerTheGreat> hi, nazgjunk
16:34:44 -!- jix__ has joined.
16:36:35 -!- jix__ has changed nick to jix.
16:38:01 -!- UpTheDownstair has joined.
16:40:17 <RodgerTheGreat> hello jix, UpTheDownstair
16:40:30 <jix> hello RodgerTheGreat
16:41:08 <ais523> ~bf ,[.,]!Hello everyone
16:41:08 <bsmnt_bot> Hello everyone
16:41:52 <RodgerTheGreat> heh
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:02 <RodgerTheGreat> ...in an extremely painful and weird way
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:25 <RodgerTheGreat> hm
17:10:47 <RodgerTheGreat> is the program length mod 255ed before it's converted to ASCII?
17:10:56 <RodgerTheGreat> (when you're doing output)
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:35 <RodgerTheGreat> hm
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 <nazgjunk> :/
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:25 <RodgerTheGreat> yes
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:14:46 <RodgerTheGreat> I get what you meant about output in complex programs
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:53 <RodgerTheGreat> hm... wait..
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:17 <RodgerTheGreat> bollocks
17:16:30 <ais523> I think that line at the bottom is probably wrong
17:16:49 <RodgerTheGreat> yeah
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:17:13 <RodgerTheGreat> ok
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:11 <RodgerTheGreat> oh- I see
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:26:26 <ais523> s/4/2/
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:28:36 <RodgerTheGreat> hm
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:22 <ais523> yep
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:04 <RodgerTheGreat> and vice versa
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:16 <RodgerTheGreat> yes
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:29 <RodgerTheGreat> thus, we always have an *odd* after a duplicate
17:31:31 <ais523> no, ~abc changes to abcabc (see the wiki Talk page)
17:31:32 <RodgerTheGreat> true
17:31:44 <RodgerTheGreat> oh
17:31:47 <RodgerTheGreat> hm
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:33:36 <RodgerTheGreat> true
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:09 <RodgerTheGreat> I think this will be huge
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:39:24 <RodgerTheGreat> *size
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:14 <ais523> brute-forcing it?
17:43:28 <RodgerTheGreat> I guess that works
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:07 <RodgerTheGreat> that's effectively what I'm saying
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:31 <RodgerTheGreat> then do an mfit output when appropriate
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:16 <RodgerTheGreat> exactly
17:47:23 <RodgerTheGreat> that's how I'm thinking
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:03 <RodgerTheGreat> yep
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:49:48 <RodgerTheGreat> I agree
17:50:22 <RodgerTheGreat> largely because storing strings seperately from counter data is effectively impossible
17:50:36 <RodgerTheGreat> unless you get unhealthily creative
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:10 <RodgerTheGreat> ais523: haha- true
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:07 <RodgerTheGreat> hm
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:21 <RodgerTheGreat> precalculating wouldn't get you very far
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:13 <RodgerTheGreat> lol- we both arrived at the same conclusion.
17:56:32 <RodgerTheGreat> I think we're operating on the same wavelength here
17:56:59 -!- ShadowHntr has quit ("End of line.").
17:58:19 * ais523 sets out to try to write the program
18:03:48 * RodgerTheGreat cheers ais523 on!
18:04:08 <RodgerTheGreat> there's nothing like the thrill of groundbreaking esolang coding
18:04:25 <ais523> thanks
18:07:55 -!- sebbu has joined.
18:08:01 <RodgerTheGreat> hi, sebbu
18:08:34 <sebbu> hi
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:40:59 <RodgerTheGreat> well, it's a pretty non-trivial task
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:42:35 <RodgerTheGreat> only much worse, naturally
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:52:42 <RodgerTheGreat> what was the problem you were encountering?
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 <lament> how do you do output
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:58:19 <lament> oh, okay
18:59:26 <lament> looks interesting
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:17 <RodgerTheGreat> damn
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:25:39 <RodgerTheGreat> quite possibly
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:05 <ais523> !dog Hello, world!
19:27:17 <ais523> !eof dog
19:27:19 <RodgerTheGreat> ah- that makes sense
19:27:33 <ais523> 'cept my coding hasn't worked
19:27:34 <ais523> !ps d
19:27:36 <RodgerTheGreat> still doesn't explain the names completely
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:27:45 <EgoBot> 5 ais523: ps
19:27:48 <ais523> !kill 3
19:27:49 <EgoBot> Process 3 killed.
19:27:50 <ais523> !kill 4
19:27:53 <EgoBot> Process 4 killed.
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:28:36 <ais523> lament: yes
19:28:39 <RodgerTheGreat> yeah
19:28:42 <lament> okay.
19:29:02 <RodgerTheGreat> it might be worthwhile to skim the logs from earlier today
19:29:13 <ais523> !daemon dog bf +[->,----------[>,-----------]<[+++++++++++.[-]<]+]
19:29:21 <ais523> !dog Hello, world!
19:29:42 <ais523> !kill 3
19:29:43 <EgoBot> Process 3 killed.
19:29:50 <ais523> !daemon dog bf +[->,----------[>,-----------]<[+++++++++++.[-]<]++++++++++.[-]+]
19:29:55 <ais523> !dog Hello, world!
19:30:12 <ais523> Now what have I done wrong?
19:30:26 <ais523> !kill 3
19:30:29 <EgoBot> Process 3 killed.
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:38:59 <EgoBot> Huh?
19:39:06 <ais523> !help
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:35 <ais523> !dog Hello, world!
19:39:49 <ais523> !undaemon dog
19:39:51 <EgoBot> 10 100 114 119 44 108 101 0
19:39:53 <EgoBot> Process 3 killed.
19:40:06 <lament> o_O
19:40:20 <ais523> !daemon dog funge93 0>~# :# 5# 5# +# -# _> ,# _,$
19:40:32 <ais523> !dog Hello, world!
19:40:41 <ais523> !dog Try another line
19:40:43 <EgoBot> drw,le
19:41:00 <ais523> !dog WTF?
19:41:04 <EgoBot> nlrhoayT
19:41:20 <ais523> !undaemon dog
19:41:21 <EgoBot> FW
19:41:23 <EgoBot> Process 3 killed.
19:41:48 <ais523> !daemon dog funge93 0>~# :# 5# 5# +# -# _$> :# ,# _,$55+,
19:41:54 <ais523> !dog Hello, world!
19:41:57 <EgoBot> !dlrow ,olleH
19:42:49 <ais523> !dog .won gnikrow eb ot smees tI
19:42:51 <EgoBot> It seems to be working now.
19:43:01 <RodgerTheGreat> haha
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:47:49 <lament> stupid mfit
19:49:10 <RodgerTheGreat> lament: you said it
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:31 <RodgerTheGreat> but mfit's replacement command is pretty necessary...
19:50:46 <ais523> then we'll need a new interpreter that can handle the colossally large progam that will result
19:51:06 <RodgerTheGreat> yeah
19:51:14 <ais523> Maybe one that stores the program compressed? (It's going to consist of lots of repeated stuff.)
19:51:28 <RodgerTheGreat> like RLE?
19:52:06 <ais523> not exactly, because we need to store near-repetitions and repetitions of groups of more than one character
19:52:20 <RodgerTheGreat> ah
19:52:21 <ais523> It would probably also need a way to store nested repetitions
19:52:38 <RodgerTheGreat> some kind of "duplication stack"?
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:00:04 <RodgerTheGreat> cya...
20:29:07 -!- sebbu2 has joined.
20:35:35 <GregorR> http://i15.photobucket.com/albums/a379/GregorRichards/lcarssshot.png
20:40:31 <RodgerTheGreat> nice desktop theme, GregorR
20:41:01 <GregorR> ^^
20:41:06 <GregorR> It's awesome for a tablet PC :)
20:41:12 <RodgerTheGreat> sweet
20:41:21 <RodgerTheGreat> I am in envy of your tabletPC
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:44:36 <GregorR> ... no keyboard?
20:44:57 <RodgerTheGreat> nah
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:17 <GregorR> Ah :P
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:46:33 <RodgerTheGreat> typing is what my laptop is for
20:46:38 <RodgerTheGreat> heh
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:21 <RodgerTheGreat> for now, I'll lust after the modbook
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:51:21 <GregorR> Heh
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:08:24 <GregorR> A.K.A. good business >_>
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:04 <nazgjunk> o.O
21:25:39 <lament> i have no proof though...
21:26:27 -!- Sgeo has joined.
21:26:56 <lament> RodgerTheGreat: you there?
21:27:05 <RodgerTheGreat> yeah
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:07 <RodgerTheGreat> odd
21:29:18 <RodgerTheGreat> man, that is fucked up
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:27 <RodgerTheGreat> lament: how so?
21:32:41 <lament> intuition :)
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:09 <lament> okay
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:47:59 <RodgerTheGreat> wait, woah
21:48:08 <RodgerTheGreat> it seriously makes that much of a difference?
21:48:52 <lament> absolutely
21:49:07 <lament> the problem with 256 is that it's an even number
21:49:11 <RodgerTheGreat> ah
21:49:18 <RodgerTheGreat> I think I see what you mean
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:49:59 <RodgerTheGreat> could you pastebin what you've come up with?
21:50:04 <lament> like 'H' = 72
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:52:35 <RodgerTheGreat> gotcha- it does make a difference
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:54:22 <lament> oh, .ca
21:54:31 <RodgerTheGreat> or use nonlogic.org/dump
21:54:48 <RodgerTheGreat> </plug shame="false">
21:55:27 <lament> http://pastebin.ca/397942
21:56:22 <lament> It's practically trivial. In particular, the source is never doubled.
21:56:38 <RodgerTheGreat> hunh
21:57:02 -!- nazgjunk has quit ("Leaving").
21:57:17 <lament> can you try it in the other interpreter?
21:57:24 <lament> in case mine's buggy
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:57:50 <lament> yes :)
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:00:59 <lament> hold on a sec
22:01:55 <RodgerTheGreat> lemme see if I can find ais523's source...
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:31 <RodgerTheGreat> yes
22:04:43 <RodgerTheGreat> we discussed the possibility of doing that
22:04:58 <RodgerTheGreat> although, lament's solution doesn't depend on duplication at all
22:05:36 <RodgerTheGreat> augh. good lord perl is impenetrable
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:33 <lament> prettified:
22:06:34 <lament> http://pastebin.ca/397959
22:06:42 <oerjan> That's not perl, that's thutu2perl
22:06:59 <RodgerTheGreat> oerjan: ok, that explains why it's unreadable
22:07:14 <lament> RodgerTheGreat: i'm guessing you need to change those '128' to '257'?
22:07:19 <RodgerTheGreat> lament: haha
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:00 <lament> heh
22:08:37 <oerjan> might be an idea to use the original thutu source.
22:08:43 <lament> he didn't publish it.
22:09:10 <lament> RodgerTheGreat: use the prettified version, it's way more informative :)
22:09:38 * RodgerTheGreat strips newlines...
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:15:54 <RodgerTheGreat> *improperly
22:19:31 <lament> oh well
22:21:28 <RodgerTheGreat> now we need to figure out how to create 99bob
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:32 <RodgerTheGreat> probably
22:22:44 <lament> his interpreter is full of typos and doesn't even run
22:22:48 <lament> he never tested it
22:22:52 <RodgerTheGreat> yeah
22:23:06 <RodgerTheGreat> that's probably why it was removed
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:24:25 <bsmntbombdood> oerjan: it has save_callbacks
22:24:28 <RodgerTheGreat> where's seven inch bread when you need him?
22:25:14 <oerjan> writing a dupdog interpreter directly in perl should be trivial.
22:25:56 <bsmntbombdood> k, /bot/scripts is writable
22:26:02 <bsmntbombdood> hopefully
22:26:10 <oerjan> yoohoo
22:27:21 <bsmntbombdood> ~exec self.foo = open("/bot/scripts/foo", "rw")
22:27:22 <bsmnt_bot> IOError: [Errno 2] No such file or directory: '/bot/scripts/foo'
22:27:35 <bsmntbombdood> ~exec self.foo = open("/bot/scripts/foo", "w")
22:27:51 <bsmntbombdood> ~exec self.foo.write("fooo\n")
22:27:59 <bsmntbombdood> ~exec self.foo.close()
22:51:00 -!- nazgjunk has joined.
22:54:04 -!- nazgjunk has quit (Client Quit).
23:09:47 <bsmntbombdood> hmph
23:10:00 <bsmntbombdood> is BB(n+1) > BB(n)?
23:10:07 <bsmntbombdood> BB is busy beaver
23:11:30 <oerjan> yes
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:13:25 <bsmntbombdood> oh
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:18:45 <bsmntbombdood> yeah
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:23:27 <bsmntbombdood> f(x) = BB(invBB(x)+1)
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:26:18 <Sgeo> ?
23:27:51 <oerjan> it means at a minimum that lim (x -> inf) f(x)/BB(x) = 0
23:28:06 <oerjan> i.e. f(x) = o(BB(x))
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:27 <lament> WHERES CAKEPROPHET
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:31:56 <oerjan> of course.
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:38:58 <bsmntbombdood> S(n) < Sigma(3n+6)
23:39:26 <bsmntbombdood> BB(x) is finite for finite x
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:42:23 <bsmntbombdood> By telling you how many test cases you need
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:45:23 <bsmntbombdood> what's a factorial?
23:45:37 <bsmntbombdood> and what's dupdog?
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:46:56 <bsmntbombdood> oh
23:47:01 <RodgerTheGreat> dupdog: it's hip and trendy!
23:47:12 <RodgerTheGreat> and seveninchbread was probably stoned when he made it
23:59:33 -!- tgwizard has quit (Remote closed the connection).
2007-03-17
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:45:48 <oerjan> Darn.
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:18:59 <oerjan> *ly
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:54:52 <bsmntbombdood> FingerTree!
01:55:54 <oerjan> yes?
01:56:07 <bsmntbombdood> nothing
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:13:57 <RodgerTheGreat> wait... I'm wrong
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:22:01 <RodgerTheGreat> hm
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:26:35 <GreaseMonkey> gonna get off now, cya
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:50:49 <oklopol> ...and he's not here
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.
16:54:27 <nooga> huhu
16:54:32 <nooga> hyhuh
17:03:51 <oerjan> huh? huh?
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.
18:32:57 <nooga> huhu
18:36:57 <nooga> jah
19:04:20 -!- nazgjunk has quit ("Leaving").
19:50:50 -!- SevenInchBread has joined.
19:51:03 <SevenInchBread> so.....
19:51:37 <SevenInchBread> anyone know the Windows equivalent of....
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:18:33 <SevenInchBread> ...the domain name system annoys me.
20:19:29 <oklopol> all the systems suck
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:09 <oklopol> *annoy
20:25:25 <oklopol> *annoys
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:26:58 <oklopol> it's great
20:27:04 <oklopol> that is all
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:38:27 <SevenInchBread> GRAND ESOLANGERS
20:38:31 <SevenInchBread> I PRESENT TO YOU... A PROPOSAL.
20:39:37 <lament> SevenInchBread: okay
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:19 <lament> no, no
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:40:51 <SevenInchBread> AN ESOTERIC INTERNET. ...
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:35 <SevenInchBread> ...should be 256
20:41:37 <lament> and if it doesn't, it might be impossible to do so
20:41:46 <SevenInchBread> ...
20:41:47 <SevenInchBread> oh
20:41:52 <SevenInchBread> well... -ahems- alright it does
20:41:55 <lament> haha
20:42:17 <SevenInchBread> 257 is the "termination character" :P
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:43:21 <SevenInchBread> ....do the words have any signifigance?
20:43:52 <SevenInchBread> er... the letters
20:44:00 <oklopol> C you mean?
20:44:04 <lament> SevenInchBread: no
20:44:14 <lament> well, they spell hello world
20:44:20 <oklopol> SevenInchBread didn't you make this language? :D
20:44:31 <SevenInchBread> >.> what?
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:17 <lament> :D
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:43 <bsmntbombdood> vpn?
20:49:54 <SevenInchBread> A protocol without an implementation is jsut a.... protocol.
20:50:11 <SevenInchBread> :)
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:05 <SevenInchBread> plus.... AN ESOTERIC INTERNET
20:52:12 <SevenInchBread> ...this is too good to pass up.
20:52:32 <bsmntbombdood> \:/\:/:\
20:52:55 <SevenInchBread> we can incorporate it into esoOS... when it's first released 20 years from now.
20:53:01 <SevenInchBread> .... :D
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:54:51 <SevenInchBread> ... :)
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:56:55 <bsmntbombdood> lament: brilliant!
20:57:14 <lament> if you _really_ want to experiment with other low-level protocols, get into amateur radio.
20:57:17 <lament> they do that.
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:00:53 <SevenInchBread> hmmm
21:00:55 <bsmntbombdood> screen
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:02:44 <lament> ...you mean like TCP?
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:33 <lament> not really.
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:15 <lament> err
21:08:18 <lament> i mean provider
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:24 <SevenInchBread> *take long
21:09:27 <lament> no
21:09:40 <lament> wait
21:09:46 <lament> i remember something like that
21:10:04 <lament> (brainfuck)
21:10:25 <SevenInchBread> quantum entanglement with bitwise brainfuck basically makes an event-programming-type thingy.
21:10:47 <SevenInchBread> changing one bit changes another.
21:11:01 <lament> haven't i implemented that?
21:11:03 <lament> yes, i have
21:11:13 <lament> i even put it in egobot
21:11:38 <lament> !qb .
21:11:40 <EgoBot> Huh?
21:11:50 <lament> no idea what the syntax would be
21:12:25 <lament> ohh
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:17 <lament> yes.
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:35 <oklopol> hmm
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:02 <lament> faster to read it!
21:17:03 <SevenInchBread> mfit uses different semantics.
21:17:18 <oklopol> link it if you have it open
21:17:29 <oklopol> i never remember the page :D
21:17:39 <oklopol> oh, found!
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:19:32 <SevenInchBread> but I don't think it does.
21:20:45 <bsmntbombdood> y65\
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:22:22 * SevenInchBread adds laments Hello, World! to the page.
21:23:17 <oklopol> 58 of them!
21:25:57 <SevenInchBread> ....suuure
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:22 <SevenInchBread> oooooh
21:26:27 <oklopol> and each is assigned the same char simultaneously
21:26:33 <oklopol> making up the language
21:26:36 <SevenInchBread> SOUNDS LIKE A JOB FOR THE EDUCATED BLIND ESOLANG COMMITEE.
21:26:40 <SevenInchBread> thing
21:26:42 <oklopol> :D
21:26:43 * SevenInchBread forgot the name of it
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:29:32 <SevenInchBread> lament, what's your name on the wiki?
21:29:40 <lament> mm...lament?
21:29:47 <lament> Nikita Ayzikovsky
21:30:02 <SevenInchBread> oklopol, that sounds like a corny joke... but I haven't figured out the punch line.
21:30:25 <oklopol> mm what?
21:30:28 <oklopol> :O
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:31:49 <bsmntbombdood> ?
21:32:52 -!- nazgjunk has quit ("Leaving").
21:32:56 <oklopol> ? ?
21:33:42 <SevenInchBread> what's the rule?
21:33:53 <oklopol> the rule?
21:33:57 <SevenInchBread> yeah.
21:34:02 <bsmntbombdood> sad how brainfuck is so popular
21:34:09 <oklopol> 6 pages of rules for when to use 'the'
21:34:29 * SevenInchBread is monolingual.... much to his dismay.
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:37:38 <SevenInchBread> s
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:39:03 <bsmntbombdood> I don't understand P''
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:34 <bsmntbombdood> anyone have access to jstor.org?
21:43:59 <oklopol> well, i knew most of them... maybe my skillzorz will automatically improve with time
21:44:04 <bsmntbombdood> or portal.acm.org?
21:44:06 <oklopol> bsmntbombdood what don't you understand?
21:44:11 <oklopol> seems simple
21:44:19 * SevenInchBread wants to learn like... Polish or something.
21:44:25 <SevenInchBread> I just need like, an active soure of practice.
21:44:29 <bsmntbombdood> oklopol: r ≡ λR, r′ ≡ rn, L ≡ r′λ, R
21:44:35 <oklopol> :o
21:44:42 <bsmntbombdood> SevenInchBread: heh, my dad speaks polish
21:44:44 <oklopol> lot's of squares
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:12 <SevenInchBread> yeah I doubt it too. :P
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:01:40 <SevenInchBread> hmmm... that's odd. :)
22:01:58 <SevenInchBread> like... a Golden Gate Bridge?
22:02:13 <oklopol> the of course
22:02:21 <oklopol> oh
22:02:24 <oklopol> without article?
22:02:32 <oklopol> that'd be Golden Gate Bridge
22:02:41 <oklopol> i was fishing under Golden Gate Bridge
22:02:47 <SevenInchBread> in British-english
22:02:49 <oklopol> yes
22:02:52 <oklopol> read above
22:03:25 <SevenInchBread> aaaah.
22:03:30 <oklopol> but golden gate is american
22:03:33 <oklopol> so it's 'the'
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:00 <SevenInchBread> yeah, that would be strange.
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:05:53 <oklopol> :)
22:06:01 <oklopol> *british bridges
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:07:46 <SevenInchBread> er.. dialect.
22:07:50 <SevenInchBread> or whatever the term is
22:09:13 <SevenInchBread> hmmmm.... yeah, English articles are definetely weird.
22:09:26 <oklopol> octupii?
22:09:40 <oklopol> octopi?
22:10:23 <SevenInchBread> yeah.
22:11:10 <oklopol> sorry, i get some serious hard-on when correcting americans' english
22:11:11 <oklopol> :)
22:11:35 <SevenInchBread> ...I'm terrible with grammar
22:12:23 <SevenInchBread> half-decent with spelling.
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:00 * SevenInchBread likes them.
22:15:29 <oklopol> infidel
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:14 <oklopol> well, vocabulary anyway
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:40 <SevenInchBread> French influence is a recent addition to English.
22:22:45 <SevenInchBread> ...historially.
22:22:51 <SevenInchBread> -historically
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:10 <RodgerTheGreat> how's going, guys?
22:24:57 <SevenInchBread> Romance is Spanish, italian, Romania, Portugese, and....
22:25:22 <SevenInchBread> oooh wait
22:25:28 <SevenInchBread> French is Romanic.
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:19 <SevenInchBread> oh... Catalan is also a Romance language...
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:29:53 * SevenInchBread nod.
22:30:30 <oerjan> an Reto-Romansch, Sardinian, probably Corsican
22:30:32 <oerjan> *and
22:30:52 <oerjan> and Occitan
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:44 <SevenInchBread> ....well... we are the esoteric language channel. ;)
22:33:45 <oklopol> my systems get all mized upz
22:33:47 <oklopol> :P
22:34:08 <SevenInchBread> >.>
22:34:14 * SevenInchBread confused oklopol.
22:34:19 <SevenInchBread> er... confuses
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:36:55 <SevenInchBread> .....????
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:39:17 <oklopol> heyyy that sounds fun :D
22:39:23 <RodgerTheGreat> yeah
22:39:25 <RodgerTheGreat> :D
22:39:46 <bsmntbombdood> heeh
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:40:43 * SevenInchBread has always wanted to create his own natural language.
22:40:56 <oklopol> me too
22:40:57 <SevenInchBread> sounds pretty cool...
22:41:00 <oklopol> been making one just now
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:39 <oklopol> yes
22:41:48 <oklopol> i never even considered soken
22:41:50 <oklopol> *spoken
22:41:56 <SevenInchBread> Kind of both... for me. I like unusual pronounciation rules and sounds.
22:42:03 <SevenInchBread> but, I'd start on paper first.
22:42:11 <oklopol> since when designing, it never occured to me langs can be spoken :)
22:42:16 -!- sebbu2 has joined.
22:43:14 <RodgerTheGreat> haha
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:11 <RodgerTheGreat> like four or five symbols representing a complex idea
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:46:33 <RodgerTheGreat> oklopol: like, a human language with libraries?
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:03 <RodgerTheGreat> ah
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:48:46 <oklopol> but not well
22:48:50 <oklopol> because it's so random
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:33 <RodgerTheGreat> yeah
22:49:37 <oklopol> i just have guidelines i'm going to follow
22:49:39 <SevenInchBread> ....I like that.
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:04 <RodgerTheGreat> lol
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:52:15 * SevenInchBread loves it.
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:54:14 <oklopol> that was bad said
22:54:22 <RodgerTheGreat> but still understood
22:54:26 <oklopol> good
22:54:30 <RodgerTheGreat> :D
22:54:32 <oklopol> :)
22:54:52 <SevenInchBread> ...well...
22:55:26 <oklopol> hmm
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:21 <oklopol> anyway
22:56:24 <oklopol> this one language
22:56:26 <oklopol> just about this
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:18 <RodgerTheGreat> did anyone read my comments last night about /// ?
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:57:46 * SevenInchBread shakes his head.
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:19 <oklopol> SevenInchBread no.
22:59:39 <SevenInchBread> how is it not?
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:02 <oklopol> (intrinsic?)
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:33 <oklopol> hmm
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:04:59 <oklopol> and nothing can be added?
23:05:09 <oklopol> i might've gotten it wrong : )
23:05:13 <RodgerTheGreat> basically, all you can do are replacements
23:05:41 <RodgerTheGreat> if you use a two-step copy you could duplicate your main code over and over, simulating a loop
23:05:53 <SevenInchBread> can /// emulate thue?
23:05:59 <RodgerTheGreat> dunno
23:06:06 <SevenInchBread> wouldn't be hard.
23:06:25 <SevenInchBread> if it's based off of string replacement... it's hard not to emulate thue.
23:06:40 <RodgerTheGreat> yeah, it's similar to thue except no input
23:06:51 <RodgerTheGreat> although, there's a language extension for that
23:07:02 <oerjan> it's self-modifying unlike Thue
23:07:18 <oklopol> hmm
23:07:25 <oklopol> can you show me an eternal loop?
23:07:30 <RodgerTheGreat> erm
23:08:00 <RodgerTheGreat> the main idea is that you have code like Code*
23:08:11 <RodgerTheGreat> then you replace * with %
23:08:21 <RodgerTheGreat> and then you replace % with "Code*"
23:08:34 <RodgerTheGreat> or something vaguely like that
23:08:41 <oerjan> Copying / and \ needs some cleverness.
23:08:48 <oklopol> is it possible?
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:00 <oklopol> since / cannot be escaped
23:09:06 <oerjan> it can.
23:09:07 <RodgerTheGreat> (in the interpreter, not the program)
23:09:12 -!- sebbu has quit (Connection timed out).
23:09:13 <oklopol> ah
23:09:13 <oerjan> \ escapes
23:09:25 <oklopol> "and again escaped characters are treated as themselves."
23:09:38 <RodgerTheGreat> so, I think looping is possible...
23:09:39 <oklopol> why can't he just say \ escapes, use common sence :)
23:10:00 <RodgerTheGreat> yeah, the wiki entry is a little hard to read
23:10:51 <SevenInchBread> It's very similar to Thue... just a bit hard to read the specification.
23:11:07 <SevenInchBread> but... does it loop forever?
23:11:15 <RodgerTheGreat> I think so
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:12:02 <RodgerTheGreat> conditionals are a bit tricky
23:12:16 <RodgerTheGreat> but every replacement is a conditional in a sense
23:12:46 <SevenInchBread> aaah... I get it.
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:06 <RodgerTheGreat> haha
23:16:09 <RodgerTheGreat> indeed
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:24 <oklopol> -> '/a/b/ /a/b/'
23:16:24 <oklopol> -> 'b/b/'
23:16:24 <oklopol> -> ''
23:16:28 <oklopol> did i get this right?
23:16:51 <oerjan> well, the interpreter given was written after the language description (by me)
23:17:10 <RodgerTheGreat> ah
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:25 <oklopol> oh
23:18:27 <oklopol> indeed
23:18:59 <oklopol> efefefefe /a/b/ c would evaluate /a/b/ though?
23:19:18 <RodgerTheGreat> yeah
23:19:30 <RodgerTheGreat> it just wouldn't effectively do anything
23:19:54 <oerjan> you forget that the substitution is repeated until the result no longer contains the source string.
23:20:23 <RodgerTheGreat> hm
23:20:45 <oerjan> so you cannot replace something immediately with something that contains it
23:21:02 <oklopol> oh
23:21:03 <RodgerTheGreat> yeah
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:38 <oerjan> Yep.
23:21:39 <RodgerTheGreat> yeah
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:22:38 <RodgerTheGreat> escaping would probably get really bad though...
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:11 <oklopol> sounds like a quine
23:26:15 <RodgerTheGreat> hm. sounds like a good approach
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:10 <RodgerTheGreat> hm
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:41 <oerjan> conditionals probably
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:34:40 <RodgerTheGreat> as long as you keep a copy of it encoded somehow...
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:35:24 <RodgerTheGreat> hm
23:35:40 <oklopol> escapes?
23:35:43 <RodgerTheGreat> yeah-
23:35:53 <RodgerTheGreat> escape every single character of the encoded copy
23:36:11 <RodgerTheGreat> then replaces won't touch it, but you can replicate it at will
23:36:18 <oerjan> hm...
23:37:06 <SevenInchBread> hmmm...
23:37:09 -!- nazgjunk has quit ("tonight, we sleep in HELL!").
23:37:10 <SevenInchBread> the ultimate solution,.
23:37:11 <SevenInchBread> I believe.
23:37:34 <SevenInchBread> rests in the smiley face and the bogley eyes.
23:37:40 <RodgerTheGreat> lol
23:37:50 <SevenInchBread> :) is / and O.o and \
23:37:58 <SevenInchBread> er... is
23:38:15 <SevenInchBread> or some sufficiently unused string of text..
23:38:17 <RodgerTheGreat> I look forward to the elucidation of this idea
23:38:34 <SevenInchBread> hmmm....
23:38:39 <SevenInchBread> what are we trying to do again?
23:38:50 * RodgerTheGreat dies laughing
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:42:59 <SevenInchBread> /the ness of /\\/ /|:o|/\//
23:43:42 <SevenInchBread> with a sufficiently confounded syntax... you need no ponder escape characters.... at least practically.
23:43:57 <oklopol> hmph
23:44:01 <oklopol> god i'm dim
23:44:09 <oklopol> what would '/ aa / \/a\a\/a\a\/a / aaaaa' become?
23:44:15 <oklopol> would it loop forever?
23:44:33 <oerjan> are the spaces included?
23:44:37 <oklopol> no
23:44:42 <oklopol> forgot to say that
23:46:25 <oerjan> the substitution is aa -> /aa/aa/a so it will loop uselessly
23:46:53 <oklopol> mmyeah
23:48:45 <SevenInchBread> hmmmmmmmm
23:57:54 -!- jix__ has joined.
23:58:37 -!- sebbu2 has quit ("@+").
23:58:53 <oklopol> meh, i'm so bad at making quines...
2007-03-18
00:00:26 -!- Sgeo has joined.
00:01:01 <RodgerTheGreat> quines are a bit tricky
00:01:22 <oklopol> hmm
00:01:27 <oklopol> /\//\\\//
00:01:27 <oklopol> / -> \/
00:01:30 <oklopol> could this be used?
00:01:49 <oerjan> no
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:04:44 <oklopol> /a\/\a/\\\//
00:04:44 <oklopol> a/ -> a\/
00:04:48 <oklopol> :D
00:04:54 <oklopol> but
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:14 <oklopol> yeah
00:05:21 <oerjan> the interpreter is on the wiki page
00:05:25 <oklopol> perl?
00:05:27 <oklopol> isn't it
00:05:28 <oerjan> yep
00:05:31 <oklopol> hmm
00:05:41 <oklopol> i should do some dl'ing then
00:05:46 <oklopol> oh
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:06 <oklopol> if it was an executalbe
00:06:07 <oklopol> *bl
00:06:09 -!- jix has quit (Read error: 110 (Connection timed out)).
00:06:12 <RodgerTheGreat> sounds like a good addition
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:04 <SevenInchBread> ....
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:18:42 <oklopol> :D
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:01 <oklopol> *lose
00:22:19 <SevenInchBread> ....snefmmp?
00:22:44 <oklopol> i won't write it
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:11 <oklopol> mm hmm
00:24:16 <oklopol> i don't know what that means
00:24:16 <oklopol> :\
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:25:35 <SevenInchBread> ...or something equally convuleted.
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:30:20 <SevenInchBread> well... my head is about to explode.
00:32:45 <oerjan> hm, this debugging was hard to separate from the output. Adding some brackets.
00:36:38 <SevenInchBread> I SHALL TURN THIS INTO AN EASY TO THINK ABOUT GAME.
00:36:57 <oklopol> :)
00:37:43 <oerjan> i am sure that trusty old Mfit and Shanty will be happy to use different characters for / and \ :)
00:38:37 <SevenInchBread> hmmmm.... good idea.
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:40:25 <SevenInchBread> their names are fairly important to their function.
00:40:47 <SevenInchBread> ...cleverly disguised iin nonsense words.
00:42:44 <oklopol> too cleverly :<
00:46:24 <oerjan> shanty isn't a nonsense word.
00:46:33 <oklopol> and miff it is neither
00:46:54 <oklopol> that doesn't help though
00:48:19 <oerjan> there are several things called Mfit apparently.
00:48:32 <SevenInchBread> all things are help
00:48:42 <SevenInchBread> and all things are true
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:03 <oklopol> or 10
00:59:55 -!- tgwizard has quit (Remote closed the connection).
01:07:41 <bsmntbombdood> s='s=%r;print s%%s';print s%s
01:11:25 <bsmntbombdood> yeah, i win
01:11:49 <oerjan> win what?
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:14:48 <oklopol> :)
01:15:35 <bsmntbombdood> ?
01:15:48 <oerjan> i think you mean %r
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:00 <oklopol> much better
01:17:15 <oklopol> i shall learn it by heart
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:18:57 <bsmntbombdood> ^C?
01:19:05 <oklopol> too late for that
01:19:30 <oerjan> don't you have perl?
01:19:35 <oklopol> nope
01:19:45 <oklopol> i think i just installed it though
01:19:57 <oklopol> activeperl build 5.8.8
01:20:03 <oklopol> i wonder what that means
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 <SevenInchBread> hmmm...
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:39 <oklopol> god that's good :o
01:23:49 <oklopol> i didn't know speech recognition is that good yet
01:24:42 <RodgerTheGreat> obviously speech recognition *UI* isn't 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:04 <bsmntbombdood> man, that's terrible
01:29:26 <oklopol> are there better one's?
01:29:33 <oklopol> i've never seen anything like that :|
01:30:05 <oklopol> *ones
01:32:53 <RodgerTheGreat> OSX has pretty nifty recognition, but it isn't designed to control the whole interface
01:33:08 <bsmntbombdood> It is cool how it can control everything
01:33:11 <RodgerTheGreat> I wouldn't be surprised if 10.5 has better integration
01:33:24 <bsmntbombdood> But controlling everything would be infuriating
01:33:31 <RodgerTheGreat> depends
01:33:47 <oklopol> http://www.youtube.com/watch?v=S9T3RXFDtfo&NR
01:33:48 <bsmntbombdood> Pressing keys is faster than verbalizing
01:34:08 <bsmntbombdood> M-k n, or "go to next window"
01:34:08 <oklopol> not really :\
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:38:20 <oklopol> or "em 'n' kay kay"
01:38:34 <oklopol> or just 'zwaf'
01:38:46 <bsmntbombdood> or just use my keyboard
01:39:10 <oklopol> well, i talk faster than type
01:39:13 <oklopol> so i wouldn't know
01:39:22 <bsmntbombdood> I've heard of speech recognition software causing speech problems
01:39:34 <bsmntbombdood> from changing your voice so it can recognize it
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:42:20 <oklopol> i don't like moving
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:51:35 <bsmntbombdood> star trek
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:54:49 <bsmntbombdood> fun
01:54:57 <RodgerTheGreat> yeah...
01:55:25 <RodgerTheGreat> LCARS would require a ludicrous amount of AI under the hood to work in speech mode
01:55:32 <RodgerTheGreat> the GUI is pretty spiffy, though
01:55:40 <bsmntbombdood> or keykeyboard 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:00 <SevenInchBread> ..
01:59:07 * SevenInchBread just saw what you guys were talking about.
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:01:52 <bsmntbombdood> methinks someone's a little too into it
02:02:00 * RodgerTheGreat shrugs
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:09:05 <SevenInchBread> http://esoteric.voxelperfect.net/wiki/Kallisti
02:11:29 <bsmntbombdood> u r teh clevar!!!!!!!!!!!
02:11:41 <RodgerTheGreat> oh god, it begins again
02:12:47 <RodgerTheGreat> hm
02:13:34 <bsmntbombdood> i don't get it
02:13:40 <RodgerTheGreat> I dunno, it seems somehow less elegant than dupdog
02:13:42 <RodgerTheGreat> :D
02:15:24 <SevenInchBread> too bad.
02:15:30 <SevenInchBread> Messiness == fun
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:18:59 <SevenInchBread> so it can't be totally self-modifying.
02:19:07 <oklopol> they get the code, they return the code
02:19:12 <oklopol> it's that easy
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 <oklopol> sorry
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:21:48 <SevenInchBread> each of the interpreters should be independent.
02:21:50 <oklopol> hmm
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:26:55 <oklopol> hmm
02:27:10 <oklopol> i'm pretty sure that's not a sentence :|
02:27:16 <oklopol> but... hmm...
02:27:23 <oklopol> know
02:27:24 <oklopol> ah
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:28:07 <oklopol> just an index :)
02:28:21 <oklopol> *solved goddamnit
02:28:47 <SevenInchBread> not every language has pointers.
02:28:58 <oklopol> mmmm huh?
02:29:05 <SevenInchBread> ...include Python (which I'll probably be implementing it in... or maybe Ruby)
02:29:09 <SevenInchBread> *including
02:29:27 <oklopol> you mean they wouldn't understand a pointer given them?
02:29:28 <SevenInchBread> oh.
02:29:37 <SevenInchBread> you mean... just a number?
02:29:54 <SevenInchBread> that's a little suspicious... but it would work.
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:31:45 <RodgerTheGreat> cya
02:43:10 <SevenInchBread> ...-shrug- just misunderstanding of terminology.
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:56:48 <SevenInchBread> just sheer... modification of the source code.
02:59:27 <RodgerTheGreat> sounds awesome
02:59:50 <RodgerTheGreat> the more this new language becomes like dupdog, the more fun I predict programming with it shall become
03:00:05 <RodgerTheGreat> I still think Dupdog *might* be tc
03:01:56 -!- ShadowHntr has joined.
03:02:33 <RodgerTheGreat> hi, ShadowHntr
03:02:47 <ShadowHntr> evening
03:02:50 <oerjan> i just managed to run the Hello World program in the Haskell interpreter
03:03:35 <oerjan> (Dupdog interpreter)
03:03:53 <RodgerTheGreat> kickass
03:04:01 <RodgerTheGreat> still works?
03:04:18 <oerjan> Yeah, after I fixed a bug in the interpreter
03:04:53 <RodgerTheGreat> cool
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:14:48 <SevenInchBread> ...
03:15:08 <SevenInchBread> http://esoteric.voxelperfect.net/wiki/Kallisti
03:21:31 <SevenInchBread> ...dupdog is like, the laziest invention ever.
03:27:25 <SevenInchBread> does this fall under the juristiction of ABCDEF?
03:29:42 <RodgerTheGreat> augh!
03:29:53 <RodgerTheGreat> it's explicitly stated to never abbreviate that!
03:30:04 <SevenInchBread> ...
03:30:27 <RodgerTheGreat> The Adjudicated Blind Collaborative Design Esoteric Factory is an important name that deserves more than an acronym.
03:36:02 <SevenInchBread> >.>
03:36:07 <SevenInchBread> !help
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:02 <SevenInchBread> ah.
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:46:48 <SevenInchBread> heh, so it's functional now?
03:46:58 <SevenInchBread> any implementation will do.
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:54:24 <SevenInchBread> eh... I wanted the source. :P
03:55:37 <oerjan> for some reason ais523 hasn't told us the original thutu.
03:57:54 <SevenInchBread> I think she's a terrorist.
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:08 <SevenInchBread> I guess the wrap mod is implementation defined...
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 <bsmntbombdood> deadbeefbabe
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:33:07 <bsmntbombdood> my bot is better~
05:33:25 <bsmntbombdood> :P
05:36:34 <GreaseMonkey> i'm still making my own
05:36:38 <GreaseMonkey> so yeah
05:36:52 <GreaseMonkey> sadly my HD died and took GreaseBot with it
05:36:59 <GreaseMonkey> but there's new hope
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:37:55 <GreaseMonkey> now i'm working on the BrainSecks interpreter
05:37:58 <bsmntbombdood> ~raw TICKLE GreaseMonkey
05:38:54 <GreaseMonkey> don't you mean ~ctcp TICKLE GreaseMonkey ?
05:38:58 <bsmntbombdood> no
05:39:10 <GreaseMonkey> hmm, tickle isn't a command
05:39:16 <bsmntbombdood> I know
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:40:22 <GreaseMonkey> $PRIVMSG #esoteric i challenge you bsmnt_bot
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:39:30 <bsmntbombdood> falsehood
06:39:39 <GregorR> >_>
06:39:43 <GregorR> :(
06:40:11 <GreaseMonkey> hi gregor, i'm working on an esolang for my bot
06:40:37 <bsmntbombdood> GregorR ==> _|_
06:41:05 <GreaseMonkey> bsmnt: i suggest you get your bot to do that
06:41:12 <bsmntbombdood> do what
06:41:31 <GreaseMonkey> print stull like that
06:41:34 <GreaseMonkey> *stuff
06:41:35 <GreaseMonkey> like:
06:41:41 <GreaseMonkey> ~fu nickname
06:41:50 <GreaseMonkey> ...or not.
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:43:19 <bsmntbombdood> ~fu GreaseMonkey
06:43:19 <bsmnt_bot> fuck you, GreaseMonkey
06:44:11 <RodgerTheGreat> lmao
06:44:25 <RodgerTheGreat> that was absurdly involved
06:44:29 <GreaseMonkey> hmm, i cud replicate that in brainsecks code....
06:44:35 <RodgerTheGreat> and yet so funny...
06:44:47 <GregorR> >_^
06:44:49 <GregorR> ^_<
06:46:03 <GreaseMonkey> x00>"PRIVMSG "%1[>,]" :"%0[>,]x0A>x00<[<]>[.>]
06:46:07 <GreaseMonkey> wait
06:46:14 <GreaseMonkey> x00>"PRIVMSG "%1[>,]" :fuck you, "%0[>,]x0A>x00<[<]>[.>]
06:46:23 <GreaseMonkey> yays, my code is shorter
06:46:31 <GreaseMonkey> what lang is your bot made in, bsmnt?
06:46:37 <bsmntbombdood> python
06:46:47 <GreaseMonkey> k
06:47:00 <GreaseMonkey> im making my second one in C, like the first
06:49:40 <GreaseMonkey> ...i love for() loops :D
06:49:54 <bsmntbombdood> ...why?
06:50:47 <RodgerTheGreat> FOR...NEXT loops are the best loops of all time
06:50:54 * RodgerTheGreat high-fives GreaseMonkey
06:54:24 <bsmntbombdood> for loops are just glorified while loops
06:55:20 <RodgerTheGreat> pfft
06:55:32 <RodgerTheGreat> while loops are just underfeatured FOR...NEXT loops
06:55:57 <bsmntbombdood> nnnnnnnnnnnnn
07:00:31 <GreaseMonkey> for(i=0;array[i];i++){ /* stuff goes here */ }
07:00:36 <GreaseMonkey> beat that
07:01:10 <bsmntbombdood> i=0;while(array[i]){/*stuff goes here*/ i++}
07:01:47 <GreaseMonkey> in all fairness to whitespace:
07:01:47 <GreaseMonkey> for(i=0;array[i];i++){/*stuff goes here*/}
07:01:54 <GreaseMonkey> i=0;while(array[i]){/*stuff goes here*/i++;}
07:01:59 <GreaseMonkey> =X
07:02:00 <GreaseMonkey> =D
07:02:30 <bsmntbombdood> just because `while' is more letters than `for'
07:02:39 <GreaseMonkey> oh, and there's always: for(p=str;*p;p++){/* stuff goes here */}
07:03:06 <GreaseMonkey> i find for(i;c;p){s;} tidier
07:03:21 <GreaseMonkey> than i;while(c){s;p;}
07:03:32 <bsmntbombdood> yeah
07:07:16 <GreaseMonkey> hey, wanna ~fu another bot?
07:07:35 <GreaseMonkey> on #uncyclopedia , there's a SupyBot under the nick "AutoRTB"
07:07:42 <GreaseMonkey> ~fu AutoRTB
07:07:42 <bsmnt_bot> fuck you, AutoRTB
07:07:55 <GreaseMonkey> ~fu 1 2
07:07:55 <bsmnt_bot> fuck you, 1 2
07:08:05 <GreaseMonkey> k, so it doesn't split it into parameters
07:19:06 <GreaseMonkey> afk food
07:35:33 <GreaseMonkey> back
07:39:37 <bsmntbombdood> mmm, food
07:40:14 <RodgerTheGreat> 'night, guys
07:40:19 <RodgerTheGreat> I need to hit the hay
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:31:49 <Sgeo> discuss
09:51:31 -!- Sukoshi has joined.
09:53:42 -!- RoboMonkey has joined.
09:53:50 <RoboMonkey> hi
09:54:05 <RoboMonkey> brainsecks interpreter works :D
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:11 <GreaseMonkey> \dances
09:55:12 <RoboMonkey> ACTION <CTCP>dances<CTCP>
09:55:51 <GreaseMonkey> ?x00>"PRIVMSG "%1[>,]>x01>x01>"ACTION "%0[>,]x01>x0A>x00<[<]" :"[<]>[.>]
09:55:52 <GreaseMonkey> \dances
09:55:53 * RoboMonkey dances
09:55:59 <GreaseMonkey> ooh yeah :D
09:56:13 <GreaseMonkey> sadly she only responds to me
09:57:12 <Sgeo> Someone please find number of digits of 2^(2^(2^(2^(2^(2^(2^0))))))
09:57:21 <Sukoshi> Not I.
09:58:38 <GreaseMonkey> 65536^2
09:58:59 <GreaseMonkey> 4294967296
09:59:03 <GreaseMonkey> 10 digits
09:59:19 <GreaseMonkey> \10 digits
09:59:20 <RoboMonkey> 10 digits
09:59:22 <Sgeo> um..
09:59:26 <Sgeo> no
09:59:34 <GreaseMonkey> \:(
09:59:35 <RoboMonkey> :(
09:59:39 <Sgeo> (2^(2^(2^(2^(2^(2^0))))) has over 19 thousand digits
09:59:50 <GreaseMonkey> i doubt it
10:00:01 <Sgeo> 19729 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:00:59 <Sgeo> In haskell
10:01:00 <GreaseMonkey> 2^(2^(2^16)) -> 2^(2^256) -> ... oh.
10:01:01 <Sgeo> length $ show $ (2^(2^(2^(2^(2^(2^0))))))
10:01:01 <Sgeo> 19729
10:01:15 <Sgeo> Put another 2^ in front
10:01:19 <Sgeo> how many digits?
10:01:19 <GreaseMonkey> wait
10:01:22 <Sukoshi> Someone can do math *clap clap clap*.
10:01:27 <GreaseMonkey> 2^(2^65536)
10:02:42 <GreaseMonkey> $QUIT
10:02:43 -!- RoboMonkey has quit.
10:02:52 <GreaseMonkey> actually i gotta sleep
10:03:03 <GreaseMonkey> gonna sleep now, gnight
10:03:13 <Sgeo> g'night GreaseMonkey
10:04:01 <GreaseMonkey> ?x00>"PRIVMSG #esoteric :gnight">x0A>x00<[<]>[.>]
10:04:03 <GreaseMonkey> \
10:04:08 <GreaseMonkey> oops i'd quit it
10:04:10 -!- GreaseMonkey has quit ("Woot! RoboMonkey works! Woot again!").
10:04:46 <Sukoshi> What's a cheap FPGA?
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:11:42 <Sgeo> >.>
10:12:20 <Sukoshi> Thanks, I guess.
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:19:28 <oklopol> <anything> ::= <anything>
13:25:41 -!- sebbu has quit (Read error: 110 (Connection timed out)).
13:55:01 -!- RodgerTheGreat has joined.
13:55:21 <RodgerTheGreat> hi guys
13:56:37 <oklopol> hijay
13:57:00 <RodgerTheGreat> what are you up to this morning, oklopol?
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:44 <oklopol> that is all
13:58:51 <oklopol> i'd like to make my lang complete today
13:58:53 <oklopol> but
13:59:02 <oklopol> i gotta read for my matriculation exams tomorrow
13:59:07 <oklopol> the english thingie
13:59:15 <oklopol> ...and ya?
13:59:18 <oklopol> :P
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:34 <oklopol> which is slow
14:01:43 <oklopol> so you have to manually optimize in each case
14:01:47 <oklopol> AND
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:03:56 <oklopol> *ld
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:04:28 <RodgerTheGreat> hm
14:04:28 <oklopol> well
14:04:32 <oklopol> maybe it is
14:04:42 <oklopol> god i talk a lot
14:04:43 <oklopol> :\
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:06:07 <RodgerTheGreat> 'course, some of the side effects might be weird...
14:06:16 <oklopol> why is that?
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:08:50 <RodgerTheGreat> I'm not aware of one...
14:09:13 <RodgerTheGreat> *think iteratively
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:11:06 <oklopol> *maybe black book
14:11:29 <RodgerTheGreat> heh
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:04 <oklopol> http://www.vjn.fi/212.htm
14:13:08 <oklopol> something i wrote about this
14:14:13 <oklopol> i hope it's in english
14:14:17 <oklopol> forgot already :D
14:14:21 <oklopol> ya
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:17:39 <oklopol> but... prolly a lot
14:18:20 <oklopol> because i like python... but it doesn't use tail recursion (i think) and it isn't lazy
14:18:27 <oklopol> well
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:25 <oklopol> it shouldn't be a problem
14:21:45 <oklopol> plus, i'm making all optimizations explicit as well of course
14:21:51 <RodgerTheGreat> cool
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:03 <SimonRC> hi
14:25:05 <oklopol> hi
14:25:39 <oklopol> i.must.go.feck.this.all------------------------------>
14:25:43 <RodgerTheGreat> hi, SimonRC
14:29:18 * SimonRC reads oklopol's article.
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:33:01 <RodgerTheGreat> really REALLY 09:31am?
14:34:17 <SimonRC> I said that a bit late
14:56:12 <oklopol> ",[.,]" ->
14:56:12 <oklopol> {^(inc=`+)|(dec=`-)|(nxt=`>)|(prv=`<)|(out=`.)|(in=`,)|(loop=`[*.`])}
14:56:12 <oklopol> -> {out _[0]}
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:50:43 <RodgerTheGreat> oh, sweet- a simple piano
16:51:06 <oklopol> i wasn't specifically, it's about everything
16:51:13 <oklopol> it's a glorified foo
16:51:15 <oklopol> :)
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:33 <oerjan> *nick
16:52:33 <oklopol> haha
16:52:42 <RodgerTheGreat> what's the difference between a real word and a make-believe word?
16:52:50 <oklopol> this is the real world
16:52:52 <oerjan> marketing
16:52:57 <oklopol> make-believe is some other one
16:53:01 <RodgerTheGreat> a word's meaning is simply what you hold behind it
16:53:14 <oklopol> in oklopol, you'd call this one a bake-believe world
16:53:16 <oklopol> though make
16:53:18 <oklopol> not bake
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:54:31 <RodgerTheGreat> lol
16:55:00 <RodgerTheGreat> we must invent a device known as a "window pole"
16:55:27 <RodgerTheGreat> or create a language with this name
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:08:19 <oklopol> what lang, what usage
17:08:27 <oklopol> what function
17:09:10 <oerjan> the winsound module you already use
17:09:24 <oklopol> hmmm
17:09:28 <oklopol> i've used that
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:16 <oklopol> indeed
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:18:59 <oklopol> quite rofltastic
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:47 <oklopol> delay is not a problem
17:26:59 <oklopol> i'd just be too ashamed to use a file like that
17:27:20 <SevenInchBread> GREETINGS COMRADES
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:27:52 <oklopol> locking me in
17:28:11 <SevenInchBread> fun stuff.
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:28:22 <oklopol> :PP
17:28:25 <oklopol> yar!
17:28:49 <SevenInchBread> OH HO
17:29:30 <oerjan> can such a lock be complying with fire regulations?
17:30:24 <oklopol> haha prolly not :D
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:39 <oklopol> :D
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:23 <oklopol> hmm sound possible
17:35:39 <SevenInchBread> hmmm, what does Python do with strings?
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:24 <SevenInchBread> ....I hear that one all the time.
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:41:55 <SevenInchBread> hmmm... what are you trying to do?
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:43:24 <oklopol> *l
17:43:30 <oklopol> temptingly easy
17:43:32 <oklopol> oh
17:43:36 <oklopol> wait a min
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:28 <oklopol> that doesn't scare me
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:22 <oklopol> playsound plays .wavs
17:46:28 <oerjan> SND_MEMORY
17:46:41 <oerjan> well a memory block in .wav format
17:46:44 <oerjan> i presume
17:46:51 <oklopol> ah
17:46:56 <oklopol> i'll try to find the page
17:47:02 <oklopol> acutally
17:47:05 <oklopol> *actually
17:47:10 <oklopol> link if you have it open
17:47:13 <oklopol> i'd never find it
17:47:18 <oerjan> i already did.
17:47:28 <oklopol> oh :o
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:47:40 <oklopol> shoops
17:47:42 <oklopol> *hoops
17:47:44 <oklopol> *whoops
17:47:52 <oklopol> indeed
17:47:57 <oklopol> i never saw that line
17:48:03 * oklopol reads well
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:48:50 <oklopol> well well
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:52:21 <oerjan> SND_ASYNC, SND_NOSTOP
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:54:14 <oklopol> *press
17:56:34 <oerjan> i suppose you could calculate the sum on the fly then
17:56:56 <oklopol> ah yeah
17:57:28 <oklopol> i'll just make a string for the next 50 ms every time
17:57:32 <oklopol> and play thta
17:57:34 <oklopol> *that
17:57:39 <oklopol> seems trivial
17:58:01 * SevenInchBread is playing around with stenography.
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:06 <oklopol> ?
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:07 <oklopol> and continue there
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:00:57 <oklopol> well, true
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:05:52 <oklopol> or 'harmonikka'
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:38 <oklopol> but there is none
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:24:34 <oerjan> afk
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?
18:59:43 <oklopol> noweach? :D
19:00:09 <oerjan> i don't think you were particularly precise on that
19:01:03 <oklopol> i wasn't true
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:01:40 <oklopol> *what that is
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:06 <oklopol> not really
19:03:13 <oklopol> or maybe
19:03:16 <oklopol> dunno
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:47 <oklopol> *s
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:28 <oklopol> if that's what you mean
19:04:30 <oerjan> in that case you have a problem
19:04:44 <oklopol> i might.
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:05:43 <oklopol> just simple automatons
19:05:51 <oklopol> i know
19:05:59 <oklopol> but that's copying,
19:06:05 <oklopol> you have to move nops too
19:06:08 <oklopol> well
19:06:10 <oklopol> okay, not
19:06:11 <oklopol> :)
19:06:22 <oerjan> nops?
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:12 <oklopol> yes
19:07:38 <oerjan> well you can keep those in big blocks
19:08:05 <oerjan> so you only copy block pointers
19:08:30 <oklopol> hmm
19:08:41 <oklopol> ah
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:12 <SevenInchBread> Me.
19:10:14 <SevenInchBread> ...
19:10:20 <oerjan> the usual recursion without memoing is pretty slow.
19:10:27 <bsmntbombdood> not slow enough
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:38 <bsmntbombdood> oklopol: no
19:11:51 <oklopol> you did not specify that as illegal
19:11:59 <oerjan> you mean sleep(ackermann(n,n)) :)
19:12:15 <oklopol> much better
19:12:19 <oklopol> that should be okay
19:12:52 <bsmntbombdood> that's cheating
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:14:11 <oklopol> then use it recursively
19:14:15 <oerjan> add a 0 = a
19:14:35 <oerjan> oh i see.
19:14:46 * SevenInchBread wins.
19:15:20 <SevenInchBread> ...provided the kitten bitmaps are very large files.
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:44 <bsmntbombdood> I know
19:15:55 <bsmntbombdood> but how do you compute add?
19:15:56 <oerjan> so the first succ is simply pattern matching on the definition
19:16:04 <bsmntbombdood> without pred
19:16:12 <bsmntbombdood> add a b = succ (add a (pred b))
19:16:13 <oerjan> you do have pred
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:21 <bsmntbombdood> But our only operation on natural numbers is succ
19:17:25 <oklopol> *with functions in the pattern
19:17:52 <oklopol> well, it's magic
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:22:43 <bsmntbombdood> hmm
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:27:22 <bsmntbombdood> add = \m.\n.prim n m (\p.\q.(succ q))
19:27:36 <bsmntbombdood> where
19:27:44 <bsmntbombdood> prim 0 c f = c
19:27:55 <bsmntbombdood> prim (succ n) c f = f n (prim n c f)
19:29:33 <oerjan> i think that prim is something like what Coq defines automatically given the data type definition
19:33:02 <oerjan> later
19:33:11 -!- oerjan has quit ("Hunting for food").
19:45:10 <SevenInchBread> How do you get wget to... not write to a file?
19:49:06 <bsmntbombdood> -O -
19:49:12 <bsmntbombdood> to write to stdout
19:51:17 <SevenInchBread> cool. Thanks.
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:12 <SevenInchBread> ...I wonder...
21:31:34 <SevenInchBread> if it would be possible to fund the operation of an ISP without charging.
21:32:01 <bsmntbombdood> juno?
21:34:28 <SevenInchBread> >.>
21:35:12 <SevenInchBread> I'd love it if it were possible to make the Internet -completely- free...
21:35:23 <bsmntbombdood> yeah
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:42:44 <RodgerTheGreat> piracy, creative commons...
21:43:11 <bsmntbombdood> yeah
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:44:32 <oklopol> i might not :)
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:13 <bsmntbombdood> yeah
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:50:29 <oklopol> true
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:00 <oklopol> true
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:57:27 <oklopol> what else could it be?
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:10 <bsmntbombdood> heh
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.
21:59:41 <bsmntbombdood> Yeah, I don't like the GPL
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:06:18 <SevenInchBread> I prefer all rites reserved
22:06:33 <SevenInchBread> *reversed
22:07:24 <oklopol> *rights too?
22:07:30 <SevenInchBread> No
22:07:32 <SevenInchBread> http://allritesreversed.com/
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:42:33 <SevenInchBread> ...why is math terminology so confusing?
22:42:50 <SevenInchBread> couldn't you like, simplify it some?
22:44:11 <oklopol> which part?
22:46:34 <SevenInchBread> ...like, all of it.
22:46:48 -!- oerjan has joined.
22:49:20 <bsmntbombdood> it's not
22:49:57 <bsmntbombdood> most of the time
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:56:22 <SevenInchBread> I thought math was supposed to keep some uniformity?
22:56:30 <oklopol> where does it not?
22:57:18 <oerjan> math notation is designed for extreme consiseness without being unreadable by those who use it
22:57:26 <oerjan> *conciseness
23:00:29 * SevenInchBread is trying to figure out the notation behind the Fourier transform.
23:00:53 <oerjan> Which notation?
23:00:53 <bsmntbombdood> which is?
23:01:05 <bsmntbombdood> mathmaticians just make up stuff
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:02:53 <oklopol> where f is it integrated
23:03:09 <bsmntbombdood> heh
23:03:22 <oerjan> the bounds are infinite however.
23:03:26 <SevenInchBread> .....
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:04:54 <SevenInchBread> I've only done high school algebra.
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:15 <SevenInchBread> ...pretty much.
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:10 <oklopol> lower is 0
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 <bsmntbombdood> i don't understand fourier transforms
23:09:40 <oklopol> SevenInchBread integration is func -> func
23:09:58 <SevenInchBread> ah... hmmm...
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:53 <oklopol> i think :)
23:10:57 <oerjan> integral :: Measure a -> (a -> Complex) -> Complex
23:12:01 <oklopol> oerjan why will that result in complex numbers?
23:12:04 <oklopol> the integral
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:22 <oklopol> but, it's in e^(_)
23:12:36 <oklopol> e^(x) always results in a real number i think
23:12:40 <oerjan> nope
23:12:43 <oklopol> oki
23:12:48 <bsmntbombdood> not if x is complex
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:16 <SevenInchBread> or any wave for that matter.
23:13:20 <oerjan> e^(a+bi) = e^a * (cos b + i sin b)
23:13:22 <bsmntbombdood> e^(ix) = cos(x) + i*sin(x)
23:13:36 <oklopol> oh yeah
23:13:38 <oklopol> true
23:13:47 <oklopol> sorry, i'm bad at this
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:27 <bsmntbombdood> symbollically or numerically?
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:15 <bsmntbombdood> numerically is obviously easier than symbolically
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:41 <bsmntbombdood> yeah
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:29 <SevenInchBread> ....
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:21 <bsmntbombdood> riemann sum
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:20 <SevenInchBread> the limit?
23:19:22 <oklopol> ah, that's why you use sum in actual implementations of fourier
23:19:24 <oklopol> right?
23:19:24 <oerjan> although there are more efficient methods if your function is also differentiable
23:19:33 <oerjan> exactly
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:20:35 * oklopol goes to sleep now ----->
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:21:27 <SevenInchBread> ...what is fourier useful for exactly?
23:21:45 <oerjan> lots of things
23:22:37 <oerjan> but expressing a signal as a limit sum of sine waves is the most basic
23:23:02 <SevenInchBread> >.>
23:23:35 <oerjan> dividing it up by frequency rather than time
23:23:59 <bsmntbombdood> hmm
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:24:53 <oerjan> amplitude and phase
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:32:21 <oerjan> the rest will be 0.
23:33:20 <oklopol> SevenInchBread no, addition is for that
23:33:50 <SevenInchBread> hmmm... so you just add the outputs?
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:34:35 <SevenInchBread> I mean... the outputs of the sine waves.
23:34:53 <oklopol> SevenInchBread yes
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:49:41 <oklopol> i don't think we will :\
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:50:54 <SevenInchBread> .....yeah,.. ish
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:51:37 <oklopol> don't know yt
23:51:38 <oklopol> *yet
23:52:05 <oklopol> *acces
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:57:29 <oklopol> :D
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:06 <oklopol> that might help
23:59:10 <oklopol> i hate events though
23:59:16 <oerjan> in fact there seemed to be a bunch of alternatives listed for how to do that
2007-03-19
00:00:51 <oklopol> hating events?
00:01:39 <oerjan> no for how to get the information back
00:01:54 <oklopol> mm yeah
00:02:59 <oerjan> ah yes, it was the links at the end of http://msdn2.microsoft.com/en-us/library/ms705672.aspx
00:03:33 <oklopol> seems so
00:03:40 <oklopol> i'll read tomorrow maybe
00:04:12 <oklopol> i wants my set_lp :<
00:04:20 <oklopol> lp... why lp?
00:04:24 <oklopol> ls maybe
00:04:36 <oklopol> i don't actually know what you call it
00:04:36 <oerjan> set_audio
00:04:47 <oerjan> since /dev/lp is the printer
00:05:08 <oklopol> oki
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:03 <oklopol> the cone of death?
00:06:26 -!- jix has quit (Read error: 110 (Connection timed out)).
00:09:12 <oerjan> wikipedia says "diaphragm"
00:09:33 <oerjan> and also cone
00:10:00 <oklopol> oh
00:10:09 <oklopol> i wonder where i've seen that then :|
00:10:17 <oklopol> cone wanted to come out
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:54 <bsmntbombdood> zomg!
00:19:58 <bsmntbombdood> http://www.swiss.ai.mit.edu/classes/6.001/abelson-sussman-lectures/
00:21:44 <SevenInchBread> ...
00:21:47 <SevenInchBread> whooooo... a lecture.
00:23:04 <oerjan> my impression from Lambda the Ultimate is that they highly recommend those
00:23:22 * bsmntbombdood is downloading
00:23:45 <bsmntbombdood> I still haven't finished SICP though
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:27:06 <bsmntbombdood> I, however, don't know it
00:29:53 <oerjan> have you consider looking at the man page? :)
00:31:10 * oerjan is sorry already.
00:31:31 <bsmntbombdood> aha
00:31:45 <bsmntbombdood> wget -r -l1 -A.avi
00:32:46 <bsmntbombdood> yes, man pages are nice
00:33:11 <oerjan> mind you that page is big
00:33:20 <bsmntbombdood> huge
00:33:22 <GregorR> wget's man page is fairly overwhelming.
00:33:43 <bsmntbombdood> 1593 lines
00:34:22 <bsmntbombdood> heh, i don't have enough space for everything
00:35:00 <oerjan> even compressed?
00:35:26 <bsmntbombdood> the total is about 10GB
00:35:39 <bsmntbombdood> slightly less
00:36:11 <oerjan> actually I guess it is compressed already
00:36:16 <oerjan> being video
00:36:43 <bsmntbombdood> yeah
00:52:14 <bsmntbombdood> \n c f. n (\m.f m) c
00:52:25 -!- sebbu has quit ("http://www.parti-geek.com/programme.php").
00:54:03 <oerjan> == \n c f. n f c
00:54:13 <bsmntbombdood> the "prim" function for church numerals
00:59:20 <bsmntbombdood> no
00:59:45 <bsmntbombdood> hmm
01:01:15 <oerjan> and with a little reordering, == I
01:01:45 <bsmntbombdood> \n c f.n (\m.f m (prim m c f)) c
01:01:48 <oerjan> essentially church numerals _are_ primitive recursion
01:13:52 * bsmntbombdood watches sussman
01:18:05 <bsmntbombdood> er, abelson
01:20:10 -!- ShadowHntr has quit ("End of line.").
01:20:45 <bsmntbombdood> and he is incredibly boring
01:33:36 <bsmntbombdood> agh
01:33:46 <bsmntbombdood> i hate the "box" analogy for functions
01:56:00 -!- ShadowHntr has joined.
01:59:57 -!- ShadowHntr has quit (Client Quit).
02:16:10 <SevenInchBread> I think of functions as.... do-ers
02:16:34 <SevenInchBread> or just a tool.
02:16:39 <SevenInchBread> it has one purpose.
02:17:29 <SevenInchBread> OO-style objects.... are more like swiss army knives.
02:24:07 <bsmntbombdood> or just a function.
02:24:41 <bsmntbombdood> not everything needs an analogy
02:26:23 <RodgerTheGreat> does anyone know a PHP function that can do the same as java.String.startsWith() ?
02:26:40 <RodgerTheGreat> or do I have to do something using strpos?
02:26:48 <bsmntbombdood> haha, php
02:26:50 <bsmntbombdood> haha, java
02:27:07 <bsmntbombdood> an evil and a greater evil
02:27:16 <RodgerTheGreat> hey, make fun of Java all you want. PHP is useful.
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:28:56 <RodgerTheGreat> that's not what I do...
02:29:16 <RodgerTheGreat> I just use PHP to tie mysql tables into my pages
02:36:19 <bsmntbombdood> databases ftl
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:24 <RodgerTheGreat> anyway, nvm. I managed to find documentation.
02:39:29 <oerjan> Nah we just use literal sector numbers
02:39:47 <bsmntbombdood> flat file storage systems
02:39:53 <RodgerTheGreat> must be interesting finding a FORTH plugin for apache
03:50:07 -!- SevenInchBread has quit (Read error: 145 (Connection timed out)).
05:33:41 -!- wooby has joined.
05:34:41 <RodgerTheGreat> good night everyone
05:35:22 -!- RodgerTheGreat has quit.
05:47:44 <oklopol> databases have more than one dimension then?
05:47:49 <oklopol> though he's gone again
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:52:39 <bsmntbombdood> w
05:52:53 <oerjan> hat?
05:53:00 <bsmntbombdood> bad focus
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:57:42 <GreaseMonkey> afk food
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:40:56 <nooga> ha'
08:41:20 <nooga> my raytracer written in SADOL almost works
08:42:37 <GreaseMonkey> ha'
08:42:46 <GreaseMonkey> my bot written in C almost works
08:42:54 <GreaseMonkey> wait. what's SADOL?
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:49:01 <GreaseMonkey> sadol looks quite nice
08:49:41 <nooga> thx
08:50:37 <nooga> vector operations look kool
08:51:34 <nooga> #### #### ### :D
08:54:51 <Sukoshi> I would clap if I knew what a raytracer was.
08:55:38 * GreaseMonkey claps
08:55:40 <GreaseMonkey> i know
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
09:06:17 <nooga> hm
10:12:18 <GreaseMonkey> gtg to bed, gnight everyone
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:40:47 <RodgerTheGreat> 'morning, guys
12:44:56 <RodgerTheGreat> http://img.waffleimages.com/7a1f19b0d0ba1e5bac2d3ef48bb1c9de7a8efaef/bikecrash.gif
13:11:17 <oklopol> i assume that's you
13:13:13 <RodgerTheGreat> you are entitled to assume that
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"
13:17:20 <RodgerTheGreat> bbl
13:17:29 <oklopol> bie
13:26:31 <SimonRC> ug
13:38:45 <RodgerTheGreat> bak
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:32 <ais523> !ps d
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:06:41 <EgoBot> 4 ais523: ps
16:07:05 <ais523> ~ps
16:07:05 <bsmnt_bot> None
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:52 <bsmnt_bot> !ul (~bf ,[.,]!!ul ):SaS(:SaS)
16:11:55 <EgoBot> ~bf ,[.,]!!ul (~bf ,[.,]!!ul )
16:11:56 <bsmnt_bot> !ul (~bf ,[.,]!!ul )
16:14:44 <ais523> ~bf >,[>,]<[<]>.[>.]<[<]>.[>.]!~bf >,[>,]<[<]>.[>.]<[<]>.[>.]!
16:14:44 <bsmnt_bot> ~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:04:46 <SimonRC> hm
17:28:15 <ais523> hm what?
17:30:34 * SimonRC eats lunch
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:19:57 <EgoBot> Huh?
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:33 <ais523> !help
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:21:58 <ais523> nope
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:24 <oklopol> hmm
18:26:25 <ais523> nope, not working
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:46 <bsmnt_bot> Hope I haven't crashed this
18:26:57 <ais523> "~easy" was at the end of bf6's definition
18:27:03 <oklopol> yeah
18:27:06 <oklopol> indeed
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:18 <oklopol> #bsmnt_bot_errors
18:28:26 <oklopol> he's crying.
18:28:28 <ais523> is that a real channel?
18:28:31 <oklopol> yes
18:28:36 <oklopol> /whois oklopol
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:29:58 <bsmnt_bot> SyntaxError: invalid syntax
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:32:43 <oklopol> :<
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:33:59 <bsmnt_bot> 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:35:59 <bsmnt_bot> <function <lambda> at 0xb7c795a4>
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:21 <bsmnt_bot> AttributeError: group
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:41:23 <bsmntbombdood> heh
18:43:09 <bsmntbombdood> what are you trying to do?
18:43:23 <ais523> program bsmnt_bot to do Easy
18:43:35 <bsmntbombdood> 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:24 <lament> Python Is Easy :)
18:44:47 <ais523> I interpreted your smiley as a TM marker there for a bit
18:50:41 <lament> a what marker?
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
18:51:58 <lament> :)
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> !ps d
19:10:46 <ais523> now both bots have crashed...
19:10:46 <ais523> !quit
19:10:46 <ais523> sometimes restarting EgoBot helps...
19:10:49 <EgoBot> Huh?
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:10:57 <EgoBot> 4 ais523: ps
19:12:33 <ais523> ~ul (Test)S
19:12:41 <ais523> !ul Test(S)
19:12:47 <ais523> !ul (Test)S
19:12:49 <EgoBot> Test
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:44:17 <oerjan> dead as a doornail
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:24:31 <bsmntbombdood> geg
22:24:36 <bsmntbombdood> *heh
22:24:37 <bsmntbombdood> hmm
22:25:08 <bsmntbombdood> foo
22:25:11 -!- bsmnt_bot has quit (Read error: 131 (Connection reset by peer)).
22:25:14 -!- bsmnt_bot has joined.
22:25:15 <bsmntbombdood> odd
22:27:39 <SimonRC> :-S
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:31:16 <lament> or dir_list
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:26 <bsmnt_bot> ['foo']
22:33:52 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:34:24 <bsmntbombdood> os.listdir
22:38:08 <oerjan> ~exec with open("/bot/scripts/foo") as f: sys.stdout(f.readline())
22:38:08 <bsmnt_bot> SyntaxError: invalid syntax
22:38:24 <bsmntbombdood> python2.4
22:40:09 <oerjan> #!%&/=
22:41:19 <oerjan> ~exec f = open("/bot/scripts/foo"); sys.stdout(f.readline()); f.close()
22:41:19 <bsmnt_bot> fooo
22:41:42 <oerjan> ~exec f = open("/bot/scripts/foo"); sys.stdout(f.readlines()); f.close()
22:41:42 <bsmnt_bot> ['fooo\n']
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:37 <bsmnt_bot> ['ls', 'bash']
22:42:40 <oerjan> ~exec sys.stdout(os.listdir("/usr"))
22:42:41 <bsmnt_bot> ['bin', 'lib', 'include']
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:42:52 <bsmnt_bot> ['python2.4']
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:43:36 <bsmnt_bot> ['dc', 'nice', 'python2.4']
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:27 <oerjan> darn.
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:58:44 <oerjan> hm...
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:08:56 <bsmntbombdood> heh
23:09:24 <bsmntbombdood> it's not intentional
23:10:43 <oerjan> indeed?
23:11:57 <bsmntbombdood> not sure what's wrong with the internets inside the chroot
23:15:25 <bsmntbombdood> http://bsmntbombdood.mooo.com/knight_lambda.png
23:15:32 <bsmntbombdood> how's it look?
23:16:12 <oerjan> huge
23:18:08 <oerjan> that's better
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:21:40 <bsmntbombdood> hmm
23:23:17 <bsmntbombdood> how about that?
23:23:31 <oerjan> about what?
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:27:18 <bsmntbombdood> colors are icky
23:27:31 <bsmntbombdood> lament: because
23:28:40 <bsmntbombdood> gah
23:28:44 <bsmntbombdood> I suck at inkscape
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:30:26 <bsmntbombdood> We would have to come up with some clever design
23:31:23 <oerjan> is that design based on anything official of the KotLC (which i know little about) ?
23:31:47 <bsmntbombdood> yeah
23:31:58 <bsmntbombdood> http://en.wikipedia.org/wiki/Image:Lambda.png
23:32:16 <bsmntbombdood> that image was too small, so i vectorized it and made it bigger
23:32:47 <oerjan> oh.
23:33:08 <oerjan> it seems like most of my suggestions amounted to making your design more similar to the original.
23:33:45 <bsmntbombdood> the edge detection didn't work so well
23:39:14 <oerjan> we could do something like YF above = above F(F(...)), and Y written out in SKI terms
23:39:35 <oerjan> or perhaps even:
23:39:44 <oerjan> eh no.
23:40:45 <oerjan> anyhow the inside of parenthesis would be shrunk of course
23:40:54 <oerjan> now what was it
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:13 <bsmntbombdood> is that Y?
23:48:47 <oerjan> essentially yes, but a shorter version than the usual one
23:53:51 <bsmntbombdood> http://pastebin.ca/raw/402527
23:54:01 <bsmntbombdood> the ackermann function in lambda calculus for church numerals
2007-03-20
00:01:07 <oerjan> heh.
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:09:07 <bsmntbombdood> oerjan: wget is in the chroot now
00:10:54 <lament> you really want to be hacked? :)
00:11:37 <bsmntbombdood> ...?
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:01 <bsmntbombdood> ~exec sys.stdout(os.listdir("/bot"))
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:25:10 <bsmntbombdood> ~exec sys.stdout(os.listdir("/bot/scripts"))
00:25:10 <bsmnt_bot> ['lost+found']
00:26:30 <bsmntbombdood> there's about 50MB you can use now
00:28:27 <oerjan> hm - it occurs to me there is nothing now preventing the download of binaries.
00:28:57 <bsmntbombdood> nope
00:29:05 <bsmntbombdood> but there is something preventing the execution of them
00:29:23 <oerjan> aha?
00:29:28 <bsmntbombdood> noexec
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:05:00 <bsmntbombdood> let's try this again
01:06:02 <bsmntbombdood> ~exec f=open("/bot/scripts/foo", "w"); f.write("foo\n"); f.close()
01:06:20 <bsmntbombdood> finally
01:06:47 <bsmntbombdood> ~exec f=open("/bot/scripts/foo", "r"); sys.stdout(f.read()); f.close()
01:06:48 <bsmnt_bot> foo
01:07:29 <bsmntbombdood> k
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:08:45 <bsmntbombdood> grrr
01:09:19 <bsmntbombdood> ~exec sys.stdout(os.system("wget 64.233.167.99 -O /bot/scripts/google.html"))
01:09:20 <bsmnt_bot> 32512
01:09:25 <bsmntbombdood> 32512?
01:09:44 <oerjan> ~exec sys.stdout(os.listdir("/bot/scripts"))
01:09:44 <bsmnt_bot> ['lost+found', 'foo']
01:11:38 <bsmntbombdood> ~exec self.fds = __import__("popen2").popen4("wget 64.233.167.99 -O /bot/scripts/google.html".split())
01:11:46 <bsmntbombdood> ~exec sys.stdout(self.fds)
01:11:47 <bsmnt_bot> (<open file '<fdopen>', mode 'r' at 0xb7c62c80>, <open file '<fdopen>', mode 'w' at 0xb7c62ba8>)
01:12:07 <bsmntbombdood> ~exec sys.stdout(repr(self.fds[0].read())
01:12:08 <bsmnt_bot> SyntaxError: unexpected EOF while parsing
01:12:19 <bsmntbombdood> ~exec sys.stdout(repr(self.fds[0].read()))
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:45 <bsmntbombdood> ~exec self.fds[0].close(); self.fds[1].close()
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:12:59 <bsmntbombdood> fantastic
01:16:07 <bsmntbombdood> ~exec os.remove("/bot/scripts/google.html")
01:16:14 <bsmntbombdood> ~exec os.remove("/bot/scripts/foo")
01:16:36 <bsmntbombdood> ~exec os.rmdir("/bot/scripts/lost+found")
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:17:51 <bsmnt_bot> []
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:40 <bsmnt_bot> []
01:18:48 <oerjan> ~exec sys.stdout(os.listdir("/bot/scripts"))
01:18:49 <bsmnt_bot> []
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:21:00 <bsmnt_bot> []
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:22:21 <bsmnt_bot> []
01:22:24 <oerjan> oh wait
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:24:54 <bsmnt_bot> []
01:25:01 <oerjan> hm...
01:27:53 <oerjan> ~exec sys.stdout(os.listdir("/bin"))
01:27:54 <bsmnt_bot> ['ls', 'bash']
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:28:48 <bsmnt_bot> []
01:29:02 <oerjan> ~exec os.system("touch /bot/scripts/test")
01:29:06 <oerjan> ~exec sys.stdout(os.listdir("/bot/scripts"))
01:29:07 <bsmnt_bot> []
01:29:20 <oerjan> this is not good. oh wait.
01:30:03 <oerjan> echo and touch are bash builtins, not?
01:30:25 <oerjan> well echo is
01:30:33 <bsmntbombdood> heh
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:24 <oerjan> ah wait
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:45 <bsmntbombdood> don't think so
01:33:46 <bsmntbombdood> damn
01:33:56 -!- bsmnt_bot has joined.
01:34:12 <bsmntbombdood> at least that was a wget error
01:34:14 <oerjan> i think you need a link from /bin/sh to /bin/bash
01:34:43 <oerjan> system uses /bin/sh
01:34:49 <bsmntbombdood> oh
01:36:01 <bsmntbombdood> try now
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:36:54 <bsmnt_bot> []
01:37:03 <oerjan> too easy
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:26 <bsmnt_bot> []
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:38:01 <bsmnt_bot> []
01:38:30 <oerjan> echo should work
01:39:02 <oerjan> ~exec sys.stdout(os.listdir("/bin"))
01:39:02 <bsmnt_bot> ['ls', 'sh', 'bash']
01:39:30 <bsmntbombdood> echo is a bash builtin i think
01:39:36 <oerjan> yes it is
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:40:35 <bsmntbombdood> yeah
01:41:47 <oerjan> ~exec os.system("/bin/ls / >/bot/scripts/test")
01:41:56 <oerjan> ~exec sys.stdout(os.listdir("/bot/scripts"))
01:41:56 <bsmnt_bot> ['lost+found', 'foo']
01:42:11 <oerjan> what?
01:42:17 <bsmntbombdood> yeah.
01:42:28 <oerjan> what did you do?
01:42:32 <bsmntbombdood> bot/scripts was mounted like 12 times
01:43:17 <oerjan> well it still didn't make a test file
01:43:37 <bsmntbombdood> yeah :/
01:43:40 <bsmntbombdood> ~exec os.system("/bin/ls / >/bot/scripts/test")
01:43:46 <bsmntbombdood> ~exec sys.stdout(os.listdir("/bot/scripts"))
01:43:47 <bsmnt_bot> ['lost+found', 'foo']
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:51:34 <bsmntbombdood> now it won't let me unmount the directory
01:53:22 <oerjan> aha!
01:54:19 <bsmntbombdood> ?
01:54:38 <oerjan> the first member of the argument list should be the program name
01:54:57 <bsmntbombdood> oh
01:55:00 <bsmntbombdood> duh
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:55:55 <oerjan> hm...
01:56:05 <oerjan> what did it say now?
01:57:03 <bsmntbombdood> nothing
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:22 <bsmntbombdood> ~quit
01:59:23 -!- bsmnt_bot has quit (Client Quit).
01:59:28 -!- bsmnt_bot has joined.
01:59:32 <bsmntbombdood> gar
01:59:33 <bsmntbombdood> ~quit
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:00:58 <bsmntbombdood> there
02:10:38 <bsmntbombdood> ~exec __import__("popen2").popen4("wget http://129.241.210.70/~oerjan/ -O /bot/scripts/oerjan.html".split())
02:10:48 <bsmntbombdood> ~exec sys.stdout(os.listdir("/bot/scripts"))
02:10:49 <bsmnt_bot> ['test', 'oerjan.html']
02:12:25 <bsmntbombdood> the docs say popen4 uses os.spawnv
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:00 <bsmntbombdood> ~exec sys.stdout(os.listdir("/bot/scripts"))
02:16:01 <bsmnt_bot> ['test', 'oerjan.html', 'foo.html']
02:16:04 <bsmntbombdood> good
02:16:22 <bsmntbombdood> oerjan: there, use self.system
02:17:04 <oerjan> it doesn't use a shell though.
02:17:17 <oerjan> hm...
02:17:34 <bsmntbombdood> right
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 <bsmntbombdood> ~exec sys.stdout(os.listdir("/bot/scripts"))
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:27 <bsmntbombdood> ~exec sys.stdout(os.listdir("/bot/scripts"))
02:20:28 <bsmnt_bot> ['test', 'oerjan.html', 'foo.html', 'foo2.html']
02:20:31 <bsmntbombdood> does now.
02:20:56 <oerjan> strange stuff. now it does what os.system should have.
02:21:00 <bsmntbombdood> yeah
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:24:42 <bsmnt_bot> []
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:10:50 <bsmntbombdood> the comments are even more funny
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:32:51 <GreaseMonkey> \fu bsmnt_bot
06:32:52 <RoboMonkey> fuck you, bsmnt_bot
06:33:46 <GreaseMonkey> a revenge act of pwnage on-the-fly
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:44:58 <GreaseMonkey> afk, food
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:29 <GreaseMonkey> \hug jix
09:21:30 * RoboMonkey jumps onto the sofa and gives jix one of her dive-hugs
09:21:40 <GreaseMonkey> oooh yeah, i rule :D
09:21:43 <jix> huh?
09:21:58 <GreaseMonkey> it's my bot
09:22:00 <GreaseMonkey> ?addc fu 1 x00>"PRIVMSG "%1[>,]" :fuck you, "%2[>,]x0A>x00<[<]>%0[.>]
09:22:03 <GreaseMonkey> \fu bsmt_bot
09:22:04 <RoboMonkey> fuck you, bsmt_bot
09:22:24 <GreaseMonkey> actually, i'll remove that command
09:22:27 <GreaseMonkey> ?delc fu
09:23:01 <GreaseMonkey> the language is called Brainsecks - spec + examples at http://randomjunk.rudyvalencia.com/Brainsecks
09:23:33 <GreaseMonkey> i better upload the latest interpreter
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:45:17 <GreaseMonkey> ...have a look
09:45:32 <GreaseMonkey> http://greasemonkey.nonlogic.org/brainsecks.c
09:50:23 <oklopol> NEVER
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:37:49 <GreaseMonkey> gtg to bed, gnight everyone
10:39:08 -!- RoboMonkey has quit (Client Quit).
10:39:18 -!- GreaseMonkey has quit ("byes everyone").
14:29:25 * SimonRC has lunch
15:43:44 -!- RodgerTheGreat has joined.
15:44:01 <RodgerTheGreat> hi guys
16:05:25 <nooga> hi
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
16:40:57 <RodgerTheGreat> <:|
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:04 <oerjan> indeed.
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:49 <lament> mmmm
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:01 <RodgerTheGreat> the positioning of apple seeds are your initial state
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:22:48 <RodgerTheGreat> haha
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:27:49 <RodgerTheGreat> hm
18:27:57 <RodgerTheGreat> how does it halt?
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:30 <RodgerTheGreat> yeah- that's exactly what I was thinking
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:46 <ais523> for instance
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:32:39 <ais523> RogerTheGreat: yes
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:01 <RodgerTheGreat> yeah
18:34:02 <ais523> that register can only be called a fixed finite number of times before the halt
18:34:12 <oerjan> indeed.
18:34:24 <RodgerTheGreat> sounds workable
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.
2007-03-21
00:00:49 * SevenInchBread is playing around with fuzzy string matching.
00:00:58 <SevenInchBread> to find typos.
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:23:57 <bsmntbombdood> odd
02:24:34 <oerjan> even
02:24:47 <mule|> prime
02:25:04 <oerjan> carmichael
02:25:29 <bsmntbombdood> cons M N = \a.aMN
02:25:40 <bsmntbombdood> car = \a.a(\bc.cIb)
02:25:49 <bsmntbombdood> wtf?
02:27:19 <bsmntbombdood> car (cons M N) == NIM?
02:27:34 <oerjan> eh..
02:27:50 <oerjan> i think that should be car = \a.a(\bc.b)
02:28:03 <bsmntbombdood> it would seem...
02:28:12 <bsmntbombdood> this is from _the calculi of lambda conversion_, church
02:29:19 <bsmntbombdood> oh
02:29:25 <bsmntbombdood> M and N are church numerals
02:29:30 <bsmntbombdood> so it works
02:29:59 <bsmntbombdood> oh, right, this isn't lambda_K calculus
02:30:14 <oerjan> it's in his lambda_I calculus perhaps?
02:30:29 <oerjan> you beat me to it :)
02:30:59 <oerjan> except...
02:31:07 <oerjan> does it work if N is a cons?
02:31:56 <bsmntbombdood> no
02:32:15 <bsmntbombdood> car (cons (cons A B) M) == ABM
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:40 <bsmntbombdood> exponentionally?
02:36:42 <oerjan> might be harder to undo i guess
02:37:04 <oerjan> it was just the simplest
02:37:13 <bsmntbombdood> 2^M + 3^N
02:37:22 <oerjan> you mean *
02:37:28 <bsmntbombdood> yeah
02:37:47 <oerjan> or else you might have some hard mathematical problem
02:39:05 <oerjan> or maybe not so hard
02:39:29 <bsmntbombdood> hrm
02:39:57 <bsmntbombdood> I was always taught that you could only solve for one unkown per equation
02:40:22 <bsmntbombdood> but 2^M * 3^M can be solved for 2
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:44:57 <bsmntbombdood> yeah
02:45:06 <bsmntbombdood> interesting predecessor function...
02:46:19 <bsmntbombdood> \a.3_3(a (\b.[Succ(3_1 b), 3_1 b, 3_2 b]) [1,1,1])
02:46:46 <bsmntbombdood> 3_n takes the nth element of a triple
02:47:01 <oerjan> thought so
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:50:52 <bsmntbombdood> right
02:51:24 <SevenInchBread> YOU PEOPLE AND YOUR LAMBDA CALCULI
02:51:29 <SevenInchBread> DISGUST ME
02:51:30 <bsmntbombdood> he says positive, not not-negative
02:51:57 <oerjan> IS THAT A REQUEST?
02:52:03 <GregorR> It appears to be.
02:52:14 <GregorR> He's telling people who have lambda calculi to disgust him.
02:53:55 <SevenInchBread> yep
02:55:45 <bsmntbombdood> ohh neat
02:56:05 <bsmntbombdood> par = \a.a (\b.3-b) 2
02:56:16 <bsmntbombdood> par <even> == 2
02:56:21 <bsmntbombdood> par <odd> == 1
02:56:47 <bsmntbombdood> and a-b is a (Pred) b
02:57:00 <bsmntbombdood> b (Pred) a, I mean
02:57:22 <oerjan> hmph. 2+3 = 1+4 and 2+9 = 8+3
02:58:58 <bsmntbombdood> ...?
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:00:55 <bsmntbombdood> those are all primes
03:01:09 <mule|> 35 isn't prime?
03:01:15 <bsmntbombdood> except 35
03:01:19 <SevenInchBread> 7 * 5
03:01:30 <SevenInchBread> ...or is this a different base?
03:01:43 <oerjan> well they cannot be divisible by 2 or 3
03:01:51 <oerjan> no, ordinary decimal
03:01:53 <bsmntbombdood> oh, i misread
03:02:00 <bsmntbombdood> * for + again
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:04:09 <bsmntbombdood> this lambda_I calculus is too complicated
03:05:35 <oerjan> yeah, it's even more esoteric than the usual one
03:14:39 <bsmntbombdood> whoa
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:01 <oerjan> certainly
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:21 <bsmntbombdood> g\"odel numbers
03:17:24 <oerjan> make that 2^(m-1)(2n+1)
03:17:37 <oerjan> eh,
03:17:43 <oerjan> 2^(m-1)(2n-1)
03:18:32 <oerjan> but it can also be done with polynomials
03:18:56 <bsmntbombdood> (m+n)(m+n-1)-2n+2
03:19:07 <oerjan> i suppose
03:20:16 <bsmntbombdood> that's what's given here (for application)
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:24:57 <oerjan> i think it was
03:29:07 <bsmntbombdood> I wonder why church even bothered with lambda_I calculus
03:29:41 <bsmntbombdood> the definition of lambda_K calculus is simpler
03:31:46 <bsmntbombdood> oh
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:35:37 <bsmntbombdood> dirty, dirty haskell
03:41:57 <bsmntbombdood> some theorems of the lambda_I calculus fail
03:47:29 <bsmntbombdood> oh boy, transfinite ordinals in the lambda_K calculus
03:47:53 <SevenInchBread> ...I like, "procrastinated evaluation".
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:50:11 <mule|> ?
03:50:12 <mule|> lol
03:50:31 <SevenInchBread> ...something like that.
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:52:03 <SevenInchBread> ...nope.
03:53:49 <oerjan> It evaluates most subexpressions in parallel.
03:54:04 <bsmntbombdood> oh man
03:54:10 <bsmntbombdood> there's a lambda-delta calculus too
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:09 <SevenInchBread> ...taking away the linearness of execution.
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:56:11 * SevenInchBread has a fetish for coroutines.
03:57:22 <bsmntbombdood> TOO MUCH MAN TOO MUCH
03:57:58 <SevenInchBread> THERE CAN NEVER BE TOO MUCH OF MAN
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:58:36 <SevenInchBread> SYSTEM F?
03:59:01 <oerjan> typed polymorphic lambda calculus
03:59:08 <SevenInchBread> ...
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:23 <bsmntbombdood> hmm
04:04:42 <bsmntbombdood> seems like the lambda-delta calculus fixes some of the limitations of the lambda_K calculus
04:05:47 <bsmntbombdood> while still allowing throwing away arguments
04:07:25 <SevenInchBread> IO has a neato macro-ish like execution.
04:07:36 <SevenInchBread> non-strict functions
04:08:55 <bsmntbombdood> fun
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:18:41 <bsmntbombdood> http://www-tech.mit.edu/V125/N65/coursevi.html
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:34:07 <bsmntbombdood> who knows, strousup is pretty crazy
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:43:55 <bsmntbombdood> me too
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
09:15:36 <nooga> whoops
10:08:01 <GreaseMonkey> ok, gonna have to sleep now, gnight
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:37:17 <SimonRC> nooga: funny nevertheless
17:40:06 -!- FabioNET has joined.
18:18:10 <nooga> :D
18:18:22 <nooga> it is NOT funny
18:19:53 <SimonRC> I was referring to the AFJ you posted, not the vim comment
18:20:32 <nooga> oh
18:21:03 <nooga> bsmntbombdood posted it before me
18:25:57 <bsmntbombdood> what
18:26:39 <nooga> that article on whitespace
18:27:45 <bsmntbombdood> oh
18:28:16 <SimonRC> I learnt an interesting thing in my computability class:
18:28:44 <bsmntbombdood> haha school
18:28:52 <SimonRC> (no, uni)
18:28:59 <bsmntbombdood> yeah
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:29:35 <bsmntbombdood> minimisation?
18:29:41 <SimonRC> yeah
18:29:45 <bsmntbombdood> what's that
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:40:56 <bsmntbombdood> gar
18:41:08 <bsmntbombdood> i want the P'' paper
18:43:03 <SimonRC> bsmntbombdood: yes
18:43:24 <SimonRC> In computability theory, most data is Nat.
18:43:45 <SimonRC> the only operations are succ, pred, and jnz
18:43:51 <SimonRC> hehehe
18:44:16 <bsmntbombdood> jnz?
18:44:19 <SimonRC> since we only care about computability, the programs we write probably have lots of ackerman runtimes.
18:44:27 <SimonRC> and in ASM
18:44:34 <SimonRC> Jump if Non-Zero
18:44:41 <SimonRC> *"as in ASM"
18:45:03 <bsmntbombdood> ackermann runtime, that's pretty bad
18:45:17 <bsmntbombdood> I can't even imagine an algorithm being that slow
18:45:41 <SimonRC> maybe I exaggerate
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:12:13 <SevenInchBread> What's a good HTTP server app?
22:19:54 -!- nazgjunk has joined.
22:27:09 -!- death has joined.
22:27:50 <bsmntbombdood> SevenInchBread: apache?
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:31 <SevenInchBread> so...
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.
22:55:37 <SevenInchBread> ...how would you do that?
22:59:05 <bsmntbombdood> lunix
23:06:27 -!- oerjan has joined.
23:11:04 <GregorR> http://lng.sourceforge.net/ < Lunix :P
23:11:42 <bsmntbombdood> i was looking at that a while back
23:12:05 <SevenInchBread> I really want to start work on an esoos
23:13:31 <nazgjunk> hehe
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:24:43 <lament> or rather, not even
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:08 <SimonRC> hm
23:28:23 <SimonRC> indeed
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:30:30 * bsmntbombdood finds
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.
23:53:07 <SevenInchBread> ...timer inrerruopt?
23:56:45 <SevenInchBread> ...yeah, should read up on my hardware stuff.
2007-03-22
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:02 <RodgerTheGreat> haha
00:01:23 <RodgerTheGreat> "possible to learn, but ultimately not very applicable"
00:07:25 <bsmntbombdood> addition is hard
00:08:50 <RodgerTheGreat> addition of what?
00:09:07 <bsmntbombdood> integers
00:09:15 <RodgerTheGreat> integers? imaginary numbers? scorpions and apples?
00:09:17 <RodgerTheGreat> oh
00:09:18 <RodgerTheGreat> hm
00:09:23 <RodgerTheGreat> in what language?
00:09:28 <bsmntbombdood> C
00:09:44 <bsmntbombdood> I'm writing some multiprecision integer code
00:12:19 <bsmntbombdood> It's the overflow that makes it hairy
00:12:33 <oerjan> In C I would expect the worst part to be the memory management.
00:16:44 <oerjan> hm...
00:17:05 <RodgerTheGreat> very true, oerjan
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:39 <RodgerTheGreat> *thing
00:17:44 <lament> scorpions and apples? Who added scorpions?
00:18:05 * RodgerTheGreat slowly raises his hand
00:18:44 <bsmntbombdood> seems pretty simple so far...
00:20:49 <SevenInchBread> AUTOMATIC MEMORY MANAGEMENT FTW LOL
00:21:06 <bsmntbombdood> no
00:21:45 <SevenInchBread> ...with the ability to shift back into manual transmission (lol car analogy) when you want.
00:22:01 * SimonRC goes to bed
00:22:15 <RodgerTheGreat> cya, SimonRC
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:36:59 <SevenInchBread> (eh, fix my grammar as you see fit)
00:37:41 <SevenInchBread> ....with many many many filesystems... that you can switch between.
00:37:45 <oerjan> *than=unlike
00:37:52 <GregorR> So, HURD.
00:38:01 <SevenInchBread> WEIRD filesystems - at that.
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:01 <bsmntbombdood> who says we need an fs?
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:49:38 <SevenInchBread> ....essentially what lament said.
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:55:31 <bsmntbombdood> woot, I can add!!
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.
00:58:22 <bsmntbombdood> base 2**32 is the best
00:58:45 <bsmntbombdood> (4294967295 4294967295) + (3) == (1 0 2)
01:00:07 <SevenInchBread> couldn't you just use longs and forget about overflow?
01:00:16 <bsmntbombdood> no
01:01:40 <oerjan> on the contrary, base 3^42 is best.
01:11:50 <SevenInchBread> ah... here's an idea.
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:32:59 <bsmntbombdood> representing, lambda
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:36:24 <bsmntbombdood> we have persistant objects, they are called files
01:37:00 <oerjan> i mean with code
01:37:33 <oerjan> as in object-oriented
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:39:49 <SevenInchBread> meh.... I have a love-hate relationship with OO.
01:40:10 <SevenInchBread> ....brainfuck, coincidentally, is a very handy representation of the typical file. :)
01:40:29 <bsmntbombdood> a running brainfuck program could work
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:41:43 <bsmntbombdood> exactly
01:42:00 <bsmntbombdood> but, no
01:42:05 <SevenInchBread> so no waiting... just pause when we want input... and then all the changes are persistent...
01:42:13 <bsmntbombdood> then you couldn't change the program
01:42:24 <bsmntbombdood> writes replace/change the program
01:42:29 <SevenInchBread> so then we make a hot-swappable brainfuck.
01:44:08 * oerjan thinks that Unlambda could hot-swap pretty easily.
01:44:32 * SevenInchBread is off to make another brainfuck derivitive.
01:44:33 <oerjan> of course its I/O sucks.
01:44:43 <bsmntbombdood> why?
01:44:46 <SevenInchBread> Brainfuck... ON LINKED LISTS.
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:03:46 <bsmntbombdood> too many brainfuck derivitives
02:06:42 <lament> by the way, i certainly think an esoteric OS shoudn't have files
02:08:51 <bsmntbombdood> what do you use for persistance then?
02:09:09 <oerjan> gnomes
02:09:22 <oerjan> very small gnomes carrying papyrus rolls
02:09:42 <bsmntbombdood> asparagus
02:11:14 <SevenInchBread> SOUNDS LIKE A PLAN.
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:28 <bsmntbombdood> a file is an object
02:12:31 <lament> for example, i have an mp3 file
02:12:36 <lament> it's a song
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:13:38 <bsmntbombdood> bu bu but
02:13:41 <bsmntbombdood> everything is a file
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:16:49 <bsmntbombdood> exactly
02:16:53 <SevenInchBread> .....
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:18:36 <lament> Polymerous Spam!
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:13:37 <RodgerTheGreat> 'night, guys
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:29 <oklopol> you poor thing :(
07:44:58 <oklopol> haha... i scroll up and say something that'd be weird even there :P
07:50:01 <lament> you poor thing.
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:41 <SimonRC> :-)
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:10 <SimonRC> nonono, BER
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:04 <SimonRC> hmm
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:42:34 <SimonRC> IT JUST FEELS WRONG
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:48 <SimonRC> ooooh
11:43:55 <SimonRC> you know about the plan 9 FS, right/
11:43:56 <SimonRC> ?
11:44:07 <ais523> I'm not too aware of that,
11:44:11 <ais523> s/,//
11:44:12 <SimonRC> well look it up
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:44:59 * ais523 looks it up
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:05 <SimonRC> :-P
11:46:17 <SimonRC> heh
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:46:59 <SimonRC> nonono
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:47:57 <SimonRC> tada!
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:09 <SimonRC> y
11:48:14 <SimonRC> ais523: yes
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:48:52 <SimonRC> kewl
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:19 <SimonRC> some do
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:52:36 <ais523> SimonRC: yes
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:57:48 <ais523> *sent
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:00:21 <ais523> s/'//
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:17 <bsmnt_bot> []
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:00:18 <oerjan> manually so far
13:01:06 <oerjan> www.python.org/doc
13:03:38 <ais523> ~exec with open("/bot/scripts/bf.py") as f: write bf3+bf4
13:03:38 <bsmnt_bot> SyntaxError: invalid syntax
13:03:55 <ais523> ~exec exec "with open("/bot/scripts/bf.py") as f:\n write bf3+bf4"
13:03:55 <bsmnt_bot> SyntaxError: invalid syntax
13:04:10 <ais523> ~exec exec "with open('/bot/scripts/bf.py') as f:\n write bf3+bf4"
13:04:11 <bsmnt_bot> SyntaxError: invalid syntax
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:40 <oerjan> add , "w"
13:05:43 <oerjan> i think
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:19 <bsmnt_bot> ['bf.py']
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:06:50 <bsmnt_bot> ['bf.py', 'dof.py']
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:19 <oerjan> sys.stdout(self.bf7)
13:07:21 <ais523> ~exec self.raw_regex_queue.pop()
13:07:28 <oerjan> ~exec sys.stdout(self.bf7)
13:07:29 <bsmnt_bot> def bfarg(x,y):
13:07:29 <bsmnt_bot> p=y.group(2)
13:07:29 <bsmnt_bot> a=y.group(3)+unichr(0)
13:07:29 <bsmnt_bot> o=''
13:07:30 <bsmnt_bot> p=p+'!'
13:07:31 <bsmnt_bot> t=[0]*30000
13:07:33 <bsmnt_bot> i=0
13:07:35 <bsmnt_bot> l=0
13:07:37 <bsmnt_bot> while p[i]!='!':
13:07:39 <bsmnt_bot> if p[i]==']' and t[l]!=0:
13:07:41 <bsmnt_bot> c=1
13:07:43 <bsmnt_bot> while c>0:
13:07:45 <bsmnt_bot> i=i-1
13:07:47 <bsmnt_bot> if p[i]==']': c=c+1
13:07:49 <bsmnt_bot> if p[i]=='[': c=c-1
13:07:56 <oerjan> whoops
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:10:52 <ais523> ~bf ,[.,]!Testing
13:10:52 <bsmnt_bot> Testing
13:10:55 <ais523> yay!
13:11:18 <ais523> ~exec exec "f=open('/bot/scripts/dof.py')\nexec '\\n'.join(f.readlines())\nf.close()"
13:11:44 <ais523> ~dof [,.]!Testing
13:11:45 <bsmnt_bot> Testing
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:09 <ais523> ~help
13:14:40 <ais523> Oh by the way, I invented a new joke language in my sleep last night. Look at this:
13:14:41 <ais523> !huh
13:14:49 <ais523> ?
13:14:50 <ais523> !ps
13:15:01 <ais523> oh, EgoBot's down
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:13 <ais523> ~huh
13:16:26 <ais523> ~exec self.register_raw(r'\S+ PRIVMSG \S+ :~huh', lambda x,y:sys.stdout('Huh?'))
13:16:28 <ais523> ~huh
13:16:28 <bsmnt_bot> Huh?
13:17:00 <oerjan> right.
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:18:59 <oerjan> omg!
13:19:47 <SimonRC> ??
13:20:03 <oerjan> ~exec sys.stdout(bot)
13:20:03 <bsmnt_bot> <__main__.IRCbot instance at 0xb7c9140c>
13:20:10 <oerjan> right...
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:20:57 <oerjan> *script
13:21:29 <oerjan> for shorter loading
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:40 <ais523> ~bf ,[.,]!Testing
13:22:41 <bsmnt_bot> Testing
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:15 <SimonRC> ~exec sys.stdout(bot)
13:24:16 <bsmnt_bot> <__main__.IRCbot instance at 0xb7c9140c>
13:24:17 <SimonRC> ~exec sys.stdout(bot)
13:24:17 <bsmnt_bot> <__main__.IRCbot instance at 0xb7c9140c>
13:24:18 <SimonRC> ~exec sys.stdout(bot)
13:24:19 <bsmnt_bot> <__main__.IRCbot instance at 0xb7c9140c>
13:24:21 <SimonRC> hmm
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:44 * SimonRC throttles ais523.
13:38:56 <SimonRC> In the sense of strangling you.
13:39:06 <ais523> I guessed.
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:21 <oerjan> isn't cmeme here?
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:46:39 <oerjan> or so we hope
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:47:54 <oerjan> right...
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:06 <oerjan> or wait...
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:14 <ais523> I'll try that now
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:20:56 <oerjan> hm?
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:23 <ais523> * webpage
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:06 * SimonRC eats dinner
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:41:18 <RodgerTheGreat_> hi guys
14:41:34 <ais523> hello
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:34:26 <SimonRC> some do
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:04 <SevenInchBread> hmmm.... Kallisti?
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:55:58 <SevenInchBread> syntax errors are impossible. :P
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:47 <lament> kallisti
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:58:50 <ais523> s/(HOMESPRING)/in $1/
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:02:24 <lament> define huge
19:02:47 <SevenInchBread> ....anything greater than 2....
19:02:52 <SevenInchBread> -shrug-
19:03:17 <lament> 2.1 ? :)
19:05:21 <SevenInchBread> ...
19:05:32 <SevenInchBread> YOU PROGRAMMERS AND YOUR PEDANTICS.
19:05:46 <SevenInchBread> MUST ALL THINGS BE DEFINED??????
19:08:30 <RodgerTheGreat> undefined behavior sucks
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:12 <SevenInchBread> ....
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:16:46 <RodgerTheGreat> a self-healing language
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:18:52 <RodgerTheGreat> hm
19:18:57 <RodgerTheGreat> could work
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:20:01 <RodgerTheGreat> *programmer error
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:25:42 <RodgerTheGreat> SevenInchBread: link us up
19:28:01 <SevenInchBread> http://www-formal.stanford.edu/jmc/elephant.html
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:35:33 <SevenInchBread> It reminds me of... programming a human.
19:36:24 <RodgerTheGreat> only less frustrating
19:36:34 <RodgerTheGreat> none of this "free will" nonsense
19:36:43 <RodgerTheGreat> and you don't have to feed programs
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:29 <RodgerTheGreat> SYNTAX ERROR: PLEASE INSERT 25 CENTS
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:41:50 <lament> thanks
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:48 <lament> i like the title
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:02 <lament> which is ridiculous
19:43:19 <RodgerTheGreat> or british
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:28 <RodgerTheGreat> cool
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:46:44 <RodgerTheGreat> haha
19:46:47 <RodgerTheGreat> I see
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:31 <SevenInchBread> ....it could be... subjective?
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:47:58 <ais523> lament: so is 'maths'
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:49 <SevenInchBread> ...like me.
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:09 <SevenInchBread> ....
19:50:13 <RodgerTheGreat> ....
19:50:26 <SevenInchBread> more importantly.... why does it matter? and why must someone always be right or wrong?
19:50:39 <RodgerTheGreat> usage is occasionally more important than etymology.
19:50:48 <SevenInchBread> I say...
19:50:51 <lament> actually wait, maybe you're right
19:51:05 <SevenInchBread> we call mathematics... MATHorgy
19:51:15 <SevenInchBread> ...FROM NOW ON... AS IT IS THE NATURE OF OUR CHARACTERS.
19:51:18 <SevenInchBread> to do so.
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:42 <RodgerTheGreat> and YES I know the correct spelling is "googol"
19:51:58 <ais523> hey, numbers are functions in some languages (like my work-in-progress Underload)
19:52:11 <RodgerTheGreat> SevenInchBread: I support this course of action
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:53:04 <SevenInchBread> ...math creates crazy people.
19:53:09 <SevenInchBread> ....I mean, MATHorgy.
19:57:07 <lament> stupid google makes it hard to search for 'maths'
19:57:19 <lament> it thinks 'math' matches
19:57:38 <RodgerTheGreat> did you try searching for "maths" ?
19:57:46 <RodgerTheGreat> in quotes?
19:57:48 <lament> ooh
19:57:49 <lament> that works
19:57:58 * RodgerTheGreat bows
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:14 <SevenInchBread> I GROW TIRED OF THE ARRAY OF BYTES.
19:59:28 <ais523> lament: I don't think they do (I know an economist and they say 'economics' in full)
19:59:34 <SevenInchBread> we need HARDWARE REPRESENTATIONS OF STRUCTURES.
19:59:39 <SevenInchBread> ...in caps
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:00:59 <SevenInchBread> ...they both make sense to me..
20:01:30 <lament> who both
20:05:45 <SevenInchBread> math and maths
20:06:39 * SimonRC eats dinner
20:06:59 * SimonRC eats dinner
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:32 <lament> exactly
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:18 <SevenInchBread> it's a special case... sounds natural to me. :/
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:26 <SevenInchBread> analysis?
20:29:47 <SevenInchBread> analysis sounds completely singular to me... where mathematics has a sort of semi-plural sound to it.
20:31:30 <RodgerTheGreat> bbl
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:35:58 <lament> not 'cs' though
20:36:31 <SevenInchBread> heh... I would divide it at "ics" myself. :)
20:36:46 <lament> ics
20:36:51 <lament> sure
20:37:12 <SevenInchBread> -shrug- doesn't matter much
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:39:04 <SevenInchBread> er...
20:39:12 <SevenInchBread> colorless green ideas sleep furiously.
20:40:17 <SevenInchBread> http://en.wikipedia.org/wiki/Buffalo_buffalo_Buffalo_buffalo_buffalo_buffalo_Buffalo_buffalo
20:41:42 * SevenInchBread ...has a fetish for wordplay.
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:17:23 <SevenInchBread> l
21:36:15 <lament> well, considering you were told about it in this channel...
21:39:02 <SevenInchBread> oh. haha, don't remember that.
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:34:17 <bsmntbombdood> hmmm
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.
22:57:43 <SevenInchBread> especially with things like and/or
23:10:37 -!- UpTheDownstair has joined.
23:12:46 -!- UpTheDownstair has quit (Client Quit).
23:20:21 -!- sebbu2 has joined.
23:22:54 <bsmntbombdood> hmm
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:33:50 <bsmntbombdood> dunno
23:33:55 <lament> ...
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).
2007-03-23
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:06:41 <SevenInchBread> but... highly common in this kind of area.
01:19:56 <bsmntbombdood> http://rendell-attic.org/gol/tm.htm
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:12 <bsmntbombdood> but we are
01:40:17 <bsmntbombdood> our axoims change
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.
03:17:24 <bsmntbombdood> SII(S(KK)(SII))
04:00:47 -!- SevenInchBread has quit ("haaaaaaaaaa").
05:11:40 <RodgerTheGreat> good night everyone
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:28 <oerjan> ~bf ,[.,]!Test
06:22:54 <GreaseMonkey> what bot is that for?
06:22:58 <oerjan> ~exec execfile("/bot/scripts/bf.py")
06:23:03 <oerjan> ~bf ,[.,]!Test
06:23:03 <bsmnt_bot> Test
06:23:06 <GreaseMonkey> k
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.
06:41:26 <GreaseMonkey> uhuh
06:54:36 <lament> your mom's asleep.
07:11:29 -!- anonfunc has quit.
07:12:03 -!- Sgeo has quit (Remote closed the connection).
07:30:59 -!- GregorR has joined.
07:58:02 <GreaseMonkey> afk, food
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:01:04 <oerjan> atk, coffee
08:08:07 -!- ShadowHntr has quit (Read error: 110 (Connection timed out)).
08:08:40 <GreaseMonkey> back
08:09:36 <oerjan> front
08:12:39 <GreaseMonkey> up
08:15:51 <oerjan> vinn
08:19:21 <GreaseMonkey> asdf
08:20:58 <oerjan> jkl
08:22:22 <GreaseMonkey> you forgot the semicolon
08:22:35 <oerjan> jkl
08:22:47 <GreaseMonkey> ;;;;;;;;;;;;;;;;;;;;
08:22:51 <oerjan> my keyboard isn't English :)
08:22:57 <GreaseMonkey> ok
08:23:08 <GreaseMonkey> yuiop
08:23:21 <GreaseMonkey> what keymap is it?
08:23:25 <GreaseMonkey> mine's qwerty
08:23:33 <oerjan> norwegian qwerty
08:23:40 <GreaseMonkey> oh ok
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:26:43 <oerjan> i don't know C++
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:31:43 <GreaseMonkey> C++ is esoteric enough
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?
08:49:02 <GreaseMonkey> hmmm...
09:36:07 -!- RoboMonkey has quit (Client Quit).
09:36:33 -!- RoboMonkey has joined.
09:56:18 -!- ShadowHntr has joined.
09:58:51 <GreaseMonkey> meh, i'm bored
09:58:53 <GreaseMonkey> \viagra
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 :)
09:59:33 <GreaseMonkey> it's me taking the mick out of spammers
10:00:55 <GreaseMonkey> there's 20 different messages
10:20:55 <GreaseMonkey> gonna go sleep, gnight
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:23:06 <SimonRC> \help
14:23:14 <SimonRC> oh, it's gone
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:31:25 <oklopol> what are the odds :<
14:31:27 <oklopol> really
14:31:30 <oklopol> what are they?
14:32:30 <SimonRC> hehe
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:34:39 <SimonRC> heh
14:34:48 <SimonRC> hmm, rubik's cube...
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:25 <oklopol> if you get my meaning
14:36:27 <SimonRC> actually...
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:37:56 <oklopol> clever
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:45 <oklopol> hmm
14:38:50 <oklopol> i dunno if i make any sence :)
14:39:26 <SimonRC> yes
14:39:38 <SimonRC> actually, no...
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:40:30 <SimonRC> that helps a lot
14:41:44 <oklopol> true, i like making new languages more than using the old ones though, even though it's rarely necessary :)
14:42:41 <bsmntbombdood> GregorR: don't learn C++
14:42:52 <bsmntbombdood> oops, that was for greasemonkey
14:42:55 <bsmntbombdood> guess he's not here
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:05 <oklopol> i can't find a K version
17:36:19 <oklopol> qs=: (($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#)
17:36:24 <oklopol> J sucked ass ^^^^^^
17:36:28 <oklopol> in being short
17:38:10 <oklopol> i managed to get it in 36 chars in oklotalk, i'm wondering if i have to improve that
17:45:48 <oklopol> 28 now
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:29 <oklopol> #haskell
17:49:42 <oklopol> oh
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:50:36 <SimonRC> actually...
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:51:41 <oklopol> oki
17:51:42 <oklopol> :)
17:52:08 <oklopol> hmm
17:52:17 <oklopol> no hmm, sorry :)
17:52:19 <SimonRC> only 50 chars
17:53:02 <SimonRC> o mean, 39
17:53:41 <SimonRC> It assumes you've imported Data.List though, which most modules of a Haskell program will do anyway.
17:55:24 <SimonRC> oklopol: define: oklotalk
17:55:39 <oklopol> it's an apl derivative i've been making
17:55:46 <SimonRC> on the web/
17:55:49 <SimonRC> ?
17:55:51 <oklopol> though is a lot different from apl now
17:55:52 <oklopol> ?
17:55:55 <oklopol> not yet anywhere
17:56:00 <oklopol> i'm running it in my head
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:01:37 <oklopol> :)
18:01:41 <oklopol> ' == outer lambda
18:01:48 <oklopol> . == this lambda :)
18:02:07 <SimonRC> bah
18:02:08 <oklopol> :<
18:02:32 <oklopol> you mother!
18:02:35 <oklopol> *your
18:02:50 <oklopol> *it is
18:04:06 <SimonRC> A friend of mine invented the evil smiley
18:04:07 <SimonRC> :>
18:04:24 <SimonRC> If you want to know why it is evil, give it a filename:
18:04:31 <SimonRC> :> /dev/kmem
18:04:41 <SimonRC> ok, maybe not that
18:04:57 <SimonRC> :> /vmlinuz
18:05:04 * oklopol has :> windows
18:08:38 <oklopol> another quicksort, oklotalk style {_~/*/`{!-_<!_}\1}
18:08:52 <SimonRC> !
18:08:54 <oklopol> well, {_~$/*/`{!-_<!_}\1} actually...
18:09:04 <SimonRC> expln plz
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:42 <SimonRC> like Haskerl?
18:09:45 <oklopol> so you can create a list that just explains a form of a list
18:09:47 <oklopol> maybe
18:09:51 <oklopol> i don't know haskell :)
18:09:59 <SimonRC> nonono, Haskerl
18:10:12 <SimonRC> anyway, ontinue expln
18:11:13 <oklopol> yeah, wait a mo
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:12:52 <oklopol> anyway
18:13:03 <oklopol> it was not quicksort :)
18:13:25 <oklopol> it was sort, left for the interpreter to brute force :P
18:13:33 <oklopol> so not that great
18:13:34 <SimonRC> how
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:14:11 <oklopol> *means
18:15:04 <oklopol> but, i don't think that feature can do anything this complicated, it'd prolly just crash
18:15:32 <SimonRC> hm
18:15:40 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
18:19:40 <oklopol> k
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> `{} quotes a lambda
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:01 <oklopol> *make it explicit
18:21:56 <lament> You know what would be cool.
18:21:59 <lament> Lambada calculus.
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:43 <oklopol> (\0, not \1)
18:24:52 <oklopol> since it's applied as the first argument
18:41:22 -!- asiekierka has joined.
18:41:23 <asiekierka> Hi!
18:41:45 <asiekierka> i thought of doing a "Sexy esoteric language"
18:41:48 <asiekierka> with 2 words:
18:41:55 <asiekierka> "naked" "female"
18:41:57 <asiekierka> but i doubt
18:41:59 <asiekierka> i'm 10 yrs old
18:42:16 <oklopol> true, your mom might dislike it
18:42:32 <asiekierka> my dad wouldn't
18:42:36 <asiekierka> he likes that stuff
18:42:49 <asiekierka> a "Quit" will look like this: -nakedfemale
18:42:58 <asiekierka> "begin" = +nakedfemale
18:43:00 <asiekierka> XD
18:43:24 <oklopol> "naked men" as commands might be a way to get more young women interested in esoteric programming
18:43:46 <asiekierka> while naked woman - naked mens
18:43:55 <asiekierka> more like
18:43:57 <asiekierka> young man
18:44:03 <asiekierka> i wouldn't do it
18:44:05 <asiekierka> just giving out
18:44:07 <asiekierka> ideas for you
18:44:09 <asiekierka> guys to do
18:44:10 <asiekierka> it.
18:44:45 <oklopol> thank you
18:44:50 <oklopol> we'll promise to think about it
18:44:59 <asiekierka> ... tell me when done
18:45:08 <oklopol> ...will do
18:45:18 <asiekierka> It will be capable of writing only some words: naked, unnaked, female, male, idiot.
18:45:38 <asiekierka> so, to type: nake "naked male"
18:45:41 <asiekierka> will type naked male
18:45:50 <asiekierka> so it's working actually
18:45:54 <asiekierka> but 15+
18:46:16 <oklopol> i think all esolangs have a recommended age of 15+
18:46:33 <asiekierka> not all
18:46:40 <asiekierka> Brainf**k?
18:46:45 <asiekierka> Cat?
18:47:08 <asiekierka> what about PS2lang?
18:47:10 <lament> asiekierka: what's the recommended age of brainfuck?
18:47:13 <asiekierka> it wouldn't be esoteric
18:47:22 <asiekierka> ... except "brainfuck" word it is 7+ i think
18:47:29 <oklopol> not because of profanity
18:47:36 <asiekierka> ???
18:47:38 <asiekierka> i'm from poland
18:47:47 <oklopol> i'm from finland
18:47:54 <lament> i'm from blahland
18:47:57 <oklopol> bad words
18:47:58 <asiekierka> i'm from Mars
18:47:59 <oklopol> ==
18:48:01 <asiekierka> who cares?
18:48:01 <oklopol> profanity
18:48:11 <asiekierka> ok
18:48:12 <asiekierka> 12+
18:48:57 <asiekierka> http://tunes.org/~nef/logs/esoteric/06.08.10 - log when i was here.
18:51:12 <lament> who cares?
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:26:37 <oklopol> hmm
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 " "+("&nbsp;"*(occurrances-1)) in php
20:34:12 -!- crathman has quit (Read error: 110 (Connection timed out)).
20:34:39 * SimonRC goes away
20:43:11 <oerjan> i don't know php but in perl you could do s/ ( +)/" "."&nbsp"x length($1)/e;
20:44:07 <oerjan> */eg;
20:46:02 <oerjan> *;
20:46:39 <oerjan> (that last one after nbsp
20:46:43 <oerjan> *)
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:54:58 <oerjan> yep
20:55:16 <oklopol> hehe, they banned me on ircnet because of my nick :P
20:55:20 <oklopol> it was ^__^ though
20:55:36 <oklopol> bastards
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:10 <SevenInchBread> anyone want to explain?
22:36:23 <oerjan> well..
22:36:36 <lament> well..
22:36:48 <lament> lexical scope: makes sense.
22:36:52 <SevenInchBread> ....
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:09 <SevenInchBread> oh - all is revealed to me now - thanks lament.
22:37:14 <RodgerTheGreat> hi guys
22:37:29 <SevenInchBread> lament, preferably. :)
22:37:39 <oerjan> there are situations when dynamical scope is useful.
22:37:57 * bsmntbombdood doesn't know the distinction either
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:42:25 <SevenInchBread> ...
22:43:11 <SevenInchBread> alright. I think I follow.
22:43:22 <oerjan> so f 1 x == f 1 3 == g 3 == 1+3 == 4
22:43:35 <bsmntbombdood> ok...
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:31 <bsmntbombdood> oh
22:44:35 -!- crathman has joined.
22:44:35 <bsmntbombdood> that doesn't make much sense
22:44:36 <oerjan> which will be 3
22:44:40 <bsmntbombdood> what language uses that?
22:44:50 <oerjan> old style LISP
22:44:51 <SevenInchBread> hmmm.... I could see that being useful.
22:45:18 <SevenInchBread> for example. in places where you don't have closures.
22:45:25 <oerjan> there is a Haskell extension for dynamically scoped variables
22:45:27 <bsmntbombdood> even C isn't like that
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:24 <SevenInchBread> ALSO
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:21 <lament> no it doesn't.
22:52:22 <SevenInchBread> or "stackless" 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:53:26 * SevenInchBread sighs and shakes head at lament.... :/
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:21 <lament> it is.... esoteric
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:56:11 <SevenInchBread> -snicker- I blame that on the programmer then.
22:58:46 <SevenInchBread> anything is alien until you get used to it.
22:58:52 -!- _0xff has joined.
22:59:16 <bsmntbombdood> pointers are fun
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:00:57 <bsmntbombdood> SevenInchBread: globals, mutable objects
23:01:29 <SevenInchBread> -shrug- mutable objects are the exception... but globals are still "in scope".
23:01:40 <lament> um.
23:01:46 <lament> you are confused.
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:04 <SevenInchBread> because Python is uber-conservative...
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:30 <lament> no
23:05:34 <lament> i'm not talking about child-proof
23:05:40 <SevenInchBread> ?
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:06:53 <SevenInchBread> ....other languages don't do number 2?
23:07:03 <lament> not usually
23:07:05 <lament> Scheme does
23:07:20 <SevenInchBread> ...how else would it work?
23:07:24 <lament> well
23:07:46 <lament> if you could say 'have all references to this object now point to that object'
23:08:00 <SevenInchBread> ah...
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:38 <lament> i am lament
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:08:52 <bsmntbombdood> yeah
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:09:44 <bsmntbombdood> that's exactly what pointers are
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:13:51 <SevenInchBread> |x| := 2 --assign the symbol x to 2
23:13:52 <SevenInchBread> x := 2 --assigns the object represented by x to 2
23:15:28 <SevenInchBread> |x| := "This is the text of the universe"
23:15:30 <SevenInchBread> |y| := x
23:15:32 <SevenInchBread> x := "There is a paradigm shift" ---both and |x| and |y| are changed.---
23:16:51 <bsmntbombdood> that's ugly
23:17:28 <bsmntbombdood> terribly so
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:36 <SevenInchBread> ...it makes perfect sense to me.
23:19:46 -!- sebbu2 has joined.
23:19:56 <bsmntbombdood> there's scoping problems too
23:21:18 <SevenInchBread> hmmm, what kind?
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 <oerjan> Reaper and Forte.
23:27:41 <oklopol> i had this idea of a reverse-pointer esolang
23:27:50 <GregorR> *whew*
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:52 <bsmntbombdood> lament: so?
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:17 <SevenInchBread> lament, it was three examples.
23:34:27 <SevenInchBread> ...just in case they semantically blurred together.
23:34:28 <lament> SevenInchBread: give one. :)
23:34:40 <SevenInchBread> ....but I did. o.o
23:34:41 <oklopol> "A function that you want to redefine."
23:34:47 <oklopol> this is kinda obvious
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:21 <oklopol> allll the time
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:39:55 <SevenInchBread> basically... it's similar to an in-place operation...
23:40:10 <SevenInchBread> just... with an entirely new object.
23:40:14 <lament> are you replying to me?
23:40:16 <lament> i guess not :)
23:40:22 <oklopol> i think it'd be rude if pointers did not follow an object moving around in the memory :|
23:40:45 <oklopol> it'd be all alone
23:41:19 <bsmntbombdood> dangling pointer
23:42:07 <GregorR> (Perverse)
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:42:41 <SevenInchBread> -nod- it was an "example you".
23:42:44 <SevenInchBread> as in "one"
23:43:24 <SevenInchBread> THE HYPOTHETICAL IDENTITY. :o
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:10 <lament> -y
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:45:30 <SevenInchBread> REALITY IS A CRUX
23:45:35 <SevenInchBread> WE ARE IN THE SURREAL WORLD
23:45:45 <SevenInchBread> WHERE THE IDENTITY IS MALLEABLE.
23:45:57 <lament> well, sure
23:46:10 <SevenInchBread> ABANDON ALL COHERANCY.
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:46:41 * SevenInchBread enjoys some good programming voodoo.
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:05 <SevenInchBread> I see nothing wrong with this.
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:51:22 <lament> wow, forte IS cool.
23:51:31 <SevenInchBread> |x| = "o"
23:51:32 <SevenInchBread> |y| = "Hell" + x + "o, World!"
23:51:33 <oklopol> yep :P
23:51:34 <SevenInchBread> x = "p"
23:51:35 <SevenInchBread> y print ---Hellp, World!---
23:51:42 <SevenInchBread> er... without the o in "o, world!"
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:53:23 <oklopol> :P
23:53:32 <bsmntbombdood> heh, forte look fun
23:55:22 <oklopol> where can you get the interpreter?
23:55:29 <oklopol> and has anything been done with that?
23:59:27 <oerjan> oh wait...
2007-03-24
00:03:52 <oerjan> http://pastebin.ca/391947
00:07:13 <lament> oh god
00:07:30 <lament> what's with these disgusting thutu perl-compiled programs?
00:07:48 <oerjan> ais523's new language
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:08:59 <SevenInchBread> "What is with all these disgusting peasants!"
00:09:28 <lament> oerjan: ohh, right
00:09:33 <lament> didn't notice the 2
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:17:51 <wezyap> hi people
00:19:13 <bsmntbombdood> http://en.wikipedia.org/wiki/Markov_algorithm
00:19:45 <bsmntbombdood> didn't know string rewriting algorithms were turing complete
00:20:03 <lament> haven't heard of thue?
00:20:28 <bsmntbombdood> that's neat
00:20:31 <bsmntbombdood> nope
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:07 <bsmntbombdood> ?
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:10:55 <bsmntbombdood> whoa
01:11:00 <bsmntbombdood> "true" is a word
01:11:37 <lament> true.
01:11:56 <bsmntbombdood> that's a crazy word
01:13:37 <lament> true.
01:15:10 -!- wezyap has quit.
01:16:13 <bsmntbombdood> oh come on
01:16:15 <bsmntbombdood> http://www.99-bottles-of-beer.net/language-perl-737.html
01:17:51 <lament> heh
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:48:51 <GreaseMonkey> hey bsmnt
03:48:56 <bsmntbombdood> hi
03:49:02 -!- RoboMonkey has joined.
03:49:33 <GreaseMonkey> ?addc fu 1 x00>"PRIVMSG "%1[>,]" :fuck you, "%2[>,]x0A>x00<[<]>%0[.>]
03:49:36 <GreaseMonkey> \fu bsmnt_bot
03:49:37 <RoboMonkey> fuck you, bsmnt_bot
03:49:46 <bsmntbombdood> ~fu GreaseMonkey
03:49:53 <bsmntbombdood> aaw, not still there
03:50:10 <GreaseMonkey> so functionwise we're even
03:50:43 <GreaseMonkey> apart from yours probably being easier to code in
03:50:55 <GreaseMonkey> ?listc
03:51:23 <GreaseMonkey> note that listc only shows up on the console
03:51:55 <bsmntbombdood> ~exec self.print_callbacks(sys.stdout)
03:51:56 <bsmnt_bot> [('^PING (.*)$', 'pong'),
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:00 <bsmnt_bot> 'do_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:52:16 <bsmntbombdood> note that my bot pwns your bot
03:52:20 <bsmntbombdood> :P
03:52:46 <bsmntbombdood> hmmm
03:52:54 <bsmntbombdood> ~bf +[.+]
03:53:01 <bsmntbombdood> ~ps
03:53:15 <oerjan> don't do that.
03:53:34 <GreaseMonkey> ~exec run_script("/bot/scripts/bf.py")
03:53:38 <GreaseMonkey> was that it?
03:53:51 <bsmntbombdood> oh boy
03:53:52 <oerjan> no, execfile
03:53:57 <bsmntbombdood> bsmnt_bot seems to be frozen
03:54:06 <GreaseMonkey> \say i'm still working
03:54:07 <RoboMonkey> i'm still working
03:54:09 <oerjan> i suppose the bf locked it up.
03:54:25 <bsmntbombdood> execfile?
03:54:26 <oerjan> i suppose it is not properly in do_exec
03:54:26 <GreaseMonkey> bummer, like i pwnd egobot first
03:54:30 <GreaseMonkey> i wanted to do that
03:54:40 <bsmntbombdood> my, someones done a lot with him
03:55:04 <GreaseMonkey> oh well, just in case you want a little piss-take:
03:55:05 <GreaseMonkey> \viagra
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:09 <oerjan> ais523 i think
03:55:34 <oerjan> with a little help from me
03:55:42 <bsmntbombdood> what is execfile?
03:55:53 <oerjan> a command to load python
03:56:00 <oerjan> builtin
03:56:00 -!- ShadowHntr has joined.
03:56:11 <bsmntbombdood> oh
03:56:25 -!- bsmnt_bot has quit (Read error: 131 (Connection reset by peer)).
03:56:28 -!- bsmnt_bot has joined.
03:56:57 <GreaseMonkey> oh, and btw, i'm sorta learning C++
03:57:00 <oerjan> ~exec execfile("/bot/scripts/bf.py")
03:57:07 <bsmntbombdood> GreaseMonkey: nooooo
03:57:14 <oerjan> ~bf ,[.,]!Test
03:57:14 <bsmnt_bot> Test
03:57:32 <bsmntbombdood> nice
03:57:51 <GreaseMonkey> well, C++ is kinda a just-in-case thing
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:00 <bsmntbombdood> ,,..99
06:54:05 <GregorR> Rule #1 of library programming for libraries which are intended to be accessible by languages other than C++: (see above)
06:59:08 <GreaseMonkey> hi gregorr
07:03:10 -!- Sgeo has quit ("Leaving").
07:19:00 <GregorR> Hi GreaseMonkey :P
07:20:56 <GreaseMonkey> what linux distro do you have?
07:22:17 <GregorR> Hm, do I want to admit it...
07:26:57 -!- Sukoshi has joined.
07:28:24 <GreaseMonkey> mandrake?
07:28:38 <GreaseMonkey> i have knoppix 3.4 on my hd
07:28:45 <GreaseMonkey> it
07:28:50 <GreaseMonkey> 's safe to admit
07:29:46 <GregorR> Mandriva, yuh.
07:29:58 <GregorR> For all that it's not a "cool" distro to use, I'm yet to find a better one.
07:30:49 <GreaseMonkey> it's quite loaded and quite popular
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:36:04 <bsmntbombdood> heh
07:37:41 <GregorR> Now I just need to hack linuxwacom ... :(
07:40:32 <GreaseMonkey> afk food
07:56:31 <GreaseMonkey> i need to go right now, cya all
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:38 <bsmntbombdood> what doyaknow, it's Sukoshi
08:39:46 <Sukoshi> Yep.
08:39:52 <Sukoshi> Takin' a minute break from cramming.
08:40:20 <bsmntbombdood> what for?
08:40:25 <Sukoshi> AP tests.
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:02:24 <RodgerTheGreat> hi everyone
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:21 <SimonRC> do-be-do-be-do
21:38:57 <SimonRC> "To do is to be" - Nietzsche
21:39:02 <SimonRC> "To be is to do" - Kant
21:39:08 <SimonRC> "Do Be Do Be Do" - Sinatra
21:39:14 <SimonRC> hehehe
21:42:21 <RodgerTheGreat> I am intrigued. what the hell are you babbling about?
21:43:57 <bsmntbombdood> RodgerTheGreat: you shouldn't be
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:47:20 <SimonRC> or Descarte and Satre
21:49:09 <bsmntbombdood> I'm think only anonymous functions
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:49:39 <bsmntbombdood> and that's no fun
21:49:49 <RodgerTheGreat> hm
21:50:27 <bsmntbombdood> classes too :/
21:51:37 <bsmntbombdood> So how do I do this elegantly?
21:54:37 <bsmntbombdood> object variables are a problem too
21:54:51 <bsmntbombdood> maybe each object has a private stack
21:55:57 <bsmntbombdood> that's ugly too though
21:56:33 <RodgerTheGreat> hm
21:57:02 <RodgerTheGreat> you could make stacks a datatype that can be stored on the stack
21:57:18 <bsmntbombdood> sure
21:58:05 <RodgerTheGreat> and you could give each object a queue for storing variables, rather than a stack!
21:58:11 <bsmntbombdood> why?
21:58:16 <bsmntbombdood> that would be unusable
21:58:42 <RodgerTheGreat> how so?
21:59:22 <bsmntbombdood> unless its circular
22:00:37 <bsmntbombdood> *it's
22:01:49 <bsmntbombdood> <obj> 'methodname exec
22:03:04 <bsmntbombdood> init-args [class def] 'instantiate exec
22:04:34 <bsmntbombdood> hmm http://www.codinghorror.com/blog/archives/000635.html
22:04:52 <bsmntbombdood> and actually, that "exec" can be made implicit
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:08:33 <bsmntbombdood> how do you send messages?
22:08:43 <bsmntbombdood> offsets?
22:17:46 * bsmntbombdood laughs
22:17:56 <bsmntbombdood> This article says that the first difficult thing students have is "assignment and sequence"
22:18:14 <bsmntbombdood> Why is functional programming not more popular?
22:19:30 <bsmntbombdood> And they compare imperative statements to math
22:19:32 <bsmntbombdood> wtf, man
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:18 <bsmntbombdood> yeah
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:46 <bsmntbombdood> which is incorrecnt
22:21:47 <SimonRC> except PROLOG, where no solution would be found
22:22:03 <SimonRC> bsmntbombdood: I didn; thnk theysaid that
22:22:13 <bsmntbombdood> they did in the linked paper
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)).
2007-03-25
00:02:48 * SimonRC goes to bed
00:18:36 -!- nazgjunk has quit ("sleep, gah").
00:20:20 -!- sebbu2 has quit ("@+").
00:47:20 <bsmntbombdood> ok
00:47:25 <bsmntbombdood> lemme type this up
00:49:08 <SevenInchBread> DO SO
00:51:45 <bsmntbombdood> http://pastebin.ca/408613
00:54:40 <SevenInchBread> wassat?
00:54:54 <bsmntbombdood> a language
00:55:09 <bsmntbombdood> functional object oriented and stack based
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.
00:59:44 <bsmntbombdood> um, no.
01:04:04 <bsmntbombdood> http://bsmntbombdood.mooo.com/FOOS.txt
01:10:33 <SevenInchBread> bsmntbombdood, your explainations fall too much into the trap of describing the implementation.
01:10:42 <SevenInchBread> ...too formal
01:10:43 <GregorR> Those are so utterly not the qualities of a programmer.
01:10:58 <SevenInchBread> I didn't think so.
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:23:04 <SevenInchBread> ...sounds like THE POWER TO MAKE AWESOME METAPHORS.
01:23:07 <SevenInchBread> ...as I have just done.
01:23:17 * SevenInchBread is now the most coincidental emperor of hackerdom.
01:26:01 <GregorR> It's just too bad that you have not an effing clue what "abstraction" means.
01:27:03 <SevenInchBread> pfft, oh no you didn't.
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:33:04 <SevenInchBread> abstraction?
01:33:36 <bsmntbombdood> so, do you think my concept is workable?
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:35:50 <bsmntbombdood> there's an inheritance mechanism
01:36:06 <bsmntbombdood> there's a code/function object
01:36:18 <bsmntbombdood> classes and objects are built on top of these
01:39:00 <SevenInchBread> ...well, it's workable I suppose.
01:39:09 <bsmntbombdood> kinda smalltalkish
01:40:06 <SevenInchBread> considered going prototype?
01:40:28 <bsmntbombdood> I still have to figure out a lot of stuff
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:41:21 <bsmntbombdood> there is no distinction
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:43:10 <bsmntbombdood> you are misunderstanding
01:43:12 <SevenInchBread> SmallTalk has a distinction.
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:44:39 <bsmntbombdood> from the %inherit method
01:45:37 <GregorR> This is called "prototype-based object orientation"
01:45:38 <GregorR> FYI
01:46:29 <bsmntbombdood> %inherit might be a bad name
01:46:45 <SevenInchBread> ah okay... yeah, then that's prototype.
01:47:27 <bsmntbombdood> @'foo [foo code] @object %inherit add-method done
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:47:37 <bsmntbombdood> @ pushes the builtins object
01:47:52 <bsmntbombdood> ' sends the builtin object the ' message
01:48:52 <SevenInchBread> hmmm... ah... I think I got it.
01:49:50 <bsmntbombdood> this puts the "quoter" object on the stack
01:50:03 <bsmntbombdood> that gets sent a "foo" message
01:50:19 <bsmntbombdood> the quoter object responds by putting the symbol foo on the stack
01:50:53 <SevenInchBread> hmmm....
01:51:01 <bsmntbombdood> [foo code] pushes a code object on
01:51:12 <bsmntbombdood> @ pushes the builtins object
01:51:34 <bsmntbombdood> object is sent to it, builtins object responds by pushing the base object
01:51:54 <bsmntbombdood> the base object is sent %inherit
01:52:13 <bsmntbombdood> responds by pushing an object that accepts and stores message handlers (methods)
01:52:36 * SevenInchBread waits quietly.
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:14 <bsmntbombdood> s/the the/to the/
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:55:47 <SevenInchBread> from there that previous line you would add "foo foo"
01:56:48 <SevenInchBread> ...there are semantic differences though... the () represent functions...
01:56:56 <SevenInchBread> so it's lazy...
02:02:26 <bsmntbombdood> ideas, people!
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:58:28 <LeaLeaLea> Seveninchbread
05:58:46 <LeaLeaLea> SEVENINCHBREAD ??
05:58:54 <LeaLeaLea> hdcbaifgweyfrgygf
05:58:55 <bsmntbombdood> heh
05:58:58 <LeaLeaLea> Good day, sirs.
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.
09:44:43 <SevenInchBread> ...hmmm... you know... Perl isn't all that bad.
09:44:45 <SevenInchBread> It's kind of fun.
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.
13:27:39 <SimonRC> hmf
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:22:59 <RodgerTheGreat> 'morning, everyone
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:05:52 <oklopol> mrng
17:06:18 <RodgerTheGreat> hws t gng?
17:08:25 <oklopol> plng btz www.bts2.nt... addktv fr sch a trvl gm
17:08:36 <oklopol> whooops i forgot vowels!
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:57:33 <SevenInchBread> ...alright.
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.
19:58:40 <SevenInchBread> ...including all the combined forms.
20:03:40 <RodgerTheGreat> that sounds like a rather nontrivial task
20:04:08 <RodgerTheGreat> a list of 256X256 characters, some of which don't exits...
20:04:24 <RodgerTheGreat> *exist
20:07:26 <oklopol> it indeed does.
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:05 <SevenInchBread> oh... well cool...
20:40:32 <SevenInchBread> later I'll need a way to distinguish punctuation-type glyphs from letter-like glyphs...
20:40:38 <SevenInchBread> and spaces.
20:46:23 <SimonRC> that also exists
20:46:28 <RodgerTheGreat> hey, feesh: http://www.nonlogic.org/dump/images/1174851872-chainbrain.png
20:46:34 <RodgerTheGreat> finally got around to inking it
20:49:45 <RodgerTheGreat> whoops, wrong window
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:56:23 <SevenInchBread> well, that's what I meant.
20:56:27 <SevenInchBread> more... keys.
20:56:59 <RodgerTheGreat> oh. Then in that case, I wholeheartedly agree.
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:18 <RodgerTheGreat> plus, more keys = more interesting emoticons
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:58:59 <RodgerTheGreat> these additions might make coding with a laptop suck
20:58:59 <SevenInchBread> switched - switches
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:43 <RodgerTheGreat> macintosh: EVERYTHING, and I mean everything is USB
21:00:45 <SimonRC> more types of brackets would be good
21:00:58 <SimonRC> RodgerTheGreat: monitor? :-P
21:01:21 <RodgerTheGreat> actually, my monitor plugs into my USB port...
21:01:34 <RodgerTheGreat> it *also* plugs into DVI and Firewire
21:01:44 <SevenInchBread> There are the << and >> unicode symbols... although those kinds of brackets can be done with just double angle brackets
21:01:46 <RodgerTheGreat> the cable coming out of this thing is a beast
21:02:00 <SimonRC> heh
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:06 <RodgerTheGreat> power, ethernet, mini-DVI, usb, firewire, audio
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:03:47 <RodgerTheGreat> SimonRC: like ¬ for not and so on?
21:05:09 * SevenInchBread demands a huge multi-tiered, digitally-labeled keyboard.
21:05:13 <SevenInchBread> ...with pedals.
21:05:52 <RodgerTheGreat> ooh, that would be fun
21:06:03 -!- nazgjunk has quit ("switching to kde").
21:06:10 <RodgerTheGreat> pedals for alt, shift, control and so on would be fun
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:07:10 * RodgerTheGreat is sitting at a desk
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:24:58 <oklopol> i'm not a mutant you know
21:25:23 <RodgerTheGreat> your hands are mirror images of one another
21:25:28 <oklopol> indeed
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:01 <RodgerTheGreat> it is just that simple
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:55 <RodgerTheGreat> the what?
21:27:58 <oklopol> i don't agree to either of those but i understand many would
21:28:17 <oklopol> www.vjn.fi/s/beepiano.py
21:28:26 <RodgerTheGreat> oh, that thing
21:28:38 <oklopol> ya
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:30:34 <oklopol> 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:23 <oklopol> oki
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:04 <oklopol> they are both idiotic
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:32:21 <oklopol> in windows it's easy
21:32:27 <oklopol> oh
21:32:27 <oklopol> use?
21:32:30 <RodgerTheGreat> then you can type musical notes in hex
21:32:34 <oklopol> hmm
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:34:41 <oklopol> *sense
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:39:32 <oklopol> *to
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:41:35 <oklopol> *with
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:45:52 <RodgerTheGreat> ok
21:45:59 <RodgerTheGreat> that is a significantly more valid criticism
21:46:07 <oklopol> :)
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:06 <RodgerTheGreat> I use PHP occasionally. I might be able to help
21:51:37 <RodgerTheGreat> my main languages are Java, PHP, and BASIC, actually (which doesn't make me too popular here sometimes. ;))
21:51:56 <RodgerTheGreat> I'm getting pretty handy with Javascript, though
21:52:03 <SevenInchBread> hmmm....
21:52:10 <oklopol> those are the 3 most hated languages probably :P
21:52:15 <RodgerTheGreat> yeah
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:31 <SevenInchBread> say you have a function like....
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:33 <SevenInchBread> func(x, y, z) := (2 + x) - (y +( z-2))
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:51 <RodgerTheGreat> yeah
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:08 <RodgerTheGreat> SevenInchBread: seems like that could work
21:54:11 <RodgerTheGreat> clever
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:54:55 <RodgerTheGreat> oklopol: that's pretty much it
21:55:09 <oklopol> SevenInchBread i think oerjan or someone told you that a few days ago
21:55:25 <SevenInchBread> -snicker- must have missed it then.
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:55:56 <SevenInchBread> aah.
21:56:02 <oklopol> that's how
21:56:37 <oklopol> though of course not literally parens, but pieces that parens and precedence separate from the whole
21:57:02 <SevenInchBread> the "parens" of the parse tree. ;)
21:57:11 <RodgerTheGreat> anyway, what was this PHP thing you were having difficulty with?
21:57:15 <oklopol> well... yes :P
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:09 <oklopol> yeah, i like the idcea
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:00:59 <oklopol> the parsed program
22:01:00 * RodgerTheGreat reads oklopol's PHP...
22:01:10 * oklopol reads RodgerTheGreats link
22:01:21 <RodgerTheGreat> oh, god. flat-file I/O sucks in PHP
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:03:39 <oklopol> *file
22:04:23 <oklopol> that is quite a beautiful language i must admit
22:04:24 <RodgerTheGreat> hm
22:04:34 <RodgerTheGreat> really? It looks nice?
22:04:44 <oklopol> yeah :)
22:04:49 <RodgerTheGreat> thanks!
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:05:47 <oklopol> explain, please
22:05:59 <oklopol> ah
22:06:05 <oklopol> i got it
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:06:51 <oklopol> subfunctions, lambdas?
22:07:13 <RodgerTheGreat> you mean function calls on a function's return values?
22:07:25 <oklopol> mm no
22:07:42 <RodgerTheGreat> I'm not sure what you mean, then
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:32 <oklopol> *probably
22:11:41 <RodgerTheGreat> this isn't an object-oriented language, however, so a function can't be manipulated as a list element
22:11:41 <oklopol> s/explanation/definition
22:11:57 <RodgerTheGreat> and functions must be assigned a name, so no lambdas
22:12:03 <oklopol> okay, pointers?
22:12:08 <RodgerTheGreat> both of those can make compilation quite complex
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:27 <RodgerTheGreat> heh
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:15:23 <oklopol> so... forget what i asked
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:42 <RodgerTheGreat> any particular reason?
22:16:51 <oklopol> actually, can't think of any
22:16:53 <oklopol> :)
22:16:57 <oklopol> maybe habit then
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:52 <oklopol> hmm
22:18:59 <oklopol> i'm a bit dense, can you elaborate?
22:19:22 <oklopol> you have structs in the lang?
22:19:42 <RodgerTheGreat> not yet
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:11 <oklopol> if using 1-indexing
22:20:17 <RodgerTheGreat> but I need something *like* them to discourage rampant use of pointers and to make manipulating data easier
22:20:22 <RodgerTheGreat> yeah
22:21:14 <oklopol> you might do pass by pointer like most "clean" langs
22:21:22 <oklopol> java for one
22:21:23 <RodgerTheGreat> possibly
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:25 <oklopol> not object... but thing
22:22:33 <RodgerTheGreat> I'm still thinking about it
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:23:52 <RodgerTheGreat> yes
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:32 <RodgerTheGreat> I don't know yet
22:24:39 <RodgerTheGreat> it's still a subject of thought
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:25:41 <oklopol> the last one does not
22:25:49 <oklopol> eh
22:25:52 <oklopol> actually
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:26:34 <oklopol> kay
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:10 <oklopol> hmm
22:31:29 <oklopol> i'm using file_get_contents on the line above... i think my problem's solved :P
22:33:03 <oklopol> workz.
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:33 <SevenInchBread> which you could do with a symbol construct.
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:37:00 <oklopol> symbol construct?
22:37:50 <SevenInchBread> have a datatype that literally represents a variable.
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:12 <oklopol> ah
22:38:30 <oklopol> so pretty much a java-style pointer only made explicit
22:38:43 <oklopol> OR a c++ reference
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:42:39 <oklopol> well, it's not that much
22:43:18 <oklopol> except, i use <> for use of templates and the symbol thingie quite mixedly :P
22:43:25 <oklopol> so... it kinda suxxored
22:45:31 <SevenInchBread> so... basically my concept of a variable is something like an entry in a hash table...
22:45:45 <oklopol> i know
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:09 <oklopol> *probably
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:54 <SevenInchBread> duck typing just... makes sense to me.
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:27 <SevenInchBread> I have no clue how compilers represent variables...
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:39 <oklopol> *sense
22:49:53 <SevenInchBread> hmmm... does the number contain information about its type?
22:50:10 <oklopol> it might
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:53 <oklopol> unnecessary
22:55:57 <oklopol> but you're getting closer :)
22:56:10 <SevenInchBread> ...
22:56:20 <SevenInchBread> yeah, TYPO LOL
22:56:21 <oklopol> i've seen you say nessicary many times :D
22:56:30 <SevenInchBread> -nod- habits.
22:56:31 <oklopol> nessecary is in-between
22:56:35 <nazgjunk> "unessecary" is one beautiful piece of typo
22:56:41 <SevenInchBread> I've been catching myself more with that one...
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:22 <SevenInchBread> it's... half the opposite of it. :)
22:59:23 <oklopol> well
22:59:30 <oklopol> my terminology might be wrong
22:59:34 <oklopol> it's often wrong :<
22:59:40 <SevenInchBread> duck typing basically means dynamic typing and strong typing.
22:59:45 <oklopol> ah
22:59:55 <SevenInchBread> so... it's half the opposite.
22:59:58 <SevenInchBread> :)
23:00:09 <oklopol> hmm, why 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:01:18 <oklopol> curse this brain of mine
23:02:31 <SevenInchBread> duck typing determines what can happen solely what something can do.
23:02:37 <SevenInchBread> http://en.wikipedia.org/wiki/Duck_test
23:02:47 <SevenInchBread> *on
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:22 <oklopol> nah
23:06:44 <SevenInchBread> or at least, something similar to that.
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:07:09 <oklopol> *any type of a value
23:08:27 <SevenInchBread> ah... basically the type system is... heh... strong.
23:08:42 <SevenInchBread> it doesn't impose artifical restrictions?
23:08:50 <SevenInchBread> bah *isn't
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:03 <SevenInchBread> *biased
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:38 <oklopol> "4"+1
23:17:42 <oklopol> and the like
23:17:43 <oklopol> ?
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:19:16 <SevenInchBread> ah... alright.
23:19:32 <SevenInchBread> yeah, there can be implicit conversions.
23:19:36 <SevenInchBread> ...I think.
23:19:38 <oklopol> yes
23:20:27 <oklopol> string s = get_string(); int i = get_int(); print s + i; even would be perfectly legal
23:20:34 <oklopol> *might
23:21:02 <oklopol> BUT, it's known at compile-time whether an integer can be added to a string
23:24:03 <SevenInchBread> Perl is pretty liberal about type conversitions...
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:30:02 <SevenInchBread> Perl is... humble.
23:30:25 <SevenInchBread> It doesn't push an ideology on you.
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:33:49 <SevenInchBread> ...lots of caps.
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:35:14 <oklopol> hehe :)
23:35:30 <SevenInchBread> I wish there were three cases.
23:35:39 <SevenInchBread> ..and one of them was really squiggly.
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:39:17 <SevenInchBread> -nod- I like munging up Python just because I can..
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:43:59 <oklopol> but i suppose you won't
23:44:14 <SevenInchBread> doubt it...
23:44:29 <SevenInchBread> Sohpia is far too... dynamic to be static. :P
23:44:33 <oklopol> so... a script language running a script language... quite ridiculous
23:44:34 <SevenInchBread> *ph
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:47 <SevenInchBread> Lisp is compiled (for the most part) but is dynamic
23:45:53 <SevenInchBread> Common Lisp anyways.
23:45:53 <oklopol> well, they have a sort of a connection
23:45:59 <oklopol> but
23:46:15 <oklopol> hmm
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:45 <SevenInchBread> GOOD DAY SIR
23:47:51 <oklopol> do it in python, without inner functions or lambdas, and give it to me for python -> c conversion
23:47:55 <SevenInchBread> AND WELCOME TO THE LAND OF MOST CURIOUSITY.
23:48:01 <oklopol> i've done a lot of vb -> c at least :)
23:48:14 <Figs> Hello.
23:48:18 <oklopol> Hello.
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:49:59 <SevenInchBread> toiling with language implementations...
23:50:13 <Figs> same here
23:50:23 <Figs> what type of language ;)
23:50:37 <SevenInchBread> hmmm... kind of OO-ish... but not annoyingly so.
23:50:45 <oklopol> you go first, Figs
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:52:42 <oklopol> :P
23:56:35 <oklopol> we had #irp for that for a while but it died quite quickly :D
23:56:58 <Figs> ah :P
23:57:10 <Figs> "With his beard in the mailbox" O_o
23:57:21 <Figs> stumbleupon gives me some weird shit sometimes
2007-03-26
00:05:58 <Figs> Hello!
00:07:52 <oklopol> Hell no.
00:20:21 <Figs> http://www.space-invaders.com/rubikdown.html
00:20:22 <Figs> O_o
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:27 <Figs> ah ;)
00:39:29 <Figs> :P
00:39:36 <Figs> so what usually goes on here?
00:40:36 <oklopol> discussion about languages, usually
00:40:49 <Figs> excellent. :D
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:45 <oklopol> never used
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:45:08 <oklopol> (iirc)
00:45:43 <Figs> :P
00:47:23 <SevenInchBread> hmmm...
00:47:32 <SevenInchBread> well, coroutines are simply awesome... and they use a form of continuation.
00:47:52 <Figs> coroutines?
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:50:55 <SevenInchBread> heh, most likely,.
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:23 <Figs> yeah
00:51:26 <Figs> no
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:52:41 <SevenInchBread> it basically looks like pseudocode
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:35 <Figs> O.o
00:53:36 <Figs> ok
00:53:39 <oklopol> s/next arg/next_arg
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:54:45 <Figs> hmm
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:55:08 <oklopol> (yield being python)
00:56:06 <Figs> f=f(x);
00:56:13 <Figs> f(y);
00:56:29 <Figs> where f is a function returning a function type :P
00:57:00 <SevenInchBread> ...it's probably the same thing I'd imagine.
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:23 <Figs> but eh
00:58:28 <oklopol> ?
00:58:35 <oklopol> return path?
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
00:59:43 <Figs> ok :)
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:41 <oklopol> now what's that mean?
01:01:44 <Figs> with f returning multiple values
01:01:57 <oklopol> ah
01:01:58 <oklopol> i see
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:28 <RodgerTheGreat> I have returned
01:02:30 <oklopol> it's quite clever
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:02:50 <SevenInchBread> ..in a text-based game :)
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:21 <Figs> *would
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:04:52 <oklopol> <correction/>...
01:05:16 <oklopol> do subdiv[val1:a val2:b] to [subresult:sub divresult:div]
01:05:24 <oklopol> in def main
01:05:27 <oklopol> right?
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:06:25 <RodgerTheGreat> oklopol: that is how they work
01:07:05 <SevenInchBread> ...I probably would.
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:36 <Figs> mm
01:08:53 <oklopol> i don't know why i assume that.
01:09:06 <SevenInchBread> even non-()'d expressions are blocks.
01:09:08 <RodgerTheGreat> oklopol: it is one approach that might work
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:39 <RodgerTheGreat> heh
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:07 <Figs> (sub,div)
01:11:10 <oklopol> it's a function
01:11:12 <Figs> unless I am misreading?
01:11:12 <oklopol> though
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:24 <SevenInchBread> Common Lisp macros are very similar.
01:11:40 <Figs> abstract base classes (ABCs) in C++ then
01:11:47 <Figs> ok
01:11:51 <Figs> gotcha
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:47 <oklopol> define action
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:28 <SevenInchBread> ...my limited experience, mind you
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:13:48 <oklopol> like that
01:13:50 <SevenInchBread> Lisp, for example. :)
01:13:57 <oklopol> well, yeah :)
01:14:00 <Figs> Lisp has statements :P
01:14:09 <Figs> though not the "blah;"
01:14:11 <Figs> form
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:14:55 <Figs> explain?
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 <oklopol> well
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:17:12 <RodgerTheGreat> int rtn
01:17:28 <RodgerTheGreat> do input[0] to [rtn]
01:17:35 <Figs> mmm
01:17:39 <Figs> interesting
01:18:04 <RodgerTheGreat> do mid[rtn,5,8] to [rtn]
01:18:18 <oklopol> hmm
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:18:21 <RodgerTheGreat> do length[rtn] to rtn[]
01:18:31 <RodgerTheGreat> that's really loose, though
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:37 <oklopol> hmm
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:08 <oklopol> *in
01:20:18 <SevenInchBread> hmmm... what does mid do?
01:20:22 <oklopol> substr
01:20:26 <SevenInchBread> ah.
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:20:37 <SevenInchBread> let's see....
01:21:03 <RodgerTheGreat> I gave a bad initial example...
01:21:07 <SevenInchBread> and what's input[0] ...like stdin?
01:21:13 <Figs> does it matter?
01:21:14 <Figs> :P
01:21:16 <oklopol> input[0] is input's length
01:21:19 <oklopol> in bullet
01:21:23 <SevenInchBread> ah.
01:21:28 <oklopol> since arrays and strings are 1-indexed
01:21:29 <RodgerTheGreat> it doesn't. It's just a random function
01:22:18 <Figs> so... how exactly are you combining input[0], 5, and 8?
01:22:23 <Figs> for mid?
01:22:31 <Figs> or can you not do that as a single statement?
01:22:32 <RodgerTheGreat> I JUST MADE THAT FUNCTION UP
01:22:42 <RodgerTheGreat> you're overanalyzing a poor example
01:22:43 <SevenInchBread> ... :)
01:22:50 <Figs> eep :P
01:22:53 <Figs> I don't care what it does
01:22:59 <Figs> just how your interfaces connect
01:23:14 <RodgerTheGreat> let's go back to this better explanation:
01:23:15 <RodgerTheGreat> in bullet "do foo[arg:x] to [y:val]" is equivalent to the C-style "y=foo[arg];
01:23:22 <Figs> ok...
01:23:23 <Figs> so
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:08 <oklopol> no
01:24:11 <Figs> no?
01:24:17 <Sukoshi> Maybe.
01:24:23 <Figs> do*
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:49 <oklopol> this is how i see it
01:24:56 <Figs> I thought input[1] was a function O.o
01:25:09 <oklopol> oh
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:25:55 <Figs> array?
01:26:03 <oklopol> inputs in an array :P
01:26:08 <oklopol> whatever they are...
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:17 <RodgerTheGreat> that's why they work how they do
01:26:41 <RodgerTheGreat> and why my example, I will say again, sucked
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:02 <RodgerTheGreat> they *ARE* 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 <oklopol> s/array/array:
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:14 <Sukoshi> Scheme ownz0rz.
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:22 <RodgerTheGreat> yeah, I'm glad I found this channel
01:29:32 <RodgerTheGreat> hi, Sukoshi! Long time no see.
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:27 <RodgerTheGreat> Sukoshi: have you seen the language I'm working on?
01:30:37 <oklopol> http://www.nonlogic.org/dump/text/1174856252.html
01:30:37 <Sukoshi> RodgerTheGreat: Nopes.
01:30:38 <Figs> no
01:30:46 <oklopol> sukoshi: link.
01:30:48 <RodgerTheGreat> thanks, oklopol
01:30:50 <Figs> making syntax for different operations visually distinct
01:30:50 <oklopol> :P
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:31:49 <RodgerTheGreat> neato
01:31:59 <RodgerTheGreat> our own Tesla
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:32:59 <SevenInchBread> s/but/both
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:52 <Figs> *consisting
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:37:04 <Figs> lol
01:37:09 <Figs> Paul Graham?
01:37:21 <SevenInchBread> ...something like that.
01:37:28 <SevenInchBread> Python and its readability creates fanatics too.
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:18 <Figs> Tcl?
01:39:26 <SevenInchBread> That's Perl's motto
01:39:30 <SevenInchBread> There's more than one way to do it.
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:40:10 <Figs> hehe
01:41:05 <RodgerTheGreat> it's just a feature of the language...
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:33 <Figs> lol
01:42:35 <Figs> ;)
01:42:36 <oklopol> well.... not thoroughly
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:06 <oklopol> wow
01:43:08 <RodgerTheGreat> lol
01:43:11 <oklopol> now THAT's a language.
01:43:21 <Figs> :P
01:43:32 * RodgerTheGreat tries to remember his last coding-induced orgasm...
01:43:38 <Figs> ...
01:43:54 <Figs> am I in #esoteric or #ecstacy ? :P
01:43:58 <RodgerTheGreat> I'm kinda drawing a blank here, SevenInchBread
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:46:11 <Figs> ROFL!
01:46:13 <Figs> ;)
01:46:51 <RodgerTheGreat> homespring is indeed fun
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:11 <Figs> lol
01:48:21 <Figs> eh, makes sense :P
01:48:26 <RodgerTheGreat> that sounds frighteningly accurate
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:39 <RodgerTheGreat> that's pretty scary, dude
01:49:54 <Figs> have fun at the international obfuscated C coding contest :)
01:49:57 <oklopol> :P
01:50:00 <RodgerTheGreat> but as they say, "enjoy what you do"...
01:50:31 <oklopol> i just bruteforced the seeds for the functions and obfuscated manually for 3 hours
01:50:31 <SevenInchBread> ...I once tried to obfuscated Python...
01:50:36 <SevenInchBread> it didn't work well.
01:50:42 <oklopol> oh yeah it does
01:50:46 <SevenInchBread> well... yeah.
01:50:47 <oklopol> python loves to be obfuscated
01:50:50 <SevenInchBread> but not as well as like... Perl
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:08 <RodgerTheGreat> haha
01:52:11 <RodgerTheGreat> nice
01:52:21 <Figs> found that on ioccc
01:52:27 <Figs> couldn't find the ball program :\
01:52:32 <RodgerTheGreat> I figured from the URL
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:08 <oklopol> what's that do?
01:53:18 <Figs> I don't know.
01:53:30 <oklopol> mine was hello world
01:53:35 <oklopol> in case i didn't mention
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:39 <oklopol> ?
01:54:47 <oklopol> what
01:54:48 <oklopol> ?
01:54:51 <Figs> compile it and see :P
01:55:06 <oklopol> hmm
01:55:07 <RodgerTheGreat> based purely on the defines, it could do a lot of things...
01:55:10 <oklopol> that's a define thingie
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:01 <oklopol> goto
01:56:07 <Figs> doesn't compile for me :P
01:56:07 <oklopol> <3
01:56:26 <Figs> but I know what's wrong... I think
01:56:26 <oklopol> i'll try
01:57:17 <Figs> nope...
01:57:18 <Figs> doesn't work
01:57:22 <Figs> gcc dies
01:57:30 <Figs> invalid preprocessing directive #o
01:58:27 <oklopol> http://www.vjn.fi/pb/p514653524.txt
01:58:27 <oklopol> and now
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:07 <Figs> yeah
02:00:14 <Figs> I thought C supported it
02:00:21 <Figs> but @_@
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:18 <Figs> hmm
02:04:19 <Figs> :\
02:04:31 <Figs> *shrug*
02:04:44 <Figs> have you guys read the Crenshaw "Lets make a compiler!" series?
02:04:49 <RodgerTheGreat> those last two lines #o garbage....
02:04:53 <RodgerTheGreat> just don't make sense to me
02:05:02 <RodgerTheGreat> unless I don't understand what define does
02:05:03 -!- ShadowHntr has quit ("End of line.").
02:05:52 <RodgerTheGreat> nope
02:05:57 <RodgerTheGreat> sounds interesting
02:06:23 <Figs> I found it from bloodshed.net
02:06:48 <RodgerTheGreat> link us up
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> got 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:54 <Figs> ah
02:07:54 * RodgerTheGreat downloads
02:07:59 <Figs> I usually use rafb.net/paste
02:08:02 <Figs> but thanks
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:26 <Figs> ;)
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:47 <RodgerTheGreat> eew
02:09:54 <Figs> but it is easy enough to read
02:09:54 <oklopol> god c is beautiful <3
02:09:55 <RodgerTheGreat> well, I'm sure I can still learn from it
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:14 <RodgerTheGreat> awesome
02:11:24 <RodgerTheGreat> 68k's have a pretty clean instruction set
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:11 <mvivian> mine are next to yours
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:39 <mvivian> request granted
02:15:41 <Figs> but I haven't read it
02:17:55 <lament> c.... beautiful?
02:18:45 <oklopol> yeah
02:21:39 <Figs> *shrug*
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:01 <SevenInchBread> ....nope.
02:26:07 * SevenInchBread just got back from obfuscating some Python.
02:26:21 <SevenInchBread> I managed to change x = [5,4,3,2,1] into...
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:26:25 <SevenInchBread> )
02:26:35 <Figs> :X
02:26:42 <Figs> eep
02:26:50 <SevenInchBread> ...not very elegant or anything... but fuck you.
02:26:53 <SevenInchBread> :)
02:27:03 <oklopol> obfuscation is fun, deobfuscation is hard
02:27:15 <SevenInchBread> ...that one was a mind bender.
02:27:19 <SevenInchBread> because I had to DEBUG it.
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:32 <Figs> o.o
02:28:40 <Figs> so, that's what it was supposed to do :D
02:28:47 <SevenInchBread> -nod-
02:28:56 <Figs> missed that above
02:29:05 <SevenInchBread> I tested it to check for sure. :)
02:29:06 <oklopol> okay
02:29:07 <oklopol> http://www.vjn.fi/pb/p263653563.txt
02:29:13 <oklopol> i
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:29:46 <SevenInchBread> ooh... that's a good one
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:21 <oklopol> yeah
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:02 <SevenInchBread> I might make a Python obfuscator one of these days.
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:27 <SevenInchBread> ...I shall present my finding to #python.
02:31:31 <oklopol> Figs i just demacroed it, calculated the 1<<1<<... thingie and calculated the calculations
02:31:33 <SevenInchBread> you can watch them kill me if you'd like.
02:31:44 <Figs> ooh ok
02:32:06 <oklopol> i thought i was there already
02:32:07 <oklopol> :\
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:04 <SevenInchBread> it does?
02:35:12 <oklopol> yes
02:35:13 <SevenInchBread> oh... well maybe __getattribute__
02:35:33 <oklopol> [::], getattribute, (... for ... in ...), etc
02:35:37 <oklopol> hmm
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:18 <oklopol> support, might be
02:36:23 <Figs> mm
02:36:33 <Figs> impliment? support?
02:36:39 * Figs scratches head
02:37:07 <oklopol> support... i get stupider by the day :)
02:37:56 <Figs> ooh
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:03 <Figs> :D)
02:39:27 <oklopol> hmm wonder why i never thought of that
02:39:32 <oklopol> sounds cool :)
02:40:01 <Figs> have fun
02:40:09 <Figs> I think it would give me a headache :P
02:40:15 <Figs> or 10
02:40:17 <Figs> :)
02:43:54 <SevenInchBread> ...I saw an excellent photoshop of a C quine in the shape of a ying-yang.
02:44:39 <RodgerTheGreat> how does photoshop help for doing that?
02:45:04 <SevenInchBread> it doesn't... they just gave it color and made it look cooler. :)
02:46:13 <RodgerTheGreat> ah
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:42 <Figs> ooh
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:49:41 <oklopol> tell me
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:00 <SevenInchBread> ...I've got way too many projects in mind.
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:31 <Figs> or something
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:07 <Figs> (unrelated)
02:58:12 <Figs> but you might like that oklopol
02:59:16 <oklopol> i might
02:59:18 <oklopol> anyway
02:59:19 <oklopol> did you
02:59:21 <oklopol> check it?
02:59:24 <oklopol> :O
02:59:31 <oklopol> i couldn't find it :\
02:59:40 <Figs> I think I got it
02:59:52 <Figs> int write(int handle, char *buffer, unsigned length);
02:59:53 <SevenInchBread> .........I'm going to have that stuck in my head.
03:00:16 <Figs> does that make sense?
03:00:46 <SevenInchBread> ah.
03:00:56 <oklopol> andle?
03:01:02 <oklopol> *h
03:01:03 <Figs> handle
03:01:07 <Figs> yeah
03:01:12 <SevenInchBread> the file handle, a reference to a buffer, and a length itneger.
03:01:23 <oklopol> ah, oki
03:01:23 <SevenInchBread> ...kind of convuluted... but, eh.
03:04:05 <Figs> I can't find any good info on it
03:04:58 <SevenInchBread> ...I really would like to make an operating system...
03:05:16 <Figs> how much asm do you know?
03:05:22 <SevenInchBread> ...none. :)
03:05:22 <Figs> x86
03:05:24 <Figs> ah
03:05:26 <Figs> :(
03:05:30 <SevenInchBread> can't be too hard can it?
03:05:35 <Figs> :P
03:05:54 <Figs> if you thought that previous version oklopol had was confusing
03:06:08 <Figs> ... :P
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:46 <Figs> anyway
03:06:49 <Figs> you can do most of it in C
03:06:57 <Figs> once you port the libraries
03:06:58 <SevenInchBread> ....I've never actually used C.
03:07:11 <SevenInchBread> mainly because I don't think I'd like C.
03:07:13 <Figs> I have a friend who was working on an OS
03:07:17 <Figs> called IceBox
03:07:27 <Figs> hehe
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:08:41 <SevenInchBread> -shrug- probably. I'm not really sure.
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:26 <Figs> O_o
03:13:29 <Figs> doesn't match though
03:13:30 <Figs> 2 params
03:13:45 <oklopol> i think your previous write was correct
03:13:51 <Figs> yeah
03:13:55 <Figs> but I can't find it
03:13:58 <Figs> anywhere
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:24 <oklopol> i know
03:15:26 <oklopol> found that 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:15:57 <oklopol> as you pasted.
03:16:01 <Figs> mmm
03:16:02 <oklopol> it fits, it's right.
03:16:03 <Figs> O.o
03:16:07 <Figs> ok
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:41 <oklopol> ?
03:17:43 <Figs> and a new line
03:17:45 <Figs> and save it
03:17:49 <Figs> ;)
03:18:07 <oklopol> hmm
03:18:10 <oklopol> then what?
03:18:20 <Figs> reopen it
03:18:40 <Figs> it will add a line like
03:18:41 <Figs> 4:16 PM 3/25/2007
03:19:19 <oklopol> nice
03:19:21 <oklopol> didn't know
03:19:35 <Figs> you can also manually insert date/time by pressing F5
03:19:48 <Figs> or going edit -> time/Date
03:19:50 <Figs> ;D
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:40 <Figs> thanks
03:21:42 <Figs> do this
03:21:46 <Figs> open a new notepad document
03:21:47 <Figs> and type
03:21:51 <Figs> 'bush hid the facts'
03:21:53 <Figs> (no quotes)
03:21:56 <Figs> and save it
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:22:49 <Figs> :P
03:22:50 <oklopol> ?????????
03:22:55 <Figs> hehehehe
03:23:01 <oklopol> what's that say?
03:23:10 <Figs> all I see is ?'s
03:23:12 <oklopol> oh
03:23:17 <oklopol> chinese or smth
03:23:18 <Figs> but I'm assuming you pasted chinese characters ;)
03:23:20 <oklopol> the bush thing
03:23:22 <oklopol> yes.
03:23:22 <Figs> yep
03:23:27 <Figs> it doesn't say anything
03:23:33 <oklopol> hmm
03:23:36 <oklopol> really?
03:23:38 <Figs> it's a bug from the way notepad saves files
03:23:44 <oklopol> :\
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:15 <oklopol> no.
03:25:16 <Figs> type mspaint
03:25:22 <Figs> and load paint
03:25:25 <Figs> then
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:26:59 <oklopol> yeah :)
03:27:01 <Figs> instead of just 8
03:27:03 <oklopol> got it on the first try
03:27:06 <Figs> ;)
03:27:12 <Figs> ok
03:27:28 <Figs> now, press ctrl and then click on a color
03:27:36 <Figs> 3rd choice for a color
03:27:36 <oklopol> :O
03:27:43 <oklopol> what's that do?
03:27:50 <Figs> you can draw with it by using ctrl
03:28:19 <oklopol> heh cool :P
03:28:30 <oklopol> anything else?
03:28:37 <Figs> sure
03:28:41 <Figs> close paint
03:28:44 <Figs> press windows-r
03:28:46 <Figs> and type
03:28:46 <oklopol> www.eeggs.com ?
03:28:50 <oklopol> or what's it called
03:28:56 <Figs> I've posted the 10x zoom on there
03:29:01 <Figs> I think
03:29:11 <oklopol> you found it?
03:29:16 <Figs> no
03:29:20 <oklopol> anyway, continue :)
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:45 <oklopol> :|
03:29:49 <oklopol> oh :)
03:29:57 <Figs> (which no one bothers to read)
03:30:01 <Figs> type
03:30:01 <oklopol> the bush thing cannot be a bug
03:30:06 <oklopol> entirely at least
03:30:14 <Figs> eudcedit
03:30:17 <Figs> and open it
03:30:28 <Figs> you will get the 'private character editor' program
03:30:44 <oklopol> wtf is that :O
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:14 <oklopol> hmm
03:31:16 <Figs> via the symbol thing
03:31:17 <oklopol> how is it used?
03:31:37 <Figs> pretty much like paint
03:32:10 <Figs> want to see the ancient version of notepad?
03:32:13 <oklopol> yeah :D
03:32:18 <Figs> windows-r
03:32:20 <Figs> edit
03:32:35 <oklopol> ah
03:32:37 <Figs> and press run
03:32:42 <oklopol> edit i've used a lot
03:32:42 <oklopol> oh
03:32:48 <oklopol> hehe :)
03:32:53 <Figs> seen it before?
03:33:08 <oklopol> edit.exe?
03:33:14 <Figs> no
03:33:17 <Figs> edit.com
03:33:24 <Figs> I just type edit
03:33:30 <oklopol> yeah, well, i had 3.11
03:33:36 <Figs> ah
03:33:37 <oklopol> so... i've seen it
03:33:37 <Figs> ;)
03:33:39 <oklopol> :)
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:33:58 <Figs> hee hee
03:34:08 <Figs> I set up my own batch commands
03:34:11 <Figs> and programs
03:34:16 <Figs> by modifying the path variable
03:34:25 <Figs> and changed the shortcut buttons on my laptop
03:34:27 <Figs> so now
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:01 <Figs> heheh
03:35:05 <oklopol> :)
03:35:28 <oklopol> well, my laptop has a program which lets you decide what button does what
03:35:32 <Figs> yeah
03:35:35 <Figs> mine does too
03:35:36 <Figs> but it sucks
03:35:46 <oklopol> mine doesn't
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:13 <Figs> sd
03:36:19 <Figs> which calls the show desktop command
03:36:34 <Figs> desktop
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:15 <Figs> prime
03:37:22 <Figs> which checks a number's primality
03:37:26 <Figs> (up to any length)
03:37:35 <Figs> clone
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:02 <Figs> start cmd
03:38:29 <Figs> and clear
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:04 <Figs> sidestep?
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:41:48 <oklopol> yeah
03:42:05 <oklopol> it was in tk ultimate
03:42:10 <oklopol> :P
03:42:16 <Figs> strafe?
03:42:19 <oklopol> ya!
03:42:22 <oklopol> thanks :)
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:31 <Figs> no
03:45:59 <oklopol> i do not feel so good, should've slept :<
03:46:09 <Figs> :(
03:46:17 <Figs> I'll be hitting the hay soon
03:46:27 <oklopol> it's 6 am soon
03:46:27 <Figs> 11 pm here
03:46:35 <oklopol> hehe :)
03:46:45 <Figs> it's only 4:44 where my computer thinks it is ;)
03:46:53 <Figs> (pm, that is)
03:47:32 <Figs> quick! what time zone does my computer think it's in? ;)
03:47:40 <oklopol> OMG :\
03:47:46 <oklopol> SWEDEN?
03:47:49 <oklopol> CAPS
03:47:58 <Figs> no
03:48:06 <Figs> 16:45
03:48:14 <Figs> to use 24 hour clock
03:48:15 <Figs> ;)
03:48:17 <oklopol> australia, i have no idea
03:48:21 <Figs> Hawaii
03:48:34 <oklopol> same thing o_O
03:48:41 <Figs> nah
03:48:49 <oklopol> hmm, i'll warm up a pizza and watch some simpsons...
03:48:55 <Figs> hee :D
03:49:05 <Figs> let's see, you're in GMT+3?
03:50:17 <Figs> where are you?
03:50:25 <oklopol> guess.
03:50:51 <Figs> Iraq?
03:51:22 <oklopol> nope
03:51:42 <Figs> russia?
03:51:53 <oklopol> nope, and that's the wrong time zone
03:51:58 <Figs> ?
03:52:15 <oklopol> actually
03:52:22 <oklopol> i'm +2 GMT :)
03:52:26 <oklopol> sorry
03:52:43 <Figs> you have some version of DST where you are?
03:53:05 <oklopol> oh, indeed i do
03:53:05 <Figs> Lithuania?
03:53:14 <oklopol> i don't know what that is
03:53:18 <oklopol> :P
03:53:21 <oklopol> but... no.
03:53:23 <Figs> lol
03:53:27 <Figs> it's in eastern europe
03:53:30 <Figs> Egypt?
03:53:33 <oklopol> xD
03:53:50 <Figs> South Africa? :P
03:53:58 <oklopol> nope, and you gave me a good laught
03:54:01 <oklopol> *laugh
03:54:09 <Figs> :D
03:54:12 <oklopol> ah
03:54:21 <oklopol> you meant lithuania is in eastern europe
03:54:26 <Figs> yes
03:54:31 <oklopol> i thought you meant egypt, would've been funny :P
03:54:36 <Figs> ah :P
03:54:43 <Figs> no, I'm silly,
03:54:46 <Figs> but not that silly
03:54:50 <oklopol> hehe, yeah
03:54:58 <oklopol> but still you haven't guessed
03:55:13 <Figs> Greece?
03:55:25 <oklopol> we're spamming the channel with important content, i'd say :P
03:55:27 <oklopol> hmm
03:55:28 <oklopol> not
03:55:32 <Figs> :P
03:55:34 <oklopol> :P
03:55:48 <Figs> Botswana
03:55:51 <oklopol> no
03:55:57 <oklopol> go up
03:56:00 <Figs> Are you in Europe, Africa, or Asia?
03:56:17 <Figs> Finland?
03:56:28 <Figs> Turkey?
03:56:36 <Figs> Sudan?
03:56:37 <oklopol> finland
03:56:39 <Figs> yay
03:56:55 <oklopol> :P
03:57:08 <Figs> http://home.wanadoo.nl/~timpol/gmt_map.gif
03:57:45 <Figs> hehe
03:57:50 <Figs> you can see what I was guessing off of
03:57:54 <oklopol> cheater
03:57:56 <oklopol> :)
03:58:00 <Figs> :P
03:58:09 <Figs> I haven't memorized what countries are in which time zones
03:58:20 <oklopol> pathetic :O
03:58:38 * oklopol remembers them twice
03:58:41 <RodgerTheGreat> heh
03:58:56 <Figs> :P
03:58:59 <Figs> it
03:59:04 <Figs> is 11 pm here
03:59:07 <Figs> where am i? :P
03:59:20 <oklopol> america
03:59:31 <Figs> America's a big place
03:59:35 <Figs> two continents
03:59:36 <oklopol> usa
03:59:44 <Figs> USA is a big place :P
03:59:49 <Figs> but yes
03:59:51 <oklopol> new york
03:59:53 <Figs> nope
04:00:00 <oklopol> iowa
04:00:04 <Figs> nah
04:00:06 <oklopol> :D
04:00:15 <Figs> I think that's a different time zone
04:00:18 <Figs> ;)
04:00:32 <Figs> DST! :P
04:00:53 <oklopol> hmm..... somewhere on the east coast anyways
04:00:57 <Figs> yeah
04:01:00 <Figs> ;D
04:01:03 <Figs> Virginia
04:01:05 <Figs> near DC
04:01:15 <Figs> but usually, I'm in Hawai'i
04:01:19 <Figs> (GMT-10)
04:01:24 <oklopol> yeah... i'd never've guessed
04:01:29 <Figs> rofl
04:01:40 <Figs> hell, I could be in Peru :P
04:01:47 <Figs> that's GMT-5
04:02:07 <RodgerTheGreat> I'm in Michigan
04:02:16 <Figs> greets :)
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:02:55 <Figs> :p
04:03:04 <RodgerTheGreat> actually, we're having the beginnings of a beautiful spring here at Michigan Tech
04:03:07 <oklopol> like... 10 celsius
04:03:08 <Figs> nice
04:03:12 <Figs> rofl
04:03:15 <oklopol> melt'alicious
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:01 <Figs> ah, nvrmnd
04:08:08 <Figs> she goes to U of Michigan
04:08:21 <Figs> bleh.
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:07 <Figs> rofl
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:11 <oklopol> hehe :D
04:15:36 <oklopol> well, since i know about 5 ppl, i find that quite funny as well
04:16:16 <Figs> really? :P
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:23:39 <Figs> :p
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:27 <Figs> what?
04:59:51 <Figs> O.o
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:00:55 <Sukoshi> Oh, add Norse too.
05:01:07 <Sukoshi> Errrrr
05:01:18 <Sukoshi> s/Norse/Norweigan/ (wtf was I thinking?)
05:02:56 <Figs> o.o
05:03:03 <Figs> ok...
05:03:18 <Sukoshi> EUの人間の文化の違うことは短いと思う。(笑)
05:03:42 <oklopol> Sukoshi where were you watching that?
05:04:05 <Sukoshi> In a chatroom.
05:04:12 <Figs> afk
05:04:39 <oklopol> okay... you must've misunderstood something if it was this chatroom :)
05:05:01 <Sukoshi> Not this chatroom.
05:05:29 <oklopol> hmm
05:05:37 <oklopol> school -------->
05:36:10 <Figs> back
05:40:03 -!- _D6Gregor1RFeZi has changed nick to GregorR.
06:07:53 <RodgerTheGreat> good night everyone
06:07:59 <Figs> `night
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:38:01 <Sukoshi> Is that even possible?
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.
08:34:58 <lament> ..okay
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:00:49 <ais523> welcome back, clog!
15:01:09 <SimonRC> Forte is just nuts
15:01:33 <ais523> Try writing the interpreter!
15:01:35 <Figs> oooh...
15:01:38 <Figs> idea
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:01:49 <Figs> like
15:01:53 <Figs> Fire
15:01:54 <Figs> and Ice
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:02:45 <SimonRC> where is the thutu2 pec?
15:02:48 <SimonRC> *spec?
15:03:03 <ais523> well, I modify the language whenever I want to add a new feature
15:03:11 <SimonRC> sigh
15:03:18 <SimonRC> what is thutu2
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:51 <Figs> yeah
15:05:56 <Figs> try make the face
15:05:57 <Figs> :P
15:06:12 <Figs> it's sort of surprised or like,
15:06:15 <Figs> "wtf?"
15:06:26 <RodgerTheGreat> hey, figs. How's it goin'?
15:06:30 <Figs> hi rodger
15:06:52 <Figs> I'm reading C-tricks that'll get you fired ... if your manager has any sense ;)
15:07:16 <Figs> you?
15:07:41 <RodgerTheGreat> surfing the net, reading some webcomics, doing further work on "bullet"
15:08:08 <Figs> ;)
15:08:13 <Figs> O.o
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:46 <RodgerTheGreat> quicksort?
15:08:50 <Figs> mm
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:32 <RodgerTheGreat> so it *is* quicksort, right?
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:15 <Figs> mmmmmm
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:12 <Figs> hehe
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:26 <Figs> no
15:16:29 <Figs> but you can redefine ,
15:16:31 <Figs> ;)
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:49 <Figs> (functions)
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:28 <SimonRC> :-S
15:21:30 <ais523> and everything in Thutu
15:21:41 <ais523> so it's not that different really
15:21:44 <SimonRC> ok
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:22:37 <SimonRC> why is is slow?
15:23:19 <ais523> because in Thutu (and Thutu2), execution speed is proportional to the amount of memory the program's using
15:23:27 <SimonRC> ah, ok
15:23:31 <ais523> and in Forte, n-bottles-of-beer is O(n) in space
15:23:36 <SimonRC> ouch
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:24:37 <SimonRC> yeah
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:04 <Figs> :)
15:35:15 <Figs> thanks ^_^
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:35:53 <ais523> s/programs/problems/
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:15 <Figs> ;)
15:39:19 <Figs> usually with operator <<
15:39:24 <SimonRC> heh
15:39:26 <Figs> because it's precedence is better
15:39:31 <Figs> but also with operator+=
15:39:39 <Figs> and +
15:39:45 <SimonRC> I think that the two ops need a superclass to avoid the repetition seen there
15:39:53 <Figs> hmm?
15:39:54 <Figs> yeah
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:40:48 <Figs> :P
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:41:24 <Figs> for quote?
15:41:32 <SimonRC> no, I said:
15:41:37 <SimonRC> operator' '
15:41:42 <Figs> o.O
15:41:42 <SimonRC> operator "space"
15:41:44 <Figs> oh
15:41:46 <Figs> :P
15:41:49 <SimonRC> instead of commma
15:42:15 <Figs> that's why I said "lisp-like" instead
15:42:19 <Figs> since you need the commas
15:42:22 <Figs> yeah
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:10 <ais523> LET 32 = 44
15:43:16 <Figs> the main objection I've gotten is the lack of a quote function
15:43:19 <Figs> from lisp
15:43:27 <ais523> (I'm,redefining,space,to,comma,so,that,you,can,overload,it,properly)
15:43:33 <Figs> ;)
15:45:02 <Figs> I wish C++ had virtual member template functions
15:45:10 <Figs> :(
15:45:19 <ais523> Invent your own language with them in
15:45:22 <Figs> :P
15:45:25 <Figs> I'm working on that
15:45:40 <Figs> although, it isn't meant as an esolang
15:45:54 <Figs> and actually
15:46:01 <Figs> it's only the functionality that'll be there
15:46:04 <Figs> ;P
15:46:06 <ais523> I'm working on a language in which it's possible to redefine EOF if you really want to
15:46:11 <Figs> lol
15:46:35 <Figs> EOF = 0x2E;
15:48:02 <Figs> O.o
15:48:08 <Figs> can I overload global operator , ?
15:48:14 <Figs> (and put it in a namespace...)
15:48:32 <Figs> *blink* :P
15:49:55 <Figs> OH WOW
15:49:57 <Figs> :D
15:50:07 <Figs> @_@
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:42 <Figs> no
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:12 <Figs> :P
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:34 <Figs> *operator ,
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:00 <Figs> :)
15:57:12 <Figs> (without compiling)
15:57:22 <RodgerTheGreat> um...
15:57:37 * ais523 goes off to look up the C++ standard
15:57:38 <RodgerTheGreat> 99 bottles of beer on the wall?
15:57:44 <Figs> no
15:57:49 <RodgerTheGreat> a pirate shanty?
15:57:54 <Figs> it outputs "called 2"
15:57:57 <RodgerTheGreat> ah
15:58:07 <Figs> at least, with gcc
16:03:52 <Figs> hehe O_o
16:03:55 <Figs> wtf!! :D
16:04:04 <Figs> oh, this is too much fun
16:06:05 * SimonRC goes.
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:11:59 <Figs> :P
16:12:04 <Figs> woot!
16:12:22 <Figs> Breaking standards every day... :P
16:12:26 <Figs> jk
16:12:57 <Figs> hmm
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:17 <Figs> hmm
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:18:23 <Figs> my god
16:18:24 <Figs> :P
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:20:34 <Figs> :P
16:21:07 <ais523> is that all?
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:21:49 <Figs> eh :P
16:22:33 <Figs> that's terrible
16:23:01 <Figs> oh jeez
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:25 <Figs> I think so.
16:25:58 <Figs> I do know that I have used atexit() in a couple of my programs :D
16:26:42 <Figs> oh god
16:26:43 <Figs> don't forget
16:26:47 <Figs> pointer arithmetic!
16:27:00 <Figs> how could I forget that? :P
16:27:06 <Figs> hee hee
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:20 <Figs> nice :D
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:24 <Figs> :P
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:43 <Figs> oh sorry
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:41 <Figs> yeah
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:52 <Figs> yeah
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:35:21 <Figs> :P
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:39 <Figs> o.o
16:36:44 <ais523> I found a copy of IE on a Windows computer :-( and I have to retype the URL for that
16:36:49 <Figs> ouch
16:37:49 <ais523> if it were Firefox I wouldn't mind retyping the URL so much...
16:37:49 <Figs> o.o
16:37:58 <Figs> @_@
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:39 <Figs> but eh
16:38:42 <Figs> whatever
16:38:43 <Figs> :P
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:12 <Figs> ;p
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:51 <Figs> ah
16:39:56 <ais523> otherwise you have to cast back-and-forth from Object in a totally type-unsafe manner
16:40:10 <Figs> I see
16:40:10 <ais523> and then write exception-handling code to prevent the compiler complaining
16:40:18 <Figs> ;)
16:40:23 <Figs> hee hee
16:40:25 <Figs> :P
16:41:57 <ais523> looking at the page you linked, C++ template programming doesn't seem all that different from functional programming
16:42:09 <Figs> dunno
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:28 <Figs> ;)
16:46:29 <Figs> cool
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:01 <Figs> I mean
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:09 <Figs> never tried
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:44 <Figs> mmm
16:48:46 <ais523> s/$/e/
16:48:57 <Figs> what is this slash syntax you guys keep using?
16:49:01 <Figs> s/$/e ?
16:49:10 * Figs is new here :P
16:49:11 <ais523> it's a sed command using regexps
16:49:21 <Figs> okay.
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:50:42 <ais523> example: this like
16:51:05 <ais523> /([^ ]*) ([^ ]*) ([^ ]*)/$3 $2 $1/
16:51:11 <RodgerTheGreat> read up on the language "Slashes" aka "///"
16:51:19 <RodgerTheGreat> it's on the esolang wiki
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:45 <RodgerTheGreat> yeah
16:51:47 <ais523> I'm pretty sure it's possible, but I didn't manage it
16:52:04 <RodgerTheGreat> several of us tried various approaches
16:52:05 <Figs> :P
16:52:17 <RodgerTheGreat> I still think it oughta be TC
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:41 <Figs> yep
16:52:43 <Figs> :P
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:13 <RodgerTheGreat> haha
16:54:18 <RodgerTheGreat> alright, good point
16:54:45 <Figs> RTG: @WHO?
16:54:47 <Figs> *who?
16:54:49 <Figs> sorry
16:54:54 <Figs> hit caps instead of shift :P
16:55:01 <RodgerTheGreat> I was referring to ais523's comment
16:55:06 <Figs> ahh ;)
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:16 <RodgerTheGreat> yeah
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:03 <RodgerTheGreat> I understood your meaning
16:56:10 <RodgerTheGreat> Figs: reinventing ruby, eh?
16:56:12 <ais523> Figs: I'm replacing the second occurrence of 'flow control'
16:56:14 <Figs> no
16:56:27 <RodgerTheGreat> or is ruby better categorized as "syntactic ADD"...
16:56:43 <Figs> no idea
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:11 <RodgerTheGreat> don't ever try it. It gave me more pain than malbolge
16:57:23 <ais523> I imagine Lisp could get by on the parentheses and just a few letters of the alphabet
16:57:32 <ais523> and space
16:57:34 -!- crathman has joined.
16:57:42 <RodgerTheGreat> I heard something about just using ()" with lisp...
16:57:54 <RodgerTheGreat> I don't think I fully understood the method, though
16:58:11 <RodgerTheGreat> bbl- calculus and data structures
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:12 <Figs> one operator
17:01:14 <Figs> :P
17:01:18 <ais523> s/input/bitmaps/
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:20 <Figs> o.o
17:02:35 <Figs> @.@
17:02:38 <Figs> yikes
17:02:41 <Figs> :P
17:02:49 <Figs> A
17:02:50 <Figs> B
17:02:58 <Figs> I just lost a program opportunity!
17:03:02 <Figs> *resets clock*
17:03:03 <Figs> yay
17:03:32 <Figs> one instruction set computer :P
17:03:41 <Figs> "Subtract and branch if negative "
17:03:44 <Figs> :P
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:03 <Figs> yeah
17:06:07 <ais523> because Black has an instruction pointer, and Life doesn't
17:06:10 <Figs> :P
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:06:48 <Figs> ah
17:07:23 <Figs> o.o
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:08:07 <Figs> ah
17:08:09 <Figs> ;)
17:08:12 <Figs> thanks...
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:11:49 <Figs> o.o
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:30 <Figs> lol
17:12:36 <Figs> @_@
17:12:41 <Figs> enough
17:12:47 <Figs> I'm gonna go eat lunch
17:12:51 <Figs> and decompress my brain
17:12:52 <Figs> :P
17:12:55 <Figs> cya
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:27 <lament> haha
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:47 <ais523> LET 3=1+1 is legal
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:24 <lament> i understand
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:03 <Figs> hmm
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:49 <Figs> ok
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:25 <Figs> 80x14?
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:34 <Figs> :P
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:45:58 <Figs> mm
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:10 <Figs> ?
17:48:22 <ais523> as in, I type an EOF, it ignores it, and it accepts the next characters anyway
17:48:39 <Figs> lol
17:49:18 <ais523> I know I wasn't checking for EOF, but that's just silly
17:50:04 <Figs> heh
17:50:08 <Figs> cat program? O.o
17:50:20 <Figs> oh wait
17:50:30 <Figs> yeah
17:50:32 <Figs> nevermind
17:50:34 <Figs> :P
17:51:52 <Figs> o.o
17:51:58 <Figs> I just got cppreference.com as a .chm
17:52:00 <Figs> lol
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:54:55 <ais523> s/"./."/
17:55:35 <Figs> in Wait... :D
17:55:43 <Figs> :P
17:55:48 <ais523> ... it could do anything
17:55:56 <Figs> rofl
17:55:58 <Figs> eh
17:56:06 <Figs> you know what I hate?
17:56:10 <Figs> va_arg
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:56:32 <Figs> ah
17:56:41 <Figs> o.o
17:56:43 <Figs> ok
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:18 <lament> what was that lang
17:57:26 <lament> hmmmmmmmmmm
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:58:57 <lament> ohhh
17:58:57 <lament> lazy k
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:10 <Figs> ?
18:01:32 <ais523> incremented ASCII: each character's codepoint is 1 more than the corresponding ASCII character's codepoint
18:01:43 <ais523> and EOF is 0.
18:01:48 <ais523> So newline is 11, space is 33, etc.
18:02:01 <Figs> o.O ok
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:33 <Figs> lol
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:00 <lament> oh yeah
18:07:13 <lament> were you involved in that "provably goes into an infinite loop" idea
18:07:23 <ais523> in which language?
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:27 <lament> yes
18:08:32 <Figs> I don't have the man pages for it
18:08:40 <Figs> (yay, cygwin)
18:09:01 <lament> oh, i found it
18:09:05 <lament> it was orjan
18:09:06 <lament> http://esolangs.org/wiki/Onoz
18:09:21 <lament> (or maybe ihope)
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:54 <lament> no, it's fine
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:13:49 <lament> oh
18:14:08 <lament> mmm
18:14:09 -!- nooga has quit (SendQ exceeded).
18:14:18 <lament> i'm not sure of that
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:05 <lament> due to always halting
18:15:19 <ais523> who said it always halts?
18:15:24 <lament> 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:03 <lament> ais523: no
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:26 <lament> right
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:40 <lament> that's correct
18:16:45 <lament> that's not a big deal, it's super-turing
18:16:47 <lament> but
18:16:57 <lament> it might be super-turing in a dysfunctional way
18:17:01 <lament> in fact
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:17:58 <lament> mmm
18:18:01 <lament> nevermind, you're right
18:18:08 <lament> it's turing-complete
18:18:29 <lament> and its computational class i suppose is the same as brainhype
18:18:42 <lament> (omega-above-turing)
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:22:47 <ais523> s/[/+[/
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:41 <lament> hmm yeah
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:46 <lament> no but
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:28:36 <Figs> afk
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:34:42 <ais523> seems to work
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:17 <ais523> 520 END
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:09 <lament> oerjan: ha!
18:42:49 <oerjan> ha what?
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:48:55 <ais523> EOF
18:49:00 <ais523> Time taken: 2:07.03
18:49:10 <ais523> That's definitely the slowest cat program I've ever seen
18:55:41 -!- marcin has joined.
18:55:46 <marcin> hi
18:55:52 -!- marcin has changed nick to sirKIIdB.
18:56:09 <sirKIIdB> is it channel about esoteric languages?
18:56:19 <lament> yes.
18:56:27 <lament> well
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:19 <ais523> ~exec 0
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:04 <sirKIIdB> it has no name ::P
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:58:50 <sirKIIdB> yes
18:59:00 <sirKIIdB> , finishes the program
18:59:09 <sirKIIdB> % read some vars
18:59:20 <sirKIIdB> there are 120 vars
18:59:29 <sirKIIdB> (60 char & 60 int)
18:59:39 <ais523> is it Turing-complete?
18:59:49 <sirKIIdB> i dont'know
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:01:18 <sirKIIdB> i don't think so
19:01:25 <sirKIIdB> it's turing-complete
19:01:40 <sirKIIdB> *isn;t
19:01:43 <sirKIIdB> *'t
19:02:18 <sirKIIdB> i have one idea
19:02:20 <sirKIIdB> ::)
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:03 <sirKIIdB> let's make language
19:03:14 <sirKIIdB> esoteric sure
19:03:20 <sirKIIdB> and we will make translators
19:03:30 <sirKIIdB> from every eso-language to it
19:03:48 <ais523> one sure test: if you can compile Brainfuck into a language, that language must be Turing-complete
19:03:50 <sirKIIdB> ~bf >,[>,]<[.<]!Kcufniarb
19:04:23 <ais523> I wonder why the bot's ignoring you?
19:04:27 <ais523> ~bf >,[>,]<[.<]!Kcufniarb
19:04:27 <bsmnt_bot> brainfucK
19:04:40 <sirKIIdB> ~bf >,[>,]<[.<]! Brainfuck
19:04:50 <sirKIIdB> ~bf >,[>,]<[.<]! Brainfuck
19:04:53 <sirKIIdB> ~bf >,[>,]<[.<]!Brainfuck
19:04:57 <sirKIIdB> it hates me
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:05:34 <sirKIIdB> ~bf >,[>,]<[.<]!kcufniarB
19:05:34 <bsmnt_bot> Brainfuck
19:06:24 <sirKIIdB> hehe
19:06:25 <sirKIIdB> ::)
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:06:58 <sirKIIdB> *s
19:07:02 <sirKIIdB> languages
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:51 <sirKIIdB> Forte?
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:08:43 <sirKIIdB> i know wiki engine
19:09:08 <sirKIIdB> forte looks like basic
19:09:29 <ais523> it was designed to be as similar to BASIC as reasonable
19:09:35 <sirKIIdB> aAa
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:11:54 <GregorR> It would be TWF
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:32 <sirKIIdB> is thutu2 good?
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:14 <sirKIIdB> or bash scripts
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:05 * GregorR slaps ais523.
19:16:07 <GregorR> BAD AIS
19:16:10 <GregorR> DON'T DO THAT
19:16:11 <GregorR> :P
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:16:28 <sirKIIdB> afk
19:16:30 <ais523> INTERCAL was 1972
19:16:32 <GregorR> Hah
19:16:54 <sirKIIdB> present
19:17:22 <ais523> Pascal was 1970 it seems, so INTERCAL's two years younger
19:17:26 <lament> aww
19:18:06 <sirKIIdB> ehh
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:21 <sirKIIdB> Is my English good?
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:18:46 <sirKIIdB> thx
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:21:00 <sirKIIdB> which OS do you use?
19:22:24 <ais523> this Internet connection is a Solaris terminal running under Windows (not through choice).
19:22:29 <lament> Windows, Linux, OS X
19:22:36 <sirKIIdB> i use linux
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:14 <sirKIIdB> w8
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:01 <lament> explain onoz.
19:30:16 <oerjan> it's not my language, but let me take a look.
19:31:59 <sirKIIdB> present
19:33:13 <sirKIIdB> ::)
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:15 <oerjan> Questions?
19:39:54 -!- jix__ has changed nick to jix.
19:41:41 <sirKIIdB> no
19:41:49 <lament> oerjan: so it can still go into an infinite loop
19:41:50 <sirKIIdB> i don't understand a half
19:41:54 <lament> oerjan: thanks to goedel
19:42:27 <sirKIIdB> i have question
19:42:44 <sirKIIdB> because tape in turing's machine
19:42:50 <sirKIIdB> isn't finished (?)
19:43:11 <sirKIIdB> and how i can made it in c++?
19:43:27 <sirKIIdB> e.g int tablica[ and what here ? ]
19:43:56 <oerjan> you could use a linked list
19:44:10 <oerjan> lament: exactly
19:44:20 <sirKIIdB> in siplier english?
19:44:25 <sirKIIdB> *simplier
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:45:56 <oerjan> hm...
19:46:10 <sirKIIdB> aaAAAAAaaaaaa
19:46:17 <sirKIIdB> but one question
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:47:19 <sirKIIdB> because if I can't go back
19:47:28 <sirKIIdB> i can make int tablica[30]
19:47:32 <sirKIIdB> int i = 0;
19:47:39 <sirKIIdB> while(i < 30)
19:47:40 <sirKIIdB> {
19:47:58 <sirKIIdB> some commands
19:48:03 <sirKIIdB> i = i+1;
19:48:14 <sirKIIdB> if(i = 29) i = 0;
19:48:16 <sirKIIdB> }
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:48:55 <sirKIIdB> but can be tape finished?
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:50:55 <sirKIIdB> and if make the rule
19:51:05 <sirKIIdB> like i wrote
19:51:20 <sirKIIdB> with if(i=29) i = 0;
19:51:36 <sirKIIdB> it wouldn't be finished
19:52:58 <oerjan> Of course it is finite. You would delete the old tablica[0] when you wrap.
19:53:14 <oerjan> So you lose memory.
19:53:23 <sirKIIdB> but it "eats" a lot of memory
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:01:53 <sirKIIdB> hmmmm
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:21:31 <lament> :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:32:11 <sirKIIdB> i've got funny play
20:33:17 * oerjan guesses you mean "game"
20:44:29 <sirKIIdB> no
20:44:32 <sirKIIdB> play
20:44:33 <sirKIIdB> zabawa
20:46:43 <lament> i believe the english word is still 'game'.
20:46:57 <lament> or 'diversion'.
20:52:43 -!- Arrogant has quit ("Leaving").
21:33:36 <sirKIIdB> ok
21:33:42 <sirKIIdB> i am leaving
21:33:44 <sirKIIdB> bye
21:33:51 -!- sirKIIdB has quit ("Sleeping and ...").
21:35:23 <Figs> what rhymes with purple?
21:39:22 <oerjan> vorpal?
21:39:30 <oerjan> maybe not.
21:39:54 <oerjan> turtle is close
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:22 <SevenInchBread> BEHOLD
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:28 <SevenInchBread> hmmm...
22:36:36 <SevenInchBread> : probably isn't well explained.
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:14 <SevenInchBread> eh, laziness. I'll cover them sometime.
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:41:55 <RodgerTheGreat> I'm back. How's it going, guys?
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:22 <RodgerTheGreat> lol
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:44:34 <RodgerTheGreat> simple languages are beautiful
22:45:00 <RodgerTheGreat> and being simple doesn't keep a language from being esoteric
22:45:13 <RodgerTheGreat> *cough* /// *cough*
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:48:33 <RodgerTheGreat> sounds like a plan
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:18 <crashmatrix> brainfsck?
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:57:28 <RodgerTheGreat> bitwise cyclic tag, can't forget that one
22:59:05 <crashmatrix> wow :o
22:59:25 <crashmatrix> Idea: promote dupdog to make engineers go wow instead of Vista :)
22:59:44 <RodgerTheGreat> lol
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:00:49 <crashmatrix> I can see
23:01:33 <crashmatrix> * +why
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:07:41 <RodgerTheGreat> a conditional halt isn't too bad...
23:08:08 <lament> what would it condition on?
23:09:00 <RodgerTheGreat> erm... program length.
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:09:55 <RodgerTheGreat> very odd
23:10:44 <crashmatrix> conspiracy? it's more likely then you think
23:11:08 <lament> anybody got the dupdog interpreter?
23:11:23 <crashmatrix> here here
23:11:38 <crashmatrix> http://pastebin.ca/raw/397577
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:15 <RodgerTheGreat> nor do I
23:13:26 <crashmatrix> I just found it
23:13:32 <RodgerTheGreat> I tried and failed miserably
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:17:57 <SevenInchBread> I just thought up some random string operations.
23:18:03 <SevenInchBread> THE MAGIC OF UH...
23:18:11 <SevenInchBread> .........I'm not sure.
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:20:21 <SevenInchBread> ...reverse macros?
23:21:27 <lament> looks like the perl interpreter is broken after all
23:22:33 <lament> ...or not
23:22:37 * lament is lost
23:22:46 <lament> my programs fail and i'm not sure why
23:23:05 <lament> ohh
23:23:05 <lament> okay
23:23:08 <lament> it's broken
23:23:32 <SevenInchBread> ...I should write the specs for Stue...
23:23:32 <lament> for the purposes of counting evenness/oddness, it does not include the currently read character.
23:23:35 <SevenInchBread> t's really cool...
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:27:31 <oerjan> which program fails?
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:16 <SevenInchBread> ...how can C not be Turing complete?
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:34:55 <lament> with your interpreter
23:35:03 <SevenInchBread> hmmm...
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:20 <SevenInchBread> so... 1 2 3 4 5 being the possible numerals
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:09 <SevenInchBread> ?'s only condition is SourceCode % 2'
23:37:22 <oerjan> Should the line breaks be removed?
23:37:29 <lament> oerjan: i see no line breaks
23:37:39 <lament> so yes
23:39:42 <oerjan> It writes "Awesome100"
23:40:00 <lament> awesome100!
23:40:04 <lament> hehe
23:40:13 <SevenInchBread> well... small tweaks might make it more useful.
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:17 <lament> oerjan: i've got hugs
23:41:21 <oerjan> me too
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:04 <SevenInchBread> -shrug- doesn't matter to me.
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:23 <Figs> hello
23:48:34 <SevenInchBread> EVENING
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:52:55 <SevenInchBread> ah...
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:34 <Figs> lol
23:58:56 <oklopol> i woke up an hour ago, it's 2 am now
23:59:33 <SevenInchBread> let's see...
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))
2007-03-27
00:00:06 <Figs> ooh
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:02:46 <RodgerTheGreat> cool
00:03:10 <RodgerTheGreat> Just another * hacker. :D
00:03:37 <Figs> O.o
00:03:42 <Figs> what is %: ?
00:03:50 <Figs> is it the same as #?
00:05:40 <oklopol> try it
00:05:47 <Figs> I did
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:08:57 <oklopol> it worked?
00:09:12 <Figs> yeah
00:09:28 <SevenInchBread> ..POLYGLOTS... fun stuff.
00:09:45 <Figs> is there wiki software for local use?
00:09:49 <Figs> or blog software?
00:09:57 <lament> yes.
00:11:41 <Figs> hehehe... :P
00:11:42 <Figs> http://www.funny-jokes.net/funny-pictures/imgs/177.jpg
00:12:50 <RodgerTheGreat> nice
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:17:45 <SevenInchBread> ...I still can't get my PC to work as a webserver.
00:18:53 <oerjan> SevenInchBread: Have you set it to remember your password?
00:19:26 <oerjan> *wiki password
00:19:47 <oerjan> I had the same problem before I did that
00:19:57 <SevenInchBread> hmmm... might be it.
00:20:03 <SevenInchBread> I just did that... so it might stop now.
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:22:40 <oklopol> well....
00:23:21 <oklopol> hmm....
00:23:23 <oklopol> pizza ------->
00:23:36 <Figs> O.o
00:25:12 <lament> oklopol: yes, very easily. Brainfuck with limited tape size, unbounded cells.
00:25:15 <lament> :)
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:36 <Figs> GAH
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:36:22 <Figs> :D
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:39:40 <oklopol> i've tried that once
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:20 <oklodok> so i'll die now.
00:41:23 -!- oklodok has left (?).
00:41:31 <lament> ewww lojban.
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:44:05 <Figs> IRC client?
00:46:47 <oklopol> hmm
00:46:51 <oklopol> the brainfuck generator?
00:46:56 <oklopol> !bf_gen
00:46:59 <oklopol> !help
00:47:09 <oklopol> egobot is dead
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:52:24 <oklopol> that one?
00:53:36 <Figs> no
00:53:55 <Figs> that's a regular expression
00:53:58 <Figs> not sure what language
00:54:00 <Figs> :P
00:57:06 -!- atrapado has quit ("l3nz").
00:59:20 <oerjan> looks like perl
01:00:08 <Figs> O.o
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:26 <oklopol> oh :O
01:02:52 <oklopol> well... i guess it's understandable i couldn't do it then :)
01:04:21 <lament> no, that's wrong.
01:04:31 <lament> wait
01:04:34 <lament> that's right. nevermind.
01:04:48 <oerjan> O.o indeed.
01:05:44 <Figs> lol
01:07:58 <Figs> epp
01:07:58 <Figs> http://fukung.net/images/527/DeadeyeDick.jpg
01:08:43 <SevenInchBread> so...
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:44 <Figs> heh
01:10:52 <Figs> Showing BF to be turing-complete
01:10:52 <Figs> http://www.iwriteiam.nl/Ha_bf_Turing.html
01:10:54 <Figs> yay
01:12:23 <lament> eh... yes
01:12:36 <lament> bf is turing complete. That page is like a decade old.
01:13:31 <Figs> :P
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:13:45 <Figs> O_o
01:13:52 <Figs> EULAlyzer
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:14:40 <RodgerTheGreat> two new instructions, limitless possibilities
01:20:20 <RodgerTheGreat> any goddess in particular?
01:20:26 <RodgerTheGreat> I'd go with Athena. rawr.
01:22:13 <SevenInchBread> nope
01:22:15 <SevenInchBread> Eris.
01:22:57 <SevenInchBread> hmm... so... taking a tip from Erlang here... any sort of process will have message passing in cues...
01:23:10 <SevenInchBread> rather than the one-message call system Unix uses.
01:23:49 <RodgerTheGreat> queues, you mean?
01:23:55 <SevenInchBread> ...yeah
01:23:59 <RodgerTheGreat> :)
01:24:44 <SevenInchBread> ...aaaand... files are more like hash tables than actual files... HASH TABLES OF LINKED LISTS... IF YOU'D LIKE
01:24:46 <SevenInchBread> INIFNITY FILES.
01:24:48 <SevenInchBread> I DARE SAY
01:25:05 <RodgerTheGreat> cool
01:26:26 <Figs> o.o
01:26:27 <Figs> eep
01:26:33 <SevenInchBread> ....with a versioning system...
01:26:50 <SevenInchBread> so you can look at old versions... or revert oopses.
01:27:03 <RodgerTheGreat> TO INFINITY
01:29:27 -!- calamari has joined.
01:31:08 <oerjan> AND BEYOND
01:31:56 <oerjan> speaking of cue-based message systems...
01:32:34 <RodgerTheGreat> QUEUE!
01:32:39 <oerjan> no, cue.
01:33:47 <Figs> like, cue ball? :P
01:35:45 <oerjan> options, options
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:36:46 <oklopol> hehe :D
01:37:04 <Figs> ooh :P
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:50:41 <SevenInchBread> ...so, I'll need to do some reading.
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:52:57 <Figs> "Pants"
01:53:00 <Figs> I don't get it.
01:53:08 <oklopol> a dog pants
01:53:17 <Figs> oh
01:53:19 <Figs> thanks
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:05 <oklopol> :P
01:54:11 <oklopol> i found it interesting
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:55:36 <RodgerTheGreat> I'm working on that literally as we speak
01:55:54 <RodgerTheGreat> THE RESERVED WORD LIST IS GROWING! MUAHAHAHA!
01:56:03 <oklopol> hehehe :)
01:56:07 <oklopol> how many?
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:00 <RodgerTheGreat> SevenInchBread: you mean my language?
01:57:07 <SevenInchBread> OSiness.
01:57:24 <RodgerTheGreat> "SYNTHESYS"?
01:57:26 <oklopol> gotos are cool
01:57:28 <SevenInchBread> well.... I don't know x86 at all...
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:09 <Figs> hmm?
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:23 <SevenInchBread> Yeah I like it...
01:58:30 <Figs> again
01:58:32 <Figs> I forgot it all
01:58:37 <oklopol> nothing is dangerous.
01:58:41 <SevenInchBread> RodgerTheGreat, Never restrict anything just cause people might use them. ;)
01:58:48 <RodgerTheGreat> fair enough
01:59:03 <RodgerTheGreat> but I do like well-structured programming
01:59:22 <Figs> RTG: Assembly is ALL goto statements ;D
01:59:28 <Figs> (and some other stuff)
01:59:28 <oklopol> Figs no.
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:39 <oklopol> plus functions
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:03 <SevenInchBread> well... there are macros.
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:27 <oklopol> in asm
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:01 <Figs> :P
02:02:06 <Figs> what asm are you using?
02:02:12 <Figs> FAsm?
02:02:13 <oklopol> i've never done any asm
02:02:19 <Figs> TAsm?
02:02:20 <Figs> oh
02:02:22 <Figs> :P
02:02:24 <RodgerTheGreat> ah, the flat assembler.
02:02:29 <RodgerTheGreat> I loved that thing
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:05:36 <Figs> in
02:05:39 <oklopol> asm?=
02:05:40 <Figs> XVII32
02:05:44 <oklopol> hmm
02:05:45 <Figs> :D
02:05:49 <Figs> (hex editor)
02:05:52 <oklopol> yeah
02:05:54 <oklopol> i have that
02:05:59 <Figs> XVI32*
02:05:59 <oklopol> (i think)
02:06:07 <Figs> 16 32 :P
02:06:09 <Figs> not 17 :P
02:06:10 <Figs> rofl
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:06:53 <oklopol> compile what to c?
02:06:58 <Figs> Bullet
02:07:03 <oklopol> ah
02:07:10 <oklopol> bullet -> c -> asm at least
02:07:16 <oklopol> asm because it's for the os
02:07:20 <oklopol> dummie :)
02:07:29 <Figs> you can do system programming in C
02:07:29 <RodgerTheGreat> eew
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:12 <SevenInchBread> I've always just seem macros...
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:48 <Figs> [call]
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:08 <oklopol> call <function address>
02:09:21 <oklopol> that will autodo all address savings etc
02:09:24 <oklopol> (i think)
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:21 <RodgerTheGreat> hm
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:35 <Figs> :p
02:11:39 <oklopol> okay
02:11:41 <oklopol> never seen
02:11:47 <SevenInchBread> ..during the assembling... like compiler macros in C.
02:11:49 <oklopol> but anyway, that's not necessary
02:11:57 <oklopol> you can make functions.
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:02 * SevenInchBread finds something on assembler macros.
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:00 <SevenInchBread> http://www.osdev.org/wiki/Opcode_syntax
02:14:06 <oklopol> well, if someone was to set me up an asm compiler, i might learn the language quite quickly
02:14:10 <oklopol> i've dl'd about 5
02:14:14 <oklopol> never got any to work
02:14:14 <Figs> Fasm
02:14:17 <SevenInchBread> plus... macros are cool.
02:14:21 <Figs> it's very easy to use
02:14:50 <Figs> http://flatassembler.net/
02:15:54 <Figs> heh
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:16 <oklopol> since i didn't read it :)
02:17:57 <oklopol> Figs you give me a fasm link and say i will also need an assembler?
02:18:17 <Figs> no
02:18:19 <Figs> I'm saying
02:18:25 <Figs> if you make it compile to asm
02:18:28 <oklopol> ah
02:18:29 <oklopol> yeah
02:18:31 <Figs> you will still need an assembler
02:18:44 <RodgerTheGreat> FASM is a pretty nice piece of software
02:18:59 <oklopol> i'll dl fasm now
02:19:06 <Figs> ;)
02:19:14 <Figs> if I could learn x86 opcodes
02:19:18 <Figs> then we'd be in business
02:19:19 <SevenInchBread> hmm... making functions looks more complicated
02:19:26 <Figs> it is
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:45 <SevenInchBread> MACROS - THE LAZY MANS VARIABLES.
02:19:46 <oklopol> hmm... i could try and make a bf compiler
02:19:49 <Figs> cdecl style
02:19:51 <Figs> and stdcall
02:20:05 <Figs> what really matters is who cleans up the stack
02:20:10 <oklopol> you can invent your own.
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:20:53 <oklopol> *iiiiiirc
02:21:27 <oklopol> cdecl changed the convention for varargs
02:21:36 <Figs> yeah
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:21:58 <Figs> iirc == ?
02:22:06 <oklopol> to my best recollection.
02:22:17 <oerjan> and thereby ruined tail call optimisation
02:22:23 <oklopol> yep :\
02:22:46 <oklopol> Figs: if i recall correctly
02:22:47 <SevenInchBread> MACROS
02:22:51 <SevenInchBread> ..
02:23:06 <oklopol> SevenInchBread calm down
02:23:13 <oklopol> macros are nothing special
02:23:37 <SevenInchBread> lol lol you wish.
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:20 <SevenInchBread> oooh... I'll make my own assembly lang...
02:24:35 <SevenInchBread> ....like.... that'll make no sense.
02:24:42 <oklopol> oerjan you can make exceptions though, since you can use stdcalls in c
02:24:48 <Figs> 7"
02:24:58 <Figs> if you do that, you need to make the hardware too :P
02:25:07 <oklopol> Figs no
02:25:18 <SevenInchBread> no no I mean... an assembler... basically a compiler into assembly opcodes.
02:25:34 <Figs> @.@
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:25:37 <Figs> eep
02:25:41 <oklopol> or volapk
02:25:47 <oklopol> or that loljunga
02:25:51 <oklopol> or whatever :)
02:26:02 <Figs> meh
02:26:03 <Figs> :P
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 <oklopol> as the only language
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:06 <SevenInchBread> yeah... mostly networking.
02:28:48 <Figs> you're good at networking? :D
02:28:51 <Figs> yay
02:29:00 <SevenInchBread> ...not good, just comfortable with it.
02:29:13 <SevenInchBread> It's what I've been doing a lot of...
02:29:37 <SevenInchBread> OH
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:32:58 <oklopol> oh
02:33:06 <oklopol> i think you made that up!
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:00 <SevenInchBread> ...I'd be better off starting at the top end here...
02:37:37 <oklopol> okay, i got fasm now
02:37:44 <Figs> yay
02:37:49 <oklopol> can't compile towers of hanoi
02:37:56 <oklopol> i'll try a hello world
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:39:29 <Figs> /Gr
02:40:49 <oklopol> wow something actually compiled
02:41:06 <Figs> :P
02:41:10 <Figs> did you make a .com?
02:41:25 <oklopol> 30 lines, an msgbox hello world, exe
02:41:37 <oklopol> i did not make it
02:41:44 <Figs> :P
02:42:23 <oklopol> exactly 30 actually, i just picked a random number
02:42:30 <oklopol> my lucky day
02:42:34 <Figs> ;0
02:42:43 <Figs> eep!
02:42:44 <Figs> http://en.wikipedia.org/wiki/Name_decoration
02:42:55 <oklopol> push 0
02:42:56 <oklopol> push _caption
02:42:56 <oklopol> push _message
02:42:56 <oklopol> push 0
02:42:56 <oklopol> call [MessageBox]
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:25 <Figs> yeah
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:20 <oklobot> message
02:44:30 <Figs> O_o
02:44:36 <oklopol> i just realized there are no msgboxes neither in oklobot nor in irc
02:44:46 <Figs> lol
02:45:05 <Figs> http://en.wikipedia.org/wiki/Name_decoration
02:45:06 <oklopol> fourth is style
02:45:07 <Figs> eep!
02:45:10 <Figs> yes
02:45:15 <Figs> it's like MB_OK
02:45:18 <Figs> or whatever
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:46:55 <Figs> bah
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:24 <Figs> ah
02:49:27 <Figs> try setting the style to
02:49:30 <Figs> MB_YESNOCANCEL
02:49:33 <Figs> ;)
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:07 * SevenInchBread has no clue what's going on now.
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:51:37 <oklopol> but not really
02:51:48 <oklopol> !exec "MessageBox" PrntNl
02:51:49 <oklobot> MessageBox
02:52:02 <Figs> :P
02:52:08 <oklopol> do not omit Nl for multiple prints per line.
02:52:13 <oklopol> use Add
02:52:24 <oklopol> !exec "asd ""foo"AddPrntNl
02:52:24 <Figs> !exec "Hello World" PrntNl
02:52:25 <oklobot> asd foo
02:52:29 <oklobot> Hello World
02:52:43 <Figs> 5 second latency
02:52:52 <oklopol> throttling
02:52:57 <Figs> ah :P
02:52:57 <oklopol> not latency
02:53:04 <Figs> ok
02:53:07 <oklopol> !exec 1 1 8[RotRotDblRotAddRot1SubDbl]Drp""Rot[RotRotSwpDbl"-"SwpAddRotAddRotRotSwpDblRotSwpSubSwpRotRotDbl]DrpAddPrntNl
02:53:08 <oklobot> 1-1-2-3-5-8-13-21-34-55
02:53:19 <oklopol> !exec 0 10[Dbl1SubDbl]Drp[MulSwpDbl]DrpPrntNl
02:53:20 <Figs> eep
02:53:20 <oklobot> 3628800
02:53:27 <oklopol> !exec 0 2[Dbl1SubDbl]Drp[MulSwpDbl]DrpPrntNl
02:53:28 <oklobot> 2
02:53:30 <oklopol> !exec 0 3[Dbl1SubDbl]Drp[MulSwpDbl]DrpPrntNl
02:53:32 <oklobot> 6
02:53:35 <SevenInchBread> oklopol, ...that didn't help me at all.
02:53:40 <oklopol> :)
02:53:42 <Figs> !exec 2[Dbl]PrntNl
02:53:44 <SevenInchBread> I was just... generally confused about what we were talking about.
02:53:55 <oklopol> !print a
02:53:56 <oklobot> a
02:54:09 <Figs> !exec 0 2[Dbl]DrpPrntNl
02:54:29 <Figs> *gives up*
02:54:30 <Figs> :P
02:54:30 <oklopol> SevenInchBread he just said you can output with interruption 21h
02:54:35 <SevenInchBread> ....
02:54:43 <Figs> it's a DOS command
02:54:48 <Figs> to output characters to the string
02:54:51 <SevenInchBread> PFFFFFFFFFFFT
02:54:56 <Figs> (among other things)
02:54:59 <SevenInchBread> apple
02:55:01 <Figs> int 21h does a crap load of stuff
02:55:02 <SevenInchBread> think about it
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:28 <oklopol> except for the pear thing
02:55:45 <oklopol> Figs i think it's the OS int
02:56:11 <Figs> ok
02:56:13 <Figs> to quit the program
02:56:16 <Figs> is
02:56:23 <Figs> mov ax 4C00h
02:56:33 <Figs> int 21h
02:56:45 <oklopol> well, naturally.
02:57:17 <oklopol> hmm
02:57:31 <oklopol> can you write me a non windowed hello world?
02:57:35 <oklopol> using int 21h
02:57:56 <Figs> hold on
02:58:04 <Figs> let me fire up fasm
02:58:07 <SevenInchBread> hmmm.....
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:58:33 <oklopol> like segments and such
02:59:10 <SevenInchBread> ...anything in programming that can be solely described in some form of arithmetic is usually blindingly fast.
02:59:33 <SevenInchBread> ...I say we use the number 5.
02:59:42 <SevenInchBread> anytime you need a number... use a number related in some way to 5.
02:59:51 <SevenInchBread> ...and we shall have the best OS ever.
02:59:56 <oklopol> LET 7 = 5
02:59:59 <oklopol> and we can use 7
03:01:20 <Figs> what is the ascii for 'a'?
03:01:44 <oklopol> 65
03:01:45 <oklopol> oh
03:01:46 <oklopol> 97
03:01:49 <oklopol> or....
03:02:08 <oklopol> feck
03:02:10 <oklopol> i got jammed
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:22 <oklopol> :D
03:02:30 <oerjan> i think it was
03:02:53 <Figs> I got a way to put an 'a' on the screen
03:03:02 <oklopol> well, can i see it?
03:03:10 <Figs> sure, but it is a poor way of doing things :P
03:03:20 <oklopol> use the db thing
03:03:28 <oklopol> and you have strings
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:04:51 <oklopol> hmm... will it take long?
03:04:55 <oklopol> i'll leave sooon
03:05:09 <Figs> probably not
03:05:11 <SevenInchBread> ...yeah...
03:05:15 <SevenInchBread> I'm having trouble
03:05:20 <SevenInchBread> keeping up with what we're talking about.
03:05:37 <SevenInchBread> but... everything is related to five.
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 <SevenInchBread> ....4 is an evil number.
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:08:15 <SevenInchBread> and is no permitted.
03:08:21 <SevenInchBread> and NEVER use 4 4s....
03:08:44 <oerjan> *too
03:09:30 <Figs> ok
03:09:33 <Figs> almost got it now...
03:09:38 <Figs> just need to remember how to do pointer arithmetic
03:09:39 <Figs> whee
03:14:20 <SevenInchBread> ...what exactly are we trying to do?
03:14:36 <Figs> we're trying to print "Hello World!"
03:15:06 <Figs> eep
03:15:07 <Figs> :|
03:15:10 <Figs> it doesn't like me
03:15:17 <Figs> illegal instruction
03:15:18 <Figs> :(
03:15:52 <SevenInchBread> ...any way you could generalize that?
03:15:58 <Figs> that's what I'm doing
03:16:01 <Figs> or trying to
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:12 <oklopol> :)
03:17:20 <SevenInchBread> no no I mean... DIRECT access to assembly...
03:17:29 <Figs> you have direct access to assembly
03:17:30 <Figs> in C
03:17:31 <oklopol> make a better c compiler
03:17:31 <Figs> :P
03:17:37 <SevenInchBread> ...
03:17:43 <oklopol> that compiler when you select something and click ctrl
03:17:44 <SevenInchBread> I don't think you understand what I'm talking about.
03:17:46 <Figs> asm keyword
03:17:47 <oklopol> *compiles
03:17:52 <Figs> I guess not
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:18:53 <oklopol> hmm
03:18:56 <oklopol> 12 is tricky
03:18:57 <oklopol> :\
03:19:03 <oklopol> is ! legal?
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:25 <SevenInchBread> ...
03:19:30 <SevenInchBread> I WILL.
03:19:32 <SevenInchBread> KILL YOU.
03:19:43 <Figs> ????
03:19:52 * SevenInchBread is blinded by 4s
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:01 <oklopol> Figs 4 4's
03:20:09 <Figs> ah :P
03:20:14 <oklopol> otherwise it's ridiculously trivial
03:20:27 <oklopol> (4/4)*n, where n is teh num
03:20:32 <SevenInchBread> except... with C you don't touch any assembly.
03:20:37 <oklopol> SevenInchBread you can.
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:23 <oklopol> 44/4+(4-4) then
03:22:25 <Figs> I may be thinking of C++'s asm
03:22:30 <oklopol> meh
03:22:34 <oklopol> this get too easy :)
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:22:41 <oklopol> i'll go up to hundred.
03:22:44 <oklopol> ...maybe no
03:22:46 <oklopol> *not
03:23:04 <oklopol> Figs stfu :P
03:23:08 <Figs> :P
03:23:41 <oklopol> 44/((4+4)/4)
03:23:42 <oklopol> 12
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:11 <oklopol> sqrt is ^0.5
03:24:19 <oklopol> i don't think that's ok
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:45 <Figs> or exactly 4?
03:24:56 <oklopol> anyway, i was a lot faster than you, and that's the most important
03:24:57 <oklopol> *thing
03:25:04 <Figs> I only just started :P
03:25:07 <SevenInchBread> ...
03:25:07 <oklopol> :P
03:25:15 <SevenInchBread> all this talk of 4s is driving me crazy...
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:17 <oklopol> :D
03:25:25 <oklopol> okay
03:25:30 <Figs> 17?
03:25:42 <oklopol> 4*4+4/4
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:45 <oklopol> 13 is next
03:25:46 <Figs> :D
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:26:20 <oklopol> the os
03:26:26 <Figs> 44/4+sqrt(4)
03:26:32 <oklopol> hmm
03:26:37 <oklopol> i still think sqrt is bad
03:26:38 <oklopol> :<
03:26:52 <oklopol> hmm i guess it's ok
03:27:23 <Figs> I think I remember doing this in 5th grade
03:27:25 <Figs> I hated it
03:27:28 <oklopol> hehe :D
03:27:34 <Figs> or maybe 6th
03:27:35 <Figs> not sure
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:27:46 <oklopol> i used ! then too
03:27:50 <Figs> ;)
03:27:57 <oklopol> i was much wittier then
03:27:59 <oklopol> :<
03:28:08 <oklopol> energy drinks kill the brain
03:28:25 <Figs> 4!-4-4-4
03:28:42 <oklopol> 4+4+4+sqrt(4)
03:28:43 <oklopol> hmm
03:28:45 <Figs> another way to get 12
03:28:56 <Figs> yeah
03:29:02 <oklopol> yeah
03:29:05 <oklopol> so we have 3 now
03:29:09 <Figs> 15?
03:29:13 <Figs> let's see here :P
03:29:21 <Figs> 4*4-(4/4)
03:29:26 <oklopol> 44/((4+4)/4)=4*4-(sqrt 4)-(sqrt 4)=4!-4-4-4
03:29:37 <oklopol> yeah that was triv
03:29:41 <Figs> yeah
03:29:46 <Figs> 16 is easy too
03:29:47 <oklopol> 4*4+(4-4)
03:29:49 <oklopol> yeah
03:29:52 <Figs> (4*4)*(4/4)
03:29:54 <oklopol> 10 sec
03:29:55 <Figs> 17 you did already
03:29:58 <Figs> 18...
03:30:32 <SevenInchBread> ...how would you do this puzzle in 5s?
03:30:39 <Figs> 4! -4 -sqrt(4)
03:30:48 <oklopol> clever
03:31:07 <Figs> me?
03:31:08 <Figs> thanks
03:31:09 <oklopol> if less than 4 can be used, which indeed is the case i guess :P
03:31:16 <Figs> hehe
03:31:17 <oklopol> i forgot that already
03:31:21 <Figs> yeah
03:31:22 <oklopol> so... 19?
03:31:27 <Figs> let's do 18 again
03:31:30 <Figs> and do it right
03:31:39 <oklopol> yeah, 4 4's!
03:32:05 <Figs> 4!-sqrt(4)-4
03:32:08 <oklopol> (4!-4)/4*4 == 20 btw
03:32:09 <Figs> is 3
03:32:10 <Figs> oops
03:32:15 <Figs> yeah
03:32:40 <Figs> (4!-4*4)+4
03:32:42 <Figs> hehe
03:32:44 <Figs> another 12
03:32:48 <oklopol> :DD
03:33:20 <oklopol> 44-4!-4 == 16
03:33:21 <oklopol> damn
03:33:41 <Figs> 44/4*sqrt(4)-4
03:33:45 <oklopol> 5
03:33:46 <Figs> yeah
03:33:47 <oklopol> :\
03:33:48 <Figs> :\
03:34:04 <Figs> 44/4+4+4 = 19, btw
03:34:41 * SevenInchBread wins.
03:35:22 <SevenInchBread> ...23 is also an acceptable number.
03:35:25 <SevenInchBread> as 2 +3 = 5
03:35:55 <oklopol> (4!*4!)/(4!+4) == 20
03:36:20 <oklopol> (4!-4)-(4/4)==19
03:36:23 <Figs> (4^4)/(4!)*4 = 42.666...
03:36:32 <oklopol> i did it
03:36:41 <Figs> nope
03:36:44 <oklopol> :<
03:36:44 <Figs> we're trying to get 18
03:36:46 <Figs> :P
03:36:46 <oklopol> oh
03:36:47 <oklopol> darn
03:36:49 <Figs> I already did 19
03:36:54 <oklopol> where?
03:36:58 <oklopol> 44/4+4+4 5
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:37:11 <oklopol> 5
03:37:12 <oklopol> 5
03:37:12 <oklopol> 5
03:37:12 <oklopol> 5
03:37:13 <oklopol> 5
03:38:51 <Figs> 4!-4-4+sqrt(4)
03:38:58 <Figs> = 18
03:39:02 <oklopol> yeah
03:39:13 <oklopol> but you did that already
03:39:19 <oklopol> ho
03:39:19 <oklopol> oh
03:39:20 <Figs> I didn't O.o
03:39:21 <oklopol> fuck
03:39:22 <oklopol> :D
03:39:25 <Figs> :D
03:39:27 <oklopol> you did 3 fours
03:39:30 <Figs> yeah
03:39:34 <Figs> now with 4 :D
03:39:37 <oklopol> ...i thought we tried to do without sqrt
03:39:45 <oklopol> i found that sqrt thing :\
03:39:52 <Figs> ?
03:39:56 <oklopol> but.... hey Figs found this already
03:39:57 <oklopol> :)
03:40:18 <oklopol> i mean
03:40:28 <oklopol> i found it just now, but thought it's no good
03:40:33 <Figs> oh
03:40:34 <Figs> :P
03:40:37 <Figs> I'm using sqrt
03:40:37 <oklopol> because that was the thing we decided to make better
03:40:41 <oklopol> yeah :O
03:40:42 <oklopol> :P
03:40:44 <oklopol> okay
03:40:44 <Figs> since I can't think of another way
03:40:44 <oklopol> 21
03:40:49 <oklopol> yeah, me neither
03:40:53 <Figs> but no cubed rutes
03:40:55 <Figs> *roots
03:41:10 <oklopol> (4!-4)+(4/4)
03:41:10 <Figs> ok.. 21
03:41:12 <oklopol> 21
03:41:13 <Figs> :D
03:41:15 <oklopol> :D
03:41:42 <SevenInchBread> ..... floor(log10(5)**log10(25)**log10(25)*23)
03:41:47 <Figs> lol
03:41:49 <oklopol> (4!-4)+(4/sqrt(4))
03:41:50 <oklopol> 22
03:42:01 <Figs> so... 23?
03:42:05 <Figs> I think we did 23 already
03:42:42 <oklopol> hmm
03:43:02 <oklopol> well
03:43:04 <oklopol> can't find it
03:43:07 <oklopol> let's do 23
03:43:09 <SevenInchBread> HMMMMM
03:43:10 <SevenInchBread> http://en.wikipedia.org/wiki/Register_Transfer_Language
03:43:11 <Figs> ok
03:43:28 <SevenInchBread> ...Lisp-ish assembly of some sort?
03:44:12 <Figs> in any case... 4!-(sqrt(4))+4/4
03:44:31 <Figs> =23
03:44:40 <Figs> 24?
03:44:56 <oklopol> hmm
03:45:06 <oklopol> yeah
03:45:29 <oklopol> 4!-4+s(4)+s(4)
03:45:33 <oklopol> s??sqrt
03:45:36 <oklopol> s==sqrt
03:45:40 <oklopol> 25 now
03:45:44 <Figs> ok
03:46:13 <oklopol> 4!+s(4)-(4/4)
03:46:16 <oklopol> 25
03:46:17 <oklopol> 26 now
03:46:19 <Figs> ok
03:46:27 <oklopol> 4!+s(4)+4-4
03:46:29 <oklopol> 26
03:46:31 <oklopol> 27 now
03:46:39 <oklopol> 4!+s(4)+(4/4)
03:46:41 <oklopol> ==27
03:46:42 <Figs> :P
03:46:43 <oklopol> 28 now
03:46:43 <oklopol> :D
03:46:44 <Figs> fast
03:46:47 <oklopol> i'm getting good at this
03:46:59 <Figs> 4!-4+4+4
03:47:00 <oklopol> 4!+s(4)+4/s(4)
03:47:06 <oklopol> :P
03:47:13 <Figs> I like mine better :P
03:47:16 <oklopol> yeah
03:47:16 <Figs> =29
03:47:20 <Figs> *8
03:47:25 <Figs> s/8/9
03:47:26 <oklopol> 4!+4+4/4
03:47:28 <Figs> is that right?
03:47:35 <oklopol> ? :D
03:47:36 <Figs> yep
03:47:39 <oklopol> now 30?
03:47:42 <Figs> ok
03:47:58 <oklopol> 4!+4!+4+4/s(4)
03:47:59 <Figs> 4!+s(4)+s(4)+s(4)
03:48:03 <oklopol> 4!+4+4+4/s(4)
03:48:09 <oklopol> yeah
03:48:11 <oklopol> same thing
03:48:13 <oklopol> now 31
03:50:43 <Figs> (4!)/4+(4!)/4 = 12
03:50:44 <SevenInchBread> ....
03:50:55 <SevenInchBread> ANYWAYS
03:50:57 <SevenInchBread> LET'S GO BACK
03:51:01 <Figs> f(4) = 4! ?
03:51:02 <SevenInchBread> TO THE IMPORTANT MATTERS.
03:51:04 <Figs> :P
03:51:14 <Figs> I LIKE TALKING IN CAPS LOCK TOO :D
03:51:21 <SevenInchBread> WOW LET'S GO OUT.
03:51:28 <Figs> :(
03:51:31 <Figs> I AM NOT INTO GUYS
03:51:33 <Figs> SORRY.
03:51:37 <SevenInchBread> ...DAMN
03:51:44 <SevenInchBread> WELL I GUESS
03:51:47 <SevenInchBread> I BETTER GO KILL MYSELF.
03:51:50 <Figs> aww :(
03:51:54 <Figs> help us solve 31
03:51:55 <SevenInchBread> wwa
03:52:01 <SevenInchBread> alright.
03:52:14 <SevenInchBread> 3 + 1 = 4
03:52:24 <oklopol> :D
03:52:41 <Figs> 44/4 + 4! = 35
03:52:51 <oklopol> 24+4+4+4 = 36
03:53:04 -!- wooby has quit.
03:53:06 <Figs> f(4)/4 * f(4)/4 = 36
03:53:10 <Figs> :D
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:53:29 <oklopol> omg
03:53:53 <Figs> oh
03:54:09 <Figs> f(4)+(f(4)/4)+4 = 24
03:54:12 <Figs> *34
03:55:18 <SevenInchBread> 4+4+4+4+15 = 31
03:55:22 <Figs> :P
03:56:13 <oklopol> 33 is next?
03:56:20 <Figs> we need to finish 31
03:56:28 <oklopol> it's not finished?
03:56:30 <Figs> no
03:56:36 <oklopol> oh :\
03:56:37 <Figs> :(
03:56:45 <oklopol> ah 32
03:56:52 <oklopol> i've done that a million times :P
03:56:55 <Figs> :D
03:57:01 <oklopol> but though OH HE DID IT DAMN!
03:57:05 <oklopol> *thought
03:57:08 <oklopol> when you showed it
03:57:12 <oklopol> okay, 31
03:58:17 <Figs> sqrt(4)*4^2 - (4/4)
03:58:26 <Figs> if you allow ^2
03:58:56 <oklopol> yeah... but i'd not
03:59:06 <Figs> yeah
03:59:11 <Figs> let's see if there's another way
03:59:14 <oklopol> yeah
03:59:16 <oklopol> because
03:59:21 <oerjan> hm...
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 :)
03:59:51 <oerjan> BWAHAHAHAHA!
04:00:02 <oklopol> :DD
04:00:12 * oerjan has been reading lots of mad science webcomics
04:01:06 <Figs> 44-(4*4) = 28
04:01:44 <Figs> 44-(4!-4) = 24 :p
04:01:54 <Figs> hmm
04:01:55 <Figs> 31
04:01:58 <Figs> fuck :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 <Figs> yeah
04:02:50 <oerjan> nah. definitely nothing is allowed whose mathematical notation contains a digit other than 4
04:02:52 <oklopol> so...
04:03:00 <oklopol> well yeah
04:03:04 <oklopol> oerjan is right
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:03:51 <oklopol> hehe _D
04:03:53 <Figs> yay
04:04:06 <Figs> oh!
04:04:08 <Figs> :D
04:04:11 <Figs> I got an idea
04:04:29 <Figs> but it's probably useless :P
04:05:01 <Figs> hehe
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:05:25 <Figs> d/dx (4) = 0
04:05:41 <Figs> @_@ :P
04:05:51 <oklopol> hmm
04:07:02 -!- ShadowHntr has joined.
04:08:21 <Figs> I looked up a way to do it
04:08:24 <Figs> (sorry)
04:08:26 <oklopol> :<
04:08:32 <Figs> it required a different operator
04:08:35 <Figs> that we had
04:08:35 <oklopol> which?
04:08:37 <Figs> .4
04:08:42 <oklopol> :\\\\\\\\\\\\\\\\\\\\\\\
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:06 <Figs> ;P
04:09:20 <Figs> (and that version allowed ^2 for somethings, but I don't think used it for that)
04:09:34 <oklopol> hmm, prolly 4^sqrt(4)
04:09:52 <Figs> no, that uses a 4
04:09:59 <Figs> sqr(4)
04:10:05 <Figs> only uses 1 four
04:10:08 <Figs> but anyway
04:10:09 <Figs> ack
04:10:14 <Figs> I forgot the solution already
04:10:15 <Figs> :P
04:10:17 <Figs> rofl
04:10:21 <oklopol> well, don't look
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:10:47 <oklopol> :)
04:11:13 <Figs> yeah I got it again
04:11:20 <oklopol> showz
04:11:25 <Figs> 4!+sqrt(4)+(sqrt(4)/.4) = 31
04:11:28 <oklopol> :<<<<<<
04:11:40 <oklopol> aah
04:11:43 <oklopol> 2/0.4
04:11:46 <Figs> yeah
04:11:48 <Figs> =5
04:12:05 <oklopol> yeah... 5 is one of the numbers i've been wanting
04:12:11 -!- sekhmet has quit ("omgp90").
04:12:14 <oklopol> hmm
04:12:18 <oklopol> we have up to what now?
04:12:20 <Figs> s(4)/0.4 * 4/4
04:12:22 <Figs> =5
04:12:27 <Figs> 31, 32, 33...
04:12:31 <oklopol> no 33 yet
04:12:36 <Figs> do we have 33?
04:12:40 <Figs> no... hmm
04:12:41 <Figs> whee!
04:12:46 <Figs> I have a solution
04:12:51 <oklopol> :DD
04:12:56 <oklopol> oh
04:12:56 <Figs> 4!+4+(sqrt(4)/.4)
04:12:57 <oklopol> haha
04:12:59 <oklopol> yeah
04:13:06 <Figs> rofl
04:13:13 <oklopol> quite obvious, now 37?
04:13:15 <oklopol> or
04:13:23 <Figs> did we do 34?
04:13:31 <oklopol> 4!+4!-(4*4) = 32
04:13:36 <oklopol> no 34
04:13:40 <oklopol> 44/4 + 4! = 35
04:13:43 <oklopol> 24+4+4+4 = 36
04:13:50 <oklopol> so, 34 next
04:14:00 <oklopol> (i just pasted 32 35 and 36 here)
04:14:06 <Figs> ok
04:14:11 <Figs> 34 then
04:14:17 <Figs> oh duh
04:14:24 <Figs> 4!+4+4+s(4)
04:14:27 <Figs> = 34
04:14:30 <Figs> right?
04:14:33 <oklopol> hmm
04:14:36 <oklopol> yeah
04:14:37 <oklopol> oh
04:14:42 <oklopol> yeah
04:14:45 -!- SevenInchBread has quit (Read error: 113 (No route to host)).
04:14:46 <oklopol> 37 next
04:15:26 <Figs> 4*4/0.4 -s(4) = 38
04:16:00 <oklopol> f(4+s(4))/(4*4) = 45 :)
04:16:04 <Figs> :D
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:17:16 <Figs> 24: 4!
04:17:22 <Figs> 5: 4/0.4
04:17:27 <Figs> 2: s(4)
04:17:43 <oklopol> 5: s(4)/0.4
04:17:52 <Figs> yeah...
04:17:53 <Figs> oops
04:18:00 <oklopol> 10: 4/0.4
04:18:02 <Figs> yes
04:18:06 <Figs> :P
04:18:23 <Figs> 5*10 = 50
04:18:46 <Figs> 37.. hm
04:21:35 <Figs> 5*4+24 = 44
04:22:05 <oklopol> 48: 4! + 4! + (4-4)
04:22:12 <Figs> yeah
04:22:15 <Figs> ;)
04:22:48 <Figs> 4^2 +4^2 + 5 = 37
04:22:54 <Figs> if we allow ^2
04:23:04 <oklopol> hmmmmmmmmmm
04:23:11 <Figs> oooh
04:23:15 <Figs> what if we allowed bar?
04:23:18 <oklopol> :D
04:23:19 <oklopol> hmm
04:23:21 <oklopol> what's that?
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:23:52 <oklopol> ahhhh
04:24:01 <oklopol> i thought like foo's brother bar
04:24:05 <Figs> rofl
04:25:57 <Figs> I got 38
04:26:31 <Figs> (24 / .4` ) - (4*4) = 38
04:26:37 <oerjan> hm...
04:26:54 <oerjan> nah
04:27:22 <oklopol> (lambda a:2**a+a)(s(4)/(.4))
04:27:26 <oklopol> == 37
04:27:31 <oklopol> but...
04:27:37 <oklopol> :P
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:25 <oklopol> *that'd
04:28:34 <Figs> 4^2 +4^2 + s(4) / .4
04:28:37 <oklopol> 32 would be 2 4's then
04:28:42 <oklopol> and 5 is 2 4's
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:27 <Figs> ?
04:30:28 <oklopol> well... i kinda like the idea of having lambdas... THOUGH might get quite easy :DD
04:30:45 <oklopol> i think i asked for that.
04:31:15 <Figs> Z(4,4,4,4) = 37
04:31:20 <Figs> yay
04:31:22 <Figs> I win
04:31:47 <oklopol> hmm... does unlambda have a wimpmode like `p4 -> 4, ``s``a424 -> 2?
04:31:48 <oklopol> actually
04:31:55 <oklopol> that'd be quite too easy
04:32:01 <oklopol> "quite too"
04:32:03 <oklopol> Z?
04:32:24 <Figs> O_o
04:32:26 <Figs> I got 95
04:32:41 <oklopol> hehe
04:32:41 <Figs> 44/(.4')-4
04:32:43 <Figs> =95
04:32:44 <oklopol> well, store it
04:32:54 <oklopol> now 38, we'll stick with that 37.
04:32:56 <Figs> 44/(.4')-4 = 95
04:32:57 <Figs> :P
04:32:57 <oklopol> well
04:32:59 <Figs> ok
04:33:01 <oklopol> (24 / .4` ) - (4*4) = 38
04:33:03 <oklopol> 39 now
04:33:04 <Figs> yay
04:33:09 <oklopol> hehe :D
04:33:10 <Figs> wait
04:33:12 <Figs> what?
04:33:15 <oklopol> :O
04:33:34 <Figs> yeah
04:33:35 <Figs> ok
04:33:37 <Figs> works
04:33:44 <oklopol> ...it was yours
04:33:44 <Figs> 54: (24/.4')
04:33:50 <oklopol> oh :D
04:33:51 <Figs> yeah... I just got mixed up
04:33:59 <Figs> 39
04:34:09 <Figs> so, assuming we can use squares
04:34:14 <Figs> I'll use @ to mean square
04:34:34 <oklopol> or... d(num) ?
04:34:45 <Figs> ok
04:34:46 <Figs> d
04:34:53 <oklopol> (i have my reasons :))
04:35:33 <oklopol> f(4)/b(4)-4*4 == 38 too
04:35:40 <Figs> 16/.4 - 4/4
04:35:46 <Figs> =39
04:35:47 <oklopol> oh
04:35:50 <Figs> b?
04:35:52 <oklopol> it's the exact same :)
04:35:53 <oklopol> bar
04:35:57 <Figs> ok
04:35:59 <Figs> what is d?
04:36:07 <Figs> I know it is ^2, but what word?
04:36:10 <oklopol> i had no d there...
04:36:13 <oklopol> hmm
04:36:15 <oklopol> i have no idea :D
04:36:21 <Figs> rofl
04:36:22 <Figs> ok
04:36:29 <Figs> so, we have 40 next!
04:36:30 <oklopol> felt right... but i don't know
04:36:33 <oklopol> haha easy!
04:36:36 <Figs> yep
04:36:42 <oklopol> (i think)
04:36:43 <Figs> 16 / .4 * 4/4
04:36:57 <Figs> =40
04:37:06 <Figs> 16/.4 = 40
04:37:07 <Figs> :P
04:37:12 <Figs> 40: 16/.4
04:37:16 -!- sekhmet has joined.
04:37:17 <oklopol> nope
04:37:20 <oklopol> or?
04:37:24 <Figs> ?
04:37:28 <oklopol> 36 i think
04:37:29 <Figs> ahhh
04:37:30 <Figs> wait
04:37:38 <Figs> I used 5 fours
04:37:42 <Figs> dur
04:37:42 <oklopol> yeah
04:37:54 <Figs> 16/.4 = 40
04:37:56 <oklopol> 16/b(4)+s(4)+s(4)
04:37:58 <oklopol> yeah
04:37:59 <Figs> oh
04:37:59 <Figs> wait
04:38:01 <Figs> no I didn't
04:38:06 <Figs> 16 : d(4)
04:38:08 <oklopol> d(2)/b(4)+s(4)+s(4)
04:38:17 <oklopol> d(4)/b(4)+s(4)+s(4)
04:38:18 <oklopol> i mean
04:38:38 <oklopol> == 4
04:38:41 <oklopol> == 49
04:38:43 <oklopol> ==40
04:38:45 <oklopol> FUCK
04:38:46 <Figs> one letter functions are single ops, right?
04:38:46 <oklopol> anyway
04:38:51 <oklopol> yes
04:39:13 <Figs> d(4)/b(4) = 36
04:39:17 <Figs> for reference
04:39:25 <Figs> 41?
04:39:27 <oklopol> d(2)/b(4)+s(4)/0.4
04:39:29 <oklopol> == 41
04:39:31 <Figs> yep
04:39:31 <Figs> ok
04:39:32 <Figs> 42
04:39:52 <oklopol> f(4)+f(4)-4-s(4)
04:39:56 <oklopol> == 42
04:40:09 <Figs> O_o
04:40:18 <oklopol> f(4)+f(4)-s(4)/0.4
04:40:19 <Figs> yeah
04:40:19 <oklopol> == 43
04:40:24 <Figs> ok
04:40:29 <Figs> 44... I did 44 didn't I?
04:40:42 <oklopol> maybe
04:40:43 <oklopol> f(4)+f(4)-s(4)-s(4)
04:40:46 <oklopol> == 44 anyway
04:40:55 <Figs> yeah
04:40:58 <Figs> 45
04:41:23 <Figs> 44+(4/4) = 45
04:41:31 <oklopol> yeah
04:41:33 <oklopol> 46 now
04:41:45 <oklopol> 44+4-s(4)
04:41:51 <oerjan> hm...
04:41:55 <Figs> 47
04:41:56 <oklopol> :|
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:30 <Figs> O.o
04:42:32 <Figs> rofl
04:42:34 <oklopol> :D
04:42:38 <Figs> the version I looked up had d() in it
04:42:40 <Figs> and b()
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:06 <Figs> first time
04:43:13 <Figs> ok, so 47?
04:43:37 <oklopol> 44+s(4)+s(4) 48 (again prolly)
04:43:42 <Figs> yeah
04:44:00 <oerjan> i was thinking about the combination function for binomial exponents
04:44:08 <oerjan> might have some use
04:44:18 <Figs> ?
04:44:21 <oklopol> ?
04:44:24 <oklopol> :D
04:44:42 <oerjan> (n over m) = n!/(m! * (n-m)!)
04:44:48 <oerjan> pascal's triangle
04:44:54 <Figs> 44/b(4) = @_@
04:45:00 <Figs> oops
04:45:03 <Figs> two things at once
04:45:04 <Figs> rofl
04:45:25 <oklopol> oerjan what kind of use?
04:45:30 <oklopol> ...esoteric use? :D
04:45:49 <oerjan> for this puzzle i mean
04:45:54 <oklopol> ah :D
04:46:13 <Figs> what are we up to?
04:46:14 <Figs> 47?
04:46:20 <oklopol> 47 is now yeah
04:46:28 <Figs> oh, that's easy
04:46:43 <Figs> or not
04:46:44 <Figs> :P
04:46:51 <Figs> I got a way with 5 by mistake
04:47:14 <oklopol> 44+s(4)/.4 = 49 anyways
04:47:41 <oklopol> f(4)+f(4)-(4/4) == 47
04:47:45 <oklopol> right?
04:47:58 <oklopol> so... 50 next?
04:48:09 <oklopol> 44+4+s(4) == 50
04:48:12 <oklopol> 51 next?
04:48:17 <Figs> ah so easy! yeah ...
04:48:38 <Figs> 44+4+4 = 52
04:48:48 <Figs> (obviously)
04:49:20 <Figs> oh!!
04:49:22 <Figs> I got it
04:49:23 <Figs> hold on
04:49:36 <oklopol> f(4)+f(4)+s(4)/0.4 == 53
04:50:19 <Figs> f(4)/.4 - 4/b(4) - 51
04:50:32 <Figs> 60: f(4) / .4
04:50:38 <Figs> 9 : 4/b
04:50:48 <oklopol> cool, yeah
04:50:57 <Figs> 54
04:51:20 <Figs> f(4)/b(.4) *4/4 = 54
04:51:25 <oklopol> f(4)/.4-4-s(4)
04:51:28 <oklopol> hmm
04:51:34 <oklopol> yeah
04:51:36 <oklopol> now 55
04:51:38 <oklopol> well
04:51:40 <oklopol> trivial
04:51:49 <Figs> hmm?
04:51:57 <oklopol> f(4)/.4-s(4)/0.4
04:52:06 <Figs> yeah
04:52:08 <oklopol> we have so many numbers it's becoming easy :)
04:52:10 <Figs> :P
04:52:11 <oklopol> 56
04:52:22 <oklopol> f(4)/.4-s(4)-s(4)
04:52:25 <oklopol> now 57
04:53:20 <oklopol> f(4)+f(4)+4/b
04:53:23 <oklopol> is 57
04:53:26 <oklopol> now 58
04:53:43 <Figs> d(4)*4-4-s(4)
04:53:45 <oklopol> f(4)/.4-4/s(4)
04:53:48 <oklopol> :D
04:53:56 <oklopol> yeah
04:53:59 <oklopol> now 59
04:54:08 <oklopol> f(4)/.4-4/4
04:54:10 <oklopol> okay
04:54:12 <oklopol> now 60
04:54:16 <Figs> f(4)/.4 - 4/4
04:54:24 <oklopol> f(4)/.4-4+4
04:54:26 <Figs> ah, I'm too slow :P
04:54:28 <oklopol> :)
04:54:31 <oklopol> now 61
04:54:39 <oklopol> f(4)/.4+4/4
04:54:41 <oklopol> okay
04:54:43 <oklopol> now 62
04:54:52 <oklopol> d(4)*4-4+s(4)
04:54:53 <oklopol> okay
04:54:55 <oklopol> now 63
04:55:03 <oklopol> hmm
04:55:12 <Figs> d(4)*4 - (4/4)
04:55:28 <Figs> = 63
04:55:31 <oklopol> yeah
04:55:32 <oklopol> 4*4*(s(4)+s(4))
04:55:34 <oklopol> == 64
04:55:36 <Figs> d(4)*4 * 4/4 = 64
04:55:46 <Figs> ok
04:55:57 <Figs> d(4)*4 + 4/4 = 65
04:56:20 <oklopol> f(4)+f(4)+f(4)-4 = 68
04:56:25 <oklopol> ah
04:56:32 <oklopol> fuck i forgot d again xD
04:56:35 <Figs> d = square
04:56:42 <oklopol> "4*4*4" damn that's too long.....
04:56:44 <oklopol> :P
04:56:45 <oklopol> i mean
04:56:49 <oklopol> forgot it existed
04:56:52 <oklopol> okay
04:56:52 <Figs> :P
04:56:54 <oklopol> now 66
04:56:56 <Figs> ahh
04:56:57 <Figs> yeah :D
04:57:06 <oklopol> d(4)*4 + 4/s(4) = 65
04:57:09 <oklopol> d(4)*4 + 4/s(4) = 66 i mean
04:57:13 <Figs> ok
04:58:14 <oklopol> d(4)*4+f(4)/4 = 70
04:58:28 <Figs> how to make 60 again?
04:58:32 <Figs> f(4) / .4 ?
04:58:38 <Figs> yeah
04:58:43 <oklopol> yeah
05:00:54 <Figs> f(4)/b + d(4) - s(4) = 68
05:01:12 <Figs> 54 + 16 - 2
05:04:41 <oklopol> hmph
05:05:44 <Figs> hmm
05:06:00 <Figs> well, remember, we can use f() d() and b() and s() as functions of other things too
05:07:23 <oklopol> hehe s(b(4)) == 0.666...
05:07:29 <oklopol> though
05:07:33 <oklopol> haven't found any use :)
05:07:37 <Figs> I have
05:07:38 <Figs> :D
05:07:41 <Figs> I think I got one
05:07:44 <Figs> hold on
05:07:59 <Figs> nope
05:09:06 <Figs> d(4/b(.4))-(4/b(4)) = 72
05:09:47 <oklopol> 4*4*4*4 = 256
05:09:55 <Figs> :P
05:10:13 <Figs> oh!!!
05:10:24 <oklopol> found it?
05:10:28 <Figs> no
05:10:34 <Figs> but I did find something cool
05:10:38 <Figs> hold on
05:11:00 <Figs> 44 / s(b(4)) = 66
05:11:11 <Figs> only uses 3 fours though
05:11:18 <oklopol> yep :\
05:11:36 <oklopol> darn, i had all the functions in python... now i crashed it :)
05:11:47 <oklopol> 4**4**4**4 (** == ^)
05:12:07 <Figs> lol
05:12:08 <oklopol> oerjan what's your haskell interpreter like btw?
05:12:08 <Figs> :D
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:40 <oklopol> hmm
05:13:53 <oklopol> i'm making a list of the shortest possible way to construct a number
05:13:55 <oklopol> pb.vjn.fi/p363163442.txt
05:14:00 <Figs> mmm
05:14:01 <oklopol> http://pb.vjn.fi/p363163442.txt
05:14:04 <oklopol> but
05:14:07 <oklopol> 7 is bad now
05:14:12 <oklopol> i think you can do it with 2
05:14:18 <Figs> o.o
05:14:30 <oklopol> since i'm forgetting some nice ways to do numbers
05:14:37 <oklopol> a look-up table'd be nice
05:14:41 <Figs> d(4) -( 4 / b(4))
05:15:01 <Figs> 16 - 9 = 7
05:15:07 <Figs> b(.4) , I mean
05:15:12 <Figs> bar over .4
05:15:21 <Figs> well, I guess b(4) makes sense too :P
05:15:27 <Figs> since 44444444.... is useless
05:15:34 <Figs> oh!!
05:15:35 <Figs> YES
05:15:37 <Figs> I got it
05:15:38 <Figs> :)
05:15:39 <Figs> 66
05:15:43 <Figs> 44 / s(b(44)) = 66
05:15:53 <Figs> .44 repeating
05:15:56 <oklopol> 66 is ewld.
05:15:58 <Figs> .44 44 44 44 44
05:16:04 <Figs> :D
05:16:10 <Figs> w00t!
05:16:17 <oklopol> :D
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:16:47 <oklopol> :P
05:17:00 <Figs> ok
05:17:02 <Figs> 67
05:17:12 <oklopol> i think they'll find this most entertaining
05:17:17 <Figs> :D
05:18:11 -!- oerjan has quit ("Lost terminal").
05:18:29 <RodgerTheGreat> good night everyone
05:18:34 <oklopol> night
05:18:34 <Figs> night rodger
05:18:42 -!- RodgerTheGreat has quit.
05:18:57 <oklopol> 1: 4/4
05:18:57 <oklopol> 2: s(4)
05:18:57 <oklopol> 3: 4-4/4
05:18:57 <oklopol> 4: 4
05:18:57 <oklopol> 5: s(4)/.4
05:18:57 <oklopol> 6: 4+s(4)
05:18:59 <oklopol> 7: 4+4-4/4
05:19:01 <oklopol> 8: 4+4
05:19:03 <oklopol> 9: 4/b(4)
05:19:06 <oklopol> 10: 4/.4
05:19:15 <Figs> :D
05:19:15 <oklopol> i think these are pretty good... but i'd like to have allz
05:19:22 <Figs> yeah
05:19:40 <oklopol> wanna copy/paste all from the logs? :X
05:19:40 <oklopol> D
05:19:41 <oklopol> :D
05:19:44 <Figs> not really
05:19:49 <oklopol> hehe
05:19:52 <oklopol> i'll
05:19:53 <Figs> that's the kind of thing that awk and sed should be used for
05:19:58 <Figs> if only
05:20:01 <Figs> :P
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:21:56 <oklopol> no... i won't
05:22:01 <oklopol> i thought i might
05:22:04 <oklopol> but... nooooo
05:22:16 <oklopol> hmm
05:22:18 <oklopol> no
05:22:38 <Figs> I'll add one
05:22:49 <oklopol> oki
05:23:20 <Figs> make rules for 24, 36, 54, 60, and 81
05:23:26 <Figs> since we have those
05:23:27 <Figs> I think
05:23:29 <Figs> and 20
05:23:36 <Figs> and whatever is obvious from those
05:23:37 <Figs> :D
05:23:59 <Figs> my server is slow is why
05:25:52 <Figs> http://student.hpa.edu/~cmcfarland/bits.txt
05:25:53 <Figs> there
05:27:44 <oklopol> hmm... i can't find a way
05:27:45 <oklopol> damn
05:27:52 <Figs> for what?
05:27:57 <oklopol> 67
05:28:02 <Figs> it's 60 + 7
05:28:05 <Figs> I think
05:28:12 <oklopol> mja
05:28:38 <Figs> oh
05:28:43 <Figs> that'd give you 5
05:28:44 <Figs> woops
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:23 <Figs> in unix? :X
05:29:24 <oklopol> and ONLY 4 numbers!
05:29:34 <oklopol> i haven't used unix
05:29:35 <Figs> I don't understand lambdas :(
05:29:35 <oklopol> :)
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:30:58 <oklopol> and a b c d are the args
05:31:23 <oklopol> that was a haskell lambda (almost at least)
05:31:25 <Figs> would be fun
05:31:29 <oklopol> no
05:31:30 <Figs> but I think that's kind of cheating :P
05:31:32 <oklopol> would be too trivial :)
05:31:34 <oklopol> yeah
05:31:46 <oklopol> since it actually means infinite 4's
05:31:51 <Figs> :P
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:15 <oklopol> i did it.
05:32:17 <oklopol> all of it.
05:32:25 <Figs> ?
05:32:29 <Figs> did wot?
05:32:31 <oklopol> with infinite 4's
05:32:33 <oklopol> all numbers
05:32:34 <Figs> lol
05:32:35 <Figs> :D
05:32:36 <oklopol> natural
05:32:38 <Figs> nono
05:32:44 <Figs> shortest possible
05:32:46 <Figs> with 4's
05:32:48 <oklopol> oh :)
05:32:55 <Figs> lambda's ok
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:32 <oklopol> (i already have one)
05:33:36 <Figs> lol :D
05:33:37 <oklopol> (it's called python)
05:33:39 <Figs> no
05:33:42 <Figs> I mean, specifically
05:33:44 <Figs> for the 4's game
05:33:49 <oklopol> hehe oki :D
05:33:52 <Figs> (with an ini file for the number worked with)
05:34:05 <Figs> once you do something like
05:34:08 <Figs> 2: _____
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:22 <oklopol> 4/b(s(4)) 18 btw
05:37:26 <oklopol> and no
05:37:35 <oklopol> you can't do 32 with ONE 4
05:37:36 <oklopol> ...
05:38:17 <oklopol> you can do 4^n with one 4
05:38:22 <oklopol> actually...
05:38:31 <oklopol> you might be able to do anything with just one 4
05:38:42 <Figs> O.o :D
05:38:49 <Figs> 2^5
05:39:05 <Figs> you can do it with 2 easily
05:39:39 <oklopol> you have factorization, squareroot and square
05:39:42 <Figs> s(4)*d(4)
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:25 <oklopol> like f(b(4))
05:40:26 <Figs> you mean factorial, I presume?
05:40:34 <oklopol> i might mean that
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:40:54 <Figs> :P
05:40:55 <oklopol> so we have lists
05:40:56 <Figs> eep
05:41:17 <Figs> how did i do 54?
05:41:18 <oklopol> i know what factorization is, i just confuse terms :)
05:41:24 <oklopol> errrrr
05:41:27 <oklopol> hard to remember
05:41:33 <Figs> 16/b(4)?
05:41:45 <oklopol> f(4)/b(.4) *4/4
05:41:57 <Figs> no, the short way ;)
05:42:22 <oklopol> 16/b(4) = 36
05:42:39 <Figs> oh :P
05:42:45 <oklopol> f(4)/b(4)
05:42:59 <oklopol> that's 54, *4/4 is a nop
05:43:14 <Figs> 60: f(4)/.4
05:44:24 <Figs> ok
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:25 <oklopol> yeah
05:45:26 <oklopol> cool
05:45:29 <Figs> :D
05:45:57 <Figs> so, 67
05:45:57 <oklopol> i could make a pagebin on vjn.fi
05:46:02 <Figs> *shrug*
05:46:07 <oklopol> so you could make pages quickly
05:46:10 <oklopol> and update
05:46:17 <Figs> well, I can update relatively quickly
05:46:19 <oklopol> so... pastebin with mutability
05:46:28 <oklopol> prolly
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:46:48 <Figs> eh
05:46:50 <Figs> ;)
05:46:54 <Figs> ^_^
05:47:08 <Figs> this is useful for me for now
05:47:10 <Figs> but go ahead
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:33 <Figs> :P
05:47:37 <Figs> but I wouldn't recommend it
05:47:56 <Figs> 67
05:47:59 <Figs> then I need to go to bed
05:48:04 <oklopol> i wouldn't... but fucking 67
05:48:08 <oklopol> it's 8 am soon
05:48:13 <Figs> :(
05:48:16 <Figs> eep, sorry
05:48:19 <Figs> I kept you up all night
05:48:20 <oklopol> i'll start reading in a mo
05:48:21 <oklopol> nah
05:48:24 <oklopol> i slept all day
05:48:35 <oklopol> 14 -> 00.00 or something
05:49:31 <oklopol> meh... i think i'll go read, i'll make a program to brute me 67 later today ;)
05:49:35 <Figs> :P
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:55:59 <Figs> oh
05:56:03 <Figs> I forgot about that, lol
05:56:07 <Figs> I got so caught up in this :P
05:56:07 <oklopol> haha :)
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:56:28 <Figs> doesn't work
05:56:31 <oklopol> hmm
05:56:38 <oklopol> [msg] ?
05:56:41 <oklopol> ptr is what?
05:56:48 <Figs> value of msg
05:56:53 <oklopol> oka
05:56:55 <oklopol> y
05:57:08 <oklopol> mov moves values?
05:57:11 <Figs> yes
05:57:14 <oklopol> i mean
05:57:19 <oklopol> mov moves strings?
05:57:20 <Figs> dl = [msg]
05:57:25 <oklopol> ah
05:57:25 <Figs> no
05:57:26 <oklopol> okay
05:57:31 <Figs> msg is db "a"
05:57:35 <Figs> msg db "a"
05:57:38 <oklopol> "a",0 i think
05:57:42 <Figs> mov dl, [msg]
05:57:47 <Figs> int 21h
05:57:48 <oklopol> you want it zero padded
05:57:51 <oklopol> or?
05:57:52 <Figs> (I have set AH to 02h)
05:57:53 <Figs> no
05:57:56 <oklopol> okay
05:57:56 <Figs> it shouldn't matter
05:58:02 <Figs> since
05:58:06 <Figs> mov dl, 'a'
05:58:08 <Figs> works
05:58:18 <oklopol> so it just prints one char?
05:58:24 <oklopol> i know it can print more
05:58:34 <oklopol> but anyway, easy to do it with that
05:58:39 <Figs> http://rafb.net/p/Psz7PD47.html
05:58:41 <oklopol> just looooooopz
05:58:48 <Figs> that's the idea
05:58:51 <Figs> loop until \0
05:58:55 <Figs> jne top
05:59:00 <Figs> if == quit
05:59:09 <oklopol> BUT i'm pretty sure there is a way to print a whole string built-in...
05:59:14 <Figs> yeah
05:59:14 <oklopol> *built in
05:59:18 <Figs> if you want to terminate wtih $
05:59:20 <Figs> which I didn't want to do
05:59:29 <oklopol> hmm
05:59:46 <oklopol> weird terminator
06:00:09 <Figs> yep
06:00:55 <Figs> OOHHH
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:02 <Figs> ROFL
06:01:07 <oklopol> probably bf in my case :)
06:01:13 <oklopol> oh :D
06:01:15 <oklopol> i didn't know that
06:01:19 <oklopol> what?
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:39 <Figs> XD
06:01:43 <oklopol> huh?
06:01:52 <Figs> ok,
06:01:53 <oklopol> defining what?
06:01:55 <Figs> look where I have it
06:01:58 <Figs> org 100h
06:02:02 <Figs> msg db 'a'
06:02:10 <Figs> 'a' is the first instruction being called >.<
06:02:14 <Figs> no seperation of code and data :P
06:02:17 <Figs> me == idiot
06:02:25 <oklopol> org?
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:03:40 <oklopol> i did not understnad
06:03:45 <oklopol> *understand
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:32 <Figs> :P
06:04:39 <Figs> or whatever
06:04:51 <Figs> it put the byte, 'a', literally
06:04:53 <Figs> at the start
06:04:55 <Figs> :P
06:04:56 <oklopol> ah
06:05:00 <oklopol> oh :)
06:05:02 <Figs> so it see's OH, first instruction is "a"
06:05:02 <Figs> wtf
06:05:04 <Figs> AHHH!
06:05:06 <Figs> error
06:05:07 <Figs> :D
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:05:59 <Figs> and compile
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:14 <Figs> ;)
06:06:15 <oklopol> i assume you meant you were outputting values at address 97 in memory
06:06:17 <oklopol> hmm
06:06:27 <oklopol> but... why? :O
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:15 <oklopol> anyway
06:10:25 <Figs> ... O.o
06:10:27 <Figs> no
06:10:29 <Figs> wrong program
06:10:32 <Figs> you didn't change it
06:10:33 <oklopol> oh :O
06:10:34 <Figs> add
06:10:38 <Figs> msg db 'a'
06:10:39 <Figs> to the top
06:10:48 <Figs> (after org 100h)
06:11:12 <oklopol> ah, then :)
06:11:17 <oklopol> you pasted the old one
06:11:56 <oklopol> msg db 'a' means put 'a' here and substitute this address for every 'msg' in the code?
06:12:03 <Figs> no
06:12:04 <Figs> it means
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:27 <oklopol> output=?
06:12:31 <oklopol> code output?
06:12:48 <oklopol> isn't that exactly what i said?
06:12:48 <Figs> output = object code
06:12:52 <oklopol> yeah
06:12:57 <Figs> no, it's not
06:13:00 <oklopol> okay
06:13:04 <oklopol> what's the difference?
06:13:14 <Figs> oh
06:13:15 <Figs> it is
06:13:17 <Figs> nevermind
06:13:20 <Figs> I misread it :P
06:13:23 <Figs> sorry :)
06:13:25 <Figs> my bad
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:14:26 <oklopol> maybe you sensed that
06:14:35 <Figs> lol
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:15:36 <Figs> ok
06:47:55 -!- ShadowHntr has quit ("End of line.").
06:56:03 <Figs> Hey oklopol
06:56:04 <Figs> I did it
06:56:33 <Figs> http://rafb.net/p/SWRswb26.html
06:56:42 <Figs> now I am going to bed! :P
06:56:44 <Figs> cya
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
13:52:07 <SimonRC> oops
14:54:41 -!- sirKIIdC has joined.
14:54:47 <sirKIIdC> hi ::)
14:54:56 <sirKIIdC> !
14:55:04 <sirKIIdC> brainfuck
14:55:09 <sirKIIdC> help!
14:55:25 <sirKIIdC> how I can give the bot brainfuck-script
14:59:16 <oklopol> teh Bot.
15:01:17 <oklopol> ~bf ++++++++[>++++++++<-]>+.
15:01:18 <bsmnt_bot> A
15:01:29 <oklopol> if your mean any bot / bsmnt_bot
15:04:19 <sirKIIdC> thx
15:04:21 <sirKIIdC> ::)
15:04:34 <sirKIIdC> ~bf ++++++.
15:04:34 <bsmnt_bot>
15:04:39 <sirKIIdC> ~bf +++++++++++++++++++.
15:04:39 <bsmnt_bot>
15:04:43 <sirKIIdC> ~bf +++++++++++++++++++++++++++++++++++++++++.
15:04:43 <bsmnt_bot> )
15:04:48 <sirKIIdC> ~bf ++++++++++++++++++++++++++++++++++++++++++++++++.
15:04:48 <bsmnt_bot> 0
15:04:56 <sirKIIdC> ~bf +++++++++++++++++++++++++++++++++++++++++++++++++.
15:04:56 <bsmnt_bot> 1
15:06:21 <oklopol> you seems to be a real brainfuck wiz
15:06:24 <oklopol> :)
15:10:21 -!- crathman has joined.
15:13:08 -!- nazgjunk has quit ("Bi-la Kaifa").
15:13:17 <sirKIIdC> ::P
15:52:38 -!- Figs has joined.
15:52:45 <Figs> hello
15:53:24 <Figs> :D
15:53:28 <Figs> 40 byte hello world program
15:54:37 -!- RodgerTheGreat has joined.
15:54:52 <RodgerTheGreat> hello
15:54:55 <oklopol> !exec "Hello, world!"PrntNl
15:54:56 <oklobot> Hello, world!
15:54:58 <oklopol> 21 byte hello world
15:55:03 <RodgerTheGreat> cool
15:55:13 <RodgerTheGreat> what language?
15:55:43 <oklopol> i call it oklobot, since i never really named it
15:55:58 <Figs> x86 assembly
15:55:59 <sirKIIdC> !exec "Lala"PrntNL
15:56:16 <oklopol> !exec "Lala"PrntNL
15:56:17 <oklopol> !exec "Lala"PrntNl
15:56:19 <oklobot> LalaPRIVMSG #esoteric :LalaPRIVMSG #esoteric :Lala
15:56:21 <oklopol> !exec "Lala"PrntNl
15:56:23 <oklobot> 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:56:43 <oklopol> (okay, 2 hours)
15:56:57 <Figs> :blink:
15:57:08 <sirKIIdC> whirl is strange language
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:16 <oklopol> :)
15:57:22 <oklopol> i never get tired of it
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:57:52 <oklopol> now i mean
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:58:58 <RodgerTheGreat> man, I missed out on some fun this morning
15:59:17 <oklopol> you mean the 4 game? :P
15:59:19 <Figs> I'll bet quines are easy in Lisp
15:59:24 <Figs> oh yah :P
15:59:32 <oklopol> Figs i think not especially
15:59:35 <oklopol> oh
15:59:38 <oklopol> actually
15:59:40 <oklopol> probably :)
15:59:50 <Figs> http://student.hpa.edu/~cmcfarland/bits.txt
15:59:52 <Figs> RodgerTheGreat
15:59:54 <Figs> :D
16:00:01 <Figs> some short-ish ways to do various numbers
16:00:06 <Figs> we got stuck on 67
16:00:12 <Figs> if I remember
16:00:14 <RodgerTheGreat> interesting
16:00:18 <oklopol> yeah
16:00:18 <oklopol> 67
16:00:29 <oklopol> i'll go read --------->
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:15 <Figs> fun
16:01:23 <Figs> you must use four 4s
16:01:27 <RodgerTheGreat> I could've guessed. :)
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:17 <RodgerTheGreat> so clearly, things like 32 are as simple as d(4)+d(4)
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:03:00 <Figs> must be 4
16:03:02 <RodgerTheGreat> yeah
16:03:13 <RodgerTheGreat> alright, I understand
16:03:18 <Figs> :D
16:03:43 <sirKIIdC> ::P
16:07:00 <sirKIIdC> i am writing another interpreter for my language, wich is like whirl - it has two commands - 0 and 1
16:12:56 <Figs> holy crap
16:12:58 <Figs> I got 67
16:13:56 <Figs> ( d(d(4)) +d(4)-4 ) / 4 = 67
16:14:49 * RodgerTheGreat high-fives Figs
16:15:06 <Figs> thanks :D
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:01 <RodgerTheGreat> why do you say that?
16:16:06 <Figs> very hard
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:16:31 <RodgerTheGreat> recursion. mmm.
16:16:53 <Figs> anyway
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:18:35 <RodgerTheGreat> yes
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:13 <Figs> go for it :D
16:19:30 <Figs> and actually
16:19:34 <Figs> there are 9 operations
16:19:50 <RodgerTheGreat> I might, but I have to finish some homework today
16:20:00 <Figs> +, -, *, /, s,d,f,b,^
16:20:10 <RodgerTheGreat> and by "today" I mean "this afternoon"
16:20:11 <Figs> and you can use 44, .4, etc
16:20:14 <RodgerTheGreat> good point
16:20:16 <RodgerTheGreat> hm
16:20:36 <Figs> ...68!
16:21:40 <Figs> f(4)+f(4)+f(4)-4 = 68
16:23:58 -!- jix__ has joined.
16:24:02 <Figs> hi
16:24:43 <RodgerTheGreat> hello, jix
16:25:00 <RodgerTheGreat> (+/- some underscores)
16:26:33 <Figs> (d(d(4))+f(4)-4)/4 = 69
16:26:58 <RodgerTheGreat> that's a good one to have
16:27:21 <RodgerTheGreat> hm. We are in dire need of 42
16:27:21 <Figs> 4*d(4)+4+s(4) = 70
16:27:35 <Figs> 44-s(4)? :P
16:28:27 <RodgerTheGreat> aw
16:28:39 <RodgerTheGreat> but that only uses 3
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:17 <RodgerTheGreat> it isn't on that thing you pastebinned
16:29:28 <Figs> it's shortcuts
16:30:14 <Figs> oklopol: f(4)+f(4)-4-s(4) = 42
16:30:47 <RodgerTheGreat> yes
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:31:54 <Figs> ;)
16:31:57 <RodgerTheGreat> and for some much larger
16:32:07 <Figs> dddddddddd(4)
16:32:08 -!- jix has quit (Read error: 113 (No route to host)).
16:32:16 <Figs> :P
16:32:21 <Figs> (for example)
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:03 <RodgerTheGreat> hm
16:33:32 <RodgerTheGreat> ok
16:33:34 <RodgerTheGreat> here is the basis upon which I shall construct one:
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:34:43 <RodgerTheGreat> follow me?
16:34:47 <Figs> k
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:22 <Figs> *shrug*
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:36:56 <Figs> :P
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:37:19 <RodgerTheGreat> I'm pretty sure that should be entirely possible
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:04 <RodgerTheGreat> OOH
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:40:48 <Figs> ;/
16:40:50 <Figs> ok
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:34 <RodgerTheGreat> hm. yes. nested functions
16:42:35 <Figs> op(op(op.... 4)
16:42:50 <RodgerTheGreat> foo1(foo2(4) operator foo3(4))
16:43:06 <Figs> functions are effectively unary operators
16:43:12 <Figs> and operators are binary operators
16:43:15 <Figs> :P
16:43:19 <RodgerTheGreat> yeah
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:52 <Figs> and 44
16:45:58 <Figs> ;)
16:45:58 <oklopol> that was a clever one indeed
16:46:01 <Figs> thank you
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:46:50 <oklopol> 268 = 256+12
16:46:54 <oklopol> and 12 = 16-4
16:47:11 <oklopol> but, i'm still reading!
16:47:18 <oklopol> --------------------->
16:47:21 <Figs> ;)
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:06 <Figs> @.@
16:49:21 <oklopol> or... maybe not
16:49:30 <oklopol> GO oklopol GO -------------------->
16:49:41 <RodgerTheGreat> bbl- food
16:49:46 <Figs> let's finish 100 first ;D
16:51:52 <Figs> 4*f(4)-(d(4)+s(4))
16:51:55 <Figs> =78
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:19 <sirKIIdC> what is it?
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:17 <Figs> ooh!
16:56:25 <Figs> d(4/b(4)) * 4/4 = 81 :)
16:56:30 <Figs> of course ;)
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:02:56 <Figs> ??
17:03:08 <Figs> (d(d(4))+4*f(4))/4 = 88
17:03:10 <Figs> still need 87
17:03:27 <sirKIIdC> is it a kind of game?
17:03:30 <Figs> yeah
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:04:04 <Figs> for reference
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:14:23 <Figs> 91-5
17:14:27 <Figs> O.o
17:14:29 <Figs> woops
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:12 <oklopol> FUCK :OOOOOO
17:19:17 <oklopol> i'm missing teh fun
17:19:18 <Figs> what?
17:19:20 <Figs> lol
17:19:21 <Figs> :P
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:33 <oklopol> when 100 is done i mean
17:21:43 <oklopol> oh... 100 isn't really anything special
17:21:47 <Figs> yeah
17:21:49 <oklopol> so... it's not interesting
17:21:51 <Figs> 4/.4 * 4/.4
17:21:52 <RodgerTheGreat> I'm back
17:21:55 <Figs> wb
17:22:02 <oklopol> which num now?
17:22:08 <Figs> 94
17:22:21 <oklopol> can i have bits?
17:22:28 <Figs> http://student.hpa.edu/~cmcfarland/bits.txt
17:24:29 <oklopol> (f(4)+d(4))/b(4)+4
17:24:31 <oklopol> 94
17:24:38 <Figs> 95 = 44/b(4) - 4
17:25:21 <oklopol> 4*d(4)+d(4)*s(4) == 96
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:31 <oklopol> :D
17:25:33 <Figs> :D
17:25:36 <oklopol> fast.
17:25:40 <Figs> hee
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:04 <oklopol> though... prolly lucky
17:26:13 <Figs> ok
17:26:16 <Figs> so we got all 100!
17:26:20 <oklopol> ya!
17:26:21 <Figs> yay
17:26:25 <Figs> that means
17:26:28 <Figs> we have a starting set
17:26:32 <Figs> from which we can optimize
17:26:34 <Figs> :D
17:26:34 <oklopol> hehe yeah :)
17:26:41 <Figs> ie, we can do 1 - 100 in 4
17:26:42 <Figs> but
17:26:46 <Figs> there are better ways to do them
17:26:48 <Figs> (shorter)
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:02 <Figs> yeah
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:27:23 <Figs> eep
17:27:24 <Figs> :P
17:27:26 <Figs> lol
17:28:55 <oklopol> lol = d(4/b(4))+d(4)+4
17:29:23 <Figs> :P
17:29:38 <Figs> this looks like a job for...
17:29:40 <Figs> OpenOffice!
17:29:45 * Figs plays theme music
17:31:39 <lament> hm, what was hte Sprout page?
17:31:55 <Figs> sprout?
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:17 <Figs> damn it
18:13:47 <lament> so don't use it?
18:13:58 <Figs> I don't want to pay money for another slow buggy program ;P
18:14:09 <Figs> *ahem*
18:14:43 <Figs> how do I turn off auto-capitalize in Calc?
18:14:48 -!- sebbu has joined.
18:16:00 <Figs> found it
18:23:03 <Figs> wait
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:29:33 <Figs> :P
18:29:37 <Figs> and bored!
18:42:37 <SimonRC> ((lambda (x) (list x (list (quote quote) x))) (quote (lambda (x) (list x (list (quote quote) x)))))
18:43:09 <Figs> eep
18:43:11 <Figs> lisp!
18:46:58 <SimonRC> (\s->s++show s)"(\s->s++show s)"
18:46:59 <SimonRC> Haskell
18:47:05 <SimonRC> :->
18:47:22 <Figs> o.o
18:47:40 <SimonRC> the haskell one works on almost the same principle as the LISP one
18:48:48 <Figs> you know
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:53:33 <oklopol> [19:21:18] <oklopol> 94
18:53:37 <oklopol> we did
18:53:46 <Figs> oh P
18:53:48 <lament> Figs: python!!!
18:53:48 <Figs> *:P
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:45 <Figs> no... :P
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:55:56 <oklopol> and no
18:56:00 <oklopol> i can't define it :)
18:56:20 <Figs> lol
18:57:31 <oklopol> hmm... that haskell quine is very easy to read if you know what (\...) is
18:59:24 <Figs> :O
18:59:25 <Figs> http://edkrebs.com/herb/petoons11/desrt.jpg
18:59:28 <Figs> ROFL
19:32:42 <SimonRC> heh
19:37:42 <bsmntbombdood> hello
19:39:27 <bsmntbombdood> I have a small and pitiful interpreter for FOOS now
19:39:34 <Figs> :P
19:39:40 * SimonRC goes
19:39:45 <Figs> I am just so tired of my parser
19:46:06 <lament> FOOS?
19:46:34 <bsmntbombdood> A little language i've been thinking about
19:46:45 <bsmntbombdood> http://bsmntbombdood.mooo.com/FOOS.txt
19:46:56 <bsmntbombdood> everything described there is implemented
19:49:23 <bsmntbombdood> I still need to implement scoping
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:54:26 <bsmntbombdood> does what's exceptected
19:55:48 <oklopol> "@ - pushes the builtin object onto the stack
19:55:48 <oklopol> "
19:55:55 <oklopol> i don't understand even the first line :<
19:57:10 <oklopol> what's the builtin object?
19:57:50 <bsmntbombdood> the object where the builtins are stored
19:57:55 <bsmntbombdood> the only object with a name
19:58:12 <oklopol> ah okay
20:01:00 <bsmntbombdood> @'foo ["Hello, world" print] @object %inherit add-method done create foo
20:01:04 <bsmntbombdood> a convoluted hello world
20:01:12 <oklopol> so... your code makes the stack go <empty> -> bi -> bi "foo" -> bi "foo" [code] -> ??
20:01:19 <oklopol> @object is what?
20:01:23 <Figs> what is the include for boost lambda? O.o
20:01:36 <oklopol> ah
20:01:41 <oklopol> oh, i think i got it
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:23 <bsmntbombdood> @ pushes the builtins object
20:02:28 <oklopol> okay
20:02:29 <Figs> I know exactly how boost::lambda works
20:02:31 <bsmntbombdood> <something> sends it the something method
20:02:34 <Figs> and I could rewrite it if I needed to
20:02:36 <Figs> :P
20:03:42 <oklopol> hmm... you have an interpreter?
20:03:45 <oklopol> bsmntbombdood
20:03:55 <bsmntbombdood> yea
20:04:10 <oklopol> where?
20:04:15 <oklopol> can it be dl'd?
20:04:25 <oklopol> you may have pasted a link but i don't remember
20:04:39 <bsmntbombdood> i need to fix some stuff first
20:05:59 <oklopol> i just need the basics to work... since i still don't understand how it works :)
20:06:33 <Figs> wlw.
20:06:34 <Figs> *wow
20:06:41 <Figs> I just wrote a tokenizer in... 44 lines of code
20:06:52 <oklopol> hmm
20:07:00 <oklopol> for what?
20:07:05 <lament> def tokenize(s): return s.split(' ')
20:07:12 <lament> one-line tokenizer
20:07:12 <oklopol> i can write you a bf tokenizer in conciderably less
20:07:17 <oklopol> oh
20:07:21 <oklopol> tokenizer :)
20:07:47 <Figs> in C++
20:07:51 <oklopol> well, a nesting parser can be done in less than that
20:07:55 <oklopol> but
20:07:58 <oklopol> what lang?
20:08:05 <Figs> english.
20:08:12 <oklopol> oh
20:08:14 <oklopol> :|
20:08:16 <Figs> Hello There.
20:08:18 <Figs> ->
20:08:19 <Figs> Hello
20:08:21 <Figs> There.
20:08:22 <Figs> :D
20:08:24 <oklopol> oh :P
20:08:24 <Figs> yeah
20:08:26 <Figs> nothing magical
20:08:32 <oklopol> i don't see that requiring 44 lines :)
20:08:52 <Figs> in C++?
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:30 <bsmntbombdood> hrm
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:28 <Figs> afk
20:29:35 <Figs> got to take my sister to the park :(
20:29:54 <Figs> cya
20:30:01 <Figs> I should be back in an hour or so
20:31:28 <oklopol> party on the backseat
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:11:26 <Figs> :(
22:14:10 <oklopol> that's one beautiful nick
22:14:32 <Figs> xor? :P
22:14:36 <oklopol> though i'd just understood what bsmntbombdood means
22:14:45 <oklopol> yeah
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:19 <Figs> hey
23:29:28 <Figs> does anyone know a good open source firewall for windows?
23:29:59 <GregorR> Ha ha ha ha ha
23:30:04 <Figs> :P
23:30:05 <GregorR> Ahhh, that's a good one.
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:30:40 <Figs> but I do :P
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:37:16 <Figs> I hate norton
23:37:45 <SevenInchBread> hmmm...
23:37:48 <SevenInchBread> I just thought of something.
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:01 <Figs> might
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:39:55 <SevenInchBread> -nod- you should be able to...
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:40:45 <SevenInchBread> ...yes
23:41:00 -!- atrapado has quit ("l3nc").
23:41:01 <Figs> there we go
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:53 <Figs> brb
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)).
2007-03-28
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> rofl
01:57:02 <Figs> http://www.netscrap.com/netscrap_detail.cfm?scrap_id=85
02:05:32 <oklopol> rararar
02:05:49 <oklopol> 4 hours till exam \o/
02:09:10 <Figs> ahhh... you can have a lot of fun putting a Brit and an American together :P
02:09:56 <oklopol> or by sleeping
02:10:00 <oklopol> that's pretty fun :<
02:10:53 <Figs> :P
02:10:56 <Figs> 'pissed'
02:10:58 <Figs> for example
02:11:03 <Figs> means two very different things
02:11:06 <Figs> ;)
02:11:11 <Figs> drunk vs angry, I guess
02:12:11 <oklopol> mm
02:12:19 <oklopol> or the past tense of peeing
02:13:39 <Figs> :P
02:15:28 <oklopol> i wish i'd wake up to alarm clocks... i could sleep :<
02:16:09 <Figs> ... O.o
02:16:20 <Figs> why don't you go to bed Oklopol?
02:16:24 <Figs> you're always up :P
02:16:41 <oklopol> i slept 8-14
02:17:01 <oklopol> and... the whole monday
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:18:55 <Figs> o.o
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
02:51:32 <Figs> yep
03:03:18 -!- pikhq has joined.
03:03:49 <pikhq> 'Lo.
03:03:57 <Figs> hi.
03:03:59 <Figs> mid.
03:04:01 <Figs> :D
03:04:12 <pikhq> :)
03:06:11 <xor> hi pikhq
03:06:53 <pikhq> Hey.
03:10:37 -!- ShadowHntr has joined.
03:14:23 <Figs> http://www.eldtrain.com.au/members/humour/humour11.htm
03:16:51 <xor> heh
03:44:38 -!- SevenInchBread has quit (Read error: 145 (Connection timed out)).
03:51:30 -!- calamari has joined.
03:51:42 <calamari> hi
03:52:07 <calamari> so this is what it looks like to irc from gaim
03:52:21 <RodgerTheGreat> haha
03:52:30 <calamari> /ctcp calamari version
03:52:33 <calamari> hmm
03:52:43 <calamari> guess that's not implemented
03:53:25 <calamari> does it give a ctcp version response for me?
03:53:55 <RodgerTheGreat> yup.
03:53:57 <RodgerTheGreat> Gaim IRC
03:54:21 <calamari> that's it? how lame.. hehe
03:58:03 <xor> gaim is laim
03:59:11 <pikhq> Yeah.
04:02:23 <Figs> ...
04:02:25 <Figs> @.@
04:02:27 <Figs> AHHHH
04:02:29 <Figs> brainfuck
04:02:35 <Figs> and not the language
04:02:59 <calamari> sounds dangerous
04:03:06 <pikhq> Indeed.
04:03:08 * pikhq leaveth
04:03:23 <Figs> no
04:03:29 <Figs> more painful
04:03:31 -!- pikhq has quit (Remote closed the connection).
04:03:32 <calamari> cya pikhq
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:07:48 <Figs> hello Sgeo
04:07:54 <Sgeo> Hi Figs
04:11:59 <Figs> bah
04:12:13 <Figs> we can't we get a good browser?
04:12:16 <Figs> IE sucks
04:12:19 <Figs> Firefox is annoying...
04:22:32 <Figs> http://photos1.blogger.com/x/blogger2/3718/3950/320/503462/card469.jpg
04:22:34 <Figs> :D
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:24 <Figs> giong to bed
05:21:26 -!- Figs has left (?).
05:38:07 <RodgerTheGreat> I solved it first try!
05:38:22 <RodgerTheGreat> granted, with a mere 2:41 to go...
05:47:47 <xor> ?
05:48:07 <RodgerTheGreat> the third and fourth puzzles are really easy with a good knowledge of binary and a calculator, though
05:48:16 <RodgerTheGreat> the flash game figs linked to
05:48:28 <xor> haha flash
06:06:59 -!- calamari has left (?).
06:08:19 <RodgerTheGreat> 'night, guys
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.
13:30:28 <RodgerTheGreat> hi everybody
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:27:16 <SimonRC> hehehehe
14:27:34 <RodgerTheGreat> ?
14:29:10 <RodgerTheGreat> IRP:REQUEST:ELABORATE_PREVIOUS_OUTPUT
14:29:22 <RodgerTheGreat> RUN
14:30:10 * SimonRC uses continuation-passing style:
14:30:55 <SimonRC> IRP:REQUEST(GOOGLE):TELL_RODGER_ABOUT:("4 8 15 16 23 42").
14:50:20 <RodgerTheGreat> the only thing I watch on TV is "Mythbusters"
14:52:52 <SimonRC> you should watch SG-1
14:55:05 <RodgerTheGreat> oh, good lord
14:55:16 <RodgerTheGreat> I've seen it before, and it was terrible
14:55:32 <RodgerTheGreat> it pisses on everything good about the original movie
15:03:31 <SimonRC> hmm
15:03:37 <SimonRC> Depends which one you saw.
15:03:42 <SimonRC> Some are a bit crap.
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.
15:58:52 <SimonRC> crathman: hi
15:59:25 <RodgerTheGreat> hey, crathman
16:00:39 <crathman> howdy
16:00:51 * SimonRC plugs it again
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:01:26 <SimonRC> if you care
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:13:59 <SimonRC> yup
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:15:43 <SimonRC> that's kinda like CPS
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:16:43 <SimonRC> :-S
16:19:12 -!- jix__ has joined.
16:20:01 <SimonRC> argle
16:20:23 <SimonRC> every time I plug it, someone else comes on who I haven;t told yet
16:21:35 <jix__> hm?
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:23 <jix__> i am jix
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:27:34 <SimonRC> indeed
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:39 <Figs> hey
18:17:42 <Figs> opinions?
18:17:46 <ais523> on what?
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:01 <Figs> *code
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:26 <Figs> print(Tree);
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:20 <Figs> O_o
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:20:37 <Figs> there you go
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:19 <Figs> ;)
18:22:21 -!- oerjan has joined.
18:22:26 <Figs> it's already pretty hard to understand
18:22:30 <Figs> Hi oerjan
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:22:53 <Figs> existing vars
18:22:57 <oerjan> hi all
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:19 <Figs> :p
18:25:37 <ais523> and assembler's halfway to being an esolang
18:25:44 <Figs> ;)
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:25 <ais523> a b d i j k e c f g h
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:00 <lament> ais523: .........yeah
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:28:52 <Figs> O_o
18:28:53 <Figs> eep
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:29 <Figs> :D
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:39 <lament> really?
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:34 <Figs> We have logs?
18:35:41 <ais523> look at the topic
18:35:57 <xor> What is the bot that logs?
18:36:00 <Figs> huh
18:36:04 <Figs> I missed that somehow
18:36:04 <Figs> :P
18:36:07 <ais523> the tunes log (http://tunes.org/~nef/logs/esoteric/) loads faster
18:36:10 <ais523> xor: clog and cmeme
18:36:46 <lament> the tunes project did one useful thing, so far.
18:36:50 <lament> logging bots.
18:37:19 <oerjan> heh :)
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:11 <Figs> :P
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:01 <lament> oh
18:42:03 <lament> "reasonable"
18:42:06 <Figs> :P
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:47 <Figs> :P
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:47:53 <oerjan> No.
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:20 <lament> for example.
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:45 <lament> the problem is
18:51:49 <Figs> holy crap
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:39 <oerjan> Interesting.
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:00 <Figs> *put
18:54:07 <oerjan> It's the same as browsers being allowed to open annoyingly many windows, essentially.
18:54:13 <lament> sure.
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:54:42 <Figs> :P
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:28 <Figs> o.o
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:01:26 <oerjan> hm...
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:17 <oerjan> maybe you did
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:08:52 <Figs> sorta
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:37 <oerjan> show
19:31:50 <Figs> ?
19:31:54 <Figs> what language?
19:31:59 <oerjan> Haskell
19:32:09 <Figs> count me out then :P
19:32:20 <lament> str
19:32:22 <lament> python
19:32:22 <xor> any language
19:32:23 <lament> i win
19:32:30 <oerjan> darn.
19:32:38 <xor> oh damn
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:01 <lament> oh
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:14 <lament> and not character
19:33:38 <lament> do you mean numbers or characters?
19:33:43 <xor> numbers
19:33:47 <oerjan> oh.
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:16 <lament> xor: so?
19:34:18 <oerjan> eh, i mean
19:34:27 <xor> ok, lets make this base 53
19:34:54 <oerjan> map (read . (:[])) . show
19:35:16 <xor> def f(n):
19:35:16 <xor> l = []
19:35:17 <xor> while n:
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:28 <xor> no
19:36:42 <lament> no srings attached
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:37:39 <Figs> int main()
19:37:41 <oerjan> xor: really :D
19:37:41 <Figs> {
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:38:36 <Figs> return 0;
19:38:37 <Figs> }
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:03 <oerjan> is _that_ base 10?
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:19 <oerjan> oh.
19:40:25 <oerjan> in that case, hm.
19:40:32 <oerjan> import Numeric
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:20 <oerjan> yoohoo!
19:41:29 <xor> lame
19:41:39 <lament> here's my code
19:41:40 <lament> def f(n):return(n>52 and f(n/53)or[])+[n%53]
19:42:30 <oerjan> another way then.
19:42:41 <oerjan> import Data.List
19:43:03 <oerjan> f 0 = [0]
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:46:31 <oerjan> i think
19:47:39 <oerjan> bah, better to copy lament i think
19:48:53 <oerjan> except his code fails at 0
19:48:57 <oerjan> i think
19:49:10 <xor> nope
19:49:24 <lament> oerjan: doesn't
19:49:26 <oerjan> indeed.
19:49:29 <oerjan> ok
19:49:48 <lament> not only that
19:49:53 <lament> my code even sort of works for negative numbers :D
19:50:13 <xor> it does?
19:50:15 <lament> no.
19:50:55 <lament> it just returns n%53
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:52:49 <oerjan> n `div` 53 = div n 53
19:53:53 <oerjan> it seems haskell loses on slightly less compact syntax
19:56:01 <oerjan> unless, hm...
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:39 <oerjan> eh, wait
20:00:47 -!- Figs has left (?).
20:00:59 <oerjan> is not
20:03:14 <oklopol> {53Ntb_} in oklotalk
20:03:27 <oklopol> though i'm of course adding built-ins as needed :)
20:03:43 * oerjan bops oklopol on the head
20:04:38 <oklopol> :D
20:07:36 <oerjan> ok one more try
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:07:56 <oerjan> yes!
20:07:59 <oklopol> :D
20:08:09 <oklopol> well, you won in existing languages...
20:08:49 <xor> hmm
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:20 <xor> wtf?
21:47:39 * SevenInchBread is working on a theretical computer system that runs with pentits (or however you call them)
21:48:02 <SevenInchBread> 5-valued thingies.
21:48:10 <lament> pits
21:48:17 <SevenInchBread> ....PITS
21:49:17 <oerjan> quits i think.
21:49:31 <oerjan> that would be logical anyhow.
21:49:32 <SevenInchBread> That's a sucky name.
21:49:37 <SevenInchBread> pentits and pits
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:50:47 <SevenInchBread> you would replace binary NOT with SWISH and DROOP.
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:51:53 <SevenInchBread> ....fuck word origins.
21:51:59 <oerjan> quaternary
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:24 <SevenInchBread> pet sounds cool. :)
21:53:33 <xor> binary is the way to go
21:53:40 <SevenInchBread> NOPE
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:55:49 <SevenInchBread> and some other nifty things.
21:56:33 <oklopol> SevenInchBread no.
21:56:52 <SevenInchBread> ??
21:57:23 <oklopol> the thingies are as small as they get with the current technology, more states would require bigger thingies
21:57:47 <SevenInchBread> hmmm... it would?
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:19 <xor> no
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:21 <oklopol> hmm
21:59:25 <oklopol> no you probably wouldn't
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:25 <SevenInchBread> >.>
22:02:48 <SevenInchBread> I thought.... the main advantage of analog computers was the increase in speed?
22:02:57 <oklopol> never.
22:03:43 <oklopol> i've no idea what an analog computer is, so i have no say there really
22:03:45 <oklopol> :)
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:04:38 <oklopol> i know
22:05:20 <oklopol> anyway, quantum computers are the way to go
22:05:29 <SevenInchBread> and even so... a 5-value system is still digital.
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:06:45 * SevenInchBread didn't mean to delve into physical properties.
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:11:57 <SevenInchBread> ...would be cool if we had hybrid computers.
22:12:03 <SevenInchBread> that did a little bit of both.
22:12:57 <oklopol> qubits will do anything
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:18:35 <SevenInchBread> BUT
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:19:18 <SevenInchBread> ....no big deal though.
22:23:02 <lament> so?
22:23:08 <lament> think of graphics cards
22:23:16 <lament> they do magic
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:25:35 <RodgerTheGreat> more specialized = more efficient.
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.
2007-03-29
00:03:59 -!- calamari has quit ("Leaving").
00:07:20 <xor> gah
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:09:06 <xor> no
00:09:10 <lament> Self?
00:09:19 <xor> no
00:09:22 <lament> Javascript?
00:09:52 <xor> no
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:18 <lament> Smalltalk?
00:20:32 <xor> FOOS
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:24:48 <SevenInchBread> yeah... I love hate OOP.
00:25:31 -!- Rugxulo has left (?).
00:25:53 <SevenInchBread> it's a useful metaphor... but not for anything.
00:25:57 <SevenInchBread> er... everything
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:09 <xor> s/re/rere
00:41:58 -!- pikhq has joined.
00:43:37 <xor> hmm
00:43:42 <pikhq> ?
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?
02:54:44 <SevenInchBread> 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:32:24 <GregorR> Gregor kill.
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.
04:41:36 <xor> bollocks
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:31:52 <RodgerTheGreat> hi guys
15:39:19 <oklopol> ~bf +++++++++++++++++++++++++++++++++++.
15:39:19 <bsmnt_bot> #
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:17:14 <oklopol> *that returns a
18:17:29 <oklopol> i mean
18:17:35 <oklopol> in haskell
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:18:19 <oklopol> ah
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:04 <oklopol> fix?
18:21:11 <oklopol> but i think i know what you mean
18:21:16 -!- pikhq has joined.
18:21:17 <oerjan> fix f = f(fix f)
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:31 <RodgerTheGreat> bbiab, folks
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:17 <oklopol> okay... hmm
18:23:25 <oklopol> i see that as an identity function
18:23:26 <oklopol> :<
18:23:34 <oklopol> oh
18:23:35 <oklopol> hmm
18:23:53 <oklopol> it's recursive in a weird way
18:23:53 <oklopol> :D
18:24:10 <oerjan> it's the Y combinator
18:24:28 <oklopol> i don't understand that tbh
18:24:38 <oklopol> i mean
18:24:42 <oklopol> how it helps
18:24:52 <oerjan> helps with what?
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:22 <oklopol> yeah
18:27:26 <oklopol> ah
18:27:27 <oklopol> :)
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:03 <oklopol> 42!
18:28:05 <lament> then its fixed point is 42
18:28:07 <oklopol> i found it :)
18:28:14 <lament> so fix(f) ought to be 42
18:28:19 <oklopol> is it?
18:28:24 <oerjan> yes
18:28:32 <lament> yes
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:09 <oerjan> rubbish
18:30:13 <lament> of course :)
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:00 <oerjan> :l I think
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:31:48 <oerjan> but i am not sure
18:32:03 <oklopol> <no location info>: module `Control.Monad.Fix is a package module
18:32:14 <oerjan> oh...
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:34:33 <oklopol> allllright
18:34:35 <oerjan> i mean -package name
18:34:56 <oklopol> now what is 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:35:32 <oerjan> no whatever
18:35:35 <oerjan> just name
18:35:57 <oklopol> unknown package: Control
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:04 <oklopol> darn.
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:37:41 <oklopol> *some
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:38:15 <oklopol> oh
18:38:16 <oklopol> hehe :)
18:39:03 <oklopol> WOW it did it! :D
18:39:15 <oklopol> so cool
18:40:26 <oklopol> fix (\ x -> x * x) fails
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:06 <oklopol> ah
18:41:07 <oklopol> oki
18:41:11 <oerjan> so it is not lazy
18:41:12 <oklopol> but
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:35 <oerjan> fix (1 :)
18:41:53 <lament> "to return bottom" means "to die horribly"
18:41:57 <oklopol> :P
18:42:00 <oklopol> okay
18:42:17 <oklopol> fix (1 :) what does (1 :) mean?
18:42:24 <oklopol> or was it a smiley? :O
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:43:48 <oklopol> [1, 1..]
18:43:58 <oklopol> hehe :)
18:44:43 <oerjan> yep, those are the same
18:44:58 <oerjan> another one:
18:45:22 <oerjan> eh wait
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:47:45 <oklopol> fibonacci?
18:47:47 <oerjan> yep
18:48:09 <oklopol> hmm
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:49:50 <oklopol> yeah :\
18:50:46 <oklopol> hmm
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:29 <oklopol> hmm
18:51:34 <oklopol> i think i can do that
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:53:18 <oklopol> yeah, i've seen it
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:09 <pikhq> You. . . I. . .
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:58:49 <pikhq> I'm on Internet.
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:25 <oerjan> of course.
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:21 <oerjan> eh wait
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:00:58 <oerjan> in the middle
19:01:42 <oerjan> function power?
19:03:25 <xor> yeah
19:03:40 <xor> ack 0 = succ
19:03:59 <xor> ack (m+1) = iter (ack m)
19:04:06 <xor> where
19:04:12 <xor> iter f 0 = 1
19:04:23 <xor> iter f (n+1) = f (iter f n)
19:05:40 <oklopol> hmm
19:05:59 <oklopol> i need to convert multiple definitions -> case of
19:06:05 <oklopol> but... i can't :)
19:06:48 <oerjan> iter f n = (iterate f 1) !! n
19:07:23 <oerjan> in haskell?
19:07:27 <oklopol> yeah
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:28 <oklopol> oh
19:08:36 <oklopol> it said incorrect indentation
19:08:37 <oklopol> :\
19:08:46 <oerjan> and a let first
19:08:46 <oklopol> i added let though
19:08:52 <oklopol> oh
19:08:54 <oklopol> just one let?
19:08:57 <oerjan> yes.
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:12:56 <oklopol> a 3 4 === 5
19:13:01 <oerjan> that's weird
19:13:02 <oklopol> :<
19:14:50 <oklopol> a 100 100 jammed it
19:14:50 <oklopol> :)
19:16:44 <oklopol> i fixed it!
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:18:56 <xor> too big
19:19:10 <oklopol> yeah, it's all because haskell is so lazy though
19:19:23 <oklopol> ...i know humor
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:48 <xor> yes
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:19 <oerjan> no, like the fib list
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:08 <oklopol> a 4 2 == Infinity
19:27:09 <oklopol> :<
19:27:12 <oklopol> oh
19:27:15 <oklopol> 2**65533
19:27:17 <oklopol> hehe :)
19:27:35 <oerjan> make ** into ^ and haskell can calculate it entirely
19:28:52 <oklopol> hmm
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:21 <oklopol> oh
19:29:42 <oerjan> i mean ^ the ascii character
19:30:09 <oklopol> hmm
19:30:41 <oklopol> eh
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:31:39 <oklopol> wow
19:32:01 <oklopol> a 4 3 crashed :P
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:34:31 <oerjan> *start printing it
19:35:12 <oklopol> well... maybe lsb first... but i don't think normally
19:35:27 <oklopol> or
19:35:29 <oklopol> i don't know
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:07 <oklopol> *seems
19:44:37 <oerjan> then you cannot have understood it ;)
19:44:48 <oklopol> :D
19:44:57 <oerjan> (someone else _must_ have said that before)
19:45:03 <oklopol> yeah
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:14 <oklopol> :)
19:49:17 <oerjan> 36 :)
19:49:29 <oklopol> well, i understand it, but not well enough to actually understand what that means...
19:49:37 <oklopol> okay, good :)
19:49:50 <oklopol> since if you'd been 14 or smth, i'd be out the window by now
19:50:04 <oerjan> out the window?
19:50:26 <oklopol> you know, suicide
19:50:47 <oklopol> i have some issues with younger people beating me.
19:51:04 <oklopol> i have many issues
19:51:06 <oklopol> :|
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:18 <oklopol> yeah, i know :\
19:52:52 <oklopol> that's exactly where i got that exact age :)
19:52:54 <oklopol> anyway
19:53:10 <oklopol> qm is great :P
19:53:26 <oklopol> gotta read more
19:54:12 <lament> i'm 5
19:54:20 <lament> good for you i'm not that smart, huh
19:54:35 <xor> heh
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:56:18 <oerjan> *in accordance with
19:57:47 <oklopol> it's so cool it abides by no rules i think
19:59:14 <oklopol> hmm
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:00:55 <oerjan> yes.
20:01:00 <lament> oklopol: yes.
20:01:12 <oklopol> is destroyed?
20:01:23 <oklopol> or assemes?
20:01:24 <oerjan> yes, if the rest of the universe finds out
20:01:25 <oklopol> *u
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:20 <bsmntbombdood> school is a waste
20:03:48 <oklopol> good for sleeping, since you aren't allowed do anything else.
20:03:50 <oklopol> *to do
20:04:12 <bsmntbombdood> no
20:04:13 <oklopol> well, we could take a laptop, but i don't like unplugging it
20:04:18 <oklopol> oh
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:31:55 <Keymaker> quine in aeolbonn..
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:39:46 <oklopol> it's declared later, okay
20:39:50 <oklopol> on the page
20:42:44 <Keymaker> oh well, new programs await..
20:42:53 <oklopol> :)
20:43:04 <oklopol> how long did that 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:48:06 <oklopol> :P
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:51:47 <oklopol> nope, long time since :|
20:52:13 <Keymaker> ah.
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:37 <Keymaker> i hate that part...
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:29 <oklopol> what do you program with?
20:55:57 <Keymaker> that's the problem, i don't have nerves to use normal languages
20:56:06 <oklopol> ah :)
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 ;)
20:59:42 <oklopol> hehe :)
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.
2007-03-30
00:00:18 <GregorR> Plof2 is coming along nicely :)
00:00:56 <oklopol> i read about plof
00:01:01 <oklopol> is 2 the same but better?
00:01:06 <GregorR> Basically.
00:01:06 <oklopol> or totally different?
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:00 <GregorR> Heh
00:02:07 <GregorR> I sort of designed myself into a corner with them :-P
00:02:18 <oklopol> how?
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:03:59 <oklopol> i see
00:04:07 <oklopol> that was exactly what i liked :)
00:04:15 <oklopol> but, i understand how it's bad...
00:04:20 <oklopol> you removed that?
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:25 <oklopol> or fixed it somehow?
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:04:57 <oklopol> yeah
00:05:03 <oklopol> i see how that'd go
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 <GregorR> Heh
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:08:47 <GregorR> pikhq: Yup.
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:14:51 <GregorR> Hah
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:16:58 <oklopol> heh :)
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:22:27 * oklopol can hardly wait
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:26:51 <GregorR> Heh
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:11 <Figs> hello
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:14 <oklopol> (maybe)
00:36:30 <Figs> ok
00:36:30 <oklopol> X{4} means X 4 times
00:36:34 <Figs> that seams reasonable
00:36:40 <Figs> but it's darned esoteric ;)
00:36:41 <oklopol> and () is normal nesting
00:37:07 <GregorR> Something in the form of: 1234-5678-9012-3456
00:37:18 <GregorR> The -'s can be spaces.
00:37:22 <oklopol> 0000000000000000 is legal though?
00:37:23 <oklopol> oh
00:37:29 <GregorR> No, it isn't.
00:37:31 <oklopol> [] is a characher group
00:37:34 <oklopol> damn
00:37:40 <GregorR> Mus thave either '-' or ' ', not neither.
00:37:48 <oklopol> i though it's optional... silly me :)
00:37:54 <oklopol> yep
00:37:58 <Figs> what about
00:38:08 <Figs> 1234 5678-9012-3456
00:38:14 <GregorR> Also OK
00:38:16 <oklopol> yeah, was just thinking that
00:38:27 <oklopol> can you define it's jsut one of them?
00:38:31 <oklopol> *jsut
00:38:32 <oklopol> *just
00:38:56 <GregorR> Hmmmmmm, not easily ...
00:38:59 <GregorR> Lemme think ...
00:39:08 <oklopol> well
00:39:20 <GregorR> \d{4}([- ])(\d{4}\1){2}\d{4}
00:39:26 <oklopol> yeah
00:39:33 <SevenInchBread> mmmm... wolfmother is such a sweet band. :)
00:41:39 <oklopol> oerjan... or anyone
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:45:59 <oklopol> okay
00:46:04 <Figs> what is the point of regex?
00:46:33 <SevenInchBread> ...
00:46:39 <SevenInchBread> to... match patterns.
00:47:06 <Figs> ok...
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:47:23 <oklopol> *merely knows
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:34 <SevenInchBread> sheer laziness is the main goal.
00:49:46 <SevenInchBread> ...for me, anyways.
00:49:48 <Figs> :P
00:49:49 <Figs> ok
00:49:58 <Figs> I think I may be too lazy
00:50:05 <SevenInchBread> impossible.
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:29 <oklopol> :)
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:55:54 <oklopol> how's that for lazy? :P
00:58:11 -!- SevenInchBread has quit (Read error: 104 (Connection reset by peer)).
01:01:16 <Figs> afkish
01:04:28 <bsmntbombdood> mm, fish
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:35:28 <SevenInchBread> BEHOLD
02:35:30 <SevenInchBread> MY FIRST STEP
02:35:38 <SevenInchBread> INTO THE WORLD OF DIGITAL MUSIC LOLZ
02:36:28 <SevenInchBread> http://deadbeefbabe.org/paste/4164
02:36:33 <SevenInchBread> ...a very modest step at that.
02:37:02 <GregorR> http://www.codu.org/Kill_Yourself.ogg
02:37:51 <SevenInchBread> NOW
02:38:01 <SevenInchBread> I just need to figure out... what the wav format looks like
02:38:14 <SevenInchBread> so I can plot waves into a playable file.
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:50:58 <SevenInchBread> >.>
02:51:18 * SevenInchBread just saw something catapult over his head.
02:52:59 <SevenInchBread> OH
02:53:02 <SevenInchBread> wait
02:53:04 <SevenInchBread> I got it...
02:53:11 <SevenInchBread> origin... the center of the wave... 126.
02:53:13 * SevenInchBread facepalms.
02:53:13 <oerjan> apparently it was a boomerang :)
02:53:21 <SevenInchBread> ....haha
02:54:08 <SevenInchBread> hmmmm...
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:04:00 <SevenInchBread> well... the format can't represent floating points.
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:21:54 <bsmntbombdood> fun
04:22:07 <bsmntbombdood> i feel like writing some audio producers now
04:23:02 <bsmntbombdood> 8 bits doesn't seem like much
04:23:20 <bsmntbombdood> and, that's 22,000 bytes/sec
04:24:03 <bsmntbombdood> 1 megabyte per minute
04:24:12 <bsmntbombdood> O.o
04:25:32 <GregorR> You can use 64 bits and 128kHz :)
04:26:00 <bsmntbombdood> does some format actually do that?
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:27:11 <bsmntbombdood> what about stereo?
04:28:07 <bsmntbombdood> I like subversion
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:30:36 <bsmntbombdood> "repository easily uploadable to any server"?
04:30:55 <bsmntbombdood> you can upload repo dumps
04:31:11 <GregorR> And then checking out involves downloading every revision X_X
04:31:35 <bsmntbombdood> no...
04:31:57 <GregorR> Can you just upload the repository as it appears on disk to anywhere accessible via HTTP?
04:32:33 <bsmntbombdood> what do you mean?
04:33:09 <GregorR> I mean: I can upload stuff accessible via HTTP. Not WebDAV, not ssh, not custom servers. HTTP.
04:33:31 <bsmntbombdood> with the right scripts
04:33:37 <bsmntbombdood> cgi ftw
04:33:57 <GregorR> Are those scripts somewhere online I don't know of? Some kind of PHP WebDAV? :)
04:34:22 <bsmntbombdood> I don't know of any
04:34:44 <bsmntbombdood> But simple to write
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:35:38 <GregorR> Gee.
04:35:40 <GregorR> Thanks X-P
04:36:18 <bsmntbombdood> Very simple, just except the dump file, then run one svnadmin command on it
04:37:02 <bsmntbombdood> *accept
04:39:08 <bsmntbombdood> but i'm no svn expert
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:46:53 <GregorR> But sure, whatever.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:18:16 <GregorR> Hmmmmmmmmmmmmm.
08:18:27 <GreaseMonkey> afk food
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.
08:35:31 <GreaseMonkey> back
09:00:48 <GreaseMonkey> plof again?
09:01:15 -!- RoboMonkey has joined.
09:03:08 <GregorR> GreaseMonkey: Yuh :)
09:04:22 <GregorR> I need to talk to ... pikhq or jix.
09:13:26 -!- sebbu has joined.
09:33:16 <bsmntbombdood> heh
09:37:41 <GregorR> bsmnt_bot: You have any opinions? :P
09:37:48 <GregorR> X_X
09:37:51 <GregorR> I hate tab completion ;)
09:37:55 <GregorR> bsmntbombdood: Above.
09:38:23 <bsmntbombdood> about +?
09:38:40 <bsmntbombdood> i dunno, i'm going to bed
09:38:50 -!- EgoBot has joined.
09:39:14 <GregorR> Never mind then :P
09:42:19 <oklopol> ":[", "];" plof :<
09:42:37 <oklopol> talk about a sad language
09:43:18 <oklopol> ...not as an imperative though
09:44:41 <GregorR> :-P
09:44:45 <GregorR> };
09:44:57 <GregorR> ^(I'm Plof and I frown :[ )
09:45:21 <oklopol> !ul (I'm Plof and I frown :[ )^
09:45:30 <oklopol> hmm, eh :P
09:45:41 <GregorR> !ps d
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:45:51 <oklopol> :O
09:45:52 <EgoBot> 5 GregorR: ps
09:45:56 <GregorR> !dog fish
09:45:59 <EgoBot> hsif
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:44 <oklopol> yay
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:20 <oklopol> ..brian
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:32 <GregorR> l'hello
20:37:39 <bsmntbombdood> lello
20:37:47 <GregorR> l'I still don't know whether I like letting the null operator be object combination.
20:38:51 <bsmntbombdood> we need a hash function that isn't Merkle-Damgård
20:38:52 <bsmntbombdood> er
20:38:56 <bsmntbombdood> wrong channel
20:38:59 <GregorR> :-P
20:40:58 <GregorR> I'm in the other one too ;)
20:41:01 <GregorR> I just never talk there.
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:40:15 <bsmntbombdood> hmmm, "definable" numbers
23:40:19 <bsmntbombdood> countable infinite
23:52:03 <lament> what
23:52:12 <lament> mmmmmyeah.
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:19 <bsmntbombdood> right
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.
2007-03-31
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:31 <Figs> hey
03:09:51 <Figs> you guys should make a 'h4x0r' asm where 'omg' 'wtf' 'rofl' and 'pr0n' are opcodes :P
03:10:07 <Figs> mneumonics*
03:10:30 <Figs> *mnemonics
03:11:21 <oerjan> have you looked at Omgrofl?
03:11:27 <Figs> no
03:11:31 <Figs> already been done? :P
03:11:42 <oerjan> but of course
03:11:50 <Figs> heh heh heh @.@
03:17:01 <Figs> what is tldr?
03:17:09 <Figs> talk later?
03:17:18 <Figs> ta ladder?
03:17:41 <oerjan> too long; didn't read
03:17:47 <Figs> oh
03:18:13 <oerjan> GIYF
03:18:28 <Figs> GIFY?
03:18:45 <oerjan> google is your friend
03:18:51 <Figs> no it isn't
03:18:52 <Figs> :P
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:29 <Figs> NT loader O.o
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:15 <Figs> eh
03:20:17 <Figs> :P
03:20:20 <oerjan> WIYF too of course
03:20:29 <Figs> wikitionary is your friend?
03:20:33 <Figs> or wikipedia
03:20:34 <Figs> ?
03:20:36 <oerjan> both
03:20:41 <Figs> wiki -X is your friend
03:20:44 <Figs> WXIYF
03:20:56 <Figs> WTFC2P
03:21:41 <Figs> can I call operations without a variable in OMGROFL?
03:21:43 <Figs> like,
03:21:44 <oerjan> what is wiki -X? google is not particularly friendly on that
03:21:45 <Figs> l33t
03:22:00 <Figs> instead of l33t lol
03:22:01 <Figs> ?
03:22:11 <Figs> wiki(fill in the blank)
03:22:13 <Figs> I meant
03:22:47 <Figs> like -ed -ing
03:22:51 <Figs> suffix
03:22:56 <Figs> -X
03:23:06 <Figs> wiki -tionary, -pedia
03:24:18 <oerjan> i don't think you can leave out variables
03:24:27 <Figs> shoot
03:26:00 <oerjan> although there is no real reason why not
03:26:26 <Figs> so like,
03:26:29 <Figs> rtfm
03:27:08 <Figs> haxor
03:28:41 <Figs> wtf lol iz leik 0
03:28:45 <Figs> tldr
03:28:46 <Figs> brb
03:28:48 <Figs> brb
03:29:05 <Figs> .... oops
03:29:54 <Figs> is this right? --> s/brb/brb\nlmao lol
03:35:38 <oerjan> it's not a whole program
03:35:55 <Figs> yeah
03:35:58 <Figs> I didn't define lol
03:36:10 <oerjan> and leik=like
03:36:24 <Figs> ... yeah?
03:36:29 <oerjan> wait
03:36:33 <Figs> wtf lol iz leik 0 is a comparison
03:36:34 <oerjan> =liek
03:37:07 <oerjan> i should know this since i actually cleaned up that page
03:37:15 <Figs> ;)
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:37:59 <Figs> too bad :P
03:38:16 <oerjan> it's not esoteric
03:38:30 <Figs> it just seems like it to me :P
03:38:42 <oerjan> intention matters quite a bit
03:39:14 <Figs> yeah
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:42:47 <Figs> :P
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:43:51 <Figs> but eh
03:44:14 <Figs> whatever.
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:44:54 <Figs> mmm
03:44:56 <Figs> :P
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:13:12 <SevenInchBread> Giant instruction sets are awesome. :)
04:14:46 <Figs> Z80?
04:15:03 <Figs> 252 out of 256 single-byte op codes :P
04:15:12 <Figs> damn :P
04:19:22 <SevenInchBread> pfft.
04:19:38 <SevenInchBread> I want every possible permutation of two bytes...
04:19:50 <Figs> with the other 4 enabling extended ops :P
04:19:58 <SevenInchBread> ....oh
04:20:07 <SevenInchBread> ACCEPTABLE
04:20:08 <SevenInchBread> i guess.
04:20:10 <Figs> :P
04:21:56 <Figs> http://en.wikipedia.org/wiki/Z80#Instruction_set_and_encoding
04:22:08 <Figs> oh sorry
04:22:16 <Figs> "extensively as opcode prefixes"
04:22:18 <Figs> my mistake
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:26:50 <SevenInchBread> ...I wish I had my own assembly lang...
04:27:02 <SevenInchBread> or rather... my own computer architecture. :)
04:27:07 <Figs> make one
04:27:12 * SevenInchBread would make an awesome computer. :)
04:27:54 <SevenInchBread> FOUR BILLION INSTRUCTIONS... 125-bit integers...
04:27:57 <Figs> might I recommend playing with xLogicCircuits?
04:28:06 <SevenInchBread> HARDWARE SUPPORT FOR LINKED LIST OPERATIONS.
04:28:10 <Figs> Slow as molasses :)
04:28:12 <SevenInchBread> wassat?
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:35 <Figs> GIFY
04:28:42 <SevenInchBread> ...I bet it sucks.
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:12 <Figs> :|
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:29:46 * SevenInchBread likes confusing and elaborate things.
04:30:04 <Figs> rofl, I kind of like RISC after looking at x86 and going 'wtf?'
04:30:18 <Figs> but eh
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:35:55 <SevenInchBread> ...I don't really understand how it works.
04:36:03 <Figs> me neither :P
04:36:27 <SevenInchBread> ...what does "branch" mean?
04:36:50 <Figs> I suppose if(x) {a();} else {b();} would be a branch
04:36:59 <Figs> jmp?
04:37:30 <bsmntbombdood> Figs: see 1337
04:37:39 <oerjan> branch = choice
04:37:58 <Figs> *branching
04:38:01 <bsmntbombdood> OISC is the shit
04:38:09 <bsmntbombdood> I wrote a subleq vm once
04:38:16 <bsmntbombdood> it was fun to play with
04:51:30 <Figs> what is the x86 equivalent of ax << 1
04:51:31 <Figs> ?
04:51:36 <Figs> (multiply by 2)
04:52:07 <Figs> shl cx?
04:52:11 <Figs> *ax
04:59:46 <Figs> what the hell
04:59:51 <Figs> I get GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
04:59:53 <Figs> O.O
05:06:30 <Figs> ok
05:06:31 <Figs> now I get
05:06:33 <Figs> HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
05:06:40 <Figs> which is more reasonable :)
05:06:44 <Figs> but still WRONG
05:06:45 <Figs> :P
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:09 <bsmntbombdood> what do you mean, it would be?
05:41:41 <Figs> hey
05:41:45 <Figs> question for asm guys
05:41:48 <Figs> if I do
05:41:51 <Figs> mov bp,[bp]
05:41:54 <Figs> will it fuck up?
05:42:06 <Figs> and also
05:42:08 <Figs> if I call
05:42:09 <Figs> ret
05:42:11 <bsmntbombdood> no, it will fuck down
05:42:28 <Figs> it will pop a word from the stack, right?
05:43:30 <bsmntbombdood> I don't know x86 asm, but i would imagine
05:52:50 <Sgeo> Well, g'night all
05:54:11 -!- Sgeo has quit ("Leaving").
06:05:39 <Figs> g'night
06:10:44 -!- oerjan has quit ("Gooed knight").
06:24:18 <bsmntbombdood> eye donut think "Gooed" is a word
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:09 <ais523> !ps d
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:19 <EgoBot> 5 ais523: ps
16:30:40 <ais523> !ul (so this is still working, then?)S
16:30:43 <EgoBot> so this is still working, then?
16:31:08 <ais523> !undaemon irp
16:31:11 <EgoBot> Process 3 killed.
16:44:26 -!- nazgjunk has joined.
16:56:51 <ais523> !help
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:13:50 <SevenInchBread> >.>
17:16:34 <ais523> SevenInchBread: ?
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:00:54 <Figs> hi
18:01:00 <oerjan> hi figs
18:20:33 <ais523> hi everyone
18:21:24 <Figs> hi
18:22:58 <ais523> This conversation is getting redundant quickly
18:25:16 <Figs> :P
18:25:57 <lament3> hi!!
18:27:13 <ais523> looking forward to tomorrow, anyone?
18:27:23 <ais523> (or I suppose today in some timezones)
18:27:51 <Figs> ;p
18:34:09 <nazgjunk> why would i ?
18:34:13 <nazgjunk> well, yeah, i am
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:43 <Figs> :P
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:44:42 <CakeProphet> ....what's tomorrow?
18:44:42 <ais523> *tomorrow
18:45:03 <Figs> CakeProphet... look at a calendar
18:45:13 <ais523> CakeProphet: the anniversary of the release of Whitespace
18:45:17 <oerjan> *sigh*
18:49:57 <CakeProphet> ....
18:50:33 <CakeProphet> whooo...
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:50:57 <Figs> ...
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:54:16 <CakeProphet> :)
18:56:10 * ais523 wonders how they became an MP without realising it
18:56:22 <Figs> MP?
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.
18:59:29 <EgoBot> ?bf ,[.,]!testing
18:59:31 <ais523> testing
19:00:41 <nazgjunk> rofl
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:09:10 <Figs> birmingham?
19:09:26 <SimonRC> or near there
19:09:34 <ais523> at the moment
19:10:58 <SimonRC> I am in durham during term-time
19:11:00 <SimonRC> but not now
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:36 <dog4> hola
19:18:45 * CakeProphet usually doesn't disclose his gender... althought it's probably obvious.
19:19:04 <CakeProphet> :)
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> :P
19:21:43 -!- Figs42 has changed nick to Figs.
19:22:00 <Figs> why the fsck is my program not working STILL? :(
19:22:06 <ais523> which program?
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:24:57 <Figs> ;)
19:26:10 <oerjan> you mean like a COM/EXE UUENCODE polyglot?
19:26:10 <SimonRC> ais523: :-!
19:26:10 <Figs> O_O
19:26:12 <Figs> omg
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:28:59 <Figs> hmm
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:12 <SimonRC> Figs: GIYF
19:30:26 <ais523> Figs: on Windows/DOS, you can use the DEBUG program to single-step through a COM file
19:30:37 <Figs> no
19:30:44 <Figs> ... hold on
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:47 <Figs> o.o
19:32:51 <Figs> maybe there is
19:32:57 <Figs> I'm not sure
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
19:33:45 <SimonRC> it's *traditional*
19:33:53 <Figs> :p
19:35:13 <SimonRC> like ed
20:01:05 <CakeProphet> hmmmm
20:01:08 <CakeProphet> I SAU
20:01:10 <CakeProphet> SAY
20:01:23 <CakeProphet> ....well....
20:01:24 <Sukoshi> No. You sautee.
20:01:31 -!- Figs has left (?).
20:08:28 <CakeProphet> Lessee....
20:13:22 -!- calamari has joined.
21:15:23 <SimonRC> calamari: what?
21:19:59 <bsmntbombdood> 3--
21:20:22 <SimonRC> ITYM LET 3 = 3 - 1
21:20:42 <bsmntbombdood> 3 is not a valid lhs
21:20:52 <SimonRC> depends on the languge
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:34 <bsmntbombdood> makes sense
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:31 <bsmntbombdood> I was killed in a mine collapse once
21:23:43 <oklopol> on windows standard sizes, i have 7, 60 and 192
21:23:49 <oklopol> i'm so hooked
21:24:37 <oerjan> hm... i have a vague idea that i was better than that in my time
21:24:51 <oklopol> :<
21:24:53 <oklopol> feckz
21:25:02 <oklopol> i need a better mouse...
21:25:03 <oklopol> :)
21:25:06 <oerjan> i am sure i was below 150
21:25:12 <oklopol> yeah, the big one...
21:25:24 <bsmntbombdood> I hate my interenets
21:25:31 <bsmntbombdood> 800 ms ping times
21:25:37 <bsmntbombdood> 25% packet loss
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:27:31 <CakeProphet> ....I have a... hacker impulse.
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:29:19 <CakeProphet> so it wasn't all...... business-ized.
21:30:39 <atrapado> oklopol , maybe using ncurses
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:12 <CakeProphet> .....................................
21:31:16 <bsmntbombdood> ...........................................
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:32:51 <bsmntbombdood> the esoteric socialist brothers
21:33:18 <SimonRC> ICANN needs a standing army
21:34:39 <bsmntbombdood> icann we don't need
21:34:49 <bsmntbombdood> anarchy on the internets!
21:35:09 -!- atrapado has quit ("ribadeo").
21:36:16 <CakeProphet> yep... anarchy!
21:36:43 <bsmntbombdood> anarchy in america!
21:37:14 * bsmntbombdood revolves
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:16 <SimonRC> erm
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:38:58 <SimonRC> actually...
21:39:14 <CakeProphet> -shrug- fuck businesses. :)
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:41:51 <bsmntbombdood> they do
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:46:54 <oerjan> oh dear.
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:54:10 <bsmntbombdood> but it is accurate
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:40 <bsmntbombdood> american fuel juice?
22:10:50 -!- Figs has joined.
22:10:52 <Figs> hey
22:10:55 <Figs> it works !!! O_O
22:10:56 <Figs> http://rafb.net/p/y5eay298.html
22:11:23 <bsmntbombdood> 0mg 7ha7 r0x my s0x
22:11:30 <oklopol> Figs what's that do?
22:11:40 <oklopol> an advanced hello world?
22:11:43 <Figs> sort of
22:11:49 <Figs> Hello World.
22:11:54 <Figs> Goodbye World
22:11:55 <Figs> type thing
22:12:01 <Figs> it prints:
22:12:04 <Figs> Hello, World.
22:12:09 <Figs> Goodbye, World.
22:12:13 <Figs> IT WORKS!!!
22:12:33 <oklopol> that's very... impressive
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:12:59 <bsmntbombdood> just push the number of args last...
22:13:09 <Figs> yes
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:15:25 <bsmntbombdood> I should learn a real assembly language
22:15:30 <Figs> :P
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:18:52 <bsmntbombdood> it's terrible how string comparisons are O(n)
22:19:40 <oklopol> only if they're the same!
22:19:45 <oklopol> oh
22:19:47 <oklopol> hmm
22:19:48 <oklopol> :)
22:20:27 <Figs> :P
22:20:44 <bsmntbombdood> O(n) where n is the number of chars the same
22:20:53 <oklopol> yeah, truez
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:21:57 <oklopol> i mean
22:22:17 <oklopol> where n is the number of chars in the shorter str
22:22:29 <oklopol> eh, forget that :)
22:22:31 <Figs> isn't the operation based on the slowest possible case?
22:22:45 <bsmntbombdood> oklopol: no
22:22:45 <oerjan> yep, so it's O(n) regardless.
22:22:47 <Figs> O(n) or better
22:22:49 <oklopol> i think O is average
22:23:00 <oerjan> usually worst case.
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:23:55 <Figs> (typically)
22:24:02 <oklopol> n^k
22:24:10 <oklopol> i think :)
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:24:59 <oklopol> potentual (:D)
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:25:39 <Figs> :P
22:25:51 <oerjan> n^k is polynomial yes
22:25:58 <Figs> thanks
22:26:27 <Figs> wait
22:26:32 <Figs> is ml on xp?
22:26:38 <oerjan> huh?
22:26:44 <Figs> mmm nope
22:26:54 <oerjan> no parse
22:27:31 <Figs> it's ok
22:27:42 <Figs> I'm reading old tutorials
22:27:46 <oerjan> "ml on xp"?
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:29:55 <Figs> afk
22:29:55 <Figs> dinner
22:30:46 <Sukoshi> XP looks like a smily. It can't be the name of an OS, can it ?
22:31:15 <oerjan> but what is ml?
22:31:32 <oerjan> the language?
22:31:37 <Sukoshi> SML?
22:31:44 <oerjan> Ocaml?
22:31:54 <oerjan> i am pretty sure both are available.
22:31:59 <oerjan> not to mention F#
22:32:05 <Sukoshi> Uggh. F#.
22:32:09 <Sukoshi> Does anyone actually use F# ?
22:32:23 <oerjan> probably
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:06 <oklopol> though
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:14 <oklopol> what do you mean?
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:32 <oklopol> hmm
22:36:40 <oklopol> i'll do it with 5 different strings
22:37:02 <oklopol> 5.7 tries, length 50 strings
22:37:07 <oklopol> much worse
22:37:27 <oklopol> oh
22:37:28 <oklopol> actually
22:37:38 <oklopol> that's kinda obvious xD
22:37:45 <oerjan> indeed
22:38:13 <oklopol> but, well, any excuse to write a program :)
22:43:55 <oklopol> ~bf +++++++++++++++++++++++++++++++++++++++++++++++++.
22:43:56 <bsmnt_bot> 1
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:44:58 <CakeProphet> hmmm....
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:17 * oerjan boggles his mind
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:50:10 <bsmntbombdood> a stack is a stack of registers
22:50:28 <bsmntbombdood> a register holds one word
22:53:38 <CakeProphet> ah okay... a register is basically... a single unit of information.
22:53:41 <CakeProphet> not a collection.
22:55:02 <bsmntbombdood> oh man
23:06:09 <CakeProphet> ?
23:06:32 <lament3> um.
23:06:44 <lament3> CakeProphet: a _register_ is a hardware term.
23:06:48 <lament3> it is not a data structure.
23:07:03 <CakeProphet> -nod- yes I know.
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:24 <bsmntbombdood> B is cool
23:14:30 <bsmntbombdood> no types ftw!
23:14:58 <Figs> duck typing, or implicit typing?
23:15:44 <bsmntbombdood> B has one type, a single machine word
23:15:45 <oerjan> crash typing
23:16:10 <Figs> yay asm...
23:16:20 <Figs> data and instructions are the same thing!
23:16:28 <Figs> :P
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:51 <Figs> ooh
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:08 <CakeProphet> I HAVE PONDERED DOING SO
23:21:20 <Figs> Cake, are you 7"B?
23:21:26 <CakeProphet> YEP
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:30:27 <bsmntbombdood> i was reading the synthesis kernel paper
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:54:32 <Figs> hi
23:54:40 <Figs> I am bored.
23:55:30 <Sukoshi> Go outside and hope enough charge accumulates in the clouds to exceed the dielectric capacity of air.
23:58:06 <bsmntbombdood> oooh
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.
23:59:40 <Sukoshi> You never know.
←2007-02 2007-03 2007-04→ ↑2007 ↑all