←2009-01-17 2009-01-18 2009-01-19→ ↑2009 ↑all
00:00:00 -!- BeholdMyBot has joined.
00:00:19 <FireFly> Mwahaha
00:00:31 <FireFly> [00:59:58] <@FireFly> ^bf +++++++++++++.-----[->++++++++>++++>++++++++++++<<<]>++++++++++.+++++.------.+++++.>.+++.>+++++.++++++++++++++.----.+++++.---------------.+++++++++++++.---------.------.
00:00:41 <FireFly> = [CR]JOIN #esoteric
00:00:45 -!- BeholdMyBot has left (?).
00:03:32 <Deewiant> ehird: I just released Coadjute, in case you're interested.
00:03:37 <ehird> link
00:03:42 <Deewiant> And with that, I'm off to sleep ->
00:03:54 <Deewiant> iki.fi/matti.niemenmaa/coadjute
00:04:12 <ehird> thx
00:04:12 <ehird> :)
00:08:56 <oklopol> www.iki.fi/matti.niemenmaa/coadjute
00:09:32 <ehird> oklopol: wut?
00:09:38 <ehird> oh, for clickability?
00:13:33 <BeholdMyGlory> ^bf ,[.,]!Hello World!
00:13:33 <fungot> Hello World!
00:13:41 <BeholdMyGlory> ^bf +++++++++++++.---[>++++++<-]>+++++<+++++[>+++<-]>.<+++++[>---<-]>.<+++++[>+++<-]>++.++.>+++++++[>+++++<-]>---.+++.<+++[<+++++>-]<++.++++++++++++++.----.+++++.---------------.+++++++++++++.---------.------.
00:13:41 <fungot> .PART #esoteric
00:13:54 <BeholdMyGlory> damn :P
00:13:58 <oklopol> ehird: yes.
00:15:51 -!- moozilla has joined.
00:28:21 <ehird> Holy shit kottke.org redesigned and it looks so ugly
00:30:40 <ehird> well, ok, only the STUPID BLUE BORDER looks ugly
00:43:21 <flexo> yea
00:43:25 <flexo> it started looking all fine
00:43:32 <flexo> until loading the images finished
00:44:02 * ehird sees if he can block that image ;-)
00:55:10 -!- BeholdMyGlory has quit ("bye").
00:57:51 -!- FireFly has quit ("Later").
01:59:38 <oklopol> o
01:59:39 <oklopol> o
02:07:26 <kerlo> Great, I have a functioning Lispoid. It has only one primitive: lambda.
02:07:56 <kerlo> I don't want to figure out how it works, so you guys tell me what expressions to evaluate.
02:08:41 -!- GregorR has joined.
02:09:01 <kerlo> Hi, GregorR. I'm a LISP bot now.
02:09:44 -!- GregorR has quit (Remote closed the connection).
02:09:58 <kerlo> I guess I was too scary.
02:11:05 <bsmntbombdood> WHO HIGHLIGHTED BSMNT_BOT
02:11:13 <kerlo> *Lisp> evaluate . read $ "((lambda a (a a)) (3 4))"
02:11:13 <kerlo> ((3 4) (3 4))
02:11:47 <kerlo> Hey, I got it to go into an actual infinite loop.
02:11:55 <kerlo> As opposed to those fake infinite loops you see on TV.
02:12:33 <bsmntbombdood> ...not suprising
02:15:25 <kerlo> *Lisp> evaluate . read $ "((lambda s ((lambda k s) (lambda x (lambda y x)))) (la
02:15:29 <kerlo> mbda x (lambda y (lambda z ((x z) (y z))))))"
02:15:31 <kerlo> [lambda x (lambda y (lambda z ((x z) (y z))))]
02:15:36 <kerlo> Phear.
02:16:13 <kerlo> Replacing that inner thing with (s k) gives this: [lambda y (lambda z (((lambda x (lambda y x)) z) (y z)))]
02:18:05 <kerlo> ((s k) a) gives this: [lambda z (((lambda x (lambda a x)) z) (a z))]
02:18:16 <kerlo> (((s k) a) b), surprisingly, gives this: b
02:18:46 <kerlo> Wait, no, that's actually correct.
02:20:13 <kerlo> I'd be surprised if this could actually handle big expressions correctly.
02:30:36 * kerlo makes s, k and i built-ins
02:32:47 <kerlo> Now the only things we need are foldr and equality testing.
02:38:46 <kerlo> And both have now been implemented.
02:42:31 <kerlo> All we need to do now is make it an IRC bot!
02:47:18 <MizardX> Lambda is just one greek character. Why need 6 characters to encode it?
02:47:38 <kerlo> It would be shorter to just use L.
02:48:22 <MizardX> or some non-alphanumeric one, such as \, which resembles lambda
02:48:49 <MizardX> ((\s ((\k s) (\x (\y x)))) (\x (\y (\z ((x z) (y z))))))
02:54:47 <adimit> Yi actually has a built-in feature (in haskell mode) that translates '\' directly to the unicode-character 'lambda' in the right context.
02:55:10 <adimit> tremendously useful for my sore eyes :-)
02:57:59 <MizardX> ((λs ((λk s) (λx λy x))) (λx λy λz x z (y z)))
03:02:04 <kerlo> I think my Lispy IRC bot is ready.
03:02:19 <kerlo> There's a small problem, though, in that any parse error in your expression will cause it to disconnect.
03:02:22 <kerlo> Oh well.
03:02:26 -!- kerlobot has joined.
03:02:36 <kerlo> #eval s
03:02:49 <kerlo> Oh, darn.
03:03:43 <kerlo> CREAMPUFF!
03:03:44 -!- kerlobot has quit (Remote closed the connection).
03:03:51 <kerlo> Cool, that made it quit.
03:10:08 <kerlo> So, I'm stealing someone else's IRC code.
03:18:18 -!- kerlobot has joined.
03:18:25 <kerlo> #eval s
03:18:25 <kerlobot> [l x (l y (l z ((x z) (y z))))]
03:18:29 <kerlo> Woot!
03:18:39 <kerlo> #eval This is a syntax error: ]]]]]
03:18:40 -!- kerlobot has quit (Remote closed the connection).
03:18:47 <kerlo> Wow.
03:21:39 -!- kerlobot has joined.
03:21:44 <kerlo> #eval s
03:21:44 <kerlobot> [l x (l y (l z ((x z) (y z))))]
03:21:50 <kerlo> #eval This is a syntax error: ]]]]]
03:21:51 <kerlobot> Syntax error
03:22:06 <kerlo> Lovely.
03:22:53 <kerlo> #eval (((s i) i) ((s i) i))
03:23:03 <kerlo> #eval I'm waiting...
03:23:19 <kerlo> Yeah, that's never going to finish.
03:23:22 -!- kerlobot has quit (Read error: 104 (Connection reset by peer)).
03:29:43 -!- puzzlet_ has quit (Read error: 104 (Connection reset by peer)).
03:29:49 -!- puzzlet has joined.
03:34:16 -!- kerlobot has joined.
03:34:20 <kerlo> #eval 3
03:34:20 <kerlobot> 3
03:34:30 <kerlo> #eval This is probably a syntax error.
03:34:31 <kerlobot> Syntax error
03:34:42 <MizardX> #eval "test"
03:34:43 <kerlobot> "test"
03:34:48 <MizardX> #eval "test" + "test"
03:34:49 <kerlobot> Syntax error
03:34:49 <kerlo> #temp This is probably a syntax error.
03:34:50 <kerlobot> Syntax error
03:34:59 <kerlo> #temp muahaha
03:35:02 <kerlo> #eval "test"
03:35:02 <kerlobot> muahaha
03:35:05 <kerlo> #eval s
03:35:05 <kerlobot> muahaha
03:35:10 <kerlo> #temp input
03:35:14 <kerlo> #eval "test"
03:35:15 <kerlobot> "test"
03:35:41 <MizardX> #eval (+ "a" "b")
03:35:42 <kerlobot> (+ "a" "b")
03:35:46 <kerlo> Built-in functions: s, k, i, l, f, e
03:36:03 <kerlo> So one thing it can do is evaluate SKI calculus.
03:36:32 <MizardX> #eval ["a" "b"]
03:36:33 <kerlobot> Syntax error
03:36:50 <MizardX> no way to concatenate strings?
03:36:55 <kerlo> Nope.
03:37:07 <kerlo> You might be able to figure out a way to concatenate lists, though.
03:37:24 <MizardX> #eval (+ [1 2] [3 4])
03:37:24 <kerlobot> Syntax error
03:37:27 <kerlo> f is the foldr function.
03:37:45 -!- puzzlet has quit (Remote closed the connection).
03:37:46 <MizardX> #eval [1, 2]
03:37:47 <kerlobot> Syntax error
03:37:49 -!- puzzlet has joined.
03:38:16 <kerlo> #eval (((l x (l y (list x y))) 1) 2)
03:38:16 <kerlobot> (list 1 2)
03:38:48 <kerlo> Obvious improvement: make l take a list of arguments, not just one.
03:39:45 <MizardX> #eval ((l list (list x)) y)
03:39:46 <kerlobot> (y x)
03:39:58 <MizardX> so how is list different from any other value?
03:40:03 <kerlo> It isn't.
03:40:16 <MizardX> numbers, strings and tuples
03:40:38 <kerlo> My lisp has three types: atom, list, and lambda function.
03:41:00 <MizardX> #eval "xy
03:41:00 <kerlobot> "xy
03:41:02 <MizardX> oh
03:41:04 <kerlo> "foo" is an atom. "(blah blah blah)" is a list. "[l x y]" is a lambda function.
03:41:37 <kerlo> If you don't have any parentheses or brackets, you won't have any lists or lambda functions.
03:42:08 <MizardX> I know. Since you didn't mention strings, I had to test the function of "
03:42:15 * kerlo nods
03:42:40 <kerlo> " is not a special character in any way; only parentheses, brackets and whitespace are different from letters.
03:42:56 <kerlo> CREAMPUFF!
03:42:56 -!- kerlobot has quit (Read error: 104 (Connection reset by peer)).
03:43:07 <MizardX> :P
03:43:29 -!- kerlobot has joined.
03:43:33 <kerlo> Now it's better.
03:43:52 <kerlo> #temp (the answer is input)
03:43:55 <kerlo> #eval (s k)
03:43:56 <kerlobot> (the answer is (s k))
03:44:05 <kerlo> Oh, that's not the answer at all.
03:44:07 <kerlo> #reset
03:44:10 <kerlo> #eval (s k)
03:44:10 <kerlobot> [l y (l z ((k z) (y z)))]
03:44:42 <MizardX> #temp (x y)
03:44:46 <MizardX> #eval (x y)
03:44:46 <kerlobot> (x y)
03:44:56 <kerlo> Now everything will evaluate to (x y).
03:45:02 <MizardX> #eval (x y input)
03:45:03 <kerlobot> (x y)
03:45:06 <MizardX> #temp (x y input)
03:45:08 <MizardX> #eval (x y)
03:45:08 <kerlobot> (x y)
03:45:24 <kerlo> The bot stores a template, which is by default "input".
03:45:49 <kerlo> The #temp and #eval commands substitute their input for the word "input" in the template, then do something with the results.
03:46:04 <MizardX> #reset
03:46:06 <kerlo> #temp sets the the template to it; #eval evaluates it and outputs the result.
03:46:06 <kerlobot> Syntax error
03:46:14 <kerlo> Now the template is "input" again.
03:47:11 <kerlo> #eval s
03:47:11 <kerlobot> [l x (l y (l z ((x z) (y z))))]
03:47:13 <kerlo> #eval k
03:47:14 <kerlobot> [l x (l y x)]
03:47:15 <kerlo> #eval i
03:47:15 <kerlobot> [l x x]
03:47:28 <kerlo> #eval (e 3 3)
03:47:28 <kerlobot> (e 3 3)
03:47:32 <kerlo> Oops.
03:47:38 <kerlo> #eval (e 3 3 yes no)
03:47:38 <kerlobot> yes
03:47:40 <kerlo> #eval (e 3 4 yes no)
03:47:41 <kerlobot> no
03:47:59 <kerlo> #eval (f one two (1 2 3))
03:48:00 <kerlobot> (one 1 (f one two (2 3)))
03:48:08 <kerlo> #eval (f one two ())
03:48:08 <kerlobot> two
03:48:49 <kerlo> #temp ((l foo (How useful!)) input)
03:49:00 <kerlo> #eval (one fish two fish red fish foo fish)
03:49:00 <kerlobot> (How useful!)
03:49:08 <kerlo> Oops, wrong way around.
03:49:09 <kerlo> #reset
03:49:21 <kerlo> #temp ((l foo input) (How useful!))
03:49:23 <kerlo> #eval (one fish two fish red fish foo fish)
03:49:24 <kerlobot> (one fish two fish red fish (How useful!) fish)
03:49:43 <kerlo> #temp ((l red input) (Not.))
03:49:45 <kerlo> #eval (one fish two fish red fish foo fish)
03:49:45 <kerlobot> (one fish two fish (Not.) fish (How useful!) fish)
03:50:03 <kerlo> #temp ((l fish input) (Look, they stack! foo foo foo))
03:50:07 <kerlo> #eval (one fish two fish red fish foo fish)
03:50:07 <kerlobot> (one (Look, they stack! (How useful!) (How useful!) (How useful!)) two (Look, they stack! (How useful!) (How useful!) (How useful!)) (Not.) (Look, they stack! (How useful!) (How useful!) (How useful!)) (How useful!) (Look, they stack! (How useful!) (How useful!) (How useful!)))
03:50:19 <kerlo> #reset
03:50:22 <kerlo> And that's how you set things.
03:56:30 <kerlo> CREAMPUFF!
03:56:30 -!- kerlobot has quit (Read error: 104 (Connection reset by peer)).
03:56:36 -!- kerlobot has joined.
03:56:48 <kerlo> Now it should behave intelligently if you apply a function to too many arguments.
03:57:00 <kerlo> #eval (s x y z)
03:57:00 <kerlobot> ([l x (l y (l z ((x z) (y z))))] x y z)
03:57:12 <kerlo> Nope.
03:57:53 <kerlo> Did I do something silly, like forget to reload?
03:57:57 <kerlo> CREAMPUFF!
03:57:58 -!- kerlobot has quit (Read error: 104 (Connection reset by peer)).
03:58:10 -!- kerlobot has joined.
03:58:14 <kerlo> #eval (s x y z)
03:58:15 <kerlobot> ((x z) (y z))
03:58:19 <kerlo> Much better.
03:58:32 <kerlo> #eval (one fish two fish red fish blue fish)
03:58:32 <kerlobot> (((((((one fish) two) fish) red) fish) blue) fish)
03:58:42 <kerlo> Look how intelligent that is!
04:00:11 -!- CakeProphet has joined.
04:02:07 <kerlo> Now to figure out how to concatenate two lists using this thing.
04:03:41 <kerlo> Okay, here are the guts of this bot: http://pastebin.ca/1311359
04:04:00 <kerlo> If I figure out how to access the wiki, I might write a little spec for this language and put it there.
04:05:17 <psygnisfive> what are you kids doing
04:05:21 <psygnisfive> kerlo whats this kerlobot thing
04:05:37 <kerlo> It's an esolang bot, I guess.
04:06:16 <psygnisfive> what lang
04:06:26 <kerlo> It's something resembling Lisp.
04:06:33 <psygnisfive> i see
04:06:37 <psygnisfive> and written ins haskell!
04:06:41 <kerlo> Yep.
04:07:07 <psygnisfive> only 53 lines for the whole bot?
04:07:31 <kerlo> The whole bot is 152 lines. The guts of the interpreter are just 53, though, I guess.
04:07:52 <psygnisfive> ah ok.
04:07:58 <psygnisfive> i was wondering why i didnt see io stuff there :p
04:09:11 <kerlo> CREAMPUFF!
04:09:11 -!- kerlobot has quit (Read error: 104 (Connection reset by peer)).
04:09:19 -!- kerlobot has joined.
04:09:26 <kerlo> #eval (cons 1 (2 3))
04:09:27 <kerlobot> ((cons 1) (2 3))
04:09:34 <kerlo> #eval (c 1 (2 3))
04:09:34 <kerlobot> (1 2 3)
04:09:38 <kerlo> There we go.
04:09:56 <kerlo> That's wrong, though. :-P
04:10:27 <kerlo> CREAMPUFF!
04:10:27 -!- kerlobot has quit (Read error: 104 (Connection reset by peer)).
04:10:35 -!- kerlobot has joined.
04:10:40 <kerlo> #eval (a 1 (2 3))
04:10:40 <kerlobot> ((1 2) 3)
04:10:49 <psygnisfive> CREAMPUFF!
04:10:54 <psygnisfive> ahh very smart
04:10:55 <psygnisfive> :)
04:10:57 <kerlo> CREAMPUFF! doesn't actually do anything.
04:11:01 <psygnisfive> oh
04:11:03 <psygnisfive> darn
04:11:11 <psygnisfive> and here i thought it was your special restart command
04:11:11 <kerlo> I mean, it doesn't do anything that, say, "There we go." wouldn't.
04:11:12 <psygnisfive> haha
04:11:40 <kerlo> I assure you that this is all part of my evil plan.
04:11:48 <kerlo> #eval (list (1 2 3))
04:11:48 <kerlobot> (list (1 2 3))
04:11:49 <psygnisfive> :P
04:12:20 <bsmntbombdood> oh, ski
04:12:22 <bsmntbombdood> i like ski
04:12:37 <kerlo> Do some ski, bsmntbombdood!
04:14:55 <MizardX> #eval f
04:14:56 <kerlobot> f
04:15:31 <MizardX> #eval (l x (l y (x y)) a b
04:15:36 -!- kerlobot has quit (Remote closed the connection).
04:15:38 <MizardX> :P
04:15:43 <kerlo> Wow.
04:16:50 <kerlo> Let me fix the parser, then...
04:17:01 <bsmntbombdood> heh
04:17:24 -!- kerlobot has joined.
04:17:28 <MizardX> #eval (l x (l y (x y)) a b
04:17:29 <kerlo> #eval (l x (l y (x y)) a b
04:17:29 <kerlobot> Syntax error
04:17:29 <kerlobot> Syntax error
04:17:33 <kerlo> Jinx.
04:17:40 <MizardX> #eval ((l x (l y (x y)) a b)
04:17:40 <kerlobot> Syntax error
04:17:54 <kerlo> Match your parentheses, my friend.
04:17:57 <MizardX> lambdas can only take one argument?
04:17:59 <bsmntbombdood> kerlo: that was quick
04:18:08 <kerlo> Lambdas can only take one argument, inded.
04:18:13 <kerlo> That was quick, indeed.
04:18:14 <bsmntbombdood> shouldn't it take longer than 3 seconds to make that change?
04:18:22 <kerlo> Well, I just added the line readsPrecLisp' n [] = []
04:18:39 <MizardX> #eval (l (x y) (z (x y))) (1 2)
04:18:39 <kerlobot> Syntax error
04:18:45 <MizardX> #eval ((l (x y) (z (x y))) (1 2))
04:18:45 <kerlobot> (((l (x y)) (z (x y))) (1 2))
04:18:47 <bsmntbombdood> stupid haskell
04:18:59 <kerlo> Meaning "if you're waiting for a close bracket and there's nothing there, there are no parses."
04:19:21 <kerlo> #eval ((l x (l y (x y))) a b)
04:19:21 <kerlobot> (a b)
04:19:44 <kerlo> #eval (this is the input)
04:19:44 <kerlobot> (((this is) the) input)
04:19:54 <kerlo> Boring.
04:20:01 <kerlo> #temp (input input input)
04:20:01 <kerlo> #temp (input input input)
04:20:02 <kerlo> #temp (input input input)
04:20:04 <kerlo> #eval 3
04:20:05 <kerlobot> ((((((3 3) 3) (3 3 3)) (3 3 3)) ((3 3 3) (3 3 3) (3 3 3))) ((3 3 3) (3 3 3) (3 3 3)))
04:20:10 <kerlo> #reset
04:20:46 <MizardX> #eval (l x (e x 3)) 4
04:20:47 <kerlobot> Syntax error
04:21:10 <kerlo> Lists must be enclosed in parentheses.
04:21:17 <kerlo> #eval ((l x (e x 3)) 4)
04:21:17 <kerlobot> ((e 4) 3)
04:21:50 <MizardX> wasn't e = equals?
04:21:59 <kerlo> Yes, but it takes four arguments.
04:22:12 <MizardX> #eval (l x (e 0 1 x 3)) 4
04:22:12 <kerlobot> Syntax error
04:22:16 <MizardX> #eval ((l x (e 0 1 x 3)) 4)
04:22:16 <kerlo> Returns the third if the first and second are equal, the fourth otherwise.
04:22:17 <kerlobot> 3
04:22:28 <MizardX> #eval ((l x (e x 3 0 1)) 4)
04:22:28 <kerlobot> 1
04:22:41 <MizardX> #eval ((l x (e x 3 1 0)) 3)
04:22:41 <kerlobot> 1
04:23:03 <kerlo> I'm still waiting for someone to figure out a function for concatenating two lists. :-)
04:23:08 <kerlo> Might not be possible; I dunno.
04:23:53 <MizardX> nothing I could think of. foldr works for breaking up a list, but not putting it back together
04:24:23 <MizardX> you need car and cdr :P
04:24:29 <MizardX> and cons
04:24:44 <kerlo> #eval (a (does this look like) (cons to you?))
04:24:45 <kerlobot> ((((does this look like) cons) to) you?)
04:25:01 <kerlo> What we need is...
04:25:37 <kerlo> ...CREAMPUFF!
04:25:37 -!- kerlobot has quit (Read error: 104 (Connection reset by peer)).
04:26:01 -!- kerlobot has joined.
04:26:06 <kerlo> What we need is v!
04:26:20 <kerlo> #eval (v test (a (does this look like) (cons to you?)))
04:26:20 <kerlobot> (test ((((does this look like) cons) to) you?))
04:26:29 <kerlo> I think that's wrong.
04:26:36 <bsmntbombdood> what's v?
04:26:38 <MizardX> #eval (v (1 2 3) (4 5 6))
04:26:38 <kerlobot> (((1 2) 3) ((4 5) 6))
04:26:42 <kerlo> apply (Atom "v") (x:xs) = evaluate (List (x : map evaluate xs))
04:27:07 <bsmntbombdood> what's the point of that?
04:27:13 <kerlo> Good question!
04:27:40 <kerlo> It was intended to circumvent this: apply f (x1:x2:xs) = apply (apply f [x1]) (x2:xs)
04:27:55 <MizardX> #eval (a x (1 2 3))
04:27:55 -!- GregorR has joined.
04:27:55 <kerlobot> (((x 1) 2) 3)
04:28:00 <kerlo> But that line sucks, so I've removed both. Creampuff.
04:28:01 -!- kerlobot has quit (Read error: 104 (Connection reset by peer)).
04:28:13 -!- kerlobot has joined.
04:28:18 <kerlo> #eval (1 2 3)
04:28:18 <kerlobot> (1 2 3)
04:28:23 <bsmntbombdood> ugh, haskell
04:28:26 <kerlo> #eval (a x (1 2 3))
04:28:26 <kerlobot> (x 1 2 3)
04:28:30 <bsmntbombdood> tryin to be all elegant 'n shit
04:28:35 <kerlo> Now it's starting to look like cons, eh?
04:29:00 <MizardX> #eval (a (1 2 3) (4 5 6))
04:29:01 <kerlobot> ((1 2 3) 4 5 6)
04:30:14 <MizardX> #eval (f a () ((1 2 3) (4 5 6)))
04:30:15 <kerlobot> ((1 2 3) f a () ((4 5 6)))
04:30:44 <kerlo> I'm sure something looked like a good idea at the time.
04:31:05 <MizardX> #eval (f a x ((1 2 3) (4 5 6)))
04:31:05 <kerlobot> ((1 2 3) f a x ((4 5 6)))
04:31:07 <kerlo> Let me make it better.
04:31:32 <MizardX> #eval (f one two (1 2 3))
04:31:32 <kerlobot> (one 1 (f one two (2 3)))
04:31:59 <kerlo> Cream.
04:32:00 -!- kerlobot has quit (Read error: 104 (Connection reset by peer)).
04:32:06 -!- kerlobot has joined.
04:32:10 <MizardX> #eval (f one two (1 2 3))
04:32:11 <kerlobot> (one 1 (one 2 (one 3 two)))
04:32:17 <MizardX> #eval (f a x ((1 2 3) (4 5 6)))
04:32:18 <kerlobot> ((1 2 3) a (4 5 6) x)
04:32:21 <MizardX> ...
04:32:27 <kerlo> Strange.
04:32:35 <kerlo> #eval (f a () ((1 2 3) (4 5 6)))
04:32:36 <kerlobot> ((1 2 3) (4 5 6))
04:32:41 <kerlo> Less strange.
04:32:57 <MizardX> #eval (f one two ((1 2 3) (4 5 6)))
04:32:57 <kerlobot> (one (1 2 3) (one (4 5 6) two))
04:33:22 <MizardX> #eval (f (a x) () ((1 2 3) (4 5 6)))
04:33:22 <kerlobot> ((a x) (1 2 3) ((a x) (4 5 6) ()))
04:33:45 <kerlo> #eval (f (a x ()) () ((1 2 3) (4 5 6)))
04:33:45 <kerlobot> ((a x ()) (1 2 3) ((a x ()) (4 5 6) ()))
04:34:18 <MizardX> it should re-evaluate it until it can't any more
04:34:32 <kerlo> #eval ((a x ()) (1 2 3) ((a x ()) (4 5 6) ()))
04:34:32 <kerlobot> ((x) (1 2 3) ((a x ()) (4 5 6) ()))
04:34:38 <kerlo> Yeah, that's broken.
04:35:16 <kerlo> Puff.
04:35:16 -!- kerlobot has quit (Read error: 104 (Connection reset by peer)).
04:35:22 -!- kerlobot has joined.
04:35:29 <kerlo> #eval (f (a x) () ((1 2 3) (4 5 6)))
04:35:30 <kerlobot> ((a x) (1 2 3) ((a x) (4 5 6) ()))
04:35:39 <kerlo> #eval (f (a x ()) () ((1 2 3) (4 5 6)))
04:35:39 <kerlobot> ((x) (1 2 3) ((x) (4 5 6) ()))
04:35:57 <MizardX> doesn't seem to recognize (a x) as a partial application of a
04:36:07 <kerlo> Nope.
04:38:37 <MizardX> #eval (f (l z (a x z)) () ((1 2 3) (4 5 6)))
04:38:38 <kerlobot> ([l z (a x z)] (1 2 3) ([l z (a x z)] (4 5 6) ()))
04:39:01 * kerlo ponders how a head or tail function might be made
04:39:47 <kerlo> A variable-argument lambda would be very nice.
04:40:02 <MizardX> #eval (f (l a (l b a)) (1 2 3) (4 5 6))
04:40:03 <kerlobot> ([l a (l b a)] 4 ([l a (l b a)] 5 ([l a (l b a)] 6 (1 2 3))))
04:40:10 <kerlo> A bit difficult, though.
04:40:28 <MizardX> #eval (f (l x (l y (a x y))) (1 2 3) (4 5 6))
04:40:29 <kerlobot> ([l x (l y (a x y))] 4 ([l x (l y (a x y))] 5 ([l x (l y (a x y))] 6 (1 2 3))))
04:40:55 <kerlo> #eval (1 2 3]
04:40:55 <kerlobot> (1 2 3)
04:41:09 <kerlo> Closing brackets don't seem to matter.
04:41:10 <MizardX> why doesn't that work? --^
04:41:26 <MizardX> #eval ([l x (l y (a x y))] 4 ([l x (l y (a x y))] 5 ([l x (l y (a x y))] 6 (1 2 3))))
04:41:26 <kerlobot> ([l x (l y (a x y))] 4 ([l x (l y (a x y))] 5 ([l x (l y (a x y))] 6 (1 2 3))))
04:41:39 <kerlo> Wait a bit, let me write the new lambdas.
04:41:41 <MizardX> #eval ((l x (l y (a x y))) 4 ((l x (l y (a x y))) 5 ((l x (l y (a x y))) 6 (1 2 3))))
04:41:41 <kerlobot> ([l x (l y (a x y))] 4 ((l x (l y (a x y))) 5 ((l x (l y (a x y))) 6 (1 2 3))))
04:44:26 <MizardX> #eval ((l x 1) 3)
04:44:26 <kerlobot> 1
04:44:42 <MizardX> #eval ((l x (l y x)) 3 4)
04:44:43 <kerlobot> ([l x (l y x)] 3 4)
04:44:50 <MizardX> #eval (((l x (l y x)) 3) 4)
04:44:50 -!- kerlobot has quit (Read error: 104 (Connection reset by peer)).
04:45:09 <MizardX> :P
04:51:01 -!- kerlobot has joined.
04:51:13 <MizardX> #eval (((l x (l y x)) 3) 4)
04:51:13 <kerlobot> (((l x (l y x)) 3) 4)
04:51:22 <MizardX> #eval ((l x (l y x)) 3 4)
04:51:23 <kerlobot> ((l x (l y x)) 3 4)
04:51:25 <MizardX> ...
04:51:32 <kerlo> #eval ((l (x y z) (they are x y z z y)) 1 2 3)
04:51:33 <kerlobot> (they are 1 2 3 3 2)
04:52:40 <MizardX> #eval ((l (x) (l (y) x)) 3 4)
04:52:41 <kerlobot> ([l (x) (l (y) x)] 3 4)
04:52:50 <MizardX> #eval (((l (x) (l (y) x)) 3) 4)
04:52:50 <kerlobot> 3
04:52:54 -!- puzzlet has quit (Remote closed the connection).
04:53:02 -!- puzzlet has joined.
04:53:27 <MizardX> #eval (((l (x) (l (x) x)) 3) 4)
04:53:28 <kerlobot> 4
04:54:52 <MizardX> #eval ((l (left right) (f a right left)) (1 2 3) (4 5 6))
04:54:53 <kerlobot> (1 2 3 4 5 6)
04:54:56 <MizardX> woot
04:55:53 <MizardX> #eval (e 1 2 3 4)
04:55:53 <kerlobot> 4
04:56:02 <MizardX> #eval (e 1 2 3 4 5)
04:56:02 <kerlobot> (e 1 2 3 4 5)
04:57:34 <MizardX> #eval (f (l (x y) x) (1 2 3))
04:57:35 <kerlobot> (f (l (x y) x) (1 2 3))
04:57:42 <MizardX> #eval (f (l (x y) x) r (1 2 3))
04:57:42 <kerlobot> 1
04:57:51 <MizardX> #eval (f (l (x y) x) x (1 2 3))
04:57:52 <kerlobot> 1
04:58:04 <MizardX> #eval (f (l (x y) x) x (this is a list))
04:58:05 <kerlobot> this
04:58:15 <kerlo> Congratulations, you've implemented head.
04:59:02 <kerlo> #temp ((lambda (l) input) (f (l (x y) x) (error: empty list) l))
04:59:06 <kerlo> #eval (head (1 2 3))
04:59:06 <kerlobot> ((lambda (l) (head (1 2 3))) (f (l (x y) x) (error: empty list) l))
04:59:10 <kerlo> Darn.
04:59:21 <kerlo> #reset
05:00:47 <kerlo> #temp ((lambda (head) input) (f (l (x y) x) (error: empty list) l))
05:00:51 <kerlo> #eval (head (1 2 3))
05:00:51 <kerlobot> ((lambda (head) (head (1 2 3))) (f (l (x y) x) (error: empty list) l))
05:01:02 <MizardX> :P
05:01:10 <kerlo> Why isn't that evaluating...
05:01:25 <MizardX> lambda?
05:01:30 <kerlo> D'oh.
05:01:34 <kerlo> #reset
05:01:43 <kerlo> #temp ((l (head) input) (f (l (x y) x) (error: empty list) l))
05:01:47 <kerlo> #eval (head (1 2 3))
05:01:47 <kerlobot> ((f (l (x y) x) (error: empty list) l) (1 2 3))
05:02:10 <MizardX> a little better
05:02:15 <kerlo> True.
05:02:42 <kerlo> #reset
05:03:14 <kerlo> #temp ((l (head) input) (lambda (list) (f (l (x y) x) (error: empty list) list)))
05:03:21 <kerlo> #eval (head (1 2 3))
05:03:21 <kerlobot> ((lambda (list) (f (l (x y) x) (error: empty list) list)) (1 2 3))
05:03:48 <kerlo> #reset
05:03:55 <kerlo> #temp ((l (head) input) (l (list) (f (l (x y) x) (error: empty list) list)))
05:03:57 <kerlo> #eval (head (1 2 3))
05:03:58 <kerlobot> 1
05:04:00 <kerlo> Finally.
05:04:08 <MizardX> #eval (head ())
05:04:09 <kerlobot> (error: empty ())
05:04:21 <kerlo> Oh, that's silly.
05:04:27 <kerlo> #reset
05:04:40 <kerlo> #temp ((l (head) input) (l (ls) (f (l (x y) x) (error: empty list) ls)))
05:04:44 <kerlo> #eval (head ())
05:04:45 <kerlobot> (error: empty list)
05:04:57 <MizardX> #eval input
05:04:57 <kerlobot> input
05:05:30 <kerlo> #eval (error: empty head)
05:05:30 <kerlobot> (error: empty (l (ls) (f (l (x y) x) (error: empty list) ls)))
05:06:42 <MizardX> #eval s
05:06:42 -!- kerlobot has quit (Remote closed the connection).
05:06:48 <MizardX> ...
05:07:10 <kerlo> Hum.
05:07:16 -!- kerlobot has joined.
05:07:19 <kerlo> #eval s
05:07:20 -!- kerlobot has quit (Remote closed the connection).
05:07:32 <kerlo> Right, the definition of s is now broken.
05:07:57 -!- kerlobot has joined.
05:08:00 <kerlo> #eval
05:08:05 <kerlo> #eval s
05:08:06 <kerlobot> [l (x) (l (y) (l (z) ((x z) (y z))))]
05:08:13 <kerlo> That's the new definition of s.
05:08:37 <MizardX> #eval (s x y z)
05:08:37 <kerlobot> ([l (x) (l (y) (l (z) ((x z) (y z))))] x y z)
05:08:55 <MizardX> #eval (((s x) y) z)
05:08:55 <kerlobot> ((x z) (y z))
05:09:31 <kerlo> #temp ((l (s) input) lol)
05:09:36 <kerlo> #eval (((s x) y) z)
05:09:36 <kerlobot> (((lol x) y) z)
05:09:41 <kerlo> #reset
05:09:47 <MizardX> #eval k
05:09:48 <kerlobot> [l (x) (l (y) x)]
05:10:26 <MizardX> #eval (((l (x y) x) 1) 2)
05:10:26 <kerlobot> (([l (x y) x] 1) 2)
05:10:33 <MizardX> #eval ((l (x y) x) 1 2)
05:10:33 <kerlobot> 1
05:10:45 <MizardX> no partial application
05:11:00 <kerlo> Correct.
05:11:00 <MizardX> of multi-var lambdas
05:11:27 <MizardX> #eval i
05:11:28 <kerlobot> [l (x) x]
05:11:28 <kerlo> It's like Haskell, I guess. You have to explicitly uncurry them.
05:11:45 <kerlo> Explicitly curry them, rather.
05:12:02 <kerlo> It's just that Haskell pretty much uses curry by default.
05:13:18 <MizardX> #eval (a i (1 2 3))
05:13:19 <kerlobot> ([l (x) x] 1 2 3)
05:14:31 <kerlo> Fun fact: a evaluates its first argument.
05:15:51 <MizardX> I should sleep...
05:17:17 <MizardX> yesterday: «07:43:59» {MizardX} shower and breakfast
05:17:30 <MizardX> now: «06:17:16»
06:07:17 -!- metazilla has joined.
06:30:08 -!- moozilla has quit (Connection timed out).
06:41:08 -!- moozilla has joined.
06:54:16 -!- metazilla has quit (Connection timed out).
07:43:16 -!- moozilla has quit (K-lined).
07:56:01 -!- Corun has quit ("This computer has gone to sleep").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:56:58 -!- puzzlet_ has joined.
08:57:46 -!- puzzlet has quit (Remote closed the connection).
09:29:03 <AnMaster> huh, not a single spam message since yesterday? How strange, usually there are around 10-20 new spams after a night.
09:51:30 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
10:21:01 -!- FireFly has joined.
10:35:32 -!- MigoMipo has joined.
10:41:27 -!- FireFly has quit ("Later").
10:52:58 -!- oklopol has joined.
10:53:34 -!- BeholdMyGlory has joined.
11:16:38 -!- Judofyr has joined.
11:21:56 -!- BeholdMyGlory has quit (Read error: 104 (Connection reset by peer)).
11:32:08 -!- KingOfKarlsruhe has joined.
12:14:11 -!- Mony has joined.
12:15:45 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
12:49:30 -!- sebbu2 has quit (No route to host).
13:04:56 -!- sebbu has joined.
13:16:21 -!- Judofyr has joined.
13:44:22 -!- ehird has left (?).
13:44:24 -!- ehird has joined.
13:46:52 -!- MigoMipo has quit (Read error: 110 (Connection timed out)).
13:47:57 -!- MigoMipo has joined.
13:49:23 -!- Corun has joined.
14:11:49 -!- BeholdMyGlory has joined.
14:12:32 <ehird> optimising scheme is hard, you can't even constant-fold (+ 1 1) because you can redefine + at any point
14:12:44 <ehird> including e.g. EVAL on user input
14:15:06 <oklopol> you can constant-fold it, and have a global trigger system, attaching a lambda to unfold the constant when + is changed
14:15:28 <oklopol> essentially just a hack to get over the theoretical possibility of being fucked in the ass by a smart-ass user.
14:15:33 <ehird> oklopol: that's not much of an optimization :-P
14:15:50 <oklopol> ehird: why not? you get the same speed as with just constant folding
14:15:57 <ehird> oklopol:
14:16:00 <oklopol> you just need to do a few more lookups when defining functions
14:16:02 <ehird> (define old+ +)
14:16:07 <ehird> (set! + (lambda (a b) 0))
14:16:11 <ehird> [stuff]
14:16:11 <ehird> (set! + old+)
14:16:26 <ehird> then it does exactly the same as constant-folded, but slowly
14:16:29 <ehird> and that's not very consistent
14:17:22 <oklopol> err.
14:18:35 <oklopol> i'm not sure what you mean
14:18:48 <ehird> :D
14:18:56 <ehird> http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_sec_6.4 <-- god, scroll down to dynamic-wind
14:18:59 <ehird> that shit is crazy
14:21:14 <oklopol> there isn't a subchapter on it, i would have to read the surrounding of the term
14:21:27 <oklopol> i've read that, so err what's its point?
14:21:53 * oklopol is too lazy to read more than absolutely necessary :<
14:22:03 <oklopol> maybe because i read about 10 hours yesterday
14:22:31 <ehird> oklopol: it lets you detect call/cc, pretty much
14:22:40 <ehird> i.e., if we call/cc out of the thunk thing, we call the after thing first
14:22:46 <ehird> kind of
14:24:09 <oklopol> oh i remember. weird ordering shit and thunk stuff.
14:24:26 <oklopol> my brain is kinda mush atm :<
14:24:44 <ehird> oklopol: basically i'm thinking about writing a super-mega-fast scheme implementation
14:25:01 <ehird> and things like dynamic-wind piss me off because they throw my whole model around :<
14:25:57 <oklopol> ehird: well, the gist of compiling uncompilable things is to make the frequent case fast, that is, assume things happen the normal way and do somekinda hack around the fact they might not. this is a trivial idea of course, just that you might not want to do that because it's not fun to implement.
14:26:12 <ehird> oklopol: not schemey though is it
14:26:25 <oklopol> ehird: well it's more schemey than say befungey.
14:26:29 <ehird> schemey would be finding a fast way to implement everything without any special cases
14:26:41 <oklopol> in scheme you rarely, for instance, swap the meaning of + all the time for no reason.
14:26:42 -!- MigoMipo has quit ("QuitIRCException: MigoMipo out of IRC").
14:26:50 <oklopol> ehird: well i'm not talking about dynamic-wind
14:26:53 <ehird> i know
14:26:53 <oklopol> you should make that fast
14:27:04 <oklopol> i'm talking about the weirder stuff.
14:27:04 <ehird> just, i mean, i don't like the idea of having your program being slower or whatever just because you used one particular featur
14:27:05 <ehird> e
14:27:22 <ehird> it feels like someone saying, you know, "don't do this", but it's part of scheme, and you should be able to do it and stay as fast
14:27:51 <oklopol> well of course not, i just don't think redefining on the fly is really a feature; dynamic-wind i have a hard time commenting, because i'd have to think about it first :P
14:27:55 <ehird> oklopol: you have to understand that i'm going for crazy-ass speed
14:28:12 <ehird> like, first interpreter, I'm gonna aim for like 5-6x slower than c, or so
14:28:16 <ehird> i mean, that's really fast for an interpreter
14:28:27 <ehird> then I think I'll make it a compiler/jit and write it totally in scheme and stuff
14:28:34 <ehird> and I want to eventually get it ~2x slower than c
14:28:42 <ehird> which will be awesome because I'll never have to write c again.
14:28:49 <oklopol> ehird: i'll assume you're compiling a recursive fibonacci definition into a closed-form expression.
14:29:04 <oklopol> and something equally awesome for everything else too.
14:29:34 <oklopol> oh you're just going for c speed
14:29:35 <ehird> oklopol: a goal for the compiler is to get the generated asm be as compact as hand-written :DD
14:29:46 <ehird> well, c is pretty fast :D
14:29:47 <oklopol> i was thinking like faster than assembly.
14:29:53 <oklopol> faster than theoretically possible
14:29:58 <ehird> lol
14:30:01 <oklopol> i don't want to underestimate you see.
14:30:12 <ehird> well it could be faster than c
14:30:22 <ehird> because, I mean, it's compiling to machine code, pretty much
14:30:33 <ehird> so you could probably write a program faster than the equivalent in c
14:30:49 <oklopol> so have you read computer architecture - a quantitative approach?
14:31:05 <oklopol> i'll just assume you have
14:31:14 <oklopol> so what's the first chapter's idea
14:31:15 <oklopol> i mean
14:31:26 <oklopol> 50 pages of fucking random charts about speeds of random processors and shit
14:31:48 <ehird> oklopol: i haven't, but
14:31:48 <oklopol> before getting to scheduling algorithms and other *content*
14:31:49 <ehird> that sounds awesome
14:32:13 <Corun> I'll have you guys know
14:32:20 <Corun> That I just copied a bit of your conversation
14:32:23 <Corun> In to another conversation
14:32:25 <oklopol> i mean i understand they want to include statistics and history and shit so people feel like they're reading about something that has practical significance.
14:32:32 <Corun> To show an example usage of the word lol
14:32:37 <Corun> Congratulations
14:32:40 <Corun> You're THE INTERNET.
14:32:59 <oklopol> but what about us weirdos who can't skip the reading of the useless parts :|
14:33:18 <ehird> Corun: ooh, which part
14:34:28 <Corun> The bit with the lol in...
14:34:33 <Corun> <oklopol> i was thinking like faster than assembly.
14:34:33 <Corun> <oklopol> faster than theoretically possible
14:34:33 <Corun> <ehird> lol
14:34:33 <Corun> <oklopol> i don't want to underestimate you see.
14:34:46 <ehird> :D
14:35:13 -!- ais523 has joined.
14:35:21 <oklopol> hi ais523
14:35:31 <ais523> hi oklopol
14:35:36 <oklopol> i had something to say to you at some point. just fyi, i already forgot what :P
14:35:39 <ais523> wow, I'm so busy in RL
14:35:45 <ais523> that explains why I'm here on Sunday
14:35:45 <oklopol> me too. kinda.
14:35:52 <ehird> lol
14:36:06 <ais523> ehird: me in #esoteric = me online
14:36:18 <ehird> maybe I could optimize scheme by requiring a Proof of Fastness, which is the same program written in assembly
14:36:21 <ehird> and it just uses that assembly
14:36:30 <ais523> so there's more chance of me being here when busy, than there is of me being here when not busy
14:36:41 <ais523> ehird: it would have to prove the two programs were equivalent, or there's be no point
14:36:55 -!- Corun has quit ("This computer has gone to sleep").
14:36:58 <ehird> no
14:37:05 <ehird> if you want to mislead people, that's OK
14:37:14 <ehird> it won't try and force its philosophy on you.
14:37:19 <ais523> undefined behaviour if the two programs are different?
14:37:28 <ais523> that way, it is in fact implementing the Scheme
14:38:06 -!- Judofyr has quit (Read error: 110 (Connection timed out)).
14:38:16 <AnMaster> hello ais523
14:38:21 <ais523> hi
14:38:51 <ehird> ais523: yes, exactly!
14:39:19 <ais523> this is annoying, my mouse wheel seems confused
14:39:19 <oklopol> ...hey
14:39:25 <oklopol> so have you read computer architecture - a quantitative approach?
14:39:27 <ais523> when I turn it downwards, it sometimes scrolls upwards, and vice versa
14:39:28 <ais523> oklopol: no
14:39:29 <AnMaster> ehird, that means you end up having to write asm instead of C
14:39:34 <AnMaster> that is like, even worse
14:39:37 <oklopol> ais523: oh. you could have, maybe.
14:39:45 <ais523> AnMaster: meh, just write C that's the same as the Scheme, and compile it into asm
14:39:52 <AnMaster> <ais523> when I turn it downwards, it sometimes scrolls upwards, and vice versa <-- that happened to be once
14:39:55 <ais523> or, fwiw, write INTERCAL that's the same as the Scheme, and compile /that/ into asm
14:40:04 <ehird> IRC client extension idea: detects when you make a joke and ignores AnMaster for 5 minutes so you don't have to hear it flying over his head.
14:40:09 <AnMaster> ais523, what worked was taking the several old mouse apart, and cleaning it
14:40:16 <ehird> Wouldn't that be great?
14:40:20 <ais523> this one seems to be impossible to take apart
14:40:32 <ais523> I agree it probably needs cleaning, but there's no obvious method for it
14:40:40 <AnMaster> ais523, look under any stickers or such
14:41:06 <ais523> there's one screw on the bottom of the mouse
14:41:24 <ais523> but it has a big feel of "THIS IS AN OPTICAL MOUSE SO YOU DON'T NEED TO CLEAN IT SO WE AREN'T EVEN GOING TO LET YOU CLEAN IT, OK?"
14:41:50 <AnMaster> ais523, if it has some kind of "pads" in the corners the screws are probably hidden under them
14:41:56 <AnMaster> note that they can be hard to reattach
14:42:31 * ehird has a mouse that's like an optical mouse, except it doesn't suck and works on just about every surface. Also, no light on the bottom.
14:42:40 <ais523> the corner pads fell off on my mouse before this one, and there wasn't anything underneath them
14:42:40 <AnMaster> ais523, MS dumbm^Wintellimouse?
14:42:40 <ehird> (The comedy option you're about to pick isn't correct.)
14:42:46 <ais523> AnMaster: no, this one's by Toshiba
14:42:50 <AnMaster> hm ok
14:43:05 <ais523> I have an intellitrackball at home, I think
14:43:11 <AnMaster> ais523, on ms mice they tend to be hidden under those corner pads
14:43:16 <ais523> we got it for the desktop computer when mice kept falling off the table
14:43:22 <ais523> but that one is cleanable, and I have to clean it lots
14:43:37 <AnMaster> oh?
14:43:45 <AnMaster> well I want a simple to clean mouse
14:43:49 <AnMaster> preferably washable
14:44:07 <AnMaster> same for keyboard
14:44:25 <ais523> it's pretty hard to get decent mice nowadays
14:44:36 <ais523> the retailer I bought this one from has since gone bankrupt
14:44:38 <AnMaster> ais523, well yes, and hard to get large enough ones
14:44:54 <ais523> that's not so much of a problem for me, I'm OK with small mice
14:45:03 <AnMaster> ms mice actually tend to be the only ones that work for me when it comes to size
14:45:08 <AnMaster> and even then only barely
14:45:31 <ehird> things are too big for me.
14:45:45 <ehird> i don't use certain features of programs because hte keyboard shortcuts are too hard for me to hit.
14:45:47 <AnMaster> bbl food
14:45:47 <ehird> because i have tiny hands.
14:45:54 <oklopol> ehird: so you mean it's *not* a bit clown nose?
14:46:07 <ehird> also, it's hard to hold a mouse correctly when it's bigger than your hand
14:46:12 <ais523> ehird: get a smaller keyboard?
14:46:14 <ehird> oklopol: haha
14:46:17 <ehird> ais523: this one _is_ small
14:46:39 <oklopol> oh dear. that joke was so oerjan.
14:46:50 <ais523> ehird: you can always get a smaller one
14:46:53 <oklopol> i seriously think i'm slowly oerjanizing.
14:46:58 <ais523> there must be some way to use an Eee PC as a keyboard, for instance
14:47:04 <ehird> ais523: unlikely, in this case
14:47:13 <ehird> and no way am I paying that much for a keyboard
14:47:14 <ehird> also
14:47:19 <ehird> the eee pc keyboard isn't much smaller than this i think
14:48:19 <ehird> can't find any measurements of this kb on the internetwebs unfortunately
14:49:36 <ais523> ehird: you can measure it with a ruler easily enough
14:49:42 <ais523> if it's physically there in front of you
14:49:46 <ais523> and if it isn't, how are you typing?
14:49:48 <ehird> well, yeah, but that's _cheating_
14:51:10 * ehird compiles an in-head list of things R5RS Scheme is missing to be able to write programs in
14:51:18 <ehird> (it's surprisingly short, 5-6 or so elements)
14:51:47 <ais523> could you add them to it easily?
14:52:31 <ehird> Quite easily. Some are easier than others.
14:52:42 <ehird> I don't think any of them break backwards compatibility, either.
14:53:05 <ehird> (i.e., they don't change the semantics of any R5RS-correct programs, just define some R5RS-incorrect programs to be extended-R5RS-correct)
14:53:43 <ehird> ais523: i'm going to write a Scheme implementation you see
14:53:50 <ais523> in what?
14:53:55 <ehird> to start with, C
14:54:01 <ais523> Scheme's good for writing Scheme impls, but you have a chicken-and-egg problem there
14:54:03 <ehird> then, for the next version, Scheme
14:54:07 <ehird> ais523: what I
14:54:12 <ehird> 'm going to do is:
14:54:15 <ehird> first version - interpreter
14:54:23 <ehird> second version - compiler & JIT
14:54:31 <ehird> one of my main goals for both is to be stinking fast
14:54:39 <ehird> the first version I'm aiming for something like 5x slower than c
14:54:47 <ehird> second version? hopefully, competitive with C
14:54:56 <ais523> 5x slower, in an /interpreter/?
14:54:58 <ais523> good luck
14:55:03 <ehird> ais523: ok, that was an exaggeration :-)
14:55:12 <ehird> i meant like 10x, I was just being hopeful
14:55:22 <ehird> i'm pretty sure 10x would be possible.
14:55:53 <ehird> ais523: but indeed, chicken and the egg for version 2
14:56:02 <ehird> one solution is to keep maintaining version 1 alongside it
14:56:05 <ehird> so you can run version 2
14:56:13 <ehird> but that kind of defeats the point of rewriting it in scheme
14:56:43 <ehird> i don't like ghc's solution of "compile with the previous version, then just hold on tight to that binary"
14:56:46 <ehird> it's fragile
14:56:47 -!- ais523 has quit (Client Quit).
14:56:55 <ehird> bye.
14:56:57 -!- ais523 has joined.
14:56:59 <ehird> wb.
14:57:03 <AnMaster> ehird, hm when version 2 can bootstrap itself...
14:57:04 <ehird> what did you miss?
14:57:10 <ehird> AnMaster: how?
14:57:16 <ehird> You need to run it initially.
14:57:22 <ais523> ehird: how should I know what I missed?
14:57:26 <ais523> <ehird> one solution is to keep maintaining version 1 alongside it
14:57:30 <AnMaster> ehird, you said compiler/jit?
14:57:30 <ais523> is the last thing I didn't miss
14:57:34 <ehird> 14:56 <ehird> so you can run version 2
14:57:34 <ehird> 14:56 <ehird> but that kind of defeats the point of rewriting it in scheme
14:57:35 <ehird> 14:56 <ehird> i don't like ghc's solution of "compile with the previous version, then just hold on tight to that binary"
14:57:38 <ehird> 14:56 <ehird> it's fragile
14:57:40 <ehird> AnMaster: yes, written in Scheme.
14:57:40 <AnMaster> ehird, true
14:57:50 <ehird> and it will likely use its own extensions.
14:57:53 <ehird> so you need it to compile it.
14:57:55 <ais523> ehird: it isn't fragile if you hang on to past binaries
14:58:01 <ehird> yeah, it is
14:58:04 <ehird> you shouldn't rely on a binary like that
14:58:07 <ehird> it's too closed up
14:58:13 <ais523> ehird: CLC-INTERCAL works like that
14:58:14 <AnMaster> ehird, so well what about "statically compile if the code uses this subset" or something
14:58:21 <ehird> ais523: it's CLC-INTERCAL.
14:58:22 <AnMaster> instead of jit
14:58:24 <ais523> and besides, it isn't closed up, you have the source and can regenerate it from the binary
14:58:31 <ehird> AnMaster: sorry, I can only answer coherent questions
14:58:46 <AnMaster> ehird, fair point
14:59:01 <ehird> if you rephrase that coherently I'll answer :p
14:59:06 <AnMaster> ehird, basically: will it jit or be able to compile stand alone binaries?
14:59:10 <ehird> both
14:59:17 <AnMaster> right
14:59:32 <AnMaster> ehird, what about compiling to C as a different backend?
14:59:42 <ehird> chicken and the egg
14:59:42 <AnMaster> that would solve the issue
14:59:45 <ehird> how do you run it to compile it to C?
15:00:04 <AnMaster> ehird, well you boot strap it, in the future you can use the C source to compile it
15:00:07 <ais523> AnMaster: that is the ghc solution for porting
15:00:22 <ais523> but the resulting C program is more or less illegible, despite being portable
15:00:35 <ehird> AnMaster: I dislike that solution
15:00:38 <AnMaster> ais523, interesting, but wouldn't you need more for porting ghc, like adding asm output backend
15:00:44 <ehird> because you don't have a way to get it going just from itself
15:00:49 <ehird> you need to hang on to the one compilation
15:00:53 <ais523> ghc compiles via C--, IIRC
15:01:04 <ais523> so yes, you'd need a new C-- to asm backend
15:01:08 <AnMaster> ehird, wasn't the original lisp hand compiled?
15:01:08 <ehird> so
15:01:17 <ehird> AnMaster: Yes. The original lisp was also trivially useless.
15:01:44 <AnMaster> ehird, so maintain an interpreter that is portable
15:01:46 <AnMaster> like gcc does
15:01:49 <AnMaster> multiple stages
15:01:56 <ehird> AnMaster:
15:01:57 <ehird> 14:56 <ehird> one solution is to keep maintaining version 1 alongside it
15:01:58 <ehird> 14:56 <ehird> so you can run version 2
15:02:00 <ehird> 14:56 <ehird> but that kind of defeats the point of rewriting it in scheme
15:02:06 <ehird> I love it when I can just copy and paste past messages to answer people.
15:02:16 <ais523> actually, compiling gcc on a really old compiler needs a multi-stage bootstrap nowadays
15:02:18 <AnMaster> ehird, well not exactly. Since version 1 could be written in portable scheme?
15:02:20 <ais523> via older versions of gcc
15:02:35 <ais523> AnMaster: now ehird will tell you there's no such thing as portable scheme
15:02:36 <AnMaster> ais523, I'm pretty sure you can use a non-gcc for stage1?
15:02:43 <ehird> AnMaster: no, it couldn't, because that's like raping myself.
15:02:43 -!- kerlobot has quit (Read error: 104 (Connection reset by peer)).
15:02:44 <ais523> AnMaster: you can, but only if it's relatively modern
15:03:04 <AnMaster> ais523, well C89 is ok to expect of course
15:03:07 -!- kerlobot has joined.
15:03:08 <ais523> for instance, there are no compilers for DOS that can bootstrap DJGPP
15:03:18 <AnMaster> ais523, you could cross compile it
15:03:21 <kerlo> #what
15:03:22 <ais523> the only way to get a workign DJGPP impl starting from something else is to cross-compile
15:03:22 <kerlobot> input
15:04:32 <AnMaster> ais523, shouldn't a standard following C89 compiler be enough for gcc stage1?
15:04:44 <ais523> I don't think so
15:04:45 <AnMaster> well yes you need make, sh and so on
15:04:50 <ais523> for instance, I'm pretty sure it also needs a 32-bit int
15:05:02 <ais523> which is not a requirement of a C89 compiler
15:05:08 <AnMaster> interesting
15:08:39 <kerlo> #eval ((l (x y) (f a y x)) (1 2 3) (4 5 6))
15:08:39 <kerlobot> (1 2 3 4 5 6)
15:08:47 <ais523> #help
15:08:54 <ais523> kerlo: what does your bot do?
15:09:03 <kerlo> It evaluates this Lisp-like language.
15:09:23 <kerlo> The most important command is #eval, obviously.
15:09:28 <ais523> lisp with different primitives
15:09:30 <ais523> ?
15:09:34 <kerlo> I guess.
15:09:38 <AnMaster> kerlo, specs for this lisp-like language?
15:09:51 -!- Mony has quit ("Quit").
15:10:06 <kerlo> Let me pastebin the source code and also demonstrate a bit.
15:10:34 <AnMaster> since when is specs == source code
15:10:37 <kerlo> http://pastebin.ca/1311618
15:10:41 <kerlo> Since forever!
15:11:04 <AnMaster> brb phone
15:11:35 <kerlo> The primitives are l (lambda), f (foldr), e (equality testing), and a (cons or apply); the familiar s, k and i are also implemented, but are not primitives.
15:11:43 <kerlo> #eval ((s i) i)
15:11:43 <kerlobot> [l (z) ((i z) (i z))]
15:12:14 <kerlo> #eval ((l (x y) (blah y x)) (2 3))
15:12:15 <kerlobot> ([l (x y) (blah y x)] (2 3))
15:12:29 * kerlo blinks
15:12:46 <kerlo> #eval ((l (x y) (blah y x)) 2 3)
15:12:46 <kerlobot> (blah 3 2)
15:12:59 <ehird> #eval *Y&DSY*&%&5ˆ‹̄›†¢ˆ¢§ˆ¯ßˆ•þ‡̂†̄ ̑›†‡·°_‚·̀
15:13:00 <kerlobot> Syntax error
15:13:04 <ehird> BREAK DAMN YOU
15:13:07 <kerlo> #eval (f raa ree (1 2 3))
15:13:08 <kerlobot> (raa 1 (raa 2 (raa 3 ree)))
15:13:14 <ehird> <AnMaster> since when is specs == source code
15:13:23 <ehird> Since nobody cares about your need of specs to survive.
15:13:35 <kerlo> #eval (e 1 2 yes no)
15:13:36 <ehird> And since we people started using expressive languages.
15:13:36 <kerlobot> no
15:13:39 <kerlo> #eval (e 1 1 yes no)
15:13:39 <kerlobot> yes
15:13:53 <kerlo> #eval (a 1 (2 3 4))
15:13:53 <kerlobot> (1 2 3 4)
15:14:00 <kerlo> And that's it.
15:14:19 <kerlo> Well, there are also the #temp, #reset, and #what commands.
15:16:47 <ehird> Dear DYNAMIC-WIND,
15:16:51 <ehird> Please remove yourself from R5RS.
15:16:52 <ehird> Love,
15:16:53 <ehird> Elliott.
15:17:27 <ais523> #eval (((s i) i) ((s i) i))
15:17:37 <ehird> ais523: it doesn't guard that.
15:17:39 <ais523> ah, ok
15:17:40 <ehird> now kerlo will have to restart it
15:17:48 <ehird> #eval INFINITE LOOPED
15:17:57 <ais523> shouldn't be too hard to put an anti-infiniloop protection on...
15:17:57 -!- kerlobot has quit (Read error: 104 (Connection reset by peer)).
15:18:21 <kerlo> ais523: not at all. I'll send you the full source code so that you can do that. :-P
15:18:25 -!- kerlobot has joined.
15:18:43 <ehird> kerlo: just;
15:18:50 <ehird> have an extra argument to the reduce-stepper
15:18:57 <ehird> put it at 1000 initially, and decrement it every time you recurse
15:19:02 <ehird> when it gets to 0, return a special atom like
15:19:05 <kerlo> Oh, that does sound easy.
15:19:10 <ehird> !looped!
15:19:36 <AnMaster> what about output length?
15:19:44 <ehird> they're symbols.
15:19:50 <ehird> you can't concatenate them.
15:19:58 <ehird> it can evaluate to a list, yes.
15:19:58 <AnMaster> ehird, I mean, could you cause excess flood
15:20:05 <ehird> since it outputs on one line, no,.
15:20:09 <AnMaster> hm ok
15:20:30 <AnMaster> you could still cause filled buffer I believe before it is split in lines
15:20:33 <kerlo> #eval (f (lambda (x y) (f a (y) x)) () (one two three))
15:20:33 <kerlobot> ((lambda (x y) (f a (y) x)) one ((lambda (x y) (f a (y) x)) two ((lambda (x y) (f a (y) x)) three ())))
15:20:36 <AnMaster> not sure about that
15:20:39 <ehird> it isn't split into lines
15:20:42 <ehird> also, nobody cares
15:20:43 <ais523> #eval ((l (x) (f a x x)) (y))
15:20:43 <kerlobot> (y y)
15:21:04 <AnMaster> ehird, yes but if you send 1 MB in one line the server is going to quit you anyway I think
15:21:10 <AnMaster> at least some ircds do that
15:21:12 <ehird> nobody caresnobody caresnobody caresnobody caresnobody caresnobody caresnobody caresnobody caresnobody caresnobody caresnobody caresnobody caresnobody caresnobody cares
15:21:39 <ais523> #eval ((l (y z) (y (y (y (y (y z))))) (l (x) (f a x x)) (y))
15:21:39 <kerlobot> Syntax error
15:21:42 <ehird> #eval (l (f) ((l (x) (f (x x))) (l (x) (f (x x)))))
15:21:42 <kerlobot> [l (f) ((l (x) (f (x x))) (l (x) (f (x x))))]
15:21:48 <ehird> ^ y
15:21:53 <kerlo> #eval (f (l (x y) (f a (y) x)) () (one two three))
15:21:53 <kerlobot> (f a ((f a ((f a (()) three)) two)) one)
15:21:56 <ais523> #eval ((l (y z) (y (y (y (y (y z)))))) (l (x) (f a x x)) (y))
15:21:57 <kerlobot> ([l (x) (f a x x)] ([l (x) (f a x x)] (f a [l (x) (f a x x)] [l (x) (f a x x)]) [l (x) (f a x x)] ([l (x) (f a x x)]) f a [l (x) (f a x x)] [l (x) (f a x x)]) [l (x) (f a x x)] ([l (x) (f a x x)] ([l (x) (f a x x)]) f a [l (x) (f a x x)] [l (x) (f a x x)]) [l (x) (f a x x)] (f a [l (x) (f a x x)] [l (x) (f a x x)]) [l (x) (f a x x)] ([l (x) (f a x x)]) f a [l (x) (f a x x)] [l (x) (f a x x)])
15:22:14 <ehird> ais523: oi, use my y
15:22:21 -!- Judofyr has joined.
15:22:36 <AnMaster> #eval ((l (y z) (y (y (y (y (y z)))))) (l (x) (f a x x)) (l (f) ((l (x) (f (x x))) (l (x) (f (x x))))))
15:22:36 <kerlobot> ([l (x) (f a x x)] ([l (x) (f a x x)] (l (f) a ((l (x) (f (x x))) (l (x) (f (x x)))) [l (f) ((l (x) (f (x x))) (l (x) (f (x x))))]) [l (x) (f a x x)] [l (f) ((l (x) (f (x x))) (l (x) (f (x x))))] l (f) a ((l (x) (f (x x))) (l (x) (f (x x)))) [l (f) ((l (x) (f (x x))) (l (x) (f (x x))))]) [l (x) (f a x x)] ([l (x) (f a x x)] [l (f) ((l (x) (f (x x))) (l (x) (f (x x))))] l (f) a ((l (x) (f (x x))) (l (x) (f (x x)))) [l (f) ((l (x)
15:22:39 <AnMaster> hm
15:22:42 <ais523> #eval ((l (y z) (y (y (y (y (y z)))))) (l (x) (f a x x)) (q))
15:22:43 <kerlobot> ([l (x) (f a x x)] ([l (x) (f a x x)] (q q) [l (x) (f a x x)] (q) q q) [l (x) (f a x x)] ([l (x) (f a x x)] (q) q q) [l (x) (f a x x)] (q q) [l (x) (f a x x)] (q) q q)
15:22:50 <ais523> ok, that seems to be a bug
15:22:53 <ehird> #eval (l (f) ((l (x) (f (x x))) (l (x) (f (x x)))))
15:22:54 <kerlobot> [l (f) ((l (x) (f (x x))) (l (x) (f (x x))))]
15:22:55 <ais523> lambdas don't seem to be scoping properly
15:22:57 <ehird> ais523333333333333333333333333333333333333333333
15:23:08 <ehird> ais523: it doesn't do renaming
15:23:09 <ehird> iirc
15:23:10 <kerlo> #eval (f (l (x y) (f a (x) y)) () (one two three))
15:23:10 <kerlobot> (three two one)
15:23:24 <ais523> then how can I do recursion properly?
15:23:30 <kerlo> ais523: congratulations, you've discovered the lambda bug.
15:23:43 -!- MigoMipo has joined.
15:23:51 <ais523> well, if it's a known bug, that's OK
15:23:51 <AnMaster> too many bloody (non-indented) parentheses for me to read
15:24:05 <ais523> makes it pretty hard to program in, though
15:24:08 <AnMaster> ais523, would this bug make the language sub-tc?
15:24:24 <ais523> no idea
15:24:24 <kerlo> Translate your program into SKI and see if it works.
15:24:28 <ais523> probably not, if SKI works
15:24:31 <AnMaster> ah
15:25:24 <kerlo> You might be able to circumvent it by using [l ...] instead of (l ...).
15:25:58 <ais523> what do the square brackets mean?
15:27:03 <ehird> The problem with writing a program in Scheme is that you have to write the implementation first.
15:27:19 <AnMaster> ehird, or use an existing implementation
15:27:24 <ehird> No.
15:27:28 <ehird> That does not work correctly.
15:27:33 <AnMaster> why not?
15:27:49 <kerlo> ais523: it's special syntax for a Lambda instead of a List evaluating to a Lambda.
15:28:03 <ehird> AnMaster: I'd tell you, but that would take hours because it's you
15:28:10 <ais523> AnMaster: ehird seems to think that various langs, like Scheme and Smalltalk, are inherently incapable of being portable
15:28:12 <kerlo> The insert function, which lambdas use for substitution, doesn't affect Lambdas as badly as Lists.
15:28:16 <ehird> ais523: no, I don't.
15:28:26 <AnMaster> ais523, well good thing there is R6RS then :D
15:28:28 * AnMaster ducks
15:29:13 <ehird> and FWIW I'm incredibly tired of the "AnMaster says something stupid, ais523 replies saying something untrue in the format 'oh ehird thinks this and that' in a condescending manner" pattern that happens near-daily in here
15:29:15 <AnMaster> ais523, and well, if you want non-basic stuff then R5RS is a pain.
15:30:55 <AnMaster> at least C has a large enough standard library to make it possible to write kind of portable apps that are still quite useful
15:31:21 -!- ais523 has quit (Read error: 104 (Connection reset by peer)).
15:31:26 -!- ais523 has joined.
15:31:43 <AnMaster> <AnMaster> ais523, and well, if you want non-basic stuff then R5RS is a pain.
15:32:00 <ais523> someone should invent a PSOX but for non-esoteric langs
15:32:06 <AnMaster> hah
15:32:07 <ehird> ais523: No. They shouldn't.
15:32:23 <ais523> ehird: I had to use the equivalent of C's system() a couple of times when programming in Prolog
15:32:37 <ais523> in order to do things that weren't included in its stdlib
15:32:42 <kerlo> What does system() do?
15:32:52 <AnMaster> man system
15:32:56 <ais523> kerlo: causes the implementation to behave in an implementation-defined manner
15:33:00 <ais523> but in practice, normally runs shell commands
15:33:11 <kerlo> Ah, right.
15:33:47 <ais523> system() probably has my favourite definition of any of C's standard library functions
15:33:58 <ais523> actulaly, system(NULL) is defined
15:34:08 <ais523> its return value tells you whether system() does anything or nt
15:34:09 <ais523> *not
15:34:15 <ais523> it doesn't tell you what, though, in the case where it doesn't
15:34:23 <ais523> *the case where it does
15:34:26 <ehird> s/n't$//
15:34:27 <ehird> heh
15:34:28 <AnMaster> s/n't$//
15:34:33 <ehird> fail
15:34:40 <AnMaster> ehird, argh you were half a second faster
15:34:47 <ehird> no, multiple seconds
15:34:51 <AnMaster> ehird, not here
15:34:52 <ais523> ehird: lag
15:34:57 <ehird> lag is for squares
15:35:04 <ais523> it was more like about 1 second from where I was watching
15:35:07 <ais523> from
15:35:34 <ehird> I wonder if bitshifting pointers is allowed by C89.
15:35:44 <ais523> you have to cast them to ints first
15:35:47 <AnMaster> ehird, is it in C99?
15:35:53 <ehird> AnMaster: I don't care.
15:35:56 <ais523> it works better in C99 because you have uintptr_t to cast them to
15:35:57 <AnMaster> ais523, that is undefined isn't it? casting them to int?
15:35:58 <ehird> ais523: Can you cast those ints back?
15:36:03 <ais523> AnMaster: no, implementation-defined
15:36:13 <ais523> ehird: yes in C99, no in C89 because there might not be an integer type big enough
15:36:19 <AnMaster> ais523, also uintptr_t makes no sense if function pointers have a different size
15:36:23 <ais523> well, in C99 there might not be one either, but it at least gives you a compile-time error
15:36:30 <ais523> AnMaster: yes, it's designed for data pointers
15:36:32 <ehird> ais523: I don't care about stupid languages where sizeof(int) != sizeof(void *).
15:36:40 <AnMaster> ehird, like amd64?
15:36:41 <ais523> ehird: umm...
15:36:45 <ehird> er
15:36:48 <ehird> s/languages/architechtures/
15:36:50 <ais523> lots of C implementations have sizeof(int) != sizeof(void *)
15:36:53 <ehird> AnMaster: amd64 is for squares.
15:36:58 <ehird> ais523: those implementations are for squares.
15:37:04 <ais523> unsigned long has the best chance of being the same size as void*
15:37:08 <AnMaster> ais523, indeed
15:37:13 <ais523> although it differs on DOS in certain memory models
15:37:32 * ais523 remembers the days of things like farmalloc
15:37:40 <AnMaster> farmalloc!?
15:37:45 <ehird> It allocates a farm.
15:37:54 <ehird> A farm is an old DOS concept.
15:38:01 <ehird> Basically, you can store N objects in there, where N is the size of the farm.
15:38:05 <ais523> AnMaster: it allocates memory in a different segment
15:38:07 <AnMaster> ehird, isn't it related to struct cow?
15:38:08 <ehird> It's efficient because they're grouped together in memory.
15:38:10 <ehird> ais523: Right, a farm.
15:38:16 <ais523> which means you need a special type of pointer, called a far pointer
15:38:25 <AnMaster> ais523, I see. I used mac back then
15:38:29 <AnMaster> :/
15:38:39 <ais523> there are lots of memory models
15:38:47 <ais523> basically, 4 of them allow for near/far pointers for data/code
15:39:01 <ais523> and a 5th has far pointers for data and for code, but also makes the data segment and stack segment differ
15:39:10 <AnMaster> ais523, so pointers come in several sizes? and some of these are relative current area?
15:39:15 <ais523> AnMaster: yes
15:39:22 <ais523> char __near * is 16 bits
15:39:25 <ais523> char __far * is 32 bits
15:39:37 <AnMaster> interesting
15:39:42 <ais523> and if you don't put the unportable qualifier on, it uses implementation defaults
15:39:56 <ais523> (which is legal C89, but with different sizeof() returns, in all 5 memory models)
15:40:11 <ais523> malloc gave you a data pointer
15:40:16 <AnMaster> wtf is the "unportable qualifier"?
15:40:21 <ais523> AnMaster: __near or __far
15:40:23 <AnMaster> ah
15:40:27 <ais523> are qualifiers, but obviously not portable ones
15:40:34 <AnMaster> ais523, I thought there was something like __unportable
15:40:36 <AnMaster> that you meant
15:40:40 <ais523> no, that would be ridiculous
15:40:44 <AnMaster> agreed
15:40:49 <oklopol> haha
15:40:53 <oklopol> that would be awesome
15:41:08 <oklopol> 17:40… WolfMn22: are you there
15:41:08 <oklopol> 17:40… WolfMn22: are you there
15:41:08 <oklopol> 17:40… WolfMn22: young beautiful woman
15:41:14 * oklopol has a fan
15:41:15 <AnMaster> there should be __portable too of course
15:41:18 <ais523> IIRC, most DOS compilers worked without the double-underscore, except in strict ANSI mode
15:41:21 <AnMaster> a GCC extension
15:41:30 <AnMaster> that forbids other GCC extensions :D
15:41:43 <AnMaster> (yes -ansi already does it...)
15:41:49 <ais523> AnMaster: well, nowadays in C99 we have _Pragma
15:42:03 <ais523> which is basically __attribute__ with a more official name
15:42:06 <AnMaster> ais523, well GCC actually have __extension__ iirc, for use in system headers
15:42:15 <ais523> IMO, gcc should accept it as a synonym for __attribute__
15:42:16 <ais523> and yes
15:42:17 <AnMaster> ais523, also doesn't C89 have plain #pragma?
15:42:20 <ais523> AnMaster: yes
15:42:30 <AnMaster> _Pragma is just for using in macros iirc
15:42:31 <ais523> but the gcc folks didn't like it because it couldn't be generated using macros
15:42:39 <AnMaster> indeed
15:43:31 <ais523> it's interesting to see what pragmas are used for, actually
15:43:47 <AnMaster> ais523, oh also x86_64 has several memory models, I don't know what the point is of that though
15:43:50 <ais523> my first C implementation was Borland C++, which I normally used in C++ mode because I didn't know better
15:44:01 <ais523> it had pragmas to turn compiler warnings on and off
15:44:09 <AnMaster> -mcmodel
15:44:14 <ais523> and to run things before the program started, like atexit in reverse
15:44:32 <AnMaster> <ais523> it had pragmas to turn compiler warnings on and off <-- very recent GCC has pragmas, and attributes, for that too
15:44:39 <AnMaster> and other compiler options
15:44:48 <ais523> oh, and a pragma to change its command-line options dynamically, which was fun
15:44:49 <AnMaster> like changing to -O3 for just a single function
15:44:54 <ais523> yes
15:45:09 <ais523> you should be able to change -Wl dynamically
15:45:16 <ais523> so you can have different linker options for different functions
15:45:18 <AnMaster> that would be hard
15:45:26 <ais523> then watch the poor linker try to figure out wtf you're doing
15:45:44 <AnMaster> um would require changing the object file format I think
15:45:54 <ais523> I suppose so
15:45:56 <ehird> "What's this? a JOKE?"
15:46:10 <ais523> ehird: #esoteric is where we make jokes possible
15:46:11 <AnMaster> -mcmodel=small, -mcmodel=kernel, -mcmodel=medium, -mcmodel=large
15:46:19 <ehird> ais523: and kill them seconds later..
15:46:22 <ais523> even if something is clearly absurd, it's still fun to figure out how to do it
15:46:23 <ehird> .
15:46:31 * AnMaster agrees with ais523
15:46:37 <ais523> don't let not explaining a joke get in the way of a great esoprogramming idea
15:47:37 <ehird> I'd like to think that [<AnMaster> um would require changing the object file format I think] was written with that intention,
15:47:41 <ais523> grr... this VHDL IDE has frozen
15:47:42 <ehird> but I find it incredibly difficult.
15:48:00 <ais523> ehird: well, I was thinking about it as an actual serious idea
15:48:00 <AnMaster> ehird, I was thinking about how to implement it yes
15:48:13 <ais523> not really in terms of implementation, but about what could be done with such a feature if it existed
15:48:15 <AnMaster> not all linker options could be changed that way
15:48:23 <AnMaster> but some yes
15:48:24 <ais523> in gcc-bf, for instance, you could run-length-encode certain functions
15:48:30 <ais523> or cause only certain functions to show a progress bar
15:48:38 <ais523> (more useful would be adding debug info only to certain functions)
15:48:55 <AnMaster> ais523, there are already some __attribute__s that affect linking, like the visibility one
15:49:08 <ais523> yes, so it isn't utterly implausible
15:49:30 <AnMaster> --emit-relocs sounds like it could be done per-func too
15:49:32 * ais523 gets annoyed at DRM and licence managers
15:50:01 <ehird> you've never been annoyed at DRM before?
15:50:05 <ais523> back on my laptop, I just use ghdl, it doesn't need to contact a licence server to verify I'm allowed to use it
15:50:11 <ais523> ehird: rarely, I don't normally use DRMed prorgams
15:50:16 <AnMaster> ais523, ghdl?
15:50:20 <ehird> drm is retarded, yep
15:50:28 <ais523> AnMaster: a gcc-based VHDL simulator
15:50:36 <ais523> it compiles VHDL into executables, which is crazy enough in the first place
15:50:43 <AnMaster> haha
15:50:57 <ais523> and the executables can be run as executables, but they have a huge number of debug options and switches
15:51:00 <ais523> which is what you normally end up using
15:51:04 <AnMaster> also what is wrong with the Direct Rendering Manager?
15:51:18 <ais523> possibly VHDL is the only lang more often run under a debugger than not
15:52:01 <AnMaster> I mean, DRM allows open source opengl drivers on linux
15:52:07 <AnMaster> and possibly other *nix
15:52:10 <ais523> AnMaster: I think you're taking a joke too far now
15:52:11 <AnMaster> (not sure about that)
15:52:21 <ais523> especially when it wasn't that funny in the first place
15:52:47 <AnMaster> ais523, I believe the DRM in the meaning I used existed before the copy protection crap
15:52:58 <ehird> what ais523 said
15:52:59 <ais523> possibly
15:53:07 <ais523> but TLAs are oversubscribed nowadays
15:53:09 <AnMaster> why not just call it copy protection, that is the original name
15:53:16 <ais523> and normally which one is meant is obvious from context
15:53:17 <ehird> because people call it drm
15:53:25 <ehird> language changes, it's only useful if we use the same one everyone else does
15:53:26 <ais523> AnMaster: also, DRM goes further than copy prevention mechanisms
15:53:29 <ehird> crazy, I kno.
15:53:32 <ehird> also, what ais523 said. again.
15:53:39 <AnMaster> ais523, well I have no personal experience of it
15:53:44 <AnMaster> so: possible
15:53:48 <ais523> DRMd stuff can normally be copied just fine, it's just that the resulting copies don't run
15:53:52 <ehird> 15:53 <stoned> are there good implementations of .NET for python? does it require mono?
15:53:56 <ehird> i implement .NET in python for breakfast
15:54:05 <AnMaster> ais523, interesting.
15:54:07 <ais523> but .NET is a bytecode and API, not a language
15:54:22 <ehird> ais523: congratulationsyougotthejoke.com
15:54:25 <ehird> (Someone register that)
15:54:37 <AnMaster> ais523, also there is only one copy protection that actually works. Make it all in hardware. Software can *always* be copied
15:54:45 <ais523> arguably, he might just want the API
15:54:46 <AnMaster> hardware is harder
15:54:56 <ehird> if you think hardware makes copy protection work you're deluded
15:54:56 <ais523> AnMaster: hardware can often be copied too
15:54:58 <ehird> ais523: yes, that's the idea
15:55:09 <AnMaster> ais523, yes but you need like millions to do it, you said so yourself
15:55:19 <ehird> fail
15:55:20 <ehird> digitally, if it can be consumed, it can be cloned instead
15:55:22 <ais523> AnMaster: to manufacture it, yes
15:55:28 <AnMaster> ais523, yes exactlu
15:55:30 <AnMaster> exactly*
15:55:36 <ais523> on the other hand, working out the internals and running on a simulator is a lot cheaper
15:55:38 <ais523> and often good enough
15:55:47 <kerlo> #quit
15:55:47 -!- kerlobot has quit ("Exiting").
15:55:54 -!- kerlobot has joined.
15:56:01 <ais523> kerlo: using # as a bot prefix is really confusing
15:56:06 <kerlo> True.
15:56:09 <ais523> all your kerlobot commands come out in blue and hyperlinked
15:56:10 <AnMaster> ais523, well depends on what thing you want to simulate, I mean you can simulate a SNES easily enough. But a Wii? Probably not on modern computers
15:56:12 <ehird> #esoteric
15:56:26 <ehird> umm, simulating a Wii wouldn't exactly be hard...
15:56:27 <AnMaster> you would probably end up with an expensive cluster or such to do it
15:56:28 <ehird> It's not a supercomputer...
15:56:44 <ehird> It's less powerful than home computers.
15:56:45 <ais523> ehird: you'd still have to do cross-processor virtualisation
15:56:47 <AnMaster> ehird, ok what about a Sony Playstation thingy, those used for MD5
15:56:50 <ais523> what sort of processor does the Wii have?
15:56:55 <ehird> ais523: PPC
15:57:05 <AnMaster> ehird, I believe it would be kind of slow to simulate that on most desktops
15:57:11 <ehird> http://en.wikipedia.org/wiki/Broadway_(microprocessor)
15:57:20 <ehird> AnMaster: that's just a gpu.
15:57:23 <ehird> computers can have gpus.
15:57:23 -!- Judofyr_ has joined.
15:58:04 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
15:58:39 -!- Corun has joined.
15:58:57 <ehird> Whoa, it's 4
15:59:06 <AnMaster> what is?
15:59:10 <ais523> the time in the UK
15:59:11 <ehird> The time.
15:59:15 <ais523> not quite, actually
15:59:17 <ehird> ais523: the UTC time, too.
15:59:19 <ais523> still 3:59 by my clock
15:59:23 <ehird> Yes, mine too.
15:59:28 <ehird> Well, 15:59.
15:59:31 <AnMaster> 16:59 here so 15:59 there
16:00:11 <kerlo> And now it is 16:00 according to normish.org.
16:00:19 <ais523> yes
16:00:32 <ais523> according to my NTP-synchronized clock, too
16:00:57 <AnMaster> + a few seconds when you said it kerlo
16:01:03 <AnMaster> 11 seconds late then in fact
16:01:08 <kerlo> This little clock doesn't display seconds.
16:01:09 <ais523> hmm... may as well have a look at Normish while I'm waiting for this stupid IDE to figure out what it's doing
16:01:49 <AnMaster> ais523, what IDE?
16:01:54 <AnMaster> that expensive one?
16:02:11 -!- Corun has quit (Client Quit).
16:02:30 -!- Corun has joined.
16:03:26 <AnMaster> btw, what is the difference between PPC and Cell?
16:03:33 <AnMaster> I haven't really managed to understand that
16:06:35 <kerlo> Creampuff!
16:06:36 -!- kerlobot has quit (Read error: 54 (Connection reset by peer)).
16:07:34 -!- kerlobot has joined.
16:07:40 <kerlo> %eval t
16:07:40 <kerlobot> (Just (-1000))
16:07:55 <kerlo> %eval (((s i) i) ((s i) i))
16:08:02 <kerlobot> ((loop i) (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i (i
16:08:14 <ehird> %eval (2 + 2)
16:08:14 <kerlobot> (2 + 2)
16:08:18 <kerlo> Wow.
16:08:22 <ehird> Damn, I was hoping for haskelleramation.
16:08:26 <ehird> kerlobot: epic fail thar
16:09:05 <AnMaster> haskelleramation?
16:09:16 <AnMaster> yes I *did* try google
16:09:23 <AnMaster> and no I can't figure out what it means
16:09:41 <AnMaster> apart from being related to haskell
16:09:45 -!- ais523_ has joined.
16:09:54 <kerlo> Being interpreted as Haskell, or something.
16:09:54 <AnMaster> hello ais523_
16:10:00 <AnMaster> kerlo, aha
16:10:02 -!- ais523 has quit (Nick collision from services.).
16:10:10 -!- ais523_ has changed nick to ais523.
16:10:21 <AnMaster> ais523, this IDE needs to run at uni? you can't run it at home?
16:10:25 <ais523> yes
16:10:34 <ais523> expensive closed-source stuff
16:10:35 <AnMaster> hm, oh that is the DRM stuff?
16:10:49 <ais523> I'm not sure
16:10:59 <ais523> it seems to go wrong only when opening a project, not when loading hte IDE itself
16:11:18 <AnMaster> ais523, is it on your laptop or only on school computers?
16:11:29 <ehird> Okay, let's see, boolean pair symbol number char string vector port procedure continuation table.
16:11:39 <ais523> it's only on the university computers
16:11:39 <AnMaster> or s/school/uni/
16:11:44 <ehird> What else, I wonder?
16:11:44 <ais523> I'm typing this on my laptop
16:11:46 <AnMaster> well uni is a type of school
16:11:48 <ais523> which is next to the Uni computer atm
16:11:49 <AnMaster> ais523, aha
16:11:53 <ehird> That's it I think.
16:11:55 <ais523> keyboard, keyboard, mouse, mouse
16:12:11 <AnMaster> ehird, data types for your scheme?
16:12:18 <ehird> No. Fluffy bunnies.
16:13:34 <AnMaster> ehird, well if you are doing this insanely speed optimised you might want to optimise lists in some special way, to make them into arrays in some contexts, might not need a different data type
16:13:55 <ehird> Suggesting such a thing shows a severe lack of understanding of the general usage case of cons lists.
16:14:20 <AnMaster> ehird, well, true they are meant to be accessed from head to tail
16:14:34 <oklopol> ooooo
16:14:36 <ais523> you could have an array type as well as a cons list type
16:14:45 <ais523> you could even go all OCaml and have imperative types as well as functional types
16:14:48 <AnMaster> but sometimes real arrays are useful indeed
16:14:52 <ais523> which drives me mad, but is good for speed
16:14:53 <ehird> ais523: Vector.
16:15:00 <ehird> read R5RS.
16:15:09 <AnMaster> oh, I didn't know about that either...
16:15:17 * AnMaster looks
16:16:09 <ehird> I wonder how i should implement bignums.
16:16:17 <ehird> Maybe as an array of fixnums.
16:16:24 <ehird> In base MAX_FIXNUM.
16:16:45 <AnMaster> ehird, well I don't know what is fastest, but isn't gmp quite fast?
16:17:00 <ehird> I will not use gmp/
16:17:05 <ehird> s/\/$/./
16:17:16 <AnMaster> oh? what is wrong with it?
16:17:46 <kerlo> I now believe it impossible to get kerlobot to quit.
16:17:57 <AnMaster> #quit
16:18:00 <AnMaster> hm nope
16:18:18 <ais523> /kill kerlobot would work if I was a server op, but I'm not
16:18:33 <AnMaster> if I had a botnet, which I do not, a DDoS would work
16:18:45 <kerlo> And that is a dare.
16:18:45 <AnMaster> but that is rather crude
16:19:18 <AnMaster> hm
16:19:45 <ais523> we could physically go round to kerlo's computer and disconnect the network cable
16:19:52 <ais523> but that would be too expensive in plane fares, I think
16:20:02 <AnMaster> ais523, or we could fake an abuse@ to his isp?
16:20:10 <ais523> hmm... kerlo's in the same timezone as me, maybe not
16:20:26 <ais523> oh, wait
16:20:30 <AnMaster> ais523, the bot says comcast
16:20:30 <ais523> kerlo's bouncing off Normish
16:20:34 <AnMaster> which iirc is US?
16:20:35 <ais523> which runs at UTC
16:20:42 <ais523> no wonder ctcp time told me UTC
16:21:04 <AnMaster> GeoIP Country Edition: US, United States
16:21:05 <AnMaster> hm
16:21:49 <kerlo> I'm bouncing off Normish, but kerlobot is connected directly from here.
16:22:38 <AnMaster> ais523, another idea, which I admit would also be expensive: contact any local maffia, asks for the "special offer"
16:22:43 <AnMaster> mafia*
16:23:23 -!- Judofyr_ has quit (Remote closed the connection).
16:23:46 <ais523> ok, that one's insane
16:23:59 <ais523> not just expensive, you have to worry about repercussions on yourself too
16:24:04 <AnMaster> yes
16:24:15 <ehird> umm
16:24:17 <ais523> another option: bribe a Freenode staffer
16:24:24 <ais523> although we're into the realms of insanity here
16:24:25 <ehird> you know, killing kerlo doesnt kill kerlobot
16:24:26 <AnMaster> ais523, I believe social engineering on freenode staff would work better
16:24:26 <ehird> neccessarily
16:24:42 <AnMaster> ehird: <kerlo> I'm bouncing off Normish, but kerlobot is connected directly from here.
16:24:49 <ehird> And?
16:24:53 <ehird> Killing kerlo != killing his net.
16:25:01 <AnMaster> ehird, when isp doesn't get paid they will cut his connection
16:25:04 <AnMaster> yes it may take a few weeks
16:25:14 <ehird> I imagine his parents pay for the connection.
16:25:17 <ehird> As he's a teen.
16:25:26 <AnMaster> ah, didn't know that
16:25:46 <AnMaster> kerlo, anyway, does it handle connection timeout and such properly?
16:33:31 <ais523> hmm... it seems that this IDE is just very very slow today for some reason
16:33:39 <ais523> half an hour later, it shows signs of activity
16:33:49 <AnMaster> ais523, windows?
16:33:54 <ais523> yes
16:34:09 <ais523> it might be the domain timeout bug, I suppose, but I don't think so
16:34:13 <AnMaster> if yes, all the spyware installed are busy calling home, please show some consideration and wait for them to finish
16:34:21 <ais523> I doubt it's spyware
16:34:29 <ais523> mostly because these computers are reimaged every night
16:34:45 <AnMaster> idea: install a spyware on the master image
16:35:05 <ais523> there are legitimate reasons to knock and dislike Windows; please don't improve its reputation with baseless trolling that makes the legitimate complaints seem bad
16:35:21 <AnMaster> ais523, I was trying to joke
16:36:01 <ehird> protip: jokes are meant to be funny
16:36:21 <AnMaster> ehird, in that case I would ask oerjan, not you
16:37:31 -!- MigoMipo has quit (Read error: 60 (Operation timed out)).
16:37:40 <ehird> s9.c:27: error: ‘NULL’ undeclared here (not in a function)
16:37:42 <ehird> wat
16:37:51 <AnMaster> ehird, stdlib.h
16:38:06 <AnMaster> NULL isn't a keyword
16:38:06 <flexo> not stddef.h?
16:38:11 <ais523> stdlib IIRC
16:38:12 <AnMaster> flexo, oh maybe that too
16:38:20 <ais523> I don't think I've used stddef for years
16:38:26 <ehird> stdlib is included.
16:38:27 <ais523> (hmm... maybe it's included from stdlib, that would explain it)
16:38:31 <ehird> and it is not my program.
16:38:49 <AnMaster> ais523, lots of headers include it
16:39:59 <ais523> this is really annoying, this program's running massively slowly and I'm not even allowed to use a top-alike to see what's happening
16:40:13 <ehird> 'allowed'?
16:40:17 <ais523> ah yes, task manager is allowed here
16:40:21 <ais523> ehird: yep, locked-down system
16:41:48 <ehird> [[I've always hated the idea of a garbage collector. I understand why it's useful for most people, but I prefer being in control]]
16:41:59 <ais523> OK, this is insane
16:42:00 <ehird> I wonder if there's a study on the link between programmers and sadists.
16:42:04 <ais523> when I try to run the program, it waits for a whiel
16:42:07 <ehird> er, masochists
16:42:09 * ehird brainfart
16:42:17 <ehird> er, wait. both.
16:42:25 <ais523> then prints the message Process "Synthesize - Synpifly Pro" failed
16:42:30 <ais523> no error messages or warnings, but that
16:42:30 <Slereah> ehird : Do you like clothepins on your nipple
16:42:31 <Slereah> s
16:42:44 <ais523> no other output at all apart from that and a "Started" message
16:42:50 <ais523> IOW, this program is failing and won't tell me why
16:48:14 <ehird> Hm.
16:48:42 <ehird> I am becoming more and more convinced that the plain machine stack is the best way to handle function calls.
16:48:53 <ehird> It seems that copying the c stack isn't actually very hard
16:48:58 <ehird> and it is fast
16:49:45 <ehird> One issue with using the machine stack is, how do you return multiple values in C, like scheme requires? You can't
16:50:18 <ais523> it's entirely possible to return multiple values on the stack, just C doesn't provide a syntax for it
16:50:21 <ais523> people do that all the time in asm
16:50:35 <ehird> Right, but is it _possible_ to do it portably in C? No.
16:50:40 <ais523> yes: you can do the same thing by returning a struct that contains all the data you want to return
16:50:50 <ehird> DING! Wrong. That is not the "same thing".
16:50:56 <ais523> that ends up compiling to the same asm that returning multiple elements is
16:51:02 <ais523> or would be
16:51:15 <ais523> so that very is the same thing
16:51:24 <ais523> (unless you have a perverse ABI)
16:51:45 <flexo> 17:50 < ais523> it's entirely possible to return multiple values on the stack, just C doesn't provide a syntax for it
16:51:50 <flexo> as in.. returning a struct?
16:51:54 <ais523> well, yes
16:52:01 <ehird> returning a struct, in this case, is not an option
16:52:01 <ais523> returning a struct is technically speaking only returning one value
16:52:04 <ais523> but it comes to the same thing
16:52:22 <ais523> (returning a /pointer/ to a struct is different, returning the struct itself by-value isn't)
16:55:52 -!- BeholdMyGlory has quit (Excess Flood).
16:56:27 -!- BeholdMyGlory has joined.
17:00:39 -!- FireFly has joined.
17:01:57 <ehird> setjmp/longjmp are meant to be cheap, right?
17:03:04 <flexo> sure
17:03:17 <ehird> getcontext/setcontext presumably aren't :P
17:03:31 <flexo> depends on what you mean by cheap i suppose
17:03:38 <ehird> efficient
17:03:41 <flexo> ...
17:04:00 <flexo> they all work in O(1)
17:04:05 <flexo> that's efficient.
17:04:08 <ehird> no duh
17:05:17 <flexo> but setjmp/longjmp don't have to do context switching
17:05:21 <flexo> just stack unwinding
17:05:28 <ais523> ehird: setjmp/longjmp are relatively expensive, at least compared to goto
17:05:29 <flexo> so they are more cheap, yea
17:05:36 <ais523> there was an article on thedailywtf about them
17:05:41 <ais523> and lots of people went and did lots of benchmarking
17:05:53 <ehird> ais523: Craziness context: I'm considering writing my own :x
17:05:58 <ais523> and as for cheapness/expense, it depends on the processor
17:06:04 <ais523> most will have to save all the registers
17:06:16 <ais523> which is relatively cheap on an 8086 and expensive on something which has loads of registers
17:06:48 <AnMaster> ais523, wait, register starved is better?
17:06:55 <ais523> not normally
17:06:58 <AnMaster> true
17:06:59 <ais523> but it's faster at longjmps
17:07:20 <ais523> if you think about it, if you had no registers but the stack pointer a longjmp would just be assignment to the stack pointer
17:07:29 <oklopol> you guys think you're so tough at playing baseball.
17:07:31 <ais523> and the return at the end of longjmp would return to the setjmp not to where it had been called
17:07:40 <AnMaster> ais523, heh
17:07:48 <flexo> i've having serious trouble deciding for a couch
17:07:49 <flexo> i need help
17:07:50 <oklopol> well let me tell you something: a professional baseball player would beat the crap out of each and everyone of you.
17:07:51 <flexo> :(
17:07:57 <oklopol> probably even in scrabble
17:08:01 <ehird> ais523: well, yeah I'm pretty much going to do that since who cares about registers
17:08:01 <AnMaster> oklopol, um? I don't play baseball
17:08:02 <ehird> :D
17:08:08 <AnMaster> and i hate scrabble
17:08:15 <AnMaster> I fail at it all the time
17:08:38 <AnMaster> oklopol, I suck slightly less at chess, but I'm far from good at it
17:08:49 <oklopol> :D
17:08:51 <ehird> Whoosh.
17:08:56 <flexo> i think i kinda like BEDDINGE
17:09:05 <flexo> but it has no.. the... stuff.. at the sides
17:09:12 <AnMaster> eh
17:09:13 <oklopol> let me make sure i understood, you suck slightly at it, but you are far from good at it?
17:09:24 <AnMaster> flexo, an esolang?
17:09:27 <flexo> no
17:09:28 <flexo> a couch
17:09:30 <ehird> 17:07 <flexo> i've having serious trouble deciding for a couch
17:09:37 <AnMaster> beddinge? sounds like a 2D language
17:09:37 <ehird> BEDDINGE
17:09:38 <flexo> *i'm
17:09:39 <ais523> oklopol: AnMaster sucks slightly less at chess than at scrabble, but is far from good at both
17:09:40 <ehird> BEDDINGE BEDDINGE BEDDINGE BEDDINGE BEDDINGE BEDDINGE BEDDINGE BEDDINGE BEDDINGE BEDDINGE BEDDINGE BEDDINGE BEDDINGE
17:09:43 <ehird> sorry I like that word
17:09:46 <AnMaster> some sort of fungoid
17:09:51 <AnMaster> ehird, oh BADGER?
17:09:53 <ehird> http://www.ikea.com/us/en/catalog/products/S49839894
17:09:53 <flexo> http://www.ikea.com/de/de/catalog/products/S29830007
17:09:54 <flexo> ...
17:09:55 <ehird> Neddomge
17:09:57 <ehird> ...
17:09:58 <ehird> lol
17:10:10 <ehird> no arms :<
17:10:11 <oklopol> ais523: lol okay i failed :P
17:10:13 <flexo> exactly
17:10:21 <ehird> gotta have arms.
17:10:26 <flexo> yea, i think so too
17:10:27 <ehird> like, to shoot things with
17:10:33 <ehird> it's in the constitution don't you know
17:10:41 <AnMaster> ais523, indeed. How was it ambiguous?
17:10:44 <flexo> not my constitution
17:11:08 <ehird> nor mine :P
17:11:12 <AnMaster> oh right
17:11:17 <AnMaster> then it makes perfect sense that name
17:11:24 <AnMaster> once you read it in Swedish
17:11:33 <AnMaster> well not perfect sense, but much more sense that in English
17:11:35 <ehird> BED BINGE
17:11:39 <ais523> AnMaster: I don't think it was, I was explaining for oklopol
17:11:47 <AnMaster> ah right ais
17:12:05 <flexo> but the other sofa beds suck
17:12:16 <flexo> no arms either
17:12:16 <oklopol> i dropped a crucial word
17:12:44 <AnMaster> I want a desksofachairtablebed
17:12:46 <AnMaster> all in one
17:13:23 <AnMaster> before anyone asks: no, I can't imagine how it would look
17:13:25 <ais523> AnMaster: I don't think that's impossible
17:13:38 <ais523> you should be able to lie in bed and use the desktable at the same time, though
17:13:42 <flexo> yea, just some huge tank with some fluid in it
17:13:46 <ais523> likewise, use the desktable at the same time as the sofa
17:14:07 <flexo> like the navigators in dune
17:14:54 <flexo> *sigh*
17:16:08 <flexo> choosing a couch online sucks
17:16:09 <ehird> ais523: thought on bignums being array-of-ints-in-base-max-int?
17:16:21 <flexo> but running around in ikea sucks even more
17:16:24 <ais523> ehird: use an existing bignum library, it can almost certainly beat you by a lot
17:16:32 <ehird> ais523: no fun
17:16:39 <ais523> that seems like a plausible implementation, though
17:16:52 <ais523> and it's the one that asm uses, if you're mad enough to do bignums in asm
17:17:48 <ehird> really?
17:18:32 <ehird> heh, one thing I can't do is track how many segments there are, since that needs to be a bignum too :)
17:18:37 <ehird> so it'll have to be NULL-terminated
17:18:52 <ehird> ais523: what about sign bits, do you think?
17:18:53 <ehird> -A,B?
17:18:55 <ehird> -A,-B?
17:19:00 <ehird> NEGATIVE + {A,B}?
17:19:34 <AnMaster> ehird, in an actual implementation it would be limited by sizeof(void*)
17:19:48 <ehird> AnMaster: I think I'll make it a linked list
17:19:56 <ais523> ehird: 2's complemetn
17:19:58 <ais523> *complement
17:19:59 <AnMaster> ehird, sounds slow, a vector would be better
17:20:12 <ehird> ais523: that's for binray
17:20:14 <ehird> binary
17:20:53 <ais523> ehird: same trick works for any power-of-2 base
17:21:08 <ehird> is the max of an unsigned long always a power of 2?
17:21:09 -!- KingOfKarlsruhe has quit (Remote closed the connection).
17:21:11 <ehird> I guess so, in modern systems.
17:21:29 <ais523> it's a power of 2 minus 1 on all C systems, I think
17:22:12 <ehird> hmm
17:22:17 <ehird> MAX_ULONG, MAX_UNSIGNED_LONG aren't defined
17:22:19 <ehird> wonder what it is
17:22:23 <ais523> ULONG_MAX
17:22:25 <ais523> IIRC
17:22:27 <ehird> o, right
17:22:31 <ehird> probably should make it unsigned long long where that's supported
17:22:34 <ais523> AnMaster will know even if I get it wrong
17:22:44 <ehird> (2147483647L * 2UL + 1UL)
17:22:47 <ais523> what about gcc? it has a type longer than long long as an extension
17:22:49 <ehird> they couldn't just give a constant...
17:22:58 <ais523> ehird: it has to be done like that, I think
17:23:16 <ais523> due to handling buggy compilers which get confused by 'negative' numbers
17:23:20 <ehird> lol
17:23:33 <ehird> so, i'm working in base 4294967295 :D
17:23:39 <ehird> except
17:23:42 <ehird> wonder what unsigned long long max is
17:23:44 <ehird> ULONGLONG_MAX?
17:23:48 <ais523> ULL_MAX
17:23:53 <ais523> and you should be working in base 4294967296
17:23:55 <ehird> ULONG_LONG_MAX also
17:24:02 <ehird> also, er, yeah
17:24:03 <ais523> because 4294967295 is the maximum possible value
17:24:09 <ehird> not ULL_MAX
17:24:09 -!- kerlobot has quit (Read error: 104 (Connection reset by peer)).
17:24:13 <ehird> ULL_MAX is undefined
17:24:23 <ais523> ULLONG_MAX is actually plausible
17:24:24 -!- kerlobot has joined.
17:24:33 <kerlo> %eval (c W H A R R G A R B L)
17:24:34 <kerlobot> WHARRGARBL
17:24:38 <kerlo> Yay.
17:24:48 <ehird> ais523: ok, on this machine I'm working in base 18446744073709551614
17:24:54 <ehird> what's the gcc thing you mentioned?
17:24:59 <ais523> __uint128_t, IIRC
17:25:08 <ehird> ah. I won't bother touching it
17:25:21 <ais523> although if you don't have native 128-bit operators, it'll probably be slower
17:25:27 <ais523> fwiw, probably using unsigned longs is best
17:25:34 <ehird> why not unsigned long longs?
17:25:36 <ais523> for very big numbers
17:25:39 <ais523> ehird: because they'd have to be emulateed
17:25:46 <ehird> err, why?
17:25:53 <ehird> i'm on a 64 bit machine
17:26:13 <ais523> oh
17:26:20 <ais523> well unsigned long is 64 bits on a 64 bit machine
17:26:21 <ais523> or ought to be
17:26:34 <flexo> yea, ought to be.
17:26:36 <ehird> OS X compiles things as 32-bit by default, though.
17:26:38 <flexo> unfortunatly people suck
17:26:41 <ehird> For god knows what reason.
17:26:51 <flexo> actually
17:26:52 <ais523> ehird: then 64-bit operations will have to be emulated
17:26:58 <ais523> because they aren't available when compiling as 32 bit
17:27:00 <flexo> long should more be like 128 bit on a 64 bit machine
17:27:13 <flexo> int should be the native register size
17:27:20 <ehird> ais523: what constant is defined for 64-bit/32-bit again?
17:27:23 <ehird> i forgot..
17:27:24 <ehird> .
17:27:43 <ais523> I don't think there's a standard one
17:27:44 -!- kerlobot has quit (Read error: 131 (Connection reset by peer)).
17:27:59 <ais523> sizeof(unsigned long) is normally an easy way to check, though
17:28:00 -!- kerlobot has joined.
17:28:02 <ehird> flexo: int is 32-bit on gcc mostly even when you do -m64 though, isn't it?
17:28:06 <kerlo> %eval (h WHARRGARBL)
17:28:06 <kerlobot> (W HARRGARBL)
17:28:08 <ais523> and sizeof(int), likewise, tells you if you're on 16-bit or 32-bit
17:28:08 <flexo> ais523: doesn't work on win32 though
17:28:16 <flexo> ehird: yep
17:28:25 <kerlo> So, now you can cut symbols apart and put them together.
17:28:46 <flexo> ehird: but that's only because people suck
17:28:51 <ehird> ais523: why doesn't #error sizeof(...) work :-P
17:28:52 <flexo> and fail to write portable software
17:28:55 <ehird> it shoooooooooould
17:29:01 <ais523> ehird: because sizeof is compile-time, not preprocess-time
17:29:09 <ehird> >:::(
17:29:16 <ais523> you can mess about with limits.h, though, if you prefer
17:29:20 <ais523> or else use a static assertion
17:29:39 <flexo> i had some flaming with zhivago about that one
17:29:47 <ehird> huh ... sizeof(unsigned long) = sizeof(int) here
17:30:02 <ehird> well
17:30:11 <ehird> in 32 bit, sizeof(ul)=sizeof(int)=4
17:30:15 <flexo> sizeof(int) really should be the native register size.
17:30:15 <ehird> in 64 bit, sizeof(ul)=8; sizeof(int)=4
17:30:21 <ehird> wtfomobil
17:30:21 <ehird> e
17:30:28 <flexo> and long should preferrably larger, emulated by software if necessary
17:30:31 <ehird> i think what I can draw from this, is:
17:30:35 <ehird> use unsigned long :-P
17:30:36 <flexo> and "long long" is just silly
17:30:47 <ehird> we need a long^N specifier
17:30:53 <ehird> unsigned long^4 x;
17:30:54 <flexo> no we don't.
17:30:56 <ehird> :DDD
17:31:14 <ais523> ehird: algol actually had long long long long long int as a valid data type
17:31:16 <ais523> with any number of longs
17:31:23 <ehird> :D
17:31:30 <ais523> it had a constant, max lengths, which told you how many longs had an effect
17:31:33 <ais523> likewise, max shorths
17:31:47 <ais523> (identifiers could contain spaces in algol, which was a great way to cause confusion)
17:32:40 <ehird> [ehird:~/Code/bignum] % cc -m64 bignum.c; ./a.out
17:32:40 <ehird> 18446744073709551614
17:32:41 <ehird> [ehird:~/Code/bignum] % cc bignum.c; ./a.out
17:32:43 <ehird> 4294967294
17:32:46 <ehird> that 64-bit output is lollerific
17:32:48 <ehird> i mean
17:32:54 <ehird> how many numbers do you deal with bigger than that?
17:33:03 <ehird> typedef unsigned long bignum;
17:33:03 <ehird> :P
17:33:29 <ais523> ehird: my brother convinced me to teach him Perl, just so he could do really bignum calculations
17:33:32 <ais523> he's looking for big primes
17:33:34 <kerlo> short short short short short short int: if int is 32-bits wide and can hold any of 4294967296 values, this is half a bit wide and can hold any of sqrt(2) values.
17:33:42 <ais523> ofc, Perl isn't an ideal lang for doing that quickly, but it keeps him happy
17:33:44 <flexo> ehird: like addressing modern harddrives?
17:33:51 <ehird> ais523: lol, how old is he?
17:33:55 <ais523> younger than me
17:33:58 <ais523> I can't remember exactly how old
17:34:01 <ehird> flexo: except im using this in an implementation of Scheme :-P
17:34:09 <ehird> although theoretically you could do that
17:34:36 <flexo> hm.. i used a certain lisp-subset a lot when i was a kid
17:34:44 <flexo> anyone knows ADVSYS? :)
17:35:16 * ehird writes void bui_mod_succ(biguint n) , without knowing anything about how to actually implement stuff like this.
17:35:17 <ehird> Woohoo!
17:35:34 <ais523> ehird: how are you marking the length of the integer?
17:35:44 <ehird> ais523: {blah,blah,blah,NULL}
17:35:54 <ehird> dunno whether it'll be big endian or little endian
17:36:04 <ehird> I'm thinking little endian, so that it's easier to do things like succ
17:36:07 <ehird> without reading to the end
17:36:12 <ais523> ugh, that's a really bad way to do it
17:36:18 <ehird> is it :<
17:36:19 <ais523> IMO, it should be length-prefixed
17:36:23 <ais523> you don't want a special value
17:36:29 <ehird> umm, fail :D
17:36:30 <ais523> because then you can't use the entire range of your int, or whatever
17:36:34 <ehird> how can you do that length prefixed
17:36:38 <ehird> the length would have to be a bignum
17:36:40 <ais523> ehird: well, yes
17:36:44 <ais523> recursive bignums ftw
17:36:53 <ehird> i don't think that would work.
17:36:54 <ais523> but your method is much less efficient
17:37:18 <ehird> "that is inefficient, use this impossible method instead"
17:37:35 <ais523> ehird: you're going for speed, aren't you?
17:37:38 <ehird> ais523: not atm
17:37:41 <ehird> if I wanted efficient I'd use gmp
17:37:44 <ais523> my advice is to make length-prefixed possible
17:37:50 <ais523> I bet that's what gmp does
17:37:55 <ehird> i don't care
17:38:00 <ehird> it's simpler to implement this
17:38:04 <ehird> and it's more conceptually pure
17:38:17 <ais523> no, it isn't more pure, it's conceptually a lot dirtier
17:38:24 <ehird> i don't care :)
17:38:30 <ais523> there's nothing purer than going add/add-with-carry/add-with-carry all the way along a bignum
17:38:43 <ehird> i don't caaaaaaaaaaare :)
17:38:48 <ais523> (besides, you can just length-prefix it with a long long, the computer would run out of memory before it ran out of length prefixes)
17:39:05 <ais523> or, if you prefer, prefix with a pointer to the last element
17:39:14 <ais523> it's clearly in memory, therefore it can be pointed at
17:39:15 <ais523> problem solved
17:39:21 <ehird> i prefer to live in a world of infinite memory
17:39:34 <ais523> ehird: then you have infinite pointers
17:39:37 <ais523> problem still solve
17:39:40 <ais523> *solved
17:39:45 <ehird> meh, fine
17:40:08 <ehird> ais523: but then I have to use VLAs.
17:40:22 <ehird> v
17:40:23 <ehird> typedef struct {
17:40:23 <ehird> BLOCK_TYPE *last;
17:40:25 <ehird> BLOCK_TYPE data[];
17:40:27 <ehird> } *biguint;
17:40:45 <ais523> that's not a VLA
17:40:50 <ais523> that's the legalised struct hack
17:40:58 <ehird> oh, right
17:41:05 <ehird> ais523: that's c99 only isn't it
17:41:06 <ehird> :(
17:41:07 <ais523> and you can just put a 1 in the square brackets on C89, there's no known system on which the original struct hack doesn't work
17:41:12 <ehird> ah
17:41:16 <ais523> despite it being technically illegal
17:41:21 <ehird> I've mostly seen it as data[0]
17:41:27 <ais523> ehird: that's a gcc-ism
17:41:27 <ehird> to emphasise the hack
17:41:31 <ehird> ais523: is it? ok
17:41:39 -!- oerjan has joined.
17:41:56 <ehird> hmm
17:42:03 <ehird> wouldn't an infinite-pointer system have infinite unsigned longs too?
17:42:09 <ehird> and thus no need for bignums...
17:42:11 <ais523> probably
17:42:26 <ais523> incidentally, C fails at handling sizeof infinite data types
17:42:35 <ehird> ais523: my aversion of length counting's justification: http://jwz.livejournal.com/854482.html :P
17:42:37 <ais523> I'm really annoyed that the definition of C excludes bignums
17:42:48 <ais523> ehird: I don't like length counting for strings, normally
17:42:52 <ais523> for bignums, though, it works a lot better
17:42:52 <ehird> not for strings
17:42:54 <ehird> read the post
17:43:43 <flexo> c is a fucking macro assembler. no bigints there.
17:43:55 <ais523> ehird: classic
17:44:09 <ais523> that's just a flaw in their bignum implementation, though
17:44:13 <ehird> ais523: why?
17:44:18 <ais523> they didn't have a big enough length ehader
17:44:24 <ehird> define big enough
17:45:17 <flexo> The fifth season will commence on January 21, 2009 with a three-hour premiere consisting of a clip-show and two back-to-back new episodes.
17:45:20 <flexo> woohoo
17:45:26 <flexo> that's 3 days
17:45:45 -!- ais523 has quit (Read error: 104 (Connection reset by peer)).
17:45:46 <ehird> wut
17:45:49 <flexo> lost!
17:45:52 <ehird> o
17:45:56 -!- ais523 has joined.
17:46:05 <flexo> i didn't think i'd make it
17:46:12 <flexo> 3 more days
17:46:26 <ehird> lol wut
17:46:28 <flexo> and my life will have meaning again
17:46:52 <flexo> lost? you know? as in tv?
17:47:39 <ehird> yes.
17:47:40 <ehird> i know.
17:47:43 <AnMaster> I just had a crazy idea for how to implement an AI that would actually work, it is technically unfeasible though
17:47:50 <ehird> AnMaster: no, it wouldn't work
17:48:11 <AnMaster> ehird, simulate life exactly, I mean simulate evolution, from the start
17:48:18 <AnMaster> in all details
17:48:26 <flexo> that's not so much artitical
17:48:26 <AnMaster> would require huge resources though
17:48:32 <ehird> you couldn't do that
17:48:35 <ehird> because you don't know the details
17:48:36 <ais523> AnMaster: how do you know that intelligence would evolve before the extinction of life?
17:48:40 <ehird> and you don't have nature's random number generator
17:48:51 <AnMaster> ais523, you would have to do several runs of course
17:48:53 <ehird> AnMaster: what you're saying is,
17:49:01 <AnMaster> ais523, but given enough time it should work
17:49:06 <ais523> the odds against intelligence may be incredibly high
17:49:08 <ehird> "Here's an easy way to simulate intelligence: simulate everything!"
17:49:18 <AnMaster> ais523, I said "technically unfeasible"
17:49:19 <ais523> the fact that intelligence evolved here may have been a huge fluke
17:49:22 <ehird> simulating intelligence is almost certainly easier than simulating everything
17:49:29 <ehird> thus your solution is a non-solution, even with an infinitely powerful computer
17:49:42 <ais523> but anywhere where the point will be brought up, there must be intelligences to ask the question
17:49:53 <AnMaster> ais523, indeed. I said "technically unfeasible" and "given enough time"
17:50:05 <kerlo> Indeed, I'd rather just use genetic algorithms.
17:50:05 <ehird> AnMaster: you could also brute-force intelligence.
17:50:14 <ehird> that's both way easier to implement and about as efficient.
17:50:18 <ais523> ehird: how would you detect it once you had it?
17:50:20 <AnMaster> agreed
17:50:25 <oerjan> you could probably stack the dice a bit by ensuring there was something resembling earth geologically...
17:50:32 <ehird> ais523: clone an infinite amount of people and have them talk with the iterations simultaneously
17:50:34 <ehird> forever
17:50:45 <ehird> (No harder than simulating the entire universe.)
17:50:49 <ais523> ehird: being able to clone an infinite number of people would probably mean you could just outsource your intelligence
17:50:50 <ais523> to them
17:50:57 <ehird> That would not be artificial.
17:51:15 <oerjan> plate tectonics, the right elements and the right temperature is a good start i think
17:51:34 <ais523> (recent Slashdot story: it seems some companies have been using Mechanical Turk to astroturf Amazon reviews of their products)
17:51:56 <AnMaster> oerjan, well yes, but all written in rules of basic physics
17:52:17 <AnMaster> I mean, quantum mechanics level or so, or you couldn't simulate all effects
17:52:44 <AnMaster> of course that would require as near infinite resources as it makes no practical difference that it would in fact only be finite resources
17:53:07 <oerjan> you may not need to simulate more than the biosphere to full precision
17:53:26 <AnMaster> oerjan, true, but probably not all of space
17:53:55 <ehird> d'aww, while (printf("%lu\n", *n++)); wouldn't work
17:53:58 <ehird> need to return *n
17:54:02 <AnMaster> oerjan, I mean, relativity limits speed of information
17:54:05 <ehird> while (printf("%lu\n", *n++), *n);
17:54:06 <ehird> good enough
17:54:14 <AnMaster> so only the visible universe at the end of the simulation
17:54:37 <AnMaster> oh you could probably fake it, no one would notice if the stars were made of paper ;)
17:55:50 <AnMaster> anyone, anyone up for the task of calculating much computer resources this would need?
17:56:20 <oerjan> AnMaster: er i said "you may _not_ need". did you read me backwards?
17:56:43 <AnMaster> oerjan, oh indeed I must have done
17:57:15 <oerjan> also, you could stack the dice even more, you could probably get a simple cell in there
17:57:35 <AnMaster> "stack the dice" I never heard that idiom before
17:57:53 <ais523> oerjan: stack the deck, surely?
17:57:59 <oerjan> oh
17:58:00 <ais523> anyway, going for a while, I need to get dinner
17:58:00 <oerjan> right
17:58:02 <flexo> i suppose it would be less effort to build a new biosphere than simulating one
17:58:05 -!- ais523 has quit.
17:58:11 <AnMaster> and what does "stack the deck" mean?
17:58:28 <oerjan> "to arrange something in a way that is not fair in order to achieve what you want"
17:58:38 <AnMaster> also, what a shock they would get when they realise that they are simulated
17:58:44 <flexo> as the universe is kinda efficient in "emulating" stuff in itself.
17:59:02 <oerjan> AnMaster: well maybe. _we_ could be simulated.
17:59:11 <AnMaster> oerjan, yes I was thinking about that too
17:59:23 <flexo> actually it's more likely that it's just me being simulated :)
17:59:27 <oerjan> it could be simulations all the way up :D
17:59:33 <flexo> and you all consist of paper
17:59:48 <ehird> AnMaster: they wouldn't realise they were simulated.
17:59:49 <AnMaster> oerjan, augh!
17:59:55 <ehird> you'd get religions, and atheists.
18:00:10 <ehird> and some fringe ones arguing they're all simulated, dismissed as kooks.
18:00:13 <AnMaster> ehird, what if we planted a message, like that that book, Strata
18:00:20 <AnMaster> by T. Pratchett
18:00:21 <ehird> you mean like the bible
18:00:35 <AnMaster> ehird, I mean like in Strata by T. Pratchett
18:00:45 <ehird> I have not read it./
18:00:47 <AnMaster> ah ok
18:00:57 <AnMaster> well
18:01:09 <AnMaster> since it is Pratchett, it is kind of hard to make a short plot summary
18:01:13 <AnMaster> as you surely can imagine
18:01:37 <oerjan> i'm sure there's one on wikipedia :D
18:01:45 <ehird> anyway, it'd almost certainly go on exactly as the religious situation in this world goes on.
18:01:58 <ehird> if you were extremely blatant, probably they'd die of shock, or rebel against you.
18:02:27 <oerjan> ehird: well that is assuming there _is_ no actual divine input to the world's religions.
18:02:36 <oerjan> (this world's)
18:02:53 <ehird> as is my belief :-)
18:03:09 <oerjan> yes. but that is not the same as "almost certainly".
18:03:18 <ehird> naturally.
18:03:33 <ehird> but christianity could well be truly divinely influenced, doesn't mean people take it any more seriously
18:04:32 * ehird *CONTRAVARSY*
18:05:13 <ehird> aight, I'll length count.
18:05:15 <AnMaster> <spoiler>Humans in the book have advanced to terraforming other planets and so on, to increase biodiversity. After some thousand generations before getting to space flight the emigrants tend to forget that they came from elsewhere. Something like that. However, sometimes the machine operators leave some (unauthorised) clues when terraforming. Like a fossile of a dinosaur holding a sign saying "Stop nu
18:05:15 <AnMaster> clear war".... And well in the end the protagonists find out that the universe they live in was constructed. Thanks to a clue left in it.
18:05:16 <ehird> now to incrementerament
18:05:28 <AnMaster> that clue was a flat world. This work iirc pre-dates disc world
18:05:33 <AnMaster> </spoiler>
18:05:39 * ehird shrug
18:05:43 <ehird> It's fiction.
18:05:48 <AnMaster> ehird, yes of course
18:06:01 <AnMaster> but it would be so cool if it wasn't ;P
18:09:31 <ehird> ugh, there should be a realloc that forces in-placeness
18:12:51 <ehird> :( my bui_mod_incr doesn't work
18:14:02 <kerlo> Algorithm: replace all vowels except I and Y with A.
18:14:30 <kerlo> Eh, leave silent E as well.
18:14:55 <kerlo> Actually, leave all E's.
18:15:49 <FireFly> ^bf ++++++++++>++++++++[->++++++++<]>++++++>++++++[[->+>+<<]>>[-<<+>>]<[-<<.>>]<-<<<.>>>]
18:15:50 <fungot> FFFFFF.FFFFF.FFFF.FFF.FF.F.
18:16:19 <oerjan> <kerlo> I assure you that this is all part of my evil plan.
18:16:25 <oerjan> how assuring.
18:17:02 <kerlo> GEARGE W. BASH WILL STAP BARACK ABAMA FRAM DESTRAYING AAR CAANTRY!
18:17:17 <ehird> Proto: Eliminate consonants.
18:17:58 <ehird> eoe u i o aa aa o eroyi ou ouny!
18:18:38 <oerjan> WHAT IS THE PAINT AF THIS?
18:18:52 <AnMaster> <ehird> ugh, there should be a realloc that forces in-placeness <-- that is not possible in practise since there could be other stuff allocated after
18:18:58 <ehird> who cares
18:19:00 <ehird> write over it
18:19:01 <ehird> :D
18:19:22 <AnMaster> ehird, why not just check the return value?
18:19:47 <ehird> because your face
18:20:12 <AnMaster> that made no sense, not even grammatically
18:20:29 <oerjan> neither does your face
18:20:35 <ehird> what he said
18:20:40 <AnMaster> oerjan, that made sense grammatically
18:20:43 <oklopol> because *you're* face
18:20:44 <AnMaster> so wrong
18:20:47 <kerlo> I sint re soud dsust retrace arr tonsonants ris arzeorar tonsonants.
18:20:49 <oklopol> that's a common mistake
18:21:04 <AnMaster> oklopol, heh...
18:21:13 <oerjan> arzeorar?
18:21:14 <AnMaster> that make no sense either
18:21:32 <kerlo> Alveolar.
18:21:44 <oerjan> oklopol: ssh, it's a secret that AnMaster is Mr. Potato Head
18:21:49 <AnMaster> kerlo, what is the substitution? c->t I see
18:22:01 <AnMaster> sometimes?
18:22:11 <AnMaster> oerjan, who?
18:22:29 <AnMaster> but good thing it isn't telnet at least
18:22:31 <oerjan> AnMaster: a famous face
18:22:37 <ehird> kerlo: scarily, that worked
18:22:49 * AnMaster hopes someone gets that bad pun
18:23:01 <oerjan> AnMaster: nope
18:23:06 <oklopol> i did.
18:23:08 <oerjan> oh
18:23:22 * oerjan swats AnMaster -----###
18:23:29 * AnMaster dodges
18:23:44 <kerlo> ehird: what worked?
18:23:51 <ehird> kerlo: consonant replacing
18:24:54 <oerjan> isn't l alveolar?
18:24:55 <AnMaster> ehird, anyway there might be a way to handle the realloc() issue
18:24:59 <AnMaster> if you tell me why you need it
18:25:14 <ehird> i dont
18:25:14 <ehird> :P
18:25:21 <ehird> but my increment doesnt work :(((((((
18:25:24 <AnMaster> ehird, well it seems to be linux specific anyway
18:26:26 <Ilari> Glibc specific? :->
18:27:01 <AnMaster> Ilari, linux kernel specific I think
18:27:08 <AnMaster> at least that is what the man page says
18:27:27 <Ilari> AFAIK, the memory allocation functions Linux kernel implements are brk() and mmap().
18:27:43 <AnMaster> basically: mmap with MAP_FIXED (and possibly MAP_GROWSDOWN), then mremap (possibly using MREMAP_FIXED, not 100% sure about that)
18:27:43 <Ilari> And also mremap().
18:28:06 <kerlo> P becomes T, B becomes D, T remains T, D remains D, CH becomes TS, J becomes DZ, K becomes T, hard G becomes D, F becomes S, V becomes Z, soft TH becomes S, hard TH becomes Z, S remains S, Z remains Z, SH becomes S, "zh" becomes Z, H becomes S, M becomes N, N remains N, NG becomes N, L remains L, R remains R, W becomes R, Y becomes R.
18:28:24 <kerlo> So yeah, "alveolar" becomes "alzeolar", not "arzeolar".
18:28:34 <AnMaster> kerlo, that isn't loseless, also how did you decide on this scheme?
18:28:48 <kerlo> All consonants become alveolar.
18:28:59 * AnMaster googles alveolar
18:29:25 <kerlo> Unvoiced glottal fricative becomes unvoiced alveolar fricative, voiced bilabial stop becomes voiced alveolar stop, etc.
18:29:38 <Ilari> AnMaster: Process memory maps are available, so one can check if there's gap after current allocation...
18:29:44 <oerjan> Whap aboup mapim ip wabiw imfpeab?
18:29:53 <oerjan> *wabiaw
18:30:07 <kerlo> That sounds really fun.
18:30:14 <AnMaster> kerlo, huh. I might understand that better if translated to Swedish
18:31:07 <AnMaster> <kerlo> Unvoiced glottal fricative becomes unvoiced alveolar fricative, voiced bilabial stop becomes voiced alveolar stop, etc. <- I understood the words "(un)?voiced", "stop", "becomes" and "etc" in that
18:31:20 <kerlo> Well, they're all phonetic terms.
18:31:28 <FireFly> ^bf <.
18:31:31 <AnMaster> kerlo, well I don't know much about that
18:31:35 <AnMaster> FireFly, it wraps
18:31:37 <oerjan> Ustemda glottala frikativer bliver ustemda alveolära frikativer ;D
18:31:38 <FireFly> Ah
18:31:48 <AnMaster> oerjan, no less understandable :P
18:32:04 <AnMaster> FireFly, 1000 or 10000 cells iirc
18:32:09 <AnMaster> read the source for details
18:34:28 <ehird> http://boinkor.net/misc/terrible-xml-error.png
18:34:59 <AnMaster> technomadic? NOMADS?
18:35:03 <AnMaster> ehird, and funny
18:35:11 <oerjan> *ostämda, i think
18:35:26 <AnMaster> oerjan, that is why I use an electrical piano :P
18:35:42 <oerjan> *facepalm*
18:36:10 <AnMaster> oerjan, so not so bad it is good this time? :(
18:37:22 <oerjan> it's surreal
18:37:34 <AnMaster> oerjan, oh?
18:37:41 <AnMaster> how do you mean
18:38:49 <oerjan> my brain cannot grasp how that comment leads from mine, even as a pun :D
18:38:59 <oerjan> *follows
18:39:23 <AnMaster> oerjan, you know an instrument needs to be tuned?
18:39:28 <AnMaster> well that is stämma in Swedish
18:39:38 <AnMaster> and, ostämda, would be non-tuned
18:39:42 <AnMaster> or in need of tuning
18:39:55 <AnMaster> you don't need to tune an electrical piano :P
18:40:04 * ehird evacuates the building ->
18:40:09 <AnMaster> oerjan, maybe it doesn't work in Norwegian?
18:40:10 <ehird> come on, get away from the dangerous AnMaster, everyone
18:40:16 <ehird> terrible pun situation, let's get this under control
18:40:19 <ehird> everyone out in an orderly fashion ->
18:40:21 * AnMaster joins ehird
18:40:27 <AnMaster> lets get out of here
18:40:29 <oerjan> oh it works all right. it just doesn't make sense.
18:40:30 * ehird squirts AnMaster with funny juicde
18:40:33 <ehird> *juice
18:40:37 <ehird> come on everyone ->
18:40:39 <AnMaster> tastes nice!
18:40:43 * AnMaster follows
18:40:48 * ehird bats AnMaster with a cluebat
18:40:49 <ehird> ->
18:41:02 <AnMaster> ehird, Always were a hard hat on irc
18:41:05 <AnMaster> that is what I always say
18:41:07 <AnMaster> want one too?
18:41:12 * AnMaster hands ehird a nice hard hat
18:41:16 * ehird puts AnMaster in a cage
18:41:17 <ehird> ->
18:41:40 <AnMaster> ehird, hey good thing I was Houdini in a previous life!
18:41:48 <AnMaster> (and good thing I believe in reincarnation)
18:41:55 * ehird kills AnMaster
18:41:59 <AnMaster> How?
18:42:01 <ehird> now we don't need to evacuate!
18:42:08 <AnMaster> ehird, how would you kill?
18:42:13 <AnMaster> some sort of weapon or such
18:42:13 <ehird> AnMaster: funny-clue-giving-machine
18:42:17 <ehird> you're allergic to it
18:42:30 <AnMaster> ehird, ah good thing I took the medicine this morning then
18:42:31 <AnMaster> :)
18:42:36 <ehird> no, there is no cure
18:42:39 * AnMaster walks out of the exit
18:42:43 <ehird> source: channel logs
18:42:47 <AnMaster> yay out of the building
18:42:52 <ehird> crap
18:42:56 * ehird turns on the lhc, targets at AnMaster
18:43:02 <AnMaster> now what was it that was so dangerous in there?
18:43:05 * AnMaster dodges
18:43:16 <oerjan> ehird: but you're already a black hole, remember?
18:43:18 <ehird> [black hole expands to be as big as anmaster and everywhere at once]
18:43:27 * ehird turns off LHC just as AnMaster is sunk in.
18:43:31 <ehird> only a few million casualties.
18:43:32 <AnMaster> oerjan, no I dodged fast enough
18:43:43 <AnMaster> also that was debunked, see snopes or something
18:43:57 <AnMaster> or maybe busted, in that case see mythbusters
18:44:03 <oerjan> snopes is clearly one of the men in black
18:44:14 <oerjan> don't believe everything he debunks
18:44:16 <AnMaster> oerjan, then mythbusters clearly
18:44:33 <oerjan> yes, they too
18:44:47 <AnMaster> sure about not believe, but no they aren't MIB
18:44:55 <AnMaster> the SNMP protocol would simply reject them
18:44:59 -!- sebbu2 has joined.
18:45:16 * AnMaster certainly hopes no one find that funny
18:45:26 -!- Slereah has quit (Read error: 110 (Connection timed out)).
18:45:46 <oerjan> i might be hurting you now if i knew the acronyms without looking them up
18:46:05 <AnMaster> oerjan, first hit on google is "Management information base", used in the SNMP protocol
18:46:32 <oerjan> clearly anmasterful joke
18:46:46 <AnMaster> oerjan, and yes I like making bad puns, it is like you know, the counter weight continent
18:46:56 <AnMaster> someone need to balance your good puns
18:47:06 <AnMaster> or the channel will tip over
18:47:16 <oerjan> you mean some day the bad puns will create that black hole out of sheer weight?
18:48:07 <AnMaster> oerjan, no, I mean without me you would be a white hole just throwing out more and more puns until everyone in here died of laughing, as it is I'm kind of balancing this
18:48:45 <oerjan> O_o
18:49:11 <ehird> everyone walk away from the crazy man ->
18:49:24 <oklopol> :D
18:49:38 <oerjan> which one? the channel is full of them
18:49:52 <AnMaster> oerjan, exactly
18:49:53 <ehird> AnMaster:
18:50:05 <AnMaster> ehird, well you are worse, you talked a lot about TIME CUBE
18:50:13 <ehird> shut up, stupid academic
18:50:46 <AnMaster> oh you are a bit untrained, you forgot upper case
18:51:31 <ehird> time cube is not all uppercase.
18:52:15 <AnMaster> ok true
18:52:19 <AnMaster> but it is very large font
18:53:21 <AnMaster> hm seems he updated it?
18:56:24 <oklopol> time to beat AnMaster at this joking game
18:56:25 <oklopol> "ehird: come on everyone ->"
18:56:28 <oklopol> OKAY
18:56:32 * oklopol comes on everyone
18:56:40 <ehird> bravo
18:56:42 <AnMaster> oklopol, :D
18:57:03 <ehird> wait, AnMaster going :D at a sex joke?
18:57:06 <ehird> what is the world comingt o
18:57:08 <AnMaster> ehird, sure
18:57:10 <ehird> coming to
18:57:11 <ehird> HURF HURF HURF
18:57:18 <AnMaster> aha
18:57:19 <AnMaster> yes
18:57:21 <AnMaster> ahah*
18:58:02 <ehird> by the way, this is the pinnacle achivement of mankind today: http://music.metafilter.com/2943/Runnin-With-The-Songsmith
18:58:45 -!- kar8nga has joined.
19:00:48 <AnMaster> ehird, where is the actual music on that link?
19:00:55 <ehird> enable flash :\
19:01:00 <ehird> wait
19:01:04 <ehird> an mp3 link might be in the html source
19:01:05 <ehird> let me look
19:01:12 <ehird> AnMaster: also, 'music' is a bit rich
19:01:24 <ehird> AnMaster: http://music.metafilter.com/music/DevilAudio.mp3
19:01:36 <AnMaster> ehird, well I did enable all scripts, and I don't see any such "missing plugin box"
19:01:36 <AnMaster> aha
19:01:37 <AnMaster> thanks
19:01:42 <ehird> cover your ears
19:02:02 <AnMaster> ehird, ouch
19:02:31 <AnMaster> the song sounds like it should fit some sort of rock or possibly metal music
19:02:36 <AnMaster> and that music doesn't fit
19:02:40 <AnMaster> eww
19:02:44 <ehird> read the post
19:02:46 <AnMaster> yes
19:02:50 <ehird> it's this:
19:02:56 <ehird> http://uk.youtube.com/watch?v=tpX3NhpRGdE&feature=related
19:02:57 -!- sebbu has quit (No route to host).
19:02:58 -!- sebbu2 has changed nick to sebbu.
19:03:02 <ehird> 's vocal track, put into:
19:03:10 <ehird> http://uk.youtube.com/watch?v=3oGFogwcx-E
19:03:18 <ehird> which is a hideous abominatory microsoft creation
19:03:25 <AnMaster> ARGH!
19:03:30 <ehird> AnMaster: it makes music
19:03:31 <ehird> from vocals
19:03:40 <ehird> the advert is linked to is simply hilarious
19:03:41 <AnMaster> no it doesn't
19:03:47 <AnMaster> it makes *sound* from music
19:03:47 <ehird> AnMaster: it _attempts_ to
19:03:48 <AnMaster> err
19:03:50 <ehird> :D
19:03:51 <AnMaster> sound from singing
19:03:53 <AnMaster> yes
19:03:58 <AnMaster> ehird, but I say it doesn't make music
19:04:19 <ehird> well, it arguably improves van halen.
19:04:39 <AnMaster> I haven't listened to original yet
19:04:43 <AnMaster> will do shortly
19:05:00 <ehird> i don't think anyone can listen to such an abomination all the way through
19:06:03 <AnMaster> ehird, the original is about as horrible in fact
19:06:05 <AnMaster> but in a differen
19:06:08 <AnMaster> different way
19:06:15 <ehird> okay, now watch the songsmith advert :-D
19:06:19 <ehird> unless you've already seen it
19:06:27 <AnMaster> is it same as http://music.metafilter.com/music/DevilAudio.mp3 ?
19:06:41 <ehird> no...
19:06:44 <ehird> :-P
19:06:49 <ehird> http://uk.youtube.com/watch?v=3oGFogwcx-E
19:06:53 <ehird> the official from-microsoft advert
19:06:55 <AnMaster> also how come youtube didn't remove audio from the original?
19:06:58 <AnMaster> surely that is copyrighted
19:07:12 <ehird> AnMaster: they tried to, but everyone they sent to do it died of hearing it before they could mute it
19:08:06 <AnMaster> AUGH!!!!!!!!!!!!!!!!!!
19:08:32 <ehird> don't give up!
19:08:34 <AnMaster> ehird, I can't watch more than 30 seconds of it
19:08:35 <ehird> it gets better as it goes
19:08:39 <ehird> where better means worse
19:09:37 <AnMaster> will anyone actually buy it?
19:09:42 <AnMaster> I don't think so
19:10:02 <ehird> i checked their forums, people were actually asking when it could be bought in non-US places
19:10:03 <ehird> x_x
19:10:16 <AnMaster> oh no
19:10:29 <AnMaster> ehird, I mean compared to this even rap is good
19:10:32 <ehird> in the future, all music will be made with songsmith.
19:10:37 <ehird> musicians will be obsolete.
19:10:47 <ehird> then, the vocalists for it will be replaced with Microsoft Sam text-to-speech.
19:10:53 <ehird> The lyricwriters? markov chains.
19:11:03 <AnMaster> ehird, good thing I have some good old style gramophone records with classical music on them then
19:11:12 <ehird> AnMaster: they will be outlawed.
19:11:23 <AnMaster> ehird, actually, feeding Ms Sam into that would be interesting
19:11:25 -!- ais523 has joined.
19:11:30 <AnMaster> I wonder what the result would be
19:11:32 <AnMaster> hi ais523
19:11:34 <ais523> hi AnMaster
19:11:37 <ais523> and wb me
19:11:41 <ehird> AnMaster: well, microsoft sam doesn't exactly do any intonation
19:11:53 <AnMaster> ehird, yes so what will songsmith do with it I wonder
19:12:08 <ehird> play the same chord over and over again?
19:12:14 <AnMaster> possibly
19:12:49 <AnMaster> anyway this product won't lower the overall music quality of the world. Because it doesn't count as music
19:13:00 <ais523> oh no, SongSmith?
19:13:09 <ehird> ais523: we're talking about feeding microsoft sam into songsmith.
19:13:26 <ehird> with text from markov chains.
19:13:36 <AnMaster> ehird, also how the heck does it handle when the person singing don't know how to sing properly, I mean can't "find the notes" or whatever you say in English
19:13:40 <ehird> actually, that could count as good piece of art-music, possibly. like, sarcastically.
19:13:40 <ais523> oh dear
19:13:44 <AnMaster> will it retune to a different freq on demand?
19:13:53 <ehird> AnMaster: probably it tries to correct it when making the chords
19:13:54 <ehird> most likely,
19:13:59 <ehird> it'll produce more awful crap
19:13:59 <AnMaster> ehird, oh yes modernistic music, sure it would work as that
19:14:09 <ais523> AnMaster: it just produces bad music, it does that even with people who can sing I expect
19:14:20 <ais523> SongSmith may turn out to be an even worse idea than Microsoft Bob
19:14:25 <ehird> ais523: have you seen
19:14:28 <AnMaster> ais523, someone fed some rock vocalist into it
19:14:30 <ehird> music.metafilter.com/music/DevilAudio.mp3
19:14:34 <ehird> yeah, what AnMaster said :-P
19:14:34 <AnMaster> it produced something totally different
19:14:39 <AnMaster> yeah that link
19:14:40 <ehird> van halen vocals + songsmith = http://music.metafilter.com/music/DevilAudio.mp3
19:15:01 <ehird> they didn't even set the bpm correctly, they just set the "happy" slider at full
19:15:02 <ehird> :D
19:15:19 <AnMaster> ehird, <ehird> well, it arguably improves van halen. <-- no... equally bad before and after
19:15:41 <ehird> AnMaster: i can listen to the songsmithed version all the way through, not the original
19:16:09 <AnMaster> that is because the original has video too
19:16:14 <ehird> ah. good point.
19:16:23 -!- join has joined.
19:16:24 <AnMaster> if you hide that it isn't so bad
19:16:30 <ehird> hi join
19:16:35 <ehird> where's part?
19:16:38 <ais523> someone who has it should pipe a few Fugue programs into it
19:16:41 <AnMaster> hi Slereah
19:16:49 <AnMaster> ais523, none of us has it
19:16:56 <ais523> and htf did Slereah hit on an obvious non-registered nickname?
19:16:59 <ehird> there's a 6-hour demo, AnMaster
19:17:00 <AnMaster> ais523, also what is Fugue?
19:17:09 <ais523> AnMaster: http://esolangs.org/wiki/Fugue
19:17:24 <AnMaster> ehird, of songsmith?
19:17:27 <ehird> AnMaster: yes
19:17:32 <ehird> i could boot up windows and download it, I guess.
19:17:51 <ais523> ehird: as in, you only get to use it for 6 hours?
19:17:51 <AnMaster> ehird, well not an issue since you could take a snapshot before and reset it after
19:17:55 <ehird> ais523: yes
19:18:00 <ehird> AnMaster: yes
19:18:02 <ais523> that's a ridiculously short free trial
19:18:07 <ais523> they're normally 30 days
19:18:13 <AnMaster> ais523, enough to decide "I hate this"
19:18:17 <ehird> ais523: yeah but it's songsmiht
19:18:20 <ehird> all you do is sing then listen.
19:18:41 <ais523> AnMaster: I told you about the free trial GPL program a while back, didn't I
19:18:43 <ehird> if it was any good, 3 hours of listening to it (3 hours of singing in...) would be enough to decide, probably
19:18:44 <ais523> that was really silly
19:18:52 <AnMaster> ais523, what one was it?
19:18:55 <ais523> AnMaster: a compiler
19:18:57 <ais523> based on gcc
19:19:05 <AnMaster> ais523, well sounds familiar
19:19:07 <ais523> I just looked at the source, then replaced the licence manager with hello world
19:19:11 <ehird> AnMaster: http://esoteric.voxelperfect.net/files/fugue/src/hworld.mid
19:19:19 <ais523> I wrote that
19:19:22 <ais523> and I like it
19:19:22 <AnMaster> well
19:19:26 <ehird> I like it too
19:19:28 <AnMaster> that is music, not song?
19:19:32 <ais523> if you can't play mids, I have an ogg version lying around somewhere over here
19:19:34 <AnMaster> so it wouldn't work in songsmith
19:19:40 <ehird> AnMaster: no, you can put instruments in it too
19:19:40 <AnMaster> ais523, I can, I have hardware midi
19:19:43 <ehird> and it tries to match it up
19:19:54 <ais523> AnMaster: I have software midi, it's pretty good apart from taking up 40% of my CPU
19:20:11 <ehird> someone should put a fast & complex electric guitar solo in there and see what it does t o it
19:20:11 <AnMaster> ehird, oh, I wonder what will happen if you use, say "Spring" of Vivaldi as input
19:20:21 <ehird> AnMaster: i think it kills the program.
19:20:26 <ehird> like, in an actual
19:20:26 <ehird> life
19:20:27 <ehird> killing
19:20:30 <ehird> way
19:20:36 <AnMaster> ehird, I think the result will kill anyone listening
19:20:39 -!- MigoMipo has joined.
19:20:53 <AnMaster> ais523, well I lack a good soundfont
19:21:06 <AnMaster> ais523, a340 is ok-ish as a soundfont
19:21:11 <AnMaster> but the piano really sucks
19:22:26 <AnMaster> ais523, um? D-minor?
19:22:31 <AnMaster> nah none existing one I think
19:22:45 <AnMaster> but I quite like it, some atonality there too
19:22:50 <ais523> AnMaster: it isn't in any particular key
19:23:00 <ais523> it was in fact automatically generated by a BF->Fugue compiler
19:23:09 <ais523> which was sufficiently nonportable that I believe it only runs on one computer
19:23:12 <AnMaster> ok for auto generated it isn't too bad
19:23:20 <AnMaster> ais523, oh?
19:23:32 <ais523> AnMaster: it's a crazy story, actually
19:23:59 <ais523> the compiler involved lots of different langs, including C, Prelude, Visual Basic, and a couple I invented specifically for the purpose
19:24:08 <AnMaster> ais523, hm Fugue is massively concurrent isn't it?
19:24:18 <ais523> the actual music entry was done by customizing the keyboard shortcuts of a proprietary MIDI editor
19:24:27 <ais523> then sending it keyboard events using VB's SendKeys
19:24:41 <ais523> and no, it isn't, it has a fixed number of threads which have to run in step
19:24:53 <ais523> it's more like having a lang where each command always does a large number of finite things
19:25:11 <AnMaster> ais523, was the compiler gc? (Goldberg Compiler)
19:25:29 <ais523> I wrote everything in the chain myself, except the proprietary midi editor
19:25:44 <AnMaster> ais523, why so complex
19:25:47 <ais523> I actually used to be pretty good at VB once, surprisingly
19:25:51 <ais523> but I rarely use it nowadays
19:26:02 <ais523> and why so complex? because I didn't know how to generate MIDI by hand
19:26:16 <AnMaster> um. specs?
19:26:27 <ehird> ais523 my bignum kind of doesnt work :((((((((((((((((((((((((
19:26:29 <AnMaster> or maybe this was long ago?
19:26:50 <ehird> AnMaster: post-2005
19:26:52 <ais523> it was ages ago
19:26:53 <ehird> since fugue is 2005
19:26:54 <ais523> and specs of what?
19:26:59 <AnMaster> ais523, of midi format
19:27:03 <AnMaster> or some library for it
19:27:11 <ais523> I don't know if there are any
19:27:15 <AnMaster> ais523, also how comes it isn't very concurrent? just play a chord?
19:27:15 <ehird> ais523: http://pastie.org/364042.txt?key=u3cqc6nuw91cp0cehfm5fg <-- the bui_mod_incr function doesn't work and I can't figure out why
19:27:24 <ais523> and this is back when I didn't do any programming on Internet-connected computers
19:27:29 <AnMaster> and you have a few threads, one per tone?
19:27:31 <AnMaster> or not?
19:27:43 <ais523> because I had only public terminals for that
19:27:48 <ais523> and no, it isn't exactly a thread per tone
19:28:01 <ais523> because multithreaded programs can have threads running at different rates, and doing control flow
19:28:11 <ais523> when one line of music loops, every line loops, in Fugue
19:28:18 <ais523> I don't know what that's called, but it isn't multithreading
19:28:23 <AnMaster> um
19:28:35 <AnMaster> ok
19:28:51 <ehird> :\
19:29:08 <AnMaster> ais523, anyway there are no loops in midi afaik
19:29:13 <ais523> no
19:29:17 <AnMaster> every time i export a loop it ends up being expanded
19:29:21 <ais523> there are loops in Fugue, though, because it's a programming language
19:29:28 <ais523> that's like saying there are no loops in ASCII, so C can't have loops
19:29:38 <AnMaster> ais523, right, but how would you encode it in midi
19:29:48 <AnMaster> oh a special note?
19:29:50 <ais523> AnMaster: by using the loop-start and loop-end instructions
19:30:01 <ais523> just like you encode loops in C by using while or for or goto
19:30:05 <AnMaster> ais523, did you ever do something like "play as it runs"?
19:30:12 <ais523> AnMaster: no, that wouldn't be particularly interesting
19:30:24 <ehird> :s
19:30:29 <AnMaster> ais523, oh? it would include listening to the loops
19:30:31 <ais523> you would just get the bits inside the loops again and again
19:30:36 <ais523> which are only a few notes long
19:30:39 <AnMaster> oh right
19:30:52 <ais523> and besides, due to the BF-like arithmetic the loops are going to be running around hundreds of times
19:30:57 <ais523> so it's going to get on your nerves
19:31:21 <AnMaster> oh idea: "Variations of hello world", which should keep the same output (printing hello world a few times) but sound a little different each time
19:31:35 <ais523> AnMaster: there were random numbers involved in the compiler
19:31:43 <ais523> I actually have a second hello world in Fugue, but it isn't as good
19:32:09 <AnMaster> ais523, also midi doesn't actually encode tempo? Just the length in ms or something
19:32:20 <AnMaster> so how can the interpreter know what a fifth is or such
19:32:32 <ais523> AnMaster: tempo has nothing to do with intervals
19:33:10 <ais523> actually, MIDI itself isn't a file format, but a communications format
19:33:13 <AnMaster> ais523, well, quater note = 180 or quater note = 120 would end up different in midi, and iirc midi doesn't store any "metronome values"
19:33:24 <ais523> AnMaster: quarter notes have nothing to do with fifths, the interval
19:33:36 <ais523> a fifth goes up from C to G, or C# to G#, or D to A, and so on
19:33:39 <AnMaster> hm? then I mentally mistranslate
19:33:42 <AnMaster> oh right
19:33:44 <ehird> ais523: you should look at my bignum :-D
19:33:49 <ais523> and MIDI does store some metadata, such as the time signature
19:33:51 <AnMaster> ais523, yes that would make more sense
19:34:12 <ais523> ehird: why are you using goto?
19:34:22 <ehird> eh, why no
19:34:22 <ehird> t
19:34:23 <ehird> :D
19:34:33 <ehird> i thought about the algorithm in terms of a goto, so that's how I wrote it
19:35:00 <ais523> the algorithm looks correct
19:35:07 <ais523> in what way does it fail?
19:35:18 <ehird> % cc -Wall -m64 -ansi bignum.c; ./a.out
19:35:18 <ehird> 1
19:35:19 <ehird> 18446744073709551615
19:35:21 <ehird> 1
19:35:24 <ehird> that's the full output
19:35:25 <ehird> :\
19:35:32 <ehird> chops off everything after the length and then does nothing more o_O
19:36:41 <ais523> there's something seriously wrong with that
19:36:47 <ais523> unless the IRC server clipped a newline
19:36:52 <ais523> was there a double-newline in the actual output?
19:38:33 <ehird> oh, ys
19:38:34 <ehird> yes
19:38:37 <ehird> it was my client stripping that
19:38:40 <ais523> where?
19:38:46 <ehird> before the last 1 :_)
19:38:48 <ehird> :-)
19:39:01 <ais523> that's easy enough to explain
19:39:04 <ais523> *m was 0
19:39:07 <ais523> so you broke out of the loop
19:39:12 <ais523> your print routine is incapable of printing a zero
19:39:12 <ehird> oh, duh
19:39:21 <ehird> sorry, I forgot to make it account for the length-change
19:39:25 <ehird> instead of the null-termination
19:40:27 -!- kar8nga has quit (Connection timed out).
19:41:06 <AnMaster> ehird, how comes you are using a length instead of a zero terminated one?
19:41:17 <ais523> AnMaster: I persuaded him to
19:41:18 <ehird> because ais523 argued with me about it and told me to.
19:41:23 <ehird> heh.
19:41:23 <AnMaster> ah
19:41:24 <ais523> it's a lot faster for bignums
19:41:29 <ais523> because it fits what the architecture is doing
19:41:30 <AnMaster> yes I can imagine
19:41:45 <ais523> you can add two numbers just with add/add-with-carry/add-with-carry, etc
19:41:55 <AnMaster> ais523, in a simple for loop
19:42:06 <ais523> unfortunately, C doesn't have a portable add-with-carry instruction, but given that ehird's going for speed I'm sure he won't mind rewriting that bit in asm
19:42:17 <ehird> I am not going for speed
19:42:20 <ehird> i've told you this 5000 times
19:42:20 <AnMaster> ehird, oh btw ehird, for is usually faster than while with GCC, since it can optimise it better
19:42:22 <ehird> this is just for fun
19:42:28 <AnMaster> err you said you were before
19:42:33 <ehird> yes, for the scheme impl
19:42:34 <AnMaster> I'm 100% sure you said so
19:42:36 <ehird> i'm just writing a bignum library for fun
19:42:38 <ais523> AnMaster: no, where does that rumour come from?
19:42:46 <AnMaster> ais523, oh the scheme one?
19:42:46 <ais523> for and while translate to the same thing at the RTL level
19:42:50 <ais523> as does goto, for that matter
19:42:53 <ais523> AnMaster: no, the for faster than while thing
19:43:04 <AnMaster> ais523, as in I observed it myself, profiling.
19:43:08 <ais523> rewriting a loop can make it a lot faster
19:43:11 <ais523> but not for that reason
19:43:15 <AnMaster> ais523, for example it managed to vectorise a for loop
19:43:27 <AnMaster> while not the equivalent while loop
19:43:51 <AnMaster> ais523, and it managed to unroll some for loops but not the while loops
19:43:52 <ais523> AnMaster: there is no difference apart from scoping between for(a=0; a<64; a++) {foo; } and a=0; while(a<64) {foo; a++}
19:44:08 <ais523> as long as you have no continue statements inside the loop
19:44:12 <ehird> ssh, let him have his placebo!
19:44:14 <AnMaster> ais523, I belive the loop I tried on were a bit more complex, one was CRC for example
19:44:16 <ais523> and I'm pretty sure gcc unrolls while loops
19:44:51 <ehird> 1
19:44:52 <ehird> 18446744073709551615
19:44:52 <ehird> 2
19:44:54 <ehird> 18446744073709551615
19:44:56 <ehird> 1
19:44:58 <ehird> ok, that's an odd result...
19:45:00 <ehird> should be 2, 0, 1
19:45:32 <ehird> oh
19:45:43 <AnMaster> ais523, well why they does gcc not vectorise any while loops in my experiments
19:45:47 <AnMaster> but a lot of for loops
19:45:49 -!- kar8nga has joined.
19:45:49 -!- kar8nga has quit (Read error: 104 (Connection reset by peer)).
19:45:52 <AnMaster> I'm using gcc 4.1.2 btw
19:45:55 <ehird> yay, it works
19:46:09 <ais523> int main(void)
19:46:11 <ais523> {
19:46:11 -!- kar8nga has joined.
19:46:11 -!- kar8nga has quit (Read error: 54 (Connection reset by peer)).
19:46:12 <ais523> int getchar(void);
19:46:14 <ais523> int i=getchar();
19:46:15 <ais523> int c=0;
19:46:17 <ais523> while(c<16) {i*=i; ++c;}
19:46:18 <ais523> return i;
19:46:20 <ais523> }
19:46:21 <ais523> that loop was unrolled at -O3
19:46:24 <ais523> into 16 multiply instructions
19:46:29 <ehird> http://pastie.org/364057.txt?key=zpbkykzrv0q9xax847rpbw
19:46:40 <AnMaster> ais523, and vectorised with -ftree-vectorize or whatever it is called?
19:46:47 -!- kar8nga has joined.
19:46:47 -!- kar8nga has quit (Read error: 131 (Connection reset by peer)).
19:46:51 <AnMaster> maybe -fvectorize-tree
19:46:53 <AnMaster> don't remember
19:46:53 <ais523> AnMaster: just with -O3
19:47:00 -!- kar8nga has joined.
19:47:00 -!- kar8nga has quit (Read error: 104 (Connection reset by peer)).
19:47:05 <ais523> I don't think this computer does vectorisation
19:47:10 -!- kar8nga has joined.
19:47:10 <ais523> but I'll try and see what happens
19:47:10 -!- kar8nga has quit (Read error: 54 (Connection reset by peer)).
19:47:21 <AnMaster> ais523, gcc doesn't vectorize without -ftree-vectorize
19:47:27 <ais523> besides, that loop won't vectorise for obvious reasons
19:47:30 -!- kar8nga has joined.
19:47:30 -!- kar8nga has quit (Read error: 104 (Connection reset by peer)).
19:47:31 <ais523> let me rewrite it as one that will
19:47:38 <AnMaster> ais523, see also -ftree-vectorizer-verbose
19:47:40 -!- kar8nga has joined.
19:47:40 -!- kar8nga has quit (Read error: 104 (Connection reset by peer)).
19:47:50 <AnMaster> it will tell you why it can/can't vectorise
19:47:53 <AnMaster> -ftree-vectorizer-verbose=7
19:47:54 <AnMaster> or so
19:48:17 <AnMaster> some gcc versions segfault on that flag if too high, trying to print a null pointer
19:48:18 -!- kar8nga has joined.
19:48:18 -!- kar8nga has quit (Read error: 131 (Connection reset by peer)).
19:48:32 <AnMaster> fixed in trunk
19:48:37 <AnMaster> affects gcc 4.3 at least
19:48:43 <ais523> cc1: error: unrecognized command line option "-ftree-vectorise"
19:48:49 <AnMaster> ais523, how old?
19:48:55 <AnMaster> gcc 3.x or what?
19:48:57 <ais523> gcc (Ubuntu 4.3.2-1ubuntu11) 4.3.2
19:49:01 -!- kar8nga has joined.
19:49:01 -!- kar8nga has quit (Read error: 104 (Connection reset by peer)).
19:49:04 <AnMaster> ais523, spell it amercian
19:49:06 <AnMaster> it will help
19:49:09 -!- kar8nga has joined.
19:49:09 -!- kar8nga has quit (Read error: 54 (Connection reset by peer)).
19:49:15 <AnMaster> american*
19:49:40 -!- kar8nga has joined.
19:49:40 -!- kar8nga has quit (Read error: 104 (Connection reset by peer)).
19:49:42 <AnMaster> ais523, it helped right?
19:49:53 <ais523> yes
19:49:56 <AnMaster> wtf is up with kar8nga's connection, this is getting irritating
19:50:24 <ehird> no it's not...
19:50:27 <ehird> I haven't even noticed it
19:50:33 <ehird> nowhere near moozilla levels yet
19:50:39 <ais523> well, it didn't vectorise either the while or the for when I tested
19:50:40 -!- kar8nga has joined.
19:50:40 -!- kar8nga has quit (Read error: 104 (Connection reset by peer)).
19:50:40 <AnMaster> ehird, a lot more often
19:50:43 <AnMaster> as you see
19:50:49 <ehird> AnMaster: no, my brain just filters it out
19:50:50 <ais523> a.c:8: note: not vectorized: no vectype for stmt: D.1209_21 = i[c_44] scalar_type: int
19:50:53 <ehird> why not ignore join/parts
19:51:01 <kerlo> "I'm irritated." "No you're not."
19:51:02 <AnMaster> ais523, yes they depend on each other I believe
19:51:05 <AnMaster> ais523, also try -march
19:51:07 <AnMaster> to correct
19:51:11 <AnMaster> like something with sse
19:51:19 <AnMaster> or at least mmx
19:51:28 * kerlo tries to find ais523's lambda scoping example
19:51:29 -!- kar8nga has joined.
19:51:29 -!- kar8nga has quit (Read error: 104 (Connection reset by peer)).
19:51:32 <ais523> AnMaster: what do you recommend?
19:51:43 <AnMaster> ais523, well what cpu is it?
19:51:53 <ais523> I don't care, I'm not actually planning to run the program
19:51:57 <ais523> just compile to asm and read the asm
19:52:12 <AnMaster> ais523, -march=core2 then?
19:52:13 -!- kar8nga has joined.
19:52:13 -!- kar8nga has quit (Read error: 54 (Connection reset by peer)).
19:52:36 <ais523> AnMaster: ah, it vectorised both of them
19:52:43 <AnMaster> ais523, anyway you can't vectorise that since all modify i
19:52:48 <ais523> yes, I rewrote the program
19:52:58 <AnMaster> ais523, it did? doesn't with older gcc
19:53:02 <AnMaster> 4.1.2 that is
19:53:20 <ais523> int main(void) {
19:53:22 <ais523> int getchar(void), i[16], c;
19:53:23 <ais523> c=0; while(c<16) {c[i]=getchar(); ++c;}
19:53:24 <ais523> c=0; while(c<16) {c[i]*=c[i]; ++c;}
19:53:26 <ais523> for(c=0; c<16; ++c) {c[i]*=c[i];}
19:53:28 <ais523> return i[getchar()];
19:53:29 <ais523> }
19:53:34 <ais523> I'm not at all surprised, because the while and the for loop are completely synonymous
19:53:44 -!- Judofyr has joined.
19:53:55 <AnMaster> how the heck could that for loop be vectorised? it includes a function call
19:54:01 <ais523> not the first one
19:54:07 <ais523> loops 2 and 3 are vectorised
19:54:08 <AnMaster> oh wait
19:54:10 <ais523> which are equivalent
19:54:10 <AnMaster> misread it
19:54:25 <ais523> loop 1 is just there to prevent gcc constant-folding
19:54:27 <ais523> by using user input
19:54:35 <ais523> also, I apologise for the declarations line
19:54:42 <ais523> that's legal C, and good for brevity, but very confusing
19:54:48 <ais523> C-INTERCAL used it a lot before I fixed that sort of thing
19:55:05 <ehird> "fix"?
19:55:06 <ehird> you mean break
19:55:12 <ais523> ehird: no, not really
19:55:20 <ais523> writing int getchar(void); inside a function is legal
19:55:21 <AnMaster> <ais523> int getchar(void), i[16], c; <-- function prototype and variables in one?
19:55:22 <ais523> but confusing
19:55:24 <ais523> AnMaster: yep
19:55:27 <AnMaster> ouch
19:55:32 <kerlo> Well, having written this silly lisp-bot, I think I'll try writing a serious one.
19:55:45 <ais523> I bet you didn't even know that you can declare library function prototypes inside a lexical scope
19:55:49 <ais523> because it's an insane thing to do
19:55:49 <AnMaster> ais523, anyway using a volatile variable would have worked too
19:56:01 <AnMaster> it is what I usually do
19:56:01 <ais523> AnMaster: I doubt it, that would prevent the compiler vectorising
19:56:04 <ais523> surely?
19:56:04 <kerlo> Is a volatile variable a variable that is capable of varying?
19:56:09 <AnMaster> ais523, depends on where
19:56:13 <AnMaster> yes for the first loop
19:56:16 <AnMaster> but not for the rest?
19:56:19 <AnMaster> if
19:56:21 <ais523> kerlo: it tells the compiler that the variable might change unpredictably without it knowing
19:56:28 <AnMaster> volatile int src;
19:56:31 <ais523> normally, because you've given a pointer to it to an interrupt handler or to some other program
19:56:33 <kerlo> Interesting.
19:56:34 <AnMaster> c=0; while(c<16) {c[i]=src; ++c;}
19:56:44 <AnMaster> ais523, how would it affect the other loops?
19:56:54 <ais523> kerlo: for instance, if you write volatile int i; i=1; i=2;
19:57:02 <ais523> then the compiler will store both 1 and 2 in memory where i is
19:57:13 <ais523> because volatile tells it not to get rid of redundant reads and writes
19:57:23 <AnMaster> yes could be DMA or whatever
19:57:33 <AnMaster> like a memory mapped char output
19:57:36 <ais523> or a memory-mapped hardware register, I've used volatile for those before
19:57:43 <AnMaster> ais523, yes exactly
19:57:57 <ais523> the other thing volatile does is to tell the compiler to definitely not store the variable in a register
19:58:01 <AnMaster> ais523, you wrote kernel stuff?
19:58:02 <ais523> which is useful when messing around with longjmp
19:58:08 <ais523> AnMaster: embedded stuff
19:58:11 <AnMaster> aha
19:58:11 <ais523> with no OS
19:58:20 <AnMaster> right
19:58:33 <ehird> volatile int eax __asm__("%eax");
19:58:38 <ehird> (actually works :-))
19:59:00 <AnMaster> ais523, actually it may still have to put it in a register, but it need to load/store it before/after
19:59:12 <AnMaster> some arches may not be able to operate on stuff not loaded in registers
19:59:19 <ais523> AnMaster: it may need to do things via registers, yes
19:59:28 <ais523> but volatile tells it to reread the value whenever it's needed
19:59:33 <ais523> ehird: yes, I know that works
19:59:38 <ais523> I've written such before, for another architecture
19:59:42 <ehird> i was talking to AnMaster before
19:59:45 <ehird> errr
19:59:46 <ehird> s/before/too/
19:59:49 -!- kar8nga has joined.
19:59:50 -!- kar8nga has quit (Read error: 104 (Connection reset by peer)).
19:59:52 <AnMaster> ais523, though I think add on x86 may take memory operands?
20:00:01 <AnMaster> also
20:00:06 <ehird> ais523: also
20:00:07 <AnMaster> what does <ehird> volatile int eax __asm__("%eax"); do?
20:00:08 <ehird> if you're doing that
20:00:11 <ehird> why not just write it as __asm__
20:00:12 -!- kar8nga has joined.
20:00:12 -!- kar8nga has quit (Read error: 54 (Connection reset by peer)).
20:00:17 <ehird> AnMaster: err that syntax is wrong
20:00:20 <ehird> should be
20:00:26 <ehird> volatile int *eax __asm__("%eax");
20:00:31 <ehird> AnMaster: then *eax reads the eax register
20:00:37 <ehird> and *eax=...; sets it
20:00:42 <ehird> (on x86)
20:00:45 <ehird> :-D
20:00:47 <AnMaster> ehird, ok, but what does volatile for it mean? that it may not be stored in a register?
20:00:59 <ehird> AnMaster: well, %eax changes all the freaking time
20:01:05 <AnMaster> yes true
20:01:05 <ehird> it's just telling gcc to not try and be clever with it...
20:01:11 <AnMaster> ah
20:01:24 <AnMaster> ehird, the "must not store in a register" bit is confusing though
20:01:26 <ais523> AnMaster: it's telling gcc that %eax might change when it does something that doesn't obviously change the variable
20:01:35 <AnMaster> right
20:02:17 <AnMaster> ais523, it obviously ignore the bit about the "not store in a register", I bet that it won't work with longjmp
20:02:33 <AnMaster> also, could you pass this pointer around?
20:02:43 <ehird> yes
20:02:45 <AnMaster> or cast the pointer to an int?
20:02:45 <ehird> also, no
20:02:47 <ais523> AnMaster: it isn't a pointer
20:02:50 <ehird> ais523: yes it is
20:02:55 <ais523> int *eax means that eax stores an int*
20:02:55 <AnMaster> it looks like that though
20:02:55 <ehird> volatile int *eax __asm__("%eax");
20:03:08 <ais523> not that you can do &eax and get a sensible value
20:03:15 <ais523> the variable has a pointer type, but it can't be pointed to
20:03:18 <ehird> ah
20:03:19 <ehird> well, yes
20:03:30 <AnMaster> yes of course it can't work like that in the machine code
20:03:35 <AnMaster> but
20:03:44 <AnMaster> memory mapped CPU registers would be fun
20:03:53 <fizzie> My GCC info pages say "5.40.2 Specifying Registers for Local Variables -- You can define a local register variable with a specified register like this: register int *foo asm ("a5");".
20:04:04 <AnMaster> I have heard of register mapped memory before
20:04:11 <ehird> isn't that an overloading of "register", fizzie?
20:04:14 <AnMaster> but the other way around, no
20:04:46 <fizzie> Well, wouldn't using "volatile int *eax __asm__("foo")" be an overloading of volatile?
20:04:54 <AnMaster> fizzie, err I think that means that the register will be reserved for that variable
20:05:05 <ehird> fizzie: no?
20:05:16 <AnMaster> fizzie, which isn't same as "lets see what is in this register anyway"
20:05:55 <fizzie> Well, that's the only sort of "explicit register names for variables" I could find in GCC docs with a quick glance.
20:06:19 <AnMaster> fizzie, but as far as I know the meaning is quite different
20:07:07 <fizzie> Well, it doesn't reserve the register for that value except for where it's live, but I guess it is a bit different.
20:07:56 -!- KingOfKarlsruhe has joined.
20:08:22 <fizzie> I just can't find in the docs any references to "here's how you declare a variable which will read whatever eax is, but not reserve eax if you store something in it".
20:08:48 <kerlo> Puff of cream.
20:08:49 -!- kerlobot has quit (Read error: 104 (Connection reset by peer)).
20:09:00 <ais523> fizzie: that's not done via a variable, I think
20:09:13 <ais523> you want to give an asm command with a constraint to read eax without reserving it
20:09:33 <ais523> OTOH, if you do that, there's quite a chance that the compiler will put the variable you're trying to copy to in eax, to save a command
20:10:35 <fizzie> Yes, well, if that's the case, I don't see how that "volatile int *eax" thing is different. It sounds like it would just tell GCC to explicitly use the eax register for storing values stored in that variable.
20:10:56 <AnMaster> ais523, if you didn't do that then volatile makes no sense since it wouldn't change
20:11:14 <ais523> fizzie: the question is, really, what exactly are you trying to do?
20:11:35 <fizzie> I'm trying to understand what you are speaking of. :p
20:12:01 <fizzie> And what that "volatile int *eax" was all about, since the only similar form I'm aware of is the "register int *eax asm("eax");" thing.
20:12:19 <ais523> actually, doing it with register is more common IIRC
20:12:23 <ais523> and I think that's the form I saw
20:12:25 <ehird> hm. ok
20:12:55 <AnMaster> that would make a lot more sense
20:29:47 -!- kar8nga has joined.
20:29:47 -!- kar8nga has quit (Read error: 104 (Connection reset by peer)).
20:30:10 -!- kar8nga has joined.
20:30:10 -!- kar8nga has quit (Read error: 54 (Connection reset by peer)).
20:31:09 -!- kar8nga has joined.
20:31:09 -!- kar8nga has quit (Read error: 104 (Connection reset by peer)).
20:31:26 -!- kar8nga has joined.
20:31:26 -!- kar8nga has quit (Read error: 54 (Connection reset by peer)).
20:31:44 -!- kar8nga has joined.
20:31:44 -!- kar8nga has quit (Read error: 131 (Connection reset by peer)).
20:32:23 -!- kar8nga has joined.
20:32:23 -!- kar8nga has quit (Read error: 104 (Connection reset by peer)).
20:33:20 -!- kar8nga has joined.
20:33:20 -!- kar8nga has quit (Read error: 104 (Connection reset by peer)).
20:33:59 -!- kar8nga has joined.
20:33:59 -!- kar8nga has quit (Read error: 104 (Connection reset by peer)).
20:34:18 -!- kar8nga has joined.
20:34:18 -!- kar8nga has quit (Read error: 54 (Connection reset by peer)).
20:34:59 -!- kar8nga has joined.
20:34:59 -!- kar8nga has quit (Read error: 54 (Connection reset by peer)).
20:35:16 -!- kar8nga has joined.
20:35:16 -!- kar8nga has quit (Read error: 131 (Connection reset by peer)).
20:36:04 -!- kar8nga has joined.
20:36:04 -!- kar8nga has quit (Read error: 104 (Connection reset by peer)).
20:36:21 -!- kar8nga has joined.
20:36:21 -!- kar8nga has quit (Read error: 54 (Connection reset by peer)).
20:36:49 -!- kar8nga has joined.
20:36:49 -!- kar8nga has quit (Read error: 104 (Connection reset by peer)).
20:37:24 -!- kar8nga has joined.
20:37:24 -!- kar8nga has quit (Read error: 104 (Connection reset by peer)).
20:38:02 <flexo> hmm.
20:38:10 <ais523> well, that's about 2/3 of a screenful of quitjoin spam
20:38:22 -!- kar8nga has joined.
20:38:22 -!- kar8nga has quit (Read error: 54 (Connection reset by peer)).
20:38:28 <flexo> i suppose it depends on your screensize
20:39:00 -!- kar8nga has joined.
20:39:01 -!- kar8nga has quit (Read error: 104 (Connection reset by peer)).
20:39:06 <oerjan> 1/1, says i
20:39:15 -!- kar8nga has joined.
20:39:15 -!- kar8nga has quit (Read error: 54 (Connection reset by peer)).
20:39:49 -!- kar8nga has joined.
20:39:49 -!- kar8nga has quit (Read error: 131 (Connection reset by peer)).
20:40:07 <ais523> a screenful now, with only 4 lines interrupting it
20:40:22 <ais523> now, banning someone for unintentional quitjoin spam is too much, I think
20:40:29 <ais523> could we reverse-ban kar8nga?
20:40:33 <ais523> to stop them parting?
20:40:35 <ais523> that would also stop the spam
20:41:11 <oerjan> it's not part, it's quit
20:41:17 <ais523> well, stop them quitting too
20:41:36 -!- kar8nga has joined.
20:41:36 -!- kar8nga has quit (Read error: 54 (Connection reset by peer)).
20:41:37 * oerjan swats ais523 -----###
20:41:45 <ais523> ow
20:41:54 -!- kar8nga has joined.
20:41:54 -!- kar8nga has quit (Read error: 54 (Connection reset by peer)).
20:42:08 -!- kar8nga has joined.
20:42:08 -!- kar8nga has quit (Read error: 131 (Connection reset by peer)).
20:42:17 <oerjan> i would swat kar8nga, but he isn't here long enough at a time
20:42:27 <fizzie> Reminds me of that Hotel California song. "You can /quit any time you like / but you can never leave."
20:42:33 <fizzie> The reverse-banning, that is.
20:42:50 -!- kar8nga has joined.
20:42:50 -!- kar8nga has quit (Read error: 104 (Connection reset by peer)).
20:43:55 -!- kar8nga has joined.
20:43:55 -!- kar8nga has quit (Read error: 104 (Connection reset by peer)).
20:44:34 <fizzie> Maybe if I do a five-minute ban, his/her client will not try to rejoin after failing once.
20:44:37 -!- kar8nga has joined.
20:44:37 -!- kar8nga has quit (Read error: 54 (Connection reset by peer)).
20:44:45 -!- ChanServ has set channel mode: +o fizzie.
20:45:03 -!- fizzie has set channel mode: +b kar8nga!*@*.
20:45:26 <ehird> fizzie: shock!
20:45:28 <ehird> actual op powers!
20:45:32 <ehird> never do this again :-P
20:45:50 <join> He is all powerful
20:45:54 <join> Bow to him!
20:45:55 <join> Also
20:45:59 * ais523 is op-striken
20:45:59 -!- join has changed nick to Slereah.
20:46:01 <ais523> *stricken
20:46:08 <Slereah> *chicken
20:46:09 <ais523> Slereah: how did you end up with the nick "join", anyway?
20:46:09 <ehird> hey fizzie
20:46:11 <ehird> op me!
20:46:21 <ais523> ehird: you know how badly that went last time...
20:46:22 <oerjan> *thicken
20:46:31 <ehird> ais523: yes, I wrote a bot to keep me an op :D
20:46:34 <Slereah> ais523 : You know when your nick is registered and you connect the server?
20:46:37 <ehird> and lament de-opped it :'(
20:46:44 <Slereah> It puts "/nick" as your default line
20:46:49 <ais523> oh
20:46:56 <Slereah> And I entered /join #esoteric
20:46:59 <ais523> well, in that case I'm doubly-shocked that nobody has taken join yet
20:47:01 <ais523> besides, mine doesn't
20:47:03 <ais523> it just tries ais523_
20:47:05 <ais523> then ais523__
20:47:11 <ais523> then prompts, I think, in a dialog box
20:47:13 -!- fizzie has set channel mode: -b kar8nga!*@*.
20:47:15 <Slereah> It's different, ais523
20:47:22 <Slereah> Because I actually stay Slereah
20:47:35 <Slereah> Because Freenode doesn't actually enforce registered nickls
20:47:39 <ais523> oh, just joining with a nick registered by someone else
20:47:45 <ais523> and Freenode does, but only on request from the nick's owner
20:47:56 <ais523> you can tell NickServ to enforce your nick, but hardly anyone ever does
20:48:09 -!- fizzie has set channel mode: -o fizzie.
20:48:13 -!- Slereah has changed nick to moot.
20:48:16 <moot> :D
20:48:18 <moot> Bow!
20:48:29 <ehird> go away, little girl
20:48:30 <moot> Hell, moot is actually registered!
20:48:36 <ais523> fizzie: you deopped fizzie? What did they do wrong?
20:48:40 <oerjan> that was a moot question
20:48:47 -!- moot has changed nick to Slereah.
20:48:56 <ehird> ais523: /me recalls deopping AnMaster in #ESO because he opped me without first asking for permission from an op
20:49:04 <fizzie> ais523: Senseless banning of poor, defenseless kar8nga.
21:03:44 <AnMaster> <Slereah> It puts "/nick" as your default line <-- what client?
21:03:47 <AnMaster> mine never does that
21:04:18 <ehird> mIRC
21:04:19 <ehird> probably
21:04:23 <AnMaster> hm ok
21:04:28 <Slereah> mIRC, yeah
21:04:31 <ehird> (mIRC is actually a good IRC client, despite being Windows software)
21:05:00 <Slereah> Or use Insurgent Sysreset, if you're an /i/nsurgent :D
21:05:34 <ehird> 21:05 <Twitter> Error(404): #twitter Your message is 142 characters long. Your message was not sent.
21:05:41 <ehird> Stupid artificial restrictions
21:05:52 * AnMaster registers the nick join btw
21:05:59 <ehird> hey
21:06:01 <Slereah> Oh you
21:06:01 <ehird> that's not very nice
21:06:04 <ehird> it's Slereah's
21:06:11 <AnMaster> Slereah, he forgot to register it
21:06:15 <ehird> so?
21:06:17 <ehird> still jackassy
21:06:24 <ais523> someone needed to register it
21:06:31 <ehird> let Slereah, then
21:06:34 <AnMaster> ehird, I waited several hours
21:06:40 <AnMaster> and he didn't register it
21:06:40 <ais523> and it isn't Slereah's nick really, Slereah made it clear that it was by accident
21:06:42 <ehird> without telling him you were going to.
21:06:44 <AnMaster> so his own fault
21:06:47 <ehird> ...
21:06:50 <ehird> you're an ass.
21:06:51 <AnMaster> ehird, and?
21:06:55 <AnMaster> no I'm not you are
21:07:00 <AnMaster> you took otpbot
21:07:03 <AnMaster> without telling me
21:07:09 <ehird> ...otpbot was my name.
21:07:15 <AnMaster> ehird, no it was mine, I wanted it
21:07:20 <ais523> I didn't even realise there was an otpbot
21:07:21 <AnMaster> same logic sorry
21:07:26 <AnMaster> ais523, there isn't
21:07:27 <ehird> I came up with otpbot _before_ you did.
21:07:30 <AnMaster> he used optbot
21:07:31 <AnMaster> in the end
21:07:35 <ehird> So only "same logic" if you're an idiot.
21:07:38 <ehird> Wait a second.
21:07:42 <AnMaster> but I wanted it for otpbot as in Erlang/OTP
21:08:16 <AnMaster> 22:05 -NickServ(NickServ@services.)- 1 failed login since Jan 18 21:05:10 2009.
21:08:16 <AnMaster> 22:05 -NickServ(NickServ@services.)- Last failed attempt from: Cats!n=92825d6c@Pantheon.Kanotix.com on Jan 13 18:10:37 2009.
21:08:18 <AnMaster> interesting
21:08:25 * ais523 notes that tusho and ehird are different people according to NickServ
21:08:31 <ehird> 21:07 <AnMaster> but I wanted it for otpbot as in Erlang/OTP
21:08:35 <ehird> you wanted it _afterwards_
21:08:35 <AnMaster> (oh yes I own that nick, used it for a AYB joke)
21:08:44 <ehird> whereas you only regisered join because you saw Slereah using it
21:08:45 <AnMaster> ehird, I had plans long before
21:08:52 <ehird> uh-huh.
21:09:05 <ehird> that's about as verifiable as when i claimed I came up with the name cfunge first, AnMaster
21:09:06 -!- BeholdMyGlory has quit (Connection timed out).
21:09:19 <AnMaster> ehird, oh you admit then?
21:09:23 <AnMaster> great
21:09:25 <AnMaster> afk
21:09:36 <ehird> bye, jackass
21:10:53 <Slereah> Thank goodness, VIP is here to guide you in these troubled times :
21:10:54 <Slereah> http://membres.lycos.fr/bewulf/Divers7/Take%20it%20easy.jpg
21:11:17 <ehird> i'm not angry when I call people asses.
21:11:28 <ehird> getting angry over assholes would be counterproductive
21:12:03 <AnMaster> ehird, tell me, why are you so fond of donkeys?
21:12:15 <Slereah> Because of their huge penises
21:12:16 <oklopol> :DDDDDDDDDDDDDDDDD
21:12:19 <ehird> congratulations. you are the 1 billionth person to make that joke, AnMaster.
21:12:26 <ehird> you win £-100. pay up.
21:12:33 <AnMaster> ehird, alas no
21:12:48 <AnMaster> ehird, I'm the 1 billionth + 1 person
21:13:01 <oklopol> x'DDDDD
21:13:03 <AnMaster> you missed that one over there >>
21:13:09 <Slereah> GregorR?
21:13:17 <AnMaster> Slereah, no, in the other room
21:13:17 * ais523 wonders about making a map of UseNet
21:13:19 <ais523> *Usenet
21:13:21 <Slereah> Owait, now it points at fizzie
21:13:23 -!- MigoMipo has changed nick to QwertUiop.
21:13:32 <oklopol> Slereah: indecisive asses are the worst.
21:13:34 <ais523> after all, we know that comp.lang.c++ is two rooms down the corridor on the left from comp.lang.c
21:13:36 -!- QwertUiop has changed nick to MigoMipo2.
21:13:43 <ais523> there may be enough of those references to draw a map of the whole thing
21:13:55 <oklopol> ais523: wut?
21:14:02 <AnMaster> ais523, what like alt.porn alt.porn.makes.no.sense (I forgot the details, it was something like alt.bin.whatever.sex-something.clinton iirc)
21:14:04 -!- MigoMipo2 has changed nick to MigoMipo.
21:14:09 * oklopol wonders what this usenet is everyone keeps referring to :P
21:14:12 <AnMaster> or wait no
21:14:23 <ais523> oklopol: you've never heard of usenet?
21:14:24 <Slereah> Usenet is where you use the internet
21:14:32 <oklopol> ais523: yes, tons of times.
21:14:37 <AnMaster> ais523, alt.bin.pic.sex.parachute or such
21:14:42 <Slereah> I used to go to usenet, because the first French furry group was thar :o
21:14:43 <oklopol> because people keep referring to it
21:14:51 <Slereah> Usenet is pretty much shit, though
21:14:51 <AnMaster> ais523, make whatever sense you want of that
21:14:53 <ais523> oklopol: do you know how to access it?
21:14:56 <AnMaster> I didn't check what it was
21:14:59 <oklopol> ais523: no
21:15:03 <ais523> AnMaster: alt.binaries., surely?
21:15:05 <ehird> How come most /b/tards are furries?
21:15:07 <AnMaster> ais523, yes maybe
21:15:08 <ehird> Hypocrites :-P
21:15:12 <AnMaster> ais523, I don't use usenet a lot
21:15:16 <ais523> oklopol: you can view it via groups.google.com
21:15:21 <ais523> have a look at alt.lang.intercal some time
21:15:23 <AnMaster> ais523, not the binaries
21:15:25 <AnMaster> iirc
21:15:27 <ais523> it's the esolang group, but it isn't very active
21:15:27 <AnMaster> however
21:15:29 <Slereah> ehird : Remember the credo!
21:15:41 <Slereah> http://membres.lycos.fr/bewulf/Divers/1167175439619.gif
21:16:03 <ais523> Usenet is the last bastion of the True Spirit of the Internet
21:16:13 <ais523> even if there was that terrible accident where it got stuck in September 2003
21:16:19 <ais523> *1993
21:16:22 <Slereah> What is the true spirit of the internet, ais523?
21:16:31 <ais523> Slereah: being able to talk to other people about anything you want
21:16:35 <ais523> without problems
21:16:40 <Slereah> Define "problems"
21:16:54 <AnMaster> problems != flamewars
21:16:56 <AnMaster> :P
21:17:02 <ais523> well, you get flamewars on Usenet too
21:17:07 <Slereah> Yeah.
21:17:10 <ais523> but nobody can be blocked from it, pretty much
21:17:32 <ais523> the main tool for debate de-escalation there is the equivalent of /ignore
21:17:37 <ais523> if you don't like what someone's saying, ignore them
21:17:40 <AnMaster> ais523, btw, if you have ipv6, xs4all provides a good usenet read only server, very fast and very complete. Doesn't filter binary channels either. And it is at least available to users of the SixXS tunnel
21:17:41 <ais523> and talk to the people you do like
21:17:43 <AnMaster> not sure about other ipv6
21:17:54 <Slereah> http://encyclopediadramatica.com/Alt.tasteless
21:17:55 <ais523> AnMaster: I don't, the computer's fine but the network here can't handle it
21:18:02 <AnMaster> ais523, tunnel?
21:18:03 <Slereah> Why hello there, I am internet of the past.
21:18:10 <AnMaster> that is what I use...
21:19:14 <Slereah> "In 1993, alt.tasteless members orchestrated one of the first forum invasions, in which rec.pets.cats (a newsgroup for cat-lovers) was mercilessly trolled."
21:19:29 <ais523> before or after september/
21:19:35 <Slereah> End of august :D
21:20:23 -!- MigoMipo has left (?).
21:20:40 <AnMaster> Slereah, where does it say that?
21:21:24 <Slereah> There's a link to the thread : http://groups.google.com/group/alt.tasteless/browse_thread/thread/3f265cf9ef49d3e1
21:21:45 <AnMaster> Slereah, doesn't work for me, it refuses even when I click the 'yes i'm sure' button
21:21:55 <Slereah> That's because you are underaged
21:21:57 <Slereah> Noti boy
21:22:02 <ais523> Google have been doing a lot of archiving of Usenet
21:22:02 <AnMaster> Slereah, I'm not.
21:22:13 <ais523> they even bought up all the Usenet archives from before they started
21:22:16 <ais523> although I'm not entirely sure why
21:22:21 -!- FireFly has quit ("Later").
21:22:26 -!- KingOfKarlsruhe has quit (Remote closed the connection).
21:22:33 <ais523> hmm... deja.com still redirects to groups.google.com, after all this time
21:22:46 <AnMaster> deja.com?
21:22:50 <AnMaster> wtf would that be
21:22:53 <ais523> AnMaster: Usenet archivers
21:22:56 <AnMaster> heh
21:22:59 <ais523> they got bought out by Google
21:23:12 <AnMaster> ais523, well how much would the domain cost google? relatively speaking
21:23:19 <AnMaster> it isn't like they would notice
21:23:25 <ais523> they got the domain free with the company
21:23:30 <ais523> so they may as well maintain it, I suppose
21:23:34 <AnMaster> ais523, well they have to renew it
21:23:38 <ais523> in case anyone still wants to visit Deja's archives for some reason
21:23:57 <ais523> or in case someone also got stuck in September 1993 and has only just come out of their coma
21:23:57 <AnMaster> ais523, also I hope links still work
21:24:02 <AnMaster> permanent url you know
21:25:11 <Slereah> http://encyclopediadramatica.com/Meow_Wars
21:25:12 <Slereah> :D
21:26:58 <AnMaster> why are you linking to that horrible site all the time
21:27:18 <Slereah> You must face your demons, AnMaster
21:27:26 <AnMaster> Slereah, ?
21:27:32 <AnMaster> that sounds like a quote from something
21:28:04 -!- oerjan has quit ("Good night").
21:28:40 <Slereah> It's a stock movie quote, AnMaster
21:28:48 <Slereah> It is not a quote of anything in particular
21:29:16 <AnMaster> hm ok
21:29:19 <AnMaster> that
21:29:25 <AnMaster> *that reminds me
21:29:38 * AnMaster checks if there has been a new beta of that open source game yet
21:29:54 <AnMaster> yes!, no activity for several months before, finally a new beta
21:30:39 <AnMaster> Wait....
21:30:43 <AnMaster> That is no beta...
21:30:52 <AnMaster> that is a 1.0 release!
21:30:52 <AnMaster> :D
21:31:32 <fizzie> It is sad that the first association for any sentence of "that is no X" is the "that is no moon" thing.
21:31:45 <AnMaster> fizzie, that was intentional
21:31:57 -!- FireFly has joined.
21:31:59 <ais523> AnMaster: which game?
21:32:11 <AnMaster> ais523, blob wars: blob and conquer
21:32:16 <AnMaster> needs 3D acceleration
21:32:21 <ais523> that's a pretty ridiculous name...
21:32:29 <AnMaster> ais523, yes, but quite playable IMO
21:32:36 <ais523> what genre?
21:32:59 <AnMaster> ais523, well previous one was jump and run with guns. This one is third person shooter 3D
21:33:11 <ais523> hmm... I don't generally play shooter games
21:33:20 <AnMaster> ais523, and well if I played table top RPGs I would play Toons
21:33:21 <ais523> I used to play platform games a bit, but rarely do nowadays
21:33:34 <AnMaster> Saving to: `download.php?proj=blobAndConquer&file=blobAndConquer-1.05-1.tar.gz&type=zip'
21:33:36 <AnMaster> -_-
21:33:43 <ais523> that's quite a filename
21:33:53 <AnMaster> yes
21:34:14 <ais523> it reminds me of the dontcountme=s that used to be at the end of URLs on Wikipedia
21:34:24 <AnMaster> ais523, what? I never seen that
21:34:27 <AnMaster> also what was it for
21:34:27 <ais523> to avoid triggering the page counters, which ignored URLs ending in s because they thought it was js or css
21:34:40 <ais523> it wasn't on the actual pages, but on things that were XHRed via scripts
21:34:41 <AnMaster> ais523, err
21:34:53 <ais523> they have better counters now
21:34:57 <ais523> based on sampling the HTTP logs
21:35:16 <ais523> and JS which loads images a small percentage of the time, to avoid Wikipedia DDOSing its own servers
21:35:24 <AnMaster> ais523, oh that reminds me... the main.css is included as main.css?164
21:35:25 <AnMaster> when I look
21:35:28 <AnMaster> on a wiki I run
21:35:31 <AnMaster> any idea why?
21:35:35 <ais523> that's an anti-cache-problems tool
21:35:37 <AnMaster> since main.css is a static file
21:35:48 <AnMaster> ais523, err I like clients to cache it
21:35:50 <ais523> it may be static, but it can be changed by upgrades
21:35:52 <AnMaster> since it is using a lot of my bw
21:35:56 <ais523> clients are told to cache it aggressively
21:36:04 <ais523> but if it changes across an upgrade, the 164 changes to 165
21:36:05 <AnMaster> aha
21:36:07 <ais523> so clients will get a new copy
21:36:11 <AnMaster> right
21:36:18 <ais523> the caching information is hidden in the URL
21:36:21 <ais523> effectively
21:36:26 <AnMaster> ais523, also where are they told to cache it aggressively?
21:36:33 <ais523> in the HTTP headers, I think
21:36:36 <AnMaster> since it is a static file
21:36:41 <AnMaster> it would depend on server setup
21:36:49 <ais523> yes, it dose
21:36:51 <ais523> *does
21:36:54 <AnMaster> and since it is shared hosting I have no control over that
21:36:59 <ais523> but remember that MediaWiki was invented for Wikimedia, who do have control over that
21:37:02 <AnMaster> nor did I see anything in mediawiki manual
21:37:12 <AnMaster> ais523, I think it can be done in .htaccess
21:38:03 <AnMaster> ais523, also ehird was surprised the supertux site had around 15k hits on images *per day*
21:38:10 <AnMaster> if you know of that game
21:38:26 <ais523> I've vaguely heard of it, but no more than that
21:38:30 <ais523> don't even know what it's about
21:38:33 <ais523> but the name strongly suggests Linux
21:38:38 <AnMaster> ais523, super mario style
21:39:50 <AnMaster> ais523, and I'm a developer on it. I talked to him about image hits because I was implementing anti-hotlinking since that was using quite some bw
21:40:14 <ais523> based on referrer?
21:40:53 <AnMaster> ais523, yes, and no blocking if empty referrer of course
21:40:58 <AnMaster> and allowing google image search and so on
21:42:03 <AnMaster> ais523, some people were linking screen shots, full size and then scaling it down to thumbnail in <img> tag
21:42:21 <ais523> AnMaster: and wasting their reader's bandwidth as well as yours
21:42:29 <ais523> what's your anti-hotlink image?
21:42:52 <AnMaster> ais523, a gif animation :D
21:42:54 <AnMaster> let me link it
21:43:07 <ais523> AnMaster: oh dear
21:43:12 <ais523> I'm not sure if I want to look at it
21:43:12 <AnMaster> ais523, http://supertux.lethargik.org/errors/img/nohot.gif
21:43:15 <ais523> can you describe it?
21:43:26 <AnMaster> ais523, too slow to cause epilepsy
21:43:28 <oklopol> haha awesome
21:43:30 <AnMaster> ais523, only text
21:43:35 <ais523> what does it say?
21:43:48 <AnMaster> "Please don't hotlink\nimages from this site"
21:43:53 <ais523> simple enough
21:43:59 <ais523> so why the animation?
21:44:04 <AnMaster> ais523, check it out
21:44:16 <AnMaster> it is not shock pic
21:44:17 <AnMaster> or such
21:44:26 <AnMaster> and it won't cause epilepsy, it is too slow for that
21:44:52 <AnMaster> ais523, well?
21:45:04 <ais523> AnMaster: it's just such a pain for me to load images from IRC
21:45:15 <AnMaster> ais523, ...
21:45:17 <ais523> besides, I don't see the animation
21:45:18 <ais523> I tried
21:45:21 <AnMaster> ais523, just copy and paste to the browser
21:45:23 <ais523> but my photo viewer prorgams don't show it
21:45:24 <AnMaster> ais523, it inverts
21:45:38 <ais523> I don't really like the colour scheme either, but I suppose that's the point
21:45:40 <AnMaster> ais523, as in text and bg colors change place
21:45:46 <AnMaster> every 5000 ms or something
21:45:57 <AnMaster> err 500*
21:45:57 <oklopol> more like every second
21:45:59 <AnMaster> probably
21:46:07 <oklopol> yeah 500
21:46:11 <AnMaster> oklopol, I remember it was 5 and some zero
21:46:13 <AnMaster> zeros*
21:46:49 <AnMaster> ais523, also gimp will show both as layers
21:46:51 -!- BeholdMyGlory has joined.
21:47:39 <AnMaster> Lovely: "This game contains scenes of gore"* (* which can be switched off)
21:48:18 <ehird> unreal tournament allows you to turn off the gore
21:48:23 <ehird> like, in case you're a kid playing it or something :|
21:49:17 <ehird> <AnMaster> why are you linking to that horrible site all the time
21:49:22 <ehird> ED is useful for internet culture.
21:50:02 <AnMaster> wish it wasn't written in it
21:50:24 <FireFly> Why are you writing in that horrible language all the time?
21:50:32 <AnMaster> FireFly, ?
21:50:39 <ehird> AnMaster: What? FireFly: lol
21:50:57 <FireFly> Well, for others esolangs are pretty horrible.. I guess it's the same with ED
21:50:59 <ais523> FireFly: which lang are you thinking of?
21:51:07 <ais523> ah, I see
21:51:21 <ehird> <AnMaster> wish it wasn't written in it
21:51:24 <ehird> can I have this in coherent form
21:51:26 <AnMaster> ehird, basically ED is written in /b/tard style a lot of the time. I mean compare the language used if wikipedia would discuss "lol" and if ED would.
21:51:36 <AnMaster> I haven't looked at the articles
21:51:48 <ehird> "I WISH AN INTERNET CULTURE COMPENDIUM DIDN'T TALK IN AN INTERNET CULTURE-RELATED STYLE"
21:52:01 <AnMaster> <ehird> ED is useful for internet culture. <AnMaster> wish it {ed} wasn't written in it {the style of that}
21:52:10 <AnMaster> ehird, correct.
21:52:13 <ehird> which is the most ridiculous complaint I've ever heard.
21:52:23 <AnMaster> ehird, also all the shock pics
21:52:35 <ehird> yeah. all the vast expanses of them.
21:52:46 * ais523 wonders if Wikipedia has an article on lol
21:52:48 <ais523> I'd guess yes
21:52:54 <ehird> ais523: it redirects to internet slang
21:52:59 <ais523> makes sense
21:53:06 <ais523> although teh gets its own article, IIRC
21:53:09 <ehird> anyway, most non-nsfw-related ED articlse are sfw. Well, not safe for owrk but not offensive.
21:53:18 <AnMaster> ais523, that should redirect to "the"
21:53:22 <ais523> AnMaster: no, it doesn't
21:53:28 <ais523> although there's a disambig header
21:53:29 <AnMaster> ais523, I didn't say it did
21:53:32 <ais523> http://en.wikipedia.org/wiki/Special:Search?go=Go&search=teh
21:53:35 <AnMaster> I said it *should*
21:53:36 <ehird> the typo has enough of its life to deserve an article, AnMaster
21:53:40 <ais523> the word has too much of its own culture
21:53:50 <AnMaster> ehird, Not notable!
21:53:52 <ehird> your own view of the way Things Should Be does not mean wikipedia shouldn't reflect reality
21:53:57 <ehird> AnMaster: no, very notable
21:54:00 <ehird> what you mean to say is, "I dislike it"
21:54:00 <ais523> oh no, it has an image now
21:54:19 <AnMaster> ehird, Missing reliable sources! Reads as advertisement! Is missing references!
21:54:26 <FireFly> "A typo on a poster."
21:54:38 <AnMaster> ehird, also no
21:54:49 <AnMaster> I was just imitating the style of wp
21:55:06 <ais523> I'm not entirely convinced the image adds to the article
21:55:16 <AnMaster> ais523, or that it is true
21:55:27 <ais523> but then, it's reasonably common to drop a random vaguely-relevant image into an article in the hope of meeting GA criteria
21:55:50 <AnMaster> "This image is of a poster, and the copyright for it is most likely owned by either the publisher or the creator of the work depicted. It is believed that the use of scaled-down, low-resolution images of posters " <-- um, so you can't take a pic of a cityscape containing any posters?
21:55:54 <AnMaster> that would be fscked
21:56:19 <AnMaster> I mean, it is public space
21:56:46 <ais523> AnMaster: it depends on what it's a picture of
21:56:52 <ais523> and which jurisdiction, and all sorts of things
21:57:00 <AnMaster> ais523, like how much of the image it covers?
21:57:03 <ais523> but you can't, say, take a photo of an advert and crop out the logo of the advertiser
21:57:16 <ais523> copyright law is really complex and confusing
21:57:42 <ais523> anyway, the general reasoning is to, on Wikipedia, avoid images which contain even a small amount of copyvio stuff, unless it's covered by fair use
21:57:52 <ais523> because purely free-licensed images are fine
21:57:56 <fizzie> Heh, "purpose of use" field in the fair use rationale blob: "The spelling error in the image is unique and it depictures the Teh article's subject."
21:58:03 <fizzie> Yes, it is an unique spelling error.
21:58:16 <ais523> a free-licensed image which depends on fair use for a few pixels is more debatable
21:58:25 <ais523> because there are ways in which it can't be modified
21:58:36 <ais523> fizzie: what's your opinion on "a unique" vs. "an unique"?
21:58:45 <ehird> it's a unique...
21:58:53 <ais523> I normally use "a unique", because the pronunciation of "unique" starts with a consonant, even though the word itself doesn't
21:59:06 <ehird> an unique is incorrect, i've never heard anyone say that
21:59:14 <ais523> I hear it quite a bit
21:59:49 <fizzie> My opinon is that I shouldn't have an opinion, being so very non-native speaker. And I would write it as "a unique", it's just that I caught myself only after the newline.
21:59:57 -!- GreaseMonkey has joined.
22:01:30 <oklopol> "a unique"
22:02:32 <ehird> oklopol: i want oklotalk - - bot ;-)
22:02:35 <ehird> in here ;-)
22:02:37 <ehird> tonight ;-)
22:02:38 <ehird> now ;-)
22:02:47 <fizzie> I blame the Finnish pronunciation where 'u' always sounds the same, and is always a vowel.
22:02:48 <ais523> preferably written in something stupid
22:02:52 <ehird> no
22:02:55 <ehird> it already exists
22:02:55 <ehird> :3
22:03:11 <ais523> fizzie: most languages are more logical than English
22:03:13 -!- ehird has set topic: IRC IRC IRC.
22:03:14 -!- bsmnt_bot has set topic: IRC IRC IRC | http://tunes.org/~nef/logs/esoteric.
22:03:18 <ais523> maybe that's why English does so well...
22:03:21 <ehird> ais523: do you like our auto-topic-setting?
22:03:27 <ais523> yes, very much
22:03:38 <ehird> it's the work of mizardx and I :D
22:03:43 -!- ais523 has set topic: IRC IRC IRC | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric.
22:03:53 * ais523 wonders if bsmnt_bot will add another
22:03:55 <ehird> it doesn't do anything if the logs are already in the topic
22:03:57 <ais523> apparantly not, though
22:04:03 <ais523> that would have made for a really amusing botloop
22:04:03 <bsmntbombdood> wut
22:04:05 -!- ehird has set topic: http://tunes.org/~nef/logs/esoteric ** so you can do arty things like this.
22:04:12 <ehird> bsmntbombdood: we taught bsmnt_bot to do this:
22:04:13 -!- ehird has set topic: aaaaaaa.
22:04:14 -!- bsmnt_bot has set topic: aaaaaaa | http://tunes.org/~nef/logs/esoteric.
22:04:21 <bsmntbombdood> oh
22:04:22 <ais523> bsmntbombdood: your bot has found itself a new usefulness
22:04:27 <ais523> ^bf ,[.,]!Test
22:04:27 <fungot> Test
22:04:28 -!- GreaseMonkey has set topic: aaaaaaa | http://tunes.org/~nef/logs/esoteric/penis.
22:04:46 <ais523> hmm... we'll have to dig the BF-in-bsmnt_bot out of the logs
22:04:46 <bsmntbombdood> so much for useful
22:04:53 <GreaseMonkey> ^ aren't you glad you don't use a tinyurl one?
22:05:03 <ehird> GreaseMonkey: ?
22:05:08 <ais523> I have a copy, but all the whitespace got corrupted
22:05:16 <ais523> and I don't think there's a way to automatically reconstruct it
22:05:17 <GreaseMonkey> because someone could always append to it and hijack it
22:05:28 <ais523> this, incidentally, is what caused my hatred of Python
22:05:29 <ehird> GreaseMonkey: ... what?
22:05:48 -!- ais523 has set topic: (a(:^)*S):^.
22:05:48 -!- bsmnt_bot has set topic: (a(:^)*S):^ | http://tunes.org/~nef/logs/esoteric.
22:05:50 <ehird> ais523: unsurprisingly, Python is not optimized for entering code over IRC.
22:05:54 <GreaseMonkey> e.g if you had tinyurl.com/esolog and someone managed to take /esologs for something then yeah
22:05:58 <ehird> crazy I know.
22:06:03 <ehird> GreaseMonkey: how about they could just change the topic...
22:06:22 <ais523> ^ul (a(:^)*S):^
22:06:23 <fungot> (a(:^)*S):^
22:06:24 <GreaseMonkey> what if there were a bot?
22:06:30 <ehird> GreaseMonkey: what?
22:06:37 <ais523> ~bf ,[.,]!Test
22:06:50 <GreaseMonkey> like, a bot to autoappend some crap?
22:07:02 <ehird> then we kick it.
22:07:38 <ais523> ^bf >,[>,.]<[<]+++++++++++++++++++++++++++++++++.>[.>]!>,[>,.]<[<]+++++++++++++++++++++++++++++++++.>[.>]
22:07:38 <fungot> ,[>,.]<[<]+++++++++++++++++++++++++++++++++.>[.>]
22:07:44 <ais523> hmm...
22:08:02 <ais523> ^bf >,[.>,]<[<]+++++++++++++++++++++++++++++++++.>[.>]!>,[>,.]<[<]+++++++++++++++++++++++++++++++++.>[.>]
22:08:03 <fungot> >,[>,.]<[<]+++++++++++++++++++++++++++++++++.>[.>]!>,[>,.]<[<]+++++++++++++++++++++++++++++++++.>[.>]
22:08:09 <ais523> ^bf >,[.>,]<[<]+++++++++++++++++++++++++++++++++.>[.>]!>,[.>,]<[<]+++++++++++++++++++++++++++++++++.>[.>]
22:08:09 <fungot> >,[.>,]<[<]+++++++++++++++++++++++++++++++++.>[.>]!>,[.>,]<[<]+++++++++++++++++++++++++++++++++.>[.>]
22:08:12 <ais523> that's better
22:08:20 <ais523> even though it's cheating, really
22:10:31 <AnMaster> <ais523> that would have made for a really amusing botloop3 <-- happened yesterday
22:10:37 <AnMaster> before they had it working
22:10:51 <fizzie> ehird: I think the point here was that since you can add any suffix to the log URL, if the bot it set to keep "tinyurl/foo" in the topic always it fails if someone gets "tinyurl/foobar" and sets that as the topic, without the bot adding the real URL. If you "just change the topic" you won't get rid of the real log URL.
22:11:08 <ehird> oh.
22:11:14 <ehird> well who cares, it's just for setting the topic easily
22:12:20 <fizzie> ChanServ could have a auto-append/prepend channel variables for that; there are 'topicappend' and 'topicprepend' commands, after all.
22:12:51 -!- MizardX has set topic: (a(:^)*S):^ | http://tunes.org/~nef/logs/esoteric/foo.
22:12:52 -!- bsmnt_bot has set topic: (a(:^)*S):^ | http://tunes.org/~nef/logs/esoteric/foo | http://tunes.org/~nef/logs/esoteric.
22:12:54 -!- bsmnt_bot has set topic: (a(:^)*S):^ | http://tunes.org/~nef/logs/esoteric/foo | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric.
22:12:58 -!- bsmnt_bot has set topic: (a(:^)*S):^ | http://tunes.org/~nef/logs/esoteric/foo | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric.
22:12:59 <MizardX> geh... again
22:13:01 <ehird> ...
22:13:02 -!- bsmnt_bot has set topic: (a(:^)*S):^ | http://tunes.org/~nef/logs/esoteric/foo | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric.
22:13:06 <ehird> sigh
22:13:06 -!- bsmnt_bot has set topic: (a(:^)*S):^ | http://tunes.org/~nef/logs/esoteric/foo | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric.
22:13:07 <ehird> MizardX
22:13:09 <ehird> why did you eff with it :P
22:13:11 -!- bsmnt_bot has set topic: (a(:^)*S):^ | http://tunes.org/~nef/logs/esoteric/foo | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric.
22:13:13 <ehird> ~raw QUIT
22:13:16 -!- bsmnt_bot has set topic: (a(:^)*S):^ | http://tunes.org/~nef/logs/esoteric/foo | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric.
22:13:16 <ehird> ~exec self.raw("QUIT")
22:13:20 <ehird> ~exec self.raw("QUIT")
22:13:21 -!- bsmnt_bot has set topic: (a(:^)*S):^ | http://tunes.org/~nef/logs/esoteric/foo | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes.org/~nef/logs/esoteric | http://tunes..
22:13:22 -!- ChanServ has set channel mode: +o fizzie.
22:13:23 -!- fizzie has set channel mode: +t.
22:13:24 -!- ChanServ has set channel mode: -t.
22:13:27 -!- bsmnt_bot has quit.
22:13:29 <ehird> fizzie: it'll stop
22:13:30 -!- bsmnt_bot has joined.
22:13:30 <ehird> there we go
22:13:47 <fizzie> Well, +t would've been quicker, maybe. Except that chanserv removed it since it's in the mlock.
22:13:55 -!- bsmnt_bot has quit (Client Quit).
22:13:59 <ais523> it's intereseting to have a channel mlocked at -t
22:14:02 <ais523> *interesting
22:14:07 <ehird> ... come back, bsmnt_bot
22:14:09 <ehird> ...
22:14:20 <ehird> ... shit
22:14:42 <oklopol> fizzie: can i call you overlord while you're op?
22:14:59 <fizzie> oklopol: You can call me overlord whenever you want, I don't mind.
22:15:01 -!- fizzie has set topic: (a(:^)*S):^.
22:15:13 <oklopol> fizzie: i'll keep that in mind.
22:15:23 <fizzie> I just have to test that chanserv topicprepend thing, I want to see if it adds a separator or something.
22:15:41 -!- ChanServ has set topic: fancy! | (a(:^)*S):^.
22:15:43 <ehird> bots are always the correct solution
22:15:48 -!- ehird has set topic: aa.
22:15:52 <ehird> Failure
22:15:53 <fizzie> Heh, yes, it added that | there.
22:16:39 <fizzie> It's not an auto-append, though. I'm not sure what it is for, really.
22:17:43 <ais523> fizzie: changing the topic when you aren't opped and the channel is +t
22:17:59 <fizzie> Right, I guess there's that.
22:18:14 <ehird> hey, who wants to fix bsmnt_bot
22:18:18 <bsmntbombdood> not i
22:18:27 <ehird> :<
22:18:30 <bsmntbombdood> i'm writing a irc bot wrapper in awk
22:18:32 <bsmntbombdood> :P
22:18:35 <ehird> ouch
22:20:11 -!- GreaseMonkey has quit ("Client Excited").
22:21:48 <fizzie> Heh, interesting typo: "/frop gizzie"
22:21:51 -!- fizzie has set channel mode: -o fizzie.
22:22:10 -!- AnMaster has set topic: http://tunes.org/~nef/logs/esoteric.
22:22:19 <ais523> fizzie: your hand was too far to the right
22:22:30 <AnMaster> also
22:22:34 <AnMaster> why this
22:22:45 <AnMaster> I mean how hard could it be
22:22:54 <ehird> ?
22:23:04 <fizzie> ais523: Maybe my keyboard was just too far to the left. It's not always my fault!
22:23:05 <AnMaster> if (!substr(topic, "http://tunes.org/~nef/logs/esoteric") topic += "| http://tunes.org/~nef/logs/esoteric"
22:23:06 <AnMaster> basically
22:23:08 <AnMaster> well a space too
22:23:15 <ehird> AnMaster: because we have to write it one line in python
22:23:21 <ais523> ehird: that's easy enough
22:23:22 <ehird> also, MizardX effed up the disconnection logic
22:23:27 <AnMaster> right
22:23:27 <ehird> so it's sitting there using up cycles
22:23:30 <ehird> instead of reconnecting
22:23:41 <AnMaster> ehird, kill it and restart it clean?
22:23:49 <ehird> well k
22:23:55 -!- bsmntbombdood__ has joined.
22:24:00 <ais523> just use the exec("""if !substr(topic, "http://tunes.org/~nef/logs/esoteric"):\n topic += "| http://tunes.org/~nef/logs/esoteric"\n""") trick
22:24:11 <bsmntbombdood__> dc is the best irc client EVAR
22:24:14 <ais523> that's how I wrote the BF interp in the first place
22:24:25 <ais523> bsmntbombdood: dc the reverse-polish-notation calculator?
22:24:33 <bsmntbombdood> lol
22:24:47 <bsmntbombdood__> i mean to say nc
22:24:52 <ehird> hey bsmntbombdood__
22:24:56 <ehird> how do you start bsmnt_bot again
22:25:01 <bsmntbombdood> run start.sh
22:25:02 <bsmntbombdood> lol
22:25:08 <ehird> does that start the chroot
22:25:15 <bsmntbombdood> iirc
22:25:30 <ehird> ah, yep
22:25:47 -!- bsmnt_bot has joined.
22:27:17 <fizzie> I have in my logs a whitespace-fixed version of that bsmnt_bot brainfuck. Will test.
22:27:33 <fizzie> ~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"
22:27:46 <fizzie> ~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)"
22:27:53 <fizzie> ~exec exec(self.bf3+self.bf4)
22:27:54 <ehird> where is bf1-2
22:27:59 <fizzie> ~bf ++++++[->++++++<]>.
22:27:59 <bsmnt_bot> $
22:28:06 <ehird> ~bf ++++++++++++++++++++++++++++++++++++++++++++++.
22:28:06 <bsmnt_bot> .
22:28:12 <ehird> ~bf +++++++++++++++++++.
22:28:12 <bsmnt_bot>
22:28:21 <ehird> ok, who wants to make it \nQUIT? :P
22:28:27 <ehird> although you can easily do that with ~exec
22:28:28 <ais523> ~bf ,[.,]!Hello, world!
22:28:29 <bsmnt_bot> Hello, world!
22:28:32 <ehird> hey, someone make the callbacks persist
22:28:35 <ehird> its irritating having them not
22:29:03 <ais523> wow, one-line non-lambda based Python is really weird to read
22:29:06 <ais523> even when I wrote it...
22:29:12 <ais523> all those varying amounts of spaces
22:29:24 * ais523 thinks this is the only legitimate use-case they've ever seen for one-space indentation
22:30:45 <ehird> what bsmnt_bot needs is bracism
22:30:57 <ehird> def bfarg(x,y): { p = y.group(2); ... }
22:32:00 * ais523 wonders what a Python purist would say if they were watching this discussion
22:32:10 <ais523> couldn't you just start with from __future__ import braces; ?
22:32:19 <ais523> if it worked quickly enough, you wouldn't even need the newline after it
22:32:25 <ais523> just a semicolon
22:32:42 <ehird> :D
22:32:50 <ehird> ais523: Pythoners are generally an assholish lot.
22:32:55 <ehird> So are Schemers.
22:33:04 <ehird> And Lispers in general; #lisp is awful.
22:33:38 <ais523> use ACME::Pythonic; requires the one last semicolon after the statement, unfortunately
22:33:43 <ais523> but you don't need any semicolons from then on
22:34:03 <ehird> anyway, bracism is a nice little hack. I think I will now reimplement it.
22:34:07 <AnMaster> <ehird> ais523: Pythoners are generally an assholish lot. <ehird> So are Schemers. <ehird> And Lispers in general; #lisp is awful. <-- what about perlers?
22:34:21 <AnMaster> I noticed the less sane the language is the nicer the people are in the support channels
22:34:23 <ehird> AnMaster: Perlers are bathshit insane, but very friendly, apart from in #perl, where they keep the assholes.
22:34:37 <ais523> AnMaster: and the INTERCAL support channel is very friendl
22:34:39 <ais523> *y
22:34:42 <ais523> even though it's mostly just me
22:34:42 <AnMaster> ehird, we are all insane in here
22:34:49 <AnMaster> and very friendly 99% of the time
22:34:59 <ehird> Yeah, #esoteric is the nicest channel on IRC.
22:35:06 <ehird> #haskell is about equal, though.
22:35:11 <AnMaster> ais523, also you missed some awful puns I made today
22:35:13 <ehird> I think that says something about Haskell.
22:35:21 <AnMaster> ehird, haha
22:35:36 <ais523> ehird: yep, I think Haskell is pretty insane too by common-language standards
22:35:41 <ais523> but insane in a "wow, that's so elegant" way
22:35:54 <ehird> Scheme is pretty esoteric, too.
22:35:54 <AnMaster> ais523, yes, but lisp is kind of like that too IMO
22:35:55 <AnMaster> :/
22:35:59 <ehird> Well.
22:36:03 * ais523 joins #vhdl, to see what they're like
22:36:04 <ehird> Common Lisp is kind of unelegant.
22:36:08 <AnMaster> ais523, tell us
22:36:10 <ehird> *inelegant
22:36:12 <ais523> however, it seems to be a mostly idle channel
22:36:13 <AnMaster> ehird, that is true
22:36:19 <AnMaster> ehird, elisp vs. clisp
22:36:21 <AnMaster> which is worst?
22:36:22 <ais523> I'm going to ask a question to see how they react
22:36:25 <ehird> AnMaster: elisp
22:36:27 <ehird> ais523: "Verilog questions possibly answered but only if we get a cookie (Remillard will answer Verilog questions for a Chipotle burrito.) "
22:36:29 <ehird> sounds friendly
22:36:30 <AnMaster> hm ok
22:36:43 <bsmntbombdood> ergh i can't figure out what i'm doing wrong
22:37:25 <ehird> AnMaster: elisp is _dynamically scoped_
22:37:28 <ehird> that's hard to beat.
22:37:37 <AnMaster> ehird, ok, but isn't bf too=
22:37:37 <AnMaster> ?
22:37:40 <ais523> I've asked a question which is "I'm doing insane thing X, what should I do instead?"
22:37:43 <AnMaster> of course it got no scope
22:38:03 <AnMaster> ais523, what is this insane thing?
22:38:14 <ais523> AnMaster: using a for loop with one iteration to define a temporary variable
22:38:21 <AnMaster> ais523, oh
22:39:16 <ehird> A colon followed by whitespace followed by { opens a new block, unless we're in a {} block that wasn't a bracism block
22:39:20 <ehird> (to allow {'foo': {...}})
22:39:33 <ehird> } ends a block if we're in a block and not a {} that isn't a block.
22:39:38 <ehird> ; is newline-and-indent.
22:39:41 <ehird> Hokay.
22:39:44 <AnMaster> ehird, in what language?
22:39:50 <ehird> Python.
22:39:53 <ehird> It's for writing one-line python.
22:39:56 <AnMaster> oh the source filter
22:39:58 <ehird> no
22:40:00 <ehird> just a library
22:40:02 <AnMaster> no?
22:40:03 <ehird> a bot in here used to have it
22:40:05 <ehird> one I wrote
22:40:06 <AnMaster> oh ok
22:40:11 <ehird> it was great for irc
22:40:28 <ais523> the basic rule is { is newline and increase indentation, } is newline and decrease indentation, ; is newline and maintain indentation
22:40:29 <ais523> or should be
22:40:34 <ehird> ais523: yes
22:40:36 <ais523> but you have to detect when those characters are used for other things
22:40:38 <ehird> but you have to deal with dictionaries
22:40:40 <ehird> which are {...}
22:40:46 <ais523> and semicolons inside strings?
22:40:50 <ehird> yes
22:40:51 <ais523> luckily, Python is easy to parse
22:40:52 <ehird> thus my above rules
22:40:53 <bsmntbombdood> nc irc.freenode.net 6667 < /tmp/fifo | command > /tmp/fifo
22:40:56 <bsmntbombdood> why isn't that working?
22:40:56 <ehird> ais523: you don't have to parse it much
22:41:01 <ehird> bsmntbombdood: dunno :-D
22:41:12 <AnMaster> bsmntbombdood, simple
22:41:19 <AnMaster> bsmntbombdood, ETOOLITTLEINFO
22:41:22 <AnMaster> :)
22:41:31 <ehird> unfortunately, bracism parsing is more complex than a regex.
22:41:35 <ais523> bsmntbombdood: there's an option to nc to do that automatically
22:41:49 <AnMaster> ais523, I would recommend socat
22:41:49 <ais523> nc irc.freenode.net 6667 -e 'command', IIRC
22:41:58 <AnMaster> ais523, doesn't that listen?
22:42:07 <ehird> AnMaster: yes, you would recommend socat.
22:42:13 <ehird> this is a reason why you are unhelpful
22:42:15 <AnMaster> ehird, what is wrong with socat!?
22:42:19 <AnMaster> tell me
22:42:23 <ais523> AnMaster: I may have used the wrong option
22:42:28 <ehird> "How can I do X with this tool?"
22:42:30 <ehird> "Use another tool"
22:42:36 <ehird> => very unhelpful unless all other situations have been covered.
22:43:21 <ais523> well, I'm going to declare #vhdl Helpful and Not At All Snarky
22:43:42 <fizzie> So it gets the coveted HNAAS award.
22:43:42 <ehird> ais523: is VHDL, I mean, good?
22:43:49 <ehird> or is it sucky
22:43:54 <ais523> ehird: it's a language which is good for what it's designed for
22:43:56 <ehird> whoa, kragen sitaker
22:43:59 <ehird> that guy gets everywhere
22:44:07 <ais523> if inspired slightly (well, far) too much by ADA
22:44:23 <ais523> you need to get used to writing lots of boilerplate to write VHDL
22:44:28 <ais523> but luckily Emacs has it all memorised
22:44:44 <ais523> anyway, I'd better go home now, or I'll never get any work done
22:44:47 <ehird> bye
22:44:51 <ais523> bye everyone
22:44:53 -!- ais523 has quit (Client Quit).
22:45:37 <bsmntbombdood> it still doesn't work
22:45:38 <bsmntbombdood> grrr
22:48:47 <bsmntbombdood> http://pastebin.ca/1312016
22:49:06 <bsmntbombdood> that does work when it is run with nc -e
22:49:22 <bsmntbombdood> s/does/does not/
22:49:26 <AnMaster> err
22:49:29 <AnMaster> hm
22:50:17 -!- bsmntbombdood__ has quit.
22:51:28 -!- seabot has joined.
22:51:34 <ehird> here's the bracism bot
22:51:35 <ehird> @help
22:51:35 <seabot> cdecl: cdecl
22:51:35 <seabot> help: help
22:51:35 <seabot> karma: karma karma+ karma-
22:51:35 <seabot> meta: load reload unload
22:51:35 <seabot> python: python
22:51:40 <ehird> @help karma
22:51:41 <seabot> karma: karma karma+ karma-
22:51:44 <ehird> @help karma+
22:51:44 <seabot> No plugin called karma+.
22:51:44 <seabot> UnboundLocalError: local variable 'plugin' referenced before assignment
22:51:48 <ehird> fail :D
22:51:51 <ehird> @karma ehird
22:51:51 <seabot> You have a karma of 0
22:51:53 <ehird> @karma+ ehird
22:51:53 <seabot> You can't change your own karma, silly.
22:51:56 <ehird> @karma+ seabot
22:51:57 <seabot> seabot's karma raised to 2.
22:51:58 <ehird> @karma seabot
22:51:59 <seabot> seabot has a karma of 2
22:52:02 <ehird> @python 2+2
22:52:03 <seabot> 4
22:52:08 <ehird> @python if 1 == 2: { print "nooo" }
22:52:13 <ehird> @python if 1 == 1: { print "nooo" }
22:52:13 <seabot> nooo
22:52:20 <ehird> hey AnMaster, or whoever
22:52:24 <ehird> issmyoldbot :D
22:52:33 <ehird> @cdecl int (*)(int *)
22:52:34 <seabot> syntax error
22:52:36 <ehird> wut
22:52:39 <ehird> @cdecl int
22:52:39 <seabot> syntax error
22:52:42 <ehird> wut
22:52:43 <ehird> @cdecl int a;
22:52:44 <seabot> declare a as int
22:52:49 <ehird> @cdecl int (*a)(int *);
22:52:50 <seabot> declare a as pointer to function (pointer to int) returning int
22:53:31 <ehird> issnitsocute:D
22:54:17 <ehird> @python a= 2
22:54:19 <ehird> @python a
22:54:20 <seabot> 2
22:54:25 <ehird> @python users.ehird
22:54:25 <seabot> <a big brother>
22:54:29 <ehird> @python users.ehird['a']
22:54:29 <seabot> 2
22:54:32 <ehird> @python users.ehird['a'] = 2
22:54:41 <ehird> ... wait wat
22:54:52 <ehird> @python users.foo
22:54:52 <seabot> KeyError: 'foo'
22:54:55 <ehird> @python users.seabot
22:54:55 <seabot> KeyError: 'seabot'
22:55:00 <ehird> hey AnMaster, do @python a= 2
22:55:16 <oklopol> ooooooooooooooooooooooooooooooooo
22:55:20 <oklopol> @python a= 2
22:55:21 <ehird> oklopol: you do it
22:55:23 <ehird> :DD
22:55:26 <ehird> @python users.oklopol
22:55:26 <oklopol> on it
22:55:26 <seabot> <a big brother>
22:55:28 <ehird> @python users.oklopol['a']
22:55:28 <seabot> 2
22:55:30 <ehird> @python users.oklopol['a'] = 7
22:55:33 <ehird> @python users.oklopol['a']
22:55:33 <seabot> 7
22:55:34 <ehird> ...
22:55:35 <ehird> D:::::::
22:55:38 <ehird> that isn't meant to wokrk
22:55:51 <oklopol> I CAN HAS MY OWN LIST HUH
22:55:57 <AnMaster> seabot?
22:55:59 <AnMaster> wtf is that one
22:56:02 <AnMaster> also
22:56:09 <ehird> AnMaster: seabot is my old bot, it has bracism
22:56:10 <AnMaster> how many bots do we hacve
22:56:12 <AnMaster> have*
22:56:18 <oklopol> a={users.oklopol["a"]}
22:56:21 <oklopol> @python a={users.oklopol["a"]}
22:56:22 <seabot> SyntaxError: unexpected EOF while parsing (<irc>, line 1)
22:56:30 <ehird> @python def hello(a): { print "yo"; return a }; print hello("aa")
22:56:30 <seabot> SyntaxError: invalid syntax (<irc>, line 5)
22:56:33 <ehird> ...
22:56:33 <ehird> WUT
22:56:34 <oklopol> ......
22:56:43 <oklopol> @python a=[users.oklopol["a"]]
22:56:45 <ehird> ... a bug in bracism??????
22:56:46 <oklopol> i think that's what i meant
22:56:50 <ehird> @python def hello(a):{ print "yo"; return a }; print hello("aa")
22:56:50 <seabot> SyntaxError: invalid syntax (<irc>, line 5)
22:56:52 <ehird> D:::::::::::::
22:56:59 <oklopol> but in my fingers i think.
22:57:04 <oklopol> err oh
22:59:26 <bsmntbombdood> why doesn't it work :(
23:01:09 <ehird> bsmntbombdood: because butt
23:01:10 <ehird> s
23:04:28 <ehird> bsmntbombdood: also, bsmnt_bot has dc
23:04:35 <ehird> ~exec bot.run('ls','usr/bin')
23:04:35 <bsmnt_bot> ['dc', 'nice', 'python2.4', 'wget']
23:04:45 <bsmntbombdood> not my dc
23:04:46 <bsmntbombdood> lol
23:05:12 <ehird> lol
23:06:47 <bsmntbombdood> it's better cuz i wrote it
23:07:00 -!- olsner has quit ("Leaving").
23:12:40 <fizzie> About that awk thing, my guess is there's some sort of buffering nastiness going on. When I run "awk -f test.awk < from-irc.fifo > to-irc.fifo" here, then start a "cat > from-irc.fifo" and a "cat to-irc.fifo", nothing appears no matter what I write into the "cat > from-irc.fifo" terminal, except when I ^d it, at which point the nick/user/join lines finally appear in "cat to-irc.fifo".
23:14:03 <AnMaster> fizzie, sound probably
23:14:04 <AnMaster> so
23:14:09 <AnMaster> attach gdb to awk
23:14:12 <fizzie> Also if I feed enough (a couple of rather large screenfuls) of stuff into the "cat > from-irc.fifo" terminal, awk replies in "cat to-irc.fifo". So I guess awk is reading the fifo with the usual few-kilobyte buffer.
23:14:16 <AnMaster> add calls to set non-buffered mode
23:14:25 <fizzie> I'm not sure I want to; it's not my bot.
23:14:28 <bsmntbombdood> i'll pepper in some fflush()es
23:14:37 <AnMaster> bsmntbombdood, in awk!?
23:14:49 <bsmntbombdood> well, gawk
23:15:07 <AnMaster> bsmntbombdood, does awk have a flush() or fflush()?
23:15:18 <AnMaster> modifying the gawk source is cheating
23:15:32 <fizzie> gawk has a fflush() call.
23:15:48 <fizzie> I'm not sure it'll help, though, if the problem is that awk's still waiting for input before actually executing any BEGIN { } blocks or anything.
23:15:53 <bsmntbombdood> fflush([file]) Flush any buffers associated with the open output file or pipe file. If
23:16:09 <AnMaster> if?
23:17:06 <bsmntbombdood> file is missing, then standard output is flushed. If file is the null string, then all open output files and pipes have their buffers flushed.
23:17:40 <bsmntbombdood> well that did it
23:17:42 <AnMaster> heh
23:17:55 -!- FireFly has quit ("Later").
23:18:09 -!- dc-bot has joined.
23:18:22 <bsmntbombdood> ~say foobar
23:18:23 <dc-bot> foobar
23:18:32 <bsmntbombdood> ~dc 123p
23:18:40 <ehird> phail
23:18:44 <bsmntbombdood> ....
23:19:13 -!- dc-bot has quit (Remote closed the connection).
23:19:25 -!- dc-bot has joined.
23:19:36 <psygnisfive> guise
23:19:38 <bsmntbombdood> ~dc 123p
23:19:43 <bsmntbombdood> wtf
23:19:50 <bsmntbombdood> oh i know
23:20:03 <psygnisfive> i know how to design parsers that recognize a language
23:20:08 <ehird> congratulations.
23:20:15 -!- dc-bot has quit (Remote closed the connection).
23:20:17 <psygnisfive> but how the hell do i use the parser output to build an abstract syntax tree?
23:20:17 <ehird> you're not functionally retarded.
23:20:18 <psygnisfive> >.<
23:20:26 -!- dc-bot has joined.
23:20:27 <ehird> I retract my previous statement.
23:20:36 <bsmntbombdood> ~dc 123p
23:20:36 <dc-bot> 123
23:20:39 <bsmntbombdood> yay
23:20:51 <ehird> ~dc [loop forever]
23:20:58 <psygnisfive> the only parser book i have is incredibly complete, except in that it doesnt explain how to use a parser's output :|
23:22:59 <oklopol> err what parser's output? i figured parsing out by thinking, and afaik i'm the retard from us two.
23:23:25 <fizzie> I'd really have to guess that depends on what sort of parser you have, and what its output is. If your parser outputs "accept" or "reject" depending on whether the input is in the language, you'd have to be Really Clever to build a syntax tree out of that.
23:23:45 -!- botbot has joined.
23:23:49 <botbot> Even more bots!
23:23:52 <dc-bot> loopPONG :leguin.freenode.net
23:24:08 <fizzie> dc-bot: Thank you, that was appropriately bizarre.
23:24:13 * botbot prods ehird
23:24:23 <oklopol> fizzie: you could find nested stuff by doing dynamic programming on all substrings of the code
23:24:26 <psygnisfive> what i mean is, parsers can produce things like stacks of symbols and so on. what im not sure about is how to reverse those symbols and get a tree
23:24:44 <oklopol> only nested expressions wouldn't fail, you could recurse on them
23:24:48 <psygnisfive> i suppose i could kind of run the parser in reverse, in a sense
23:24:50 * oklopol is Really Clever
23:24:52 <bsmntbombdood> ~dc 0sa1[la1+salad1+n10>b]dsbx
23:25:04 <bsmntbombdood> ...
23:25:08 -!- dc-bot has quit (Remote closed the connection).
23:25:11 -!- BeholdMyGlory has quit ("Konversation terminated!").
23:25:16 * botbot prods fizzie then :/
23:25:19 <psygnisfive> and instead of pushing it out to a string, i'd push it out to the tree itself, but im not entire sure how to do that. atleast not in any way thats well established
23:26:39 <ehird> psygnisfive: you're an idiot :D
23:26:42 <bsmntbombdood> can you be like recognize_addition = [+, read_expression, read_expression]
23:26:49 <bsmntbombdood> and that builds up a tree
23:26:49 <psygnisfive> thank you for your constructive advice, ehird.
23:26:51 <oklopol> my suggestion is writing your own parser
23:27:13 <psygnisfive> oklopol, i can WRITE a parser, im just not sure about how to get anything useful out of it
23:27:28 <oklopol> psygnisfive: oh. i thought you wanted to use an existing parser or something.
23:27:29 <psygnisfive> the parsing is trivial. its the conversion to an AST that im confused about.
23:27:39 <ehird> ...
23:27:42 <ehird> parses PRODUCE ASTS
23:27:47 <ehird> that's the whole POINT of them
23:27:48 <psygnisfive> ehird, no they dont.
23:27:48 <bsmntbombdood> ehird: no
23:27:56 <ehird> psygnisfive: yes they do. bsmntbombdood: yes they do.
23:28:00 <bsmntbombdood> parsing can just be a boolean
23:28:03 <psygnisfive> ehird: no. they dont.
23:28:04 <AnMaster> bsmnt_bot, the bot is written in dc?
23:28:06 <oklopol> well, you can build the ast as you go, consider recursion descending in the ast.
23:28:13 <ehird> bsmntbombdood: that's a technicality :-)
23:28:15 <ehird> psygnisfive: yes. they do.
23:28:32 <oklopol> when you call a nested thingie recursively, you're parsing a child, just append result in list.
23:28:33 <ehird> "Hey guys, I don't get this topic. Can you explain it?" "Foobar" "No, not foobar."
23:28:42 * botbot prods ehird again
23:28:46 <ehird> botbot: WHAT DAMMIT
23:28:49 -!- botbot has left (?).
23:28:54 -!- botbot has joined.
23:28:56 <botbot> !!
23:29:01 -!- botbot has quit ("...").
23:29:02 <psygnisfive> oklopol: im not entirely sure what you mean.
23:29:21 <oklopol> psygnisfive: have you tried parsing brainfuck?
23:29:36 <fizzie> If the parser is a recursive-descent one, building an AST is really simple, sure. Just have a "foo" function, for a non-terminal foo, return an AST node foo(x, y, z), with x, y, z given from whatever foo() recursive-descends into.
23:29:38 <bsmntbombdood> brainfuck is trivial...
23:29:53 <oklopol> bsmntbombdood: yes, and it contains the basic idea
23:30:16 <psygnisfive> ehird: then i suppose i should rephrase it since you're a bit too dense. when building a parser, after i've gotten to the stage where each token in the string is recognized, and the production path has been determined, as a sequence of terminals and non-terminals, how does that get read off into an AST.
23:30:17 <oklopol> a way to parse a bf loop body is to make a list, and start appending instructions, and for [...]'s, call recursively, append result
23:30:24 <psygnisfive> oklopol: no. i havent touched bf. :P
23:30:28 <bsmntbombdood> $ ps aux|grep xterm|wc -l
23:30:30 <bsmntbombdood> 253
23:30:35 <bsmntbombdood> THIS IS TOO MANY XTERMS
23:30:39 <ehird> psygnisfive: Protip: Calling someone dense is not a way to get help.
23:30:49 <psygnisfive> you're not helping anyway ehird
23:30:50 <psygnisfive> you never help
23:30:52 <oklopol> psygnisfive: the paths are paths in the tree btw
23:30:59 <ehird> I never help :'(
23:31:03 <ehird> I suggest cutting yourself
23:31:06 <psygnisfive> you're just a whiney little twat who never has anything useful to say.
23:31:26 <ehird> yes. Because if I'm not here to help you do trivial stuff all the time, what am I here for?!
23:31:50 <psygnisfive> if you're not here to help, you might want to stop replying to my requests for help
23:32:11 <psygnisfive> oklopol: i know that they're paths in the tree. but that doesnt help much.
23:32:13 <ehird> or I might not, seeing as there isn't a channel rule that I can't reply to requests for help how I want.
23:32:14 <bsmntbombdood> oh lawd
23:32:16 <AnMaster> bsmntbombdood, try a tabbed terminal
23:32:22 <oklopol> psygnisfive: if not, read my actual help.
23:32:28 <AnMaster> like konsole, or whatever gnome have
23:32:30 <bsmntbombdood> AnMaster: i have a tabbed window manager, same thing
23:32:31 <AnMaster> it may help a lot
23:32:33 <oklopol> i suggest you try to see how brainfuck is parsed recursively
23:32:37 <AnMaster> bsmntbombdood, hm ok
23:32:41 <fizzie> I'm not sure 253 terminal tabs would be very helpful either.
23:32:45 <oklopol> it's very simple, and you should see the general idea
23:32:58 <AnMaster> oklopol, parsing bf recursive? yeah dead easy
23:33:00 <psygnisfive> *sigh* nevermind. ill read this book on parsers more carefully and see if it has any explanation that i missed.
23:33:02 <AnMaster> I have done it several times
23:33:04 <bsmntbombdood> psygnisfive: maybe do it in a real language, not haskell
23:33:13 <psygnisfive> what? lol
23:33:31 <oklopol> AnMaster: i've done it about 50 times. i do it every time i want to write something in brainfuck.
23:33:43 <AnMaster> oklopol, err
23:33:46 <AnMaster> that makes no sense
23:33:48 <oklopol> because it's faster than finding a brainfuck.py.
23:33:53 <AnMaster> I save my project
23:33:56 <fizzie> Building the syntax tree in a hand-crafted "bottom-up"-style LR parser might not be quite as easy, but really, if your parser is a recursive-descent stylish, I would think it'd be hard to not to get a syntax tree out of it.
23:34:03 <AnMaster> oklopol, are you on *nix? I don't remember
23:34:06 <AnMaster> if yes use
23:34:08 <oklopol> AnMaster: what's the difference really? both take <1min
23:34:12 <AnMaster> locate brainfuck.py
23:34:20 <AnMaster> it will take a few seconds
23:34:23 <oklopol> AnMaster: could have a different name.
23:34:33 <AnMaster> oklopol, idea: store it in ~/bin ?
23:34:36 <AnMaster> with that name
23:34:41 <ehird> 1. hes on windows
23:34:45 <ehird> 2. shut up, stop trying to make oklopol logical
23:34:46 <AnMaster> ah right
23:34:46 <oklopol> anyway, i don't take very kindly to people suggesting me to do stuff unless i actually ask.
23:34:47 <ehird> you're ruining him
23:35:05 <AnMaster> oklopol, sorry then
23:36:01 <oklopol> i'm perfectly logical. i just have different axioms.
23:36:14 <psygnisfive> fizzie: im sure thats the case, but i dont do much recursive descent stuff, so i cant really conceptualize why :)
23:36:21 <AnMaster> nice oklopol
23:36:25 <AnMaster> oklopol, what axioms?
23:36:35 <oklopol> (and a few psychological bugs)
23:36:38 <oklopol> err.
23:36:43 <oklopol> i haven't actually listed them.
23:36:50 <bsmntbombdood> i have yet to write a real parser
23:36:53 <AnMaster> oklopol, indeed, that is why I asked
23:36:56 <oklopol> have you listed yours?
23:37:05 <AnMaster> oklopol, not yet on irc
23:37:13 <AnMaster> oklopol, and I need to consider them
23:37:24 <AnMaster> seeing your as examples would help me define them clearer
23:37:24 <psygnisfive> bsmntbombdood i have a copy of a really good intro to parsers book
23:37:37 <psygnisfive> well, its more of a somewhat comprehensive parsing techniques book actually
23:37:43 <psygnisfive> but it goes through a lot of intro stuff too
23:37:48 <psygnisfive> if you want i'll send it to you
23:37:55 <oklopol> parsing is a solved problem
23:38:01 <psygnisfive> it is rather.
23:38:12 <psygnisfive> not that there aren't new and better techniques to be found
23:38:12 <bsmntbombdood> reading a book on a monitor isn't pleasent
23:38:14 <oklopol> BECAUSE THAT DOESN'T GET SAID ENOUGH
23:38:18 <psygnisfive> print it out then :p
23:38:53 <oklopol> reading on a monitor is pleasant, the only problem is irl books are prettier.
23:39:06 <ehird> i knowwwwwwww
23:39:08 <ehird> books are so awesome
23:39:09 <psygnisfive> painfully true
23:39:13 <AnMaster> psygnisfive, what is the name/ISBN of this book?
23:39:16 <bsmntbombdood> printing is expensive and slow
23:39:19 <AnMaster> just wondering
23:39:48 <psygnisfive> Parsing Techniques - A Practical Guide
23:39:55 <psygnisfive> you can actually get it online i just forget where
23:39:59 <AnMaster> psygnisfive, and ISBN?
23:40:01 <psygnisfive> you can probably find it by googling that.
23:40:05 <psygnisfive> no idea, anmaster. no idea.
23:40:06 <ehird> woo
23:40:06 <ehird> print to_python("{'a':{'b':lambda a: a}}; def a(b={'a':2}): { pass }")
23:40:08 <ehird> works properly
23:40:20 <psygnisfive> http://www.cs.vu.nl/~dick/PTAPG.html
23:40:31 <psygnisfive> ISBN 0 13 651431 6
23:40:39 <psygnisfive> tho you can download it there
23:42:53 <bsmntbombdood> ugh my local library sucks so hard
23:43:16 <ehird> oklopol: can you writerate a program for me :P
23:47:24 <ehird> whee, it also handles def a(): { return {'a':2} }
23:47:28 <ehird> that's quite enough testing.
23:47:57 <bsmntbombdood> guh
23:48:01 <bsmntbombdood> i am looking on amazon for books
23:48:06 <bsmntbombdood> that shit's expensive
23:49:28 <bsmntbombdood> a used copy of introduction to algorithms for $70?!?!
23:50:14 <fizzie> That's strange, I get a "whoa, that stuff's so cheap" feeling, thanks to the book prices here. Most of my course books (if bought new from a local retailer) have had prices around $100.
23:50:53 <fizzie> Amazon seems to be clever enough to find Introduction to Algorithms if I write "clrs" in the search-box.
23:52:04 <ehird> $100, yikes :D
23:52:13 <ehird> books are crazy expensive : D
23:53:01 <fizzie> I'm not sure what's up with that $70-used version of CLRS. Even though it's printed in 2003, it's still the same old 2nd edition, for which Amazon is selling new copies (hardcover, even) for $60.
23:54:17 <fizzie> Even the page count is higher (1184 pages vs. 1056 pages) in the old one, so it's not like they'd have added any stuff.
23:55:42 <ehird> they could add and remove.
23:56:03 <fizzie> FWIW, in the two largest local book stores here in Finland, the hardcover edition of CLRS sells for $130.
23:56:38 <fizzie> Of course it's a big book. I think I've used that thing to stand on when I couldn't quite reach something.
23:56:47 <bsmntbombdood> i should probably buy it
23:58:09 <ehird> uh-oh, a bug
23:58:37 <fizzie> ("Full disclosure" note: as a cheap student, I got the non-hardcover edition.)
←2009-01-17 2009-01-18 2009-01-19→ ↑2009 ↑all