←2011-10-17 2011-10-18 2011-10-19→ ↑2011 ↑all
00:06:37 * Phantom_Hoover → sleep
00:06:39 -!- Phantom_Hoover has quit (Quit: Leaving).
00:10:48 -!- zzo38 has quit (Quit: *Never* push these two buttons two times!! Except the battery.).
00:10:53 -!- Timwi has quit.
00:13:13 -!- monqy has joined.
00:20:20 -!- CakeProphet has joined.
00:20:24 -!- CakeProphet has quit (Changing host).
00:20:24 -!- CakeProphet has joined.
00:33:25 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
00:47:32 -!- Sgeo|web has joined.
00:47:53 -!- ive has quit (Ping timeout: 260 seconds).
00:48:57 <Sgeo|web> Trying to root my Nook
00:49:04 <elliott> TMI
00:51:09 -!- cheater_ has joined.
00:51:26 -!- oerjan has quit (*.net *.split).
00:51:29 -!- twice11 has quit (*.net *.split).
00:51:29 -!- tiffany has quit (*.net *.split).
00:51:29 -!- cheater has quit (*.net *.split).
00:51:29 -!- EgoBot has quit (*.net *.split).
00:51:30 -!- pikhq_ has quit (*.net *.split).
00:51:30 -!- GreaseMonkey has quit (*.net *.split).
00:51:30 -!- HackEgo has quit (*.net *.split).
00:51:40 -!- elliott has quit (Quit: Leaving).
00:51:47 -!- elliott has joined.
00:55:23 <elliott> :t Int -> [a] -> ([a], [a])
00:55:29 -!- pikhq_ has joined.
00:55:29 -!- tiffany has joined.
00:55:29 -!- oerjan has joined.
00:55:29 -!- GreaseMonkey has joined.
00:55:29 -!- HackEgo has joined.
00:55:29 -!- EgoBot has joined.
00:55:29 -!- twice11 has joined.
00:55:32 <elliott> ?hoogle Int -> [a] -> ([a], [a])
00:55:32 <elliott> lambdabot?
00:55:32 <lambdabot> parse error on input `->'
00:55:32 <elliott> ?hoogle Int -> [a] -> ([a], [a])
00:55:32 <lambdabot> Prelude splitAt :: Int -> [a] -> ([a], [a])
00:55:32 <lambdabot> Data.List splitAt :: Int -> [a] -> ([a], [a])
00:55:32 <lambdabot> Data.List genericSplitAt :: Integral i => i -> [b] -> ([b], [b])
00:55:32 <lambdabot> Prelude splitAt :: Int -> [a] -> ([a], [a])
00:55:32 <lambdabot> Data.List splitAt :: Int -> [a] -> ([a], [a])
00:55:33 <lambdabot> Data.List genericSplitAt :: Integral i => i -> [b] -> ([b], [b])
00:55:44 <elliott> ?hoogle a -> [a] -> ([a], [a])
00:55:45 <lambdabot> Prelude splitAt :: Int -> [a] -> ([a], [a])
00:55:45 <lambdabot> Data.List splitAt :: Int -> [a] -> ([a], [a])
00:55:45 <lambdabot> Data.List genericSplitAt :: Integral i => i -> [b] -> ([b], [b])
00:58:27 <oerjan> > (break . (==)) 4 [1..10]
00:58:28 <lambdabot> ([1,2,3],[4,5,6,7,8,9,10])
01:02:53 -!- copumpkin has joined.
01:10:07 * Sgeo|web is trying to do something nasty to Numbers
01:11:31 <oerjan> @hoogle list
01:11:32 <lambdabot> module Control.Monad.List
01:11:32 <lambdabot> module Data.List
01:11:32 <lambdabot> Language.Haskell.Syntax list_cons_name :: HsQName
01:11:34 <Sgeo|web> Someone else is looking at what I'm trying to do, but I'm hoping he's doing something ... else
01:11:54 <oerjan> oh hm
01:12:34 -!- Jafet has joined.
01:12:44 <oerjan> Sgeo|web: just divide and conquer
01:12:46 <Sgeo|web> "I've already had to add this fun pragma: {-# LANGUAGE GADTs, ExistentialQuantification, Rank2Types #-}"
01:14:20 -!- Zuu has quit (Ping timeout: 244 seconds).
01:14:49 <elliott> That's not much.
01:16:38 <oerjan> such an angry young man http://www.reddit.com/r/haskell/comments/lf71l/deprecate_preludehead_and_partial_functions/c2s80l2
01:17:10 <Sgeo|web> What's the worse that can happen if I put a class constraint in a newtype?
01:17:11 <elliott> oerjan: That isn't angry. You've clearly never seen me get angry.
01:17:13 <shachaf> <elliott> (Yeahyeah, modulo etc.)
01:17:21 <elliott> oerjan: I was just correcting the blog post amendment. :p
01:17:25 <elliott> shachaf: See, that's me angry.
01:17:33 <elliott> Sgeo|web: You mean newtype (Foo a) => Bar a = ...?
01:17:35 <shachaf> elliott: That's you every day of the week.
01:17:45 <shachaf> elliott: Take that newtype back!
01:18:02 <Sgeo|web> Not Bar a, just Bar, then the a is on the right of the =
01:18:03 <oerjan> elliott: ah but i'm just pointing out that your _base level_ is already angry. also, joking.
01:18:18 <elliott> Sgeo|web: Data-type contexts are not in Haskell.
01:18:22 <elliott> Their extension is also deprecated.
01:18:25 <Sgeo|web> Huh?
01:18:30 <elliott> This is because they do nothing.
01:18:34 <elliott> If they think you do, you are wrong.
01:18:41 <elliott> (They do something, but it isn't what you want.)
01:18:48 <elliott> You do not want a data-type context.
01:19:02 <shachaf> elliott: But they *really* think I do!
01:19:51 <Sgeo|web> So, it won't make my instance work?
01:20:01 <elliott> No.
01:20:12 <Sgeo|web> I ... can't write my instance then
01:20:16 <elliott> I would tell you what you need to do to make it work, but you probably don't even want to do that either.
01:20:19 <elliott> hpaste.
01:22:04 <Sgeo|web> Hold on
01:22:44 <Sgeo|web> http://hpaste.org/52778
01:22:57 <shachaf> Which instance is this?
01:23:19 <Sgeo|web> The Num FakeNum one
01:23:28 <elliott> What the fuck sort of number is that?
01:23:30 <Sgeo|web> I can't do that + there, and can't force these things to be num
01:23:38 <Sgeo|web> elliott: tricky ones.
01:23:38 <elliott> Sgeo|web: Just make an (a -> b) instance.
01:23:43 <Sgeo|web> ...I can?
01:23:46 <elliott> Your (+) function is a trivial specialisation of it.
01:23:57 <Sgeo|web> Wait, WHAT?
01:24:59 <elliott> shachaf: You handle Sgeo|web.
01:25:08 * elliott is too busy doing stuff he won't facepalm the next day about.
01:25:31 <shachaf> elliott: I don't think that's how it works.
01:25:45 <elliott> Totally is.
01:25:48 <elliott> Sgeo|web:
01:25:51 <elliott> > (f + g) x
01:25:51 <shachaf> I don't even know what Sgeo|web is trying to do.
01:25:52 <lambdabot> Ambiguous type variable `a' in the constraints:
01:25:52 <lambdabot> `GHC.Num.Num a'
01:25:52 <lambdabot> ari...
01:25:54 <elliott> Gah.
01:25:55 <elliott> > (f + g) x :: Expr
01:25:57 <lambdabot> f x + g x
01:26:48 <Sgeo|web> Then can I fill in my own values for x given that?
01:27:09 <elliott> > (f + g) 99 :: Expr
01:27:10 <lambdabot> f 99 + g 99
01:27:16 <elliott> > (succ + pred) 99
01:27:17 <lambdabot> 198
01:27:46 <oerjan> > ($ "x") + ($ "y") $ length
01:27:47 <lambdabot> 2
01:27:52 <shachaf> elliott: Stop abusing Sgeo|web.
01:28:02 <shachaf> Oh, wait.
01:28:04 <oerjan> Sgeo|web: ^ i think this one is precisely your type
01:28:05 -!- tiffany has quit (Quit: Leaving).
01:28:08 <shachaf> Sgeo|web is the abusive one.
01:28:14 <shachaf> Sgeo|web: Stop abusing Haskell.
01:28:31 <elliott> shachaf: Sgeo|web has no concept of using a language as intended.
01:28:34 -!- augur has joined.
01:28:41 <shachaf> Sgeo|web: What are s and a?
01:28:48 <shachaf> Is this a continuation thing?
01:28:48 <Sgeo|web> elliott: I know that the way I should be doing this is probably monads
01:29:04 <oerjan> > ($ "3") + ($ "4") $ read :: Int
01:29:04 <lambdabot> 7
01:29:05 <elliott> Sgeo|web: What?
01:29:06 <Sgeo|web> shachaf: s is something like a String, so I could pass in a function that takes a String and returns a number
01:29:11 <Sgeo|web> BRB
01:29:15 <elliott> Sgeo|web: There is nothing about monads here.
01:29:19 <oerjan> Sgeo|web: ^ like that? :P
01:29:24 <elliott> You're just using "monads" as a mystical catch-all like everyone who doesn't know Haskell does
01:30:03 <oerjan> :(
01:30:56 <CakeProphet> Sgeo|web: also note that instead of the lambda you could write (+) (FakeNum a) (FakeNum b) f = ...
01:30:58 <shachaf> > ($ "3") ++ ($ "4") $ id :: String
01:31:00 <lambdabot> "34"
01:31:00 <shachaf> zomg
01:31:20 <elliott> CakeProphet: Or
01:31:24 <elliott> (FakeNum a + FakeNum b) f = ...
01:31:28 <elliott> But I'm not sure that works.
01:31:33 <elliott> Instance methods have defined arity, don't they?
01:31:42 <CakeProphet> oh? didn't know you could write it like that on the lhs.
01:31:56 <CakeProphet> elliott: believe so.
01:32:12 <Sgeo|web> Someone else is trying to explain why I need GADTs
01:32:18 <CakeProphet> lolwat
01:32:21 <CakeProphet> why what are you doing.
01:32:22 <oerjan> elliott: you don't need to define them pointfully, if that's what you mean
01:32:28 <elliott> oerjan: I mean, does
01:32:32 <elliott> (a + b) c = ...
01:32:32 <elliott> work
01:32:33 <elliott> Sgeo|web: Where
01:32:47 <oerjan> hm...
01:32:49 <Sgeo|web> Sine
01:32:52 <elliott> I wouldn't trust Haskell advice outside of #esoteric or #haskell :p
01:33:01 <oerjan> > let (a + b) c = a c + b c in (sin + cos) 1
01:33:02 <lambdabot> Occurs check: cannot construct the infinite type: t = t1 -> t
01:33:03 <elliott> Sgeo|web: But seriously, just define the (a -> b) instance if you really must.
01:33:13 <oerjan> oops
01:33:14 <Sgeo|web> (a -> b) instance?
01:33:21 <oerjan> > let (a + b) c = a c Prelude.+ b c in (sin + cos) 1
01:33:22 <lambdabot> 1.3817732906760363
01:33:28 <Sgeo|web> As in, making a -> b an instance of something or is a -> b a class?
01:33:30 <Sgeo|web> suddenly
01:33:46 <CakeProphet> a -> b is definitely not a class.
01:33:54 <CakeProphet> because it's a type
01:33:54 <oerjan> Sgeo|web: yes, making a Num (a -> b) instance, like the one lambdabot has
01:34:19 <CakeProphet> though a a -> b class would be fun
01:34:24 <CakeProphet> with a ($) method
01:34:46 <CakeProphet> such that space application is translated to $ :P
01:34:56 <CakeProphet> "space application" being f x
01:35:24 <Sgeo|web> Would that make Arrows to be easier to use?
01:35:38 <CakeProphet> it would mostly be bad I think.
01:35:44 <elliott> Sgeo|web: Arrows don't even have an apply method.
01:35:49 <Sgeo|web> Oh.
01:35:56 <CakeProphet> unless you count ArrowApply :)
01:36:41 <oerjan> Sgeo|web: anyway did you see my lambdabot examples above
01:36:57 <Sgeo|web> I ... don't quite understand it
01:36:59 <elliott> CakeProphet: which doesn't fit the type of dollar
01:37:01 <Sgeo|web> The examples
01:37:08 <elliott> Sgeo|web:
01:37:13 <elliott> > (length + length) "abc"
01:37:14 <lambdabot> 6
01:37:26 <Sgeo|web> Ah
01:37:29 <Sgeo|web> Hmmmmmmm
01:37:40 <oerjan> elliott: i was trying to give examples that fit precisely his FakeNum type
01:38:01 <oerjan> :t ($ "3")
01:38:02 <lambdabot> forall b. ([Char] -> b) -> b
01:38:15 <elliott> oerjan: Hardly matters if the instance doesn't exploit it.
01:38:18 <Sgeo|web> I ... let me see if I can use my useage
01:38:19 <elliott> (Not that it could.)
01:38:24 <oerjan> > ($ "3") + ($ "4") $ read :: Int
01:38:25 <lambdabot> 7
01:38:27 <Sgeo|web> Where are the Data.Map functions?
01:38:52 <elliott> <bd_> > (length + length) "abc"
01:38:52 <elliott> <lambdabot> 6
01:38:56 <elliott> Sgeo|web: In Data.Map.
01:40:06 <CakeProphet> length * 2 :3
01:40:27 <elliott> > (length * 2) abc
01:40:27 <lambdabot> Not in scope: `abc'
01:40:28 <Sgeo|web> > Data.Map.lookup "x" + Data.Map.lookup "y" $ Data.Map.fromList [("x",2), ("y",3)]
01:40:29 <lambdabot> Not in scope: `Data.Map.lookup'Not in scope: `Data.Map.lookup'Not in scope:...
01:40:29 <elliott> > (length * 2) "abc"
01:40:30 <lambdabot> 6
01:40:35 <oerjan> > 2 * length ^ 2 + 1 $ "hm..."
01:40:36 <lambdabot> 51
01:40:37 <elliott> Sgeo|web: M.
01:40:44 <elliott> > M.lookup "x" + M.lookup "y" $ M.fromList [("x",2), ("y",3)]
01:40:45 <lambdabot> No instance for (GHC.Num.Num (Data.Maybe.Maybe a))
01:40:45 <lambdabot> arising from a use of...
01:41:12 <Sgeo|web> > (fromJust . Data.Map.lookup) "x" + (fromJust . Data.Map.lookup) "y" $ Data.Map.fromList [("x",2), ("y",3)]
01:41:13 <lambdabot> Not in scope: `Data.Map.lookup'Not in scope: `Data.Map.lookup'Not in scope:...
01:41:35 <Sgeo|web> > (fromJust . M.lookup) "x" + (fromJust . M.lookup) "y" $ M.fromList [("x",2), ("y",3)]
01:41:35 <lambdabot> Couldn't match expected type `Data.Maybe.Maybe a'
01:41:36 <lambdabot> against inferred ...
01:41:40 <shachaf> Sgeo|web: Don't fromJust. :-(
01:41:56 <CakeProphet> I wonder how you could define a method that implements integral multiplication as recursive addition, that can take multiple different integral types.
01:42:08 <CakeProphet> thus allowing length * 2
01:42:23 <CakeProphet> ...well, length isn't exactly integral. :P
01:42:25 -!- monqy has quit (Ping timeout: 240 seconds).
01:42:29 <elliott> Sgeo|web: There's an operator for that, and you don't understand (.).
01:43:25 <CakeProphet> Sgeo|web: f (g x y) !== (f . g) x y
01:43:36 <CakeProphet> @unpl (f .) . g
01:43:36 <lambdabot> (\ d i -> f (g d i))
01:43:59 <oerjan> > fromJust . M.lookup "x" + fromJust . M.lookup "y" $ M.fromList [("x",2), ("y",3)]
01:44:00 <lambdabot> 5
01:44:03 <elliott> FOR GOD'S SAKE
01:44:07 <elliott> M.!
01:44:15 <elliott> > (M.! "x") + (M.! "y") $ M.fromList [("x",2), ("y",3)]
01:44:16 <lambdabot> 5
01:44:28 <oerjan> ok, angry young man
01:44:41 -!- monqy has joined.
01:45:20 <elliott> oerjan: ;_;
01:45:29 <CakeProphet> Sgeo|web: lambdabot also has .: which does the same thing (f . ) . g but I'm not really sure that it's standard..
01:45:40 <CakeProphet> @hoogle (.:)
01:45:40 <lambdabot> No results found
01:45:42 <CakeProphet> yeah...
01:47:04 <shachaf> .::
01:47:09 -!- bd_ has joined.
01:47:27 <Sgeo|web> > (M.!) "x" + (M.!) "y" $ M.fromList [("x",2), ("y",3)]
01:47:27 <CakeProphet> shachaf: not falling for it.... not falling for it.... not -- AAAAAAAH
01:47:28 <lambdabot> Couldn't match expected type `Data.Map.Map k a'
01:47:28 <lambdabot> against inferred ty...
01:47:30 <CakeProphet> :t (.::)
01:47:31 <lambdabot> Not in scope: `.::'
01:47:35 <CakeProphet> shachaf: ;_;
01:47:38 <oerjan> i'm reminded of those principia mathematica dots
01:48:10 <oerjan> which i suppose had a similar purpose of avoiding parentheses :P
01:48:11 * Sgeo|web copies elliott's thing
01:48:12 <elliott> oerjan: those are great
01:48:15 <CakeProphet> @pl (f .) . g
01:48:15 <lambdabot> (f .) . g
01:48:16 <Sgeo|web> > (M.! "x") + (M.! "y") + 10 $ M.fromList [("x",2), ("y",3)]
01:48:17 <lambdabot> 15
01:48:18 <CakeProphet> :(
01:48:20 <shachaf> @let (.::)=fmap fmap fmap fmap fmap
01:48:21 <Sgeo|web> Huh
01:48:21 <lambdabot> Defined.
01:48:22 <CakeProphet> @pl \f g -> (f .) . g
01:48:23 <lambdabot> (.) . (.)
01:48:27 <CakeProphet> best operator
01:48:46 <CakeProphet> the "third nipple" operator
01:49:32 <CakeProphet> well, arguably the best operator is in fact the angry totem pole and its arbitrary layering
01:49:42 -!- augur has quit (Remote host closed the connection).
01:49:50 <CakeProphet> > ((:[])>=>(:[])) 2
01:49:51 <lambdabot> [2]
01:50:10 <CakeProphet> > ((:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])) 2
01:50:10 <lambdabot> [2]
01:50:21 <CakeProphet> you may include as many angry totem levels as you please.
01:50:34 <oerjan> the angry totem pole just keeps returning
01:50:52 <CakeProphet> oerjan: oh ho ho ho ho. my hat off to you sir.
01:51:06 <Sgeo|web> Does the Num (a -> b) instance use any extensions?
01:51:15 <elliott> no
01:51:28 <bd_> Sgeo|web: That would be Num b => Num (a -> b), and no. But good luck writing a Show for it...
01:51:45 <oerjan> > ($ 2) :: Int -> Int
01:51:45 <lambdabot> Couldn't match expected type `GHC.Types.Int'
01:51:46 <lambdabot> against inferred type ...
01:51:47 <oerjan> oops
01:51:53 <oerjan> > (+ 2) :: Int -> Int
01:51:53 <lambdabot> Overlapping instances for GHC.Show.Show
01:51:54 <lambdabot> (GHC.T...
01:52:10 * Sgeo|web wouldn't attempt to write a Show for it, other than show = const "<Unshowable>"
01:52:12 <oerjan> lambdabot: your instances are a mess
01:52:20 <elliott> > id
01:52:20 <lambdabot> Overlapping instances for GHC.Show.Show (a -> a)
01:52:21 <lambdabot> arising from a use of `...
01:52:27 <elliott> Wait, where did bd_ appear from.
01:52:30 <bd_> Sgeo|web: more importantly, it's injecting a really ugly instance into the global namespace
01:52:31 <elliott> Oh, there it is.
01:52:36 <bd_> elliott: Over there --------->
01:53:17 <bd_> Sgeo|web: so later on if you write (f x y z) + 42 when f takes four arguments you get a real headscratcher of an error message...
01:53:47 <bd_> incidentally the Num instance for (a -> b) just lifts everything into the reader monad
01:53:47 <oerjan> > f x y z + 42 :: Expr
01:53:48 <lambdabot> f x y z + 42
01:54:18 <bd_> > let f _ _ _ _ = undefined in f 1 2 3 + 42
01:54:19 <lambdabot> Overlapping instances for GHC.Show.Show (t -> a)
01:54:19 <lambdabot> arising from a use of `...
01:54:37 <bd_> > let f _ _ _ _ = undefined in f 1 2 3 + 42 == 43
01:54:38 <lambdabot> *Exception: (==): No overloading for function
01:54:54 <bd_> Oops, your argument mismatch type error became a runtime error now :)
01:54:56 <oerjan> > ((f + 1) 2 + 3) 4 + 5 :: Expr
01:54:57 <lambdabot> f 2 4 + 1 + 3 + 5
01:55:10 <Sgeo|web> elliott: I still think the proper way is to use monads, because this way, I can't do == with these things
01:55:18 <CakeProphet> > 2 "best" "misfeature"
01:55:19 <lambdabot> 2
01:55:23 <elliott> Sgeo|web: you still haven't defined how on earth this is related to monads in any way at all
01:55:25 <Sgeo|web> At least, unless you can write halts :: a -> Bool for me?
01:55:36 <elliott> what
01:55:45 <Sgeo|web> Wait, is that a sufficient condition for making (a -> b) an Eq instance?
01:55:46 <elliott> yeah I'm just going to leave you to this
01:55:49 <bd_> let halts = ((const True) $!)
01:55:50 <Sgeo|web> Or just necessary?
01:55:53 -!- Jafet has quit (Quit: Leaving.).
01:56:04 <oerjan> > 2 . "best" . "misfeature"
01:56:05 <lambdabot> Couldn't match expected type `a1 -> a'
01:56:05 <lambdabot> against inferred type `[GHC....
01:56:33 <oerjan> > 2 "best" . "misfeature"
01:56:35 <lambdabot> [2,2,2,2,2,2,2,2,2,2]
01:56:46 <Sgeo|web> :t ($!)
01:56:46 <lambdabot> forall a b. (a -> b) -> a -> b
01:56:49 <bd_> Sgeo|web: it's necessary but not sufficient. but anyway, you really don't want to use a Num (a->b) instance. Just define a proper GADT already :|
01:57:00 <bd_> You could even define Eq and Show if you did it with a GADT!
01:57:15 <Sgeo|web> o.O
01:57:31 <bd_> structural equality, mind you
01:59:08 <elliott> bd_: how would a gadt help
01:59:24 <bd_> https://gist.github.com/1294383 something along these lines
01:59:46 <bd_> although I suppose if you get rid of the general liftSNs and use a limited set of operations (as would be needed for Eq), you could get away with regular datatypes
02:00:10 <oerjan> why not just newtype FakeNum s a = FakeNum ((s -> a) -> a)
02:00:25 <oerjan> and instance Num a => Num (FakeNum s a)
02:00:44 <oerjan> if you don't want to pollute instances of real functions
02:00:46 <bd_> oerjan: you could certainly do that, although then you can't define Eq and Show, and you're forced to choose the result type early on (or have rank-2 types scattered throughout the user's code)
02:01:21 <oerjan> hm i guess i don't know what Sgeo|web wants to use it for, so maybe
02:01:22 <bd_> but yeah, point is there's no reason to pollute instances of functions
02:01:34 <Sgeo|web> I think I actually have a chance of getting the FakeNum s a thing to work, so
02:01:38 <elliott> there's no reason to do what Sgeo|web is doing in the first place.
02:01:42 <elliott> whatever that is.
02:01:44 <bd_> instance Something (a -> b) is fun to play with but not so fun to debug with
02:01:51 <Sgeo|web> elliott: for fun
02:02:04 <bd_> Sgeo|web: in that case I fully endorse the GADT method ;)
02:02:14 -!- MDude has changed nick to MSleep.
02:02:16 <elliott> for values of fun equal to wasting your time painfully
02:02:48 <Sgeo|web> Well, I'm sort of using this as a "bad" suggestion for how to have a thing that you can specify "x"s etc. then later fill them it
02:03:13 <Sgeo|web> My good suggestion is still monads, since that can be made to work smoothly and sanely with ==
02:03:46 * bd_ still doesn't understand how monads, which have embedded functions all over the place, can possibly be made to work smoothly and sanely with ==
02:05:27 <Sgeo|web> imNotCreativeEnoughToNameThisFunction do { a <- term "x"; b <- term "y"; return a + b == 5 } [("x",2),("y",3)]
02:05:50 <elliott> Sgeo|web: learn to precedence :P
02:05:58 <elliott> return (a + b == 5)
02:06:21 <elliott> bd_: monads don't inherently have embedded functions
02:06:23 <elliott> [] is a monad, after all
02:07:12 <bd_> Sgeo|web: that's called the reader monad, where term k = asks ($ k)
02:07:16 <bd_> elliott: good point
02:07:27 <elliott> bd_: if lists were functions
02:07:34 <bd_> but I fail to see how he'll construct his delayed-symbolic-evaluation monad without using embedded functions :)
02:07:37 <elliott> term k = asks (M.! k) :P
02:08:01 <bd_> elliott: my way is more general :)
02:08:16 <Sgeo|web> bd_: oh, hmm, huh
02:08:21 <bd_> where the environment = M.! someMap
02:08:47 <Sgeo|web> I think Reader monad is more sane than RVar for my purposes then >.>
02:08:53 <Sgeo|web> Now bd_ knows what I really want to do >.>
02:08:58 <bd_> no I don't.
02:09:07 <Sgeo|web> The mcmc thing
02:09:16 <Sgeo|web> I still need to watch that video though
02:09:17 <bd_> ... not seeing how Reader would be very helpful for that!
02:09:50 <Sgeo|web> Function to adjust the values of the "random" variables, I guess
02:09:54 <Sgeo|web> Again, I need to learn MCMC
02:10:09 <Sgeo|web> I'm having an impression that I'm doing X-Y, but oh well
02:10:12 <Sgeo|web> I'll learn
02:10:23 <elliott> RVar?
02:10:41 <elliott> What on earth are you actually doing
02:10:47 <bd_> near as I can tell he's trying to do some sort of markov chain traverser
02:10:59 <bd_> and was thinking about using Data.RVar for it
02:11:33 <bd_> the docs for RVar have a nice random walk example that could probably be adapted to a markov chain easily enough...
02:11:45 <elliott> oh well. "good luck with that"
02:12:02 <elliott> i've never even heard of rvar. looks way too complicated for this
02:12:30 -!- oerjan has quit (Quit: Good night).
02:12:32 <elliott> +
02:12:32 <elliott> 111
02:12:32 <elliott> + if impl(ghc == 7.2.1)
02:12:32 <elliott> 112
02:12:32 <elliott> + -- Doesn't work under GHC 7.2.1 due to
02:12:32 <elliott> 113
02:12:34 <elliott> + -- http://hackage.haskell.org/trac/ghc/ticket/5410
02:12:37 <elliott> 114
02:12:38 <elliott> + Buildable: False
02:12:40 <elliott> also it doesn't work
02:14:08 <bd_> nice :)
02:17:26 <Gregor> http://www.exoticmeatmarket.com/aflime.html LION STEAKS, GETCHER LION STEAKS
02:50:26 <PatashuXantheres> I have a question re: cygwin and languages that exec on the command line. Say I have a unix program (dd) that I want to be able to call from a program that I'm running on windows. I know that there are cygwin dlls that, if in the same folder as a unix program, let me call it from the command line. What do I have to do if it's from a program? Same thing?
02:53:15 <elliott> the exe depends on the dll
02:53:18 <elliott> that's all
02:53:34 <elliott> it could even be in c:\windows
02:54:01 <elliott> Gregor: yikes.
02:54:22 <PatashuXantheres> So say both dd and cygwin's dlls are in my computer's path and from e.g. a java program I run the command 'dd blahblahblah'. It'll work?
02:54:40 <elliott> Gregor: fake, right?
02:54:48 <elliott> PatashuXantheres: hopefully
02:54:57 <PatashuXantheres> 'hopefully' lol
02:54:59 -!- PatashuXantheres has changed nick to Patashu.
02:55:28 <pikhq_> The DLL needs to be in the lookup path for DLLs...
02:55:31 <elliott> "If PETA will give 1000 jobs to American farmers and ranchers, Exotic Meat Market will stop selling any and all kind of meats which PETA wants us to stop."
02:55:45 <pikhq_> I don't remember all the details of that, but I do remember that the directory of the EXE is in the lookup path.
02:56:30 <Patashu> for digital forensics at university I have to write a program that can hide data on the hard disk such that normal techniques won't find it. my idea is to take a fat file system like on a flash drive, write to the bad cluster bitmap to mark a new cluster as bad, and then in that cluster write the information to hide
02:56:37 <pikhq_> (I *think* it's a configuration option, and that cygwin sticks the path to cygwin.dll in there?)
02:57:20 <pikhq_> I assume by "normal techniques" they mean "looking around a mounted filesystem".
02:57:28 <Patashu> yes
02:57:39 <pikhq_> Yeah, that'd work quite well.
02:57:42 <Patashu> awesome
02:58:12 <pikhq_> You could also do something more awesome and esoteric.
02:58:23 <pikhq_> Store long file names without corresponding short file names.
02:58:29 <Patashu> hmm!
02:59:11 <pikhq_> Windows simply considers such entries in the file name list to be empty, so as to be compatible with SFN-only FAT implementations.
03:01:28 <elliott> do you have to go to NT level to circmvrent that?
03:02:21 <pikhq_> No, you have to access the partition yourself.
03:02:33 <pikhq_> It's also part of Linux VFAT, I think.
03:02:55 <elliott> nice
03:23:24 <Sgeo|web> Should I try to first grok GADTs or Rank 2 whatevers or existentials?
03:26:01 <pikhq_> You should first grok grokking.
03:26:06 <pikhq_> From this all else follows.
03:28:50 -!- augur has joined.
03:30:03 -!- augur has quit (Remote host closed the connection).
03:42:22 <Sgeo|web> "Normally when creating a new type using type, newtype, data, etc., every type variable that appears on the right-hand side must also appear on the left-hand side. Existential types are a way of turning this off."
03:42:31 <Sgeo|web> That... is stunningly simple to understand, I think
03:43:08 <Sgeo|web> But I have a feeling I'm missing the reason why that's normally the case
03:44:36 <elliott> that is an awful explanation
03:44:42 <CakeProphet> Sgeo|web: In the simplest case, existential types are sort of like implicit casting to an interface in languages like Java
03:44:58 <CakeProphet> but with multiple parameters you get far more generality than you do with just an interface.
03:45:05 <elliott> CakeProphet: i...
03:45:06 <elliott> no
03:45:13 <CakeProphet> elliott: is that not a good analogy?
03:45:25 <elliott> Sgeo|web: ask #haskell.
03:45:26 <Madoka-Kaname> @pl (\x -> x%2==0)
03:45:26 <lambdabot> (0 ==) . (% 2)
03:45:31 <Madoka-Kaname> :t isEven
03:45:32 <lambdabot> Not in scope: `isEven'
03:45:32 <CakeProphet> elliott: do those things not compare? do they not have similar roles? I think they do.
03:45:33 <Madoka-Kaname> :t even
03:45:34 <lambdabot> forall a. (Integral a) => a -> Bool
03:45:42 <elliott> > (%)
03:45:43 <lambdabot> Overlapping instances for GHC.Show.Show
03:45:43 <lambdabot> (a -> ...
03:45:47 <elliott> huh
03:45:52 <elliott> :t (%)
03:45:53 <lambdabot> forall a. (Integral a) => a -> a -> Ratio a
03:46:05 <elliott> Madoka-Kaname: not what you want
03:46:17 <CakeProphet> :t mod
03:46:18 <lambdabot> forall a. (Integral a) => a -> a -> a
03:46:27 <CakeProphet> > map (`mod` 5) [1..]
03:46:28 <lambdabot> [1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,...
03:46:37 <Madoka-Kaname> > map even [1..]
03:46:37 <lambdabot> [False,True,False,True,False,True,False,True,False,True,False,True,False,Tr...
03:46:48 <CakeProphet> > filter even [1..]
03:46:50 <lambdabot> [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,...
03:46:57 <CakeProphet> > evens
03:46:58 <lambdabot> Not in scope: `evens'
03:47:01 <CakeProphet> ah.
03:47:12 <CakeProphet> though they may be in a library or something. no need.
03:47:14 <Madoka-Kaname> :t (map (*2) . filter even) [1,2,3,4,5,8]
03:47:15 <lambdabot> forall a. (Integral a) => [a]
03:47:15 <CakeProphet> *thought
03:47:18 <Madoka-Kaname> > (map (*2) . filter even) [1,2,3,4,5,8]
03:47:20 <lambdabot> [4,8,16]
03:49:14 <CakeProphet> elliott: typeclasses, in the simplest case, are comparable to interfaces are they not? How is an existential type not like declaring a structure with attributes that have an interface type? variable with an interface type?
03:49:18 <CakeProphet> ...er
03:49:29 <CakeProphet> lol. accidentally hit enter before I ctrl+K'd
03:49:49 <CakeProphet> probably should have ctrl+U'd though.
03:49:50 <elliott> CakeProphet: i'm really not up to correcting your iffy analogy right now. i'm pretty busy. sorry
03:50:18 <CakeProphet> elliott: no need to correct. I'm not in any way saying it's a perfect fit. If anything typeclasses and existentials are a superset of it.
03:50:21 <CakeProphet> because... they are.
03:50:50 <CakeProphet> but the things you can do with interfaces, you can do with typeclasses and existentials.
03:50:59 <CakeProphet> no?
03:56:37 -!- zzo38 has joined.
03:57:27 -!- augur has joined.
04:01:34 <Madoka-Kaname> > (\あ -> あ) 1
04:01:35 <lambdabot> 1
04:02:01 <Madoka-Kaname> > (\何か -> 何か) 1
04:02:02 <lambdabot> 1
04:04:21 <pikhq_> どうして日本語で書くの?
04:04:22 <CakeProphet> > 1 2 3 4 5
04:04:23 <lambdabot> 1
04:05:25 <CakeProphet> this is a really bad hack to put in lambdabots evaluator simply so that you can write things like f x y z :: Expr
04:05:32 <elliott> um
04:05:37 <elliott> its pure haskell
04:05:38 <elliott> also
04:05:42 <CakeProphet> ?
04:05:51 <elliott> that doesn't rely on that instance
04:06:04 <CakeProphet> I didn't say it did.
04:06:07 <elliott> those two things are comoketely separate
04:06:10 <elliott> yes you did
04:06:11 <CakeProphet> but I'm pretty sure that is the purpose of its existence.
04:06:14 <elliott> no
04:07:01 -!- ive has joined.
04:07:07 <CakeProphet> also "1 2 3 4 5" is not a valid expression according to GHC.
04:07:14 <CakeProphet> well, it is syntactically.
04:07:15 <elliott> yes it is
04:07:41 <elliott> hint: it will type with one line of code
04:07:56 <Madoka-Kaname> > 1 2 3 4 5
04:07:57 <lambdabot> 1
04:08:14 <CakeProphet> elliott: an instance declaration, yes? Will it /run/ in one line of code?
04:08:41 <CakeProphet> > 1 2 + 3 4
04:08:42 <lambdabot> 4
04:08:51 <Madoka-Kaname> :t 1 2 3 4 5
04:08:51 <CakeProphet> > (1 2) 3
04:08:52 <lambdabot> forall t t1. (Num (t1 -> t), Num t1) => t
04:08:53 <lambdabot> 1
04:09:05 <Madoka-Kaname> :t 1 2
04:09:06 <lambdabot> forall t t1. (Num (t1 -> t), Num t1) => t
04:09:17 <Madoka-Kaname> Oh
04:09:20 <Madoka-Kaname> fromIntergral?
04:09:20 <pikhq_> elliott: It won't type; there's no instance of Num (a -> b -> c -> d) by default.
04:09:29 <CakeProphet> Madoka-Kaname: 1 is a function, duh.
04:09:32 <CakeProphet> :P
04:10:14 <CakeProphet> elliott: but you're basically saying that valid Haskell != bad hack
04:10:41 <elliott> "put in lambdabots evaluator"
04:10:45 <CakeProphet> in which case, I'll get back to you when I finish my IsString instance that executes arbitrary perl.
04:11:00 <pikhq_> CakeProphet: I'm pretty sure what you're seeing is just a normal, perfectly sane instance of Num.
04:11:15 <pikhq_> Nums via Church numerals, if I had to guess.
04:11:20 <elliott> no
04:11:20 <CakeProphet> > 0.5 34
04:11:21 <lambdabot> 0.5
04:11:35 <pikhq_> elliott: Then what is it?
04:11:49 <elliott> > (sum / length) [0..9]
04:11:50 <lambdabot> No instance for (GHC.Real.Fractional GHC.Types.Int)
04:11:50 <lambdabot> arising from a use o...
04:11:56 <elliott> > (sum / length) [0.0..9]
04:11:57 <lambdabot> No instance for (GHC.Real.Fractional GHC.Types.Int)
04:11:58 <lambdabot> arising from a use o...
04:12:01 <elliott> ffs
04:12:07 <pikhq_> elliott: "1 2" does not type with just Prelude.
04:12:28 <elliott> its not normal
04:12:29 <elliott> sane
04:12:31 <elliott> or church
04:12:47 <pikhq_> Then what *is* it?
04:13:07 <CakeProphet> :t f x y z
04:13:08 <lambdabot> forall t. (SimpleReflect.FromExpr (Expr -> t)) => t
04:13:11 <elliott> > (length + length) [0,9]
04:13:12 <lambdabot> 4
04:13:16 <elliott> CakeProphet: THAT IS UNRELATED
04:13:21 <elliott> _COMPLETELY_
04:13:26 <CakeProphet> elliott: OKAY I WAS SORT OF TESTING TO SEE IF IT WAS RELAX
04:13:41 <pikhq_> elliott: YOU EXPLAIN NOTHING
04:13:48 <elliott> pikhq_:
04:13:50 <elliott> > (length + length) [0,9]
04:13:51 <lambdabot> 4
04:13:54 <CakeProphet> pikhq_: yeah I don't know why you're trying to elliott to explain anything.
04:13:58 <elliott> > (length / length) [0,9]
04:13:58 <CakeProphet> +get
04:13:59 <lambdabot> No instance for (GHC.Real.Fractional GHC.Types.Int)
04:13:59 <lambdabot> arising from a use o...
04:14:08 <elliott> > (length `div` length) [0,9]
04:14:09 <lambdabot> No instance for (GHC.Real.Integral ([a] -> GHC.Types.Int))
04:14:10 <lambdabot> arising from ...
04:14:12 <elliott> oh come on
04:14:21 <elliott> > (length - length) [0,9]
04:14:21 <lambdabot> 0
04:14:25 <CakeProphet> > (length / length) [0.0, 0.9]
04:14:25 <lambdabot> No instance for (GHC.Real.Fractional GHC.Types.Int)
04:14:26 <lambdabot> arising from a use o...
04:14:27 <elliott> > (length + 99) [0,9]
04:14:28 <lambdabot> 101
04:14:35 <elliott> pikhq_: explained.
04:14:46 <pikhq_> I want the name of the instance and its source.
04:15:02 <elliott> instances dont have names
04:15:13 <pikhq_> You know what I mean.
04:15:22 <elliott> nope
04:15:50 <pikhq_> Ah, yes, you're a crazy person who thinks (length + length) [0,9] explains (length + length) [0,9]
04:16:02 <elliott> i gave three examples
04:16:10 <CakeProphet> :t length + length
04:16:10 <elliott> w/e, keep being stubborn
04:16:10 <lambdabot> forall a. [a] -> Int
04:16:20 <CakeProphet> :t (length +)
04:16:21 <lambdabot> forall a. ([a] -> Int) -> [a] -> Int
04:16:40 <CakeProphet> Num instance on functions, as far as I can tell.
04:17:13 <pikhq_> Instance of Num for (Num n) => (n -> n), apparently.
04:17:27 <CakeProphet> so then "term term" automatically types as a -> b?
04:17:33 <CakeProphet> er a -> a in that case I guess.
04:17:44 <elliott> pikhq_: uhh
04:17:53 <elliott> yeah if my examples typed with that
04:17:59 <pikhq_> :t \x->1 x
04:18:00 <lambdabot> forall t t1. (Num (t -> t1)) => t -> t1
04:18:07 <pikhq_> Derp.
04:18:24 <CakeProphet> I'm not entirely clear how that magically makes integer literals into functions.
04:18:38 <elliott> :t 9
04:18:39 <lambdabot> forall t. (Num t) => t
04:18:50 <zzo38> This time I fixed the gopher SWPC for really.
04:18:53 <CakeProphet> elliott: uh huh?
04:18:53 <elliott> do you actually know haskell
04:19:04 <CakeProphet> elliott: I do.
04:19:34 <CakeProphet> elliott: do you actually know how to explain things instead of just being a jackass?
04:19:35 <elliott> practically every feature of the language i have had to explain to your confusion
04:19:40 <CakeProphet> (Answer: no)
04:19:42 <elliott> :t 9
04:19:42 <lambdabot> forall t. (Num t) => t
04:19:46 <elliott> + Num instance
04:19:49 <elliott> = ?????
04:20:14 <CakeProphet> at what point does 1 2 3 4 5 solicit the services of (+), (-), or (*)?
04:20:27 <elliott> :t 9
04:20:28 <lambdabot> forall t. (Num t) => t
04:20:34 <CakeProphet> I know the type of 9, sir.
04:20:35 <elliott> + Num instance for functions
04:20:38 <elliott> = ?????????????
04:21:18 <CakeProphet> > 9 . 8
04:21:19 <lambdabot> No instance for (GHC.Show.Show (f b))
04:21:19 <lambdabot> arising from a use of `M2427776621...
04:21:25 <CakeProphet> > (9 . 8) 7
04:21:26 <lambdabot> 9
04:22:10 <CakeProphet> :t const 8
04:22:11 <lambdabot> forall t b. (Num t) => b -> t
04:22:24 <CakeProphet> :t (9 >>= 8)
04:22:25 <lambdabot> forall (m :: * -> *) a b. (Num (m a), Num (m b), Monad m) => m b
04:22:57 <CakeProphet> > (9 >>= 8) 7
04:22:58 <lambdabot> 8
04:23:10 <CakeProphet> exciting instance.
04:24:03 <CakeProphet> > map (5 + 5) [1..]
04:24:04 <lambdabot> [10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10...
04:24:39 <CakeProphet> > 'a' 2 3
04:24:39 <lambdabot> Couldn't match expected type `t1 -> t2 -> t'
04:24:40 <lambdabot> against inferred type ...
04:24:56 <CakeProphet> needs moar OverloadedChars
04:25:07 <CakeProphet> function instance of IsChar
04:25:15 <CakeProphet> Num instance of IsChar
04:25:18 <CakeProphet> weak typing yesssssss
04:25:32 <CakeProphet> er well Int instance of IsChar.
04:26:49 <CakeProphet> > fix 1
04:26:49 <lambdabot> 1
04:26:52 <CakeProphet> fixed.
04:28:22 <CakeProphet> elliott: note that knowing Haskell does not instantly able to grasp your, honestly, shit explanations of things. For an example that isn't influenced by your inherent bias against me, see pikhq
04:28:28 <CakeProphet> s/able/allow/
04:28:41 <CakeProphet> s/allow/allow me (?#ack...)/
04:32:15 <pikhq_> CakeProphet: If there is an instance of Num for (a -> b), then it immediately follows that for anything of type (Num t) => t (say, 1), it can be of type (a -> b).
04:33:02 <CakeProphet> right, I was confused because I didn't realize that "f a" always enforces f to be type a -> b
04:33:14 <elliott> as opposed to applying integers
04:33:28 <CakeProphet> I mean, I knew intuitively that it does enforce that, but not that GHC does that.
04:33:40 <pikhq_> It simply must.
04:33:41 <elliott> it's simple unification, there is no special rule
04:33:56 <CakeProphet> elliott: cool, dude.
04:34:13 <pikhq_> You'd literally have to break type inference for that to not happen. And a lot of other things besides. :)
04:34:32 <CakeProphet> right, the more familiar example of a -> b as a Monad does the same thing.
04:34:46 <CakeProphet> integer overloading magic just confused me.
04:35:00 <CakeProphet> *number
04:36:43 <CakeProphet> elliott: I was confused I thought the entire world was derived of special cases.
04:37:05 <elliott> yes, I too am under the impression that this is how you model things
04:37:16 <CakeProphet> indeed.
04:37:45 <CakeProphet> I tend to model things with intuition. Sometimes this is inexact. Shit happens.
04:38:49 <elliott> so, you don't know Haskell, just a bunch of special cases? ok
04:39:14 <CakeProphet> well, for starters, I do not fully know the process GHC uses to derive types.
04:39:30 <CakeProphet> do I know Haskell. Sure, by some definition of know.
04:40:08 <elliott> yes this is totally a ghc specific thing
04:40:13 <elliott> hindley and milner, famous ghc hackers
04:40:17 <elliott> languages = implementations
04:40:23 <CakeProphet> elliott: totally.
04:40:49 <CakeProphet> perhaps if you didn't know everything things like not knowing things would make more sense to you.
04:42:02 <Madoka-Kaname> > iterate (*2)
04:42:03 <lambdabot> Overlapping instances for GHC.Show.Show (a -> [a])
04:42:03 <lambdabot> arising from a use of...
04:42:05 <Madoka-Kaname> :t iterate
04:42:06 <lambdabot> forall a. (a -> a) -> a -> [a]
04:42:15 <Madoka-Kaname> > iterate (*2) 1
04:42:16 <lambdabot> [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,...
04:42:23 <Madoka-Kaname> > iterate (\x -> x * x) 1
04:42:24 <lambdabot> [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,...
04:42:25 <Madoka-Kaname> > iterate (\x -> x * x) 2
04:42:25 <lambdabot> [2,4,16,256,65536,4294967296,18446744073709551616,3402823669209384634633746...
04:42:33 <Madoka-Kaname> > iterate (\x -> x * x * x) 2
04:42:34 <lambdabot> [2,8,512,134217728,2417851639229258349412352,141347765182270746366663800059...
04:42:43 <Madoka-Kaname> > iterate (\x -> x * x * x * x * x * x) 2
04:42:44 <lambdabot> [2,64,68719476736,105312291668557186697918027683670432318895095400549111254...
04:42:50 <Madoka-Kaname> Okey, yeah, it's not going to overflow, is it?
04:42:55 <CakeProphet> > iterate 2 undefined
04:42:55 <lambdabot> [*Exception: Prelude.undefined
04:42:58 <CakeProphet> :(
04:43:03 <CakeProphet> > 2 undefined
04:43:04 <lambdabot> 2
04:43:26 * CakeProphet scratches head.
04:43:39 <CakeProphet> @src iterate
04:43:39 <lambdabot> iterate f x = x : iterate f (f x)
04:43:49 * CakeProphet scratches his head even more.
04:43:53 <CakeProphet> ah
04:43:54 <CakeProphet> yes
04:44:09 <CakeProphet> > iterate 2 0
04:44:10 <lambdabot> [0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,...
04:44:19 <CakeProphet> > join iterate 2
04:44:20 <lambdabot> Occurs check: cannot construct the infinite type: a = a -> a
04:44:23 <CakeProphet> bah
04:44:38 <elliott> > tail (iterate 9 undefined)
04:44:39 <lambdabot> [9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,...
04:44:44 <elliott> > iterate 2 2
04:44:44 <lambdabot> [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,...
04:45:31 <CakeProphet> ah okay.
04:45:47 <CakeProphet> er, not referring to iterate 2 2
04:45:50 <CakeProphet> I, uh, figured that out
04:46:07 <CakeProphet> I was trying to write it with join. but the 2 on the left is not the same type as the two on the right.
04:46:20 <Madoka-Kaname> > iterate unsafeCoerce undefined
04:46:21 <lambdabot> Not in scope: `unsafeCoerce'
04:46:24 <CakeProphet> integer overloading, apparently the bane of my existence.
04:46:45 <Madoka-Kaname> So...
04:46:59 <Madoka-Kaname> forceEval :: a -> a
04:47:04 <Madoka-Kaname> forceEval = unsafeCoerce
04:47:12 <CakeProphet> forceEval = id
04:47:14 <CakeProphet> most likely
04:47:25 <CakeProphet> though it could be unsafeCoerce :: a -> a
04:47:28 <CakeProphet> which is just... id.
04:48:19 <CakeProphet> :t join asTypeOf
04:48:20 <lambdabot> forall a. a -> a
04:48:23 <CakeProphet> could also be that.
04:48:23 <elliott> <Madoka-Kaname> forceEval :: a -> a
04:48:29 <elliott> Madoka-Kaname: a "forceEval" function makes no sense.
04:48:37 <elliott> semantically, implementation-wise, every-wise.
04:48:42 <Madoka-Kaname> Well....
04:48:44 <CakeProphet> elliott: well, it makes sense... as id. id is forceEval. :P
04:48:51 <elliott> Madoka-Kaname: No.
04:48:56 <Madoka-Kaname> Maybe "strict" would be a better word?
04:48:57 <Madoka-Kaname> ;.
04:48:58 <Sgeo|web> reverse . reverse for lists
04:48:58 <Madoka-Kaname> ;.;
04:49:06 <CakeProphet> Madoka-Kaname: not id does not magically strictly evaluate.
04:49:09 <CakeProphet> (no
04:49:12 <CakeProphet> :t seq
04:49:13 <lambdabot> forall a t. a -> t -> t
04:49:28 <Madoka-Kaname> unsafeCoerce undefined seems to error, at least.
04:49:38 <CakeProphet> Madoka-Kaname: when evaluated, yes.
04:49:48 <elliott> Madoka-Kaname: No, there is literally no way that makes any sense at all; if you think it does, you don't understand Haskell's evaluation model very well.
04:49:52 <CakeProphet> Madoka-Kaname: try putting it as the second argument to const
04:49:57 <Madoka-Kaname> elliott, ;.;
04:50:09 <CakeProphet> > undefined `seq` 2
04:50:10 <lambdabot> *Exception: Prelude.undefined
04:50:13 * Madoka-Kaname drops an anvil on elliott
04:50:14 <Madoka-Kaname> Die
04:50:18 <elliott> k
04:50:25 <CakeProphet> Madoka-Kaname: const 2 undefined == 2
04:50:34 <CakeProphet> Madoka-Kaname: const 2 (unsafeCoerce undefined) == 2
04:50:39 <Madoka-Kaname> :t const
04:50:40 <lambdabot> forall a b. a -> b -> a
04:50:43 <CakeProphet> > const 2 3
04:50:44 <lambdabot> 2
04:50:49 <CakeProphet> > const 2 "holy crap anything"
04:50:50 <lambdabot> 2
04:51:07 <monqy> what's up, #esoteric
04:51:14 <CakeProphet> > const 2 (repeat "dude this list repeats /forever/")
04:51:15 <lambdabot> 2
04:51:58 <CakeProphet> > let x = repeat "dude this list repeats /forever/" in x `seq` const 2 x
04:51:59 <lambdabot> 2
04:52:31 <Madoka-Kaname> > seq (fix ($)) 2
04:52:31 <lambdabot> 2
04:52:41 <Madoka-Kaname> :t fix ($)
04:52:42 <lambdabot> forall a b. a -> b
04:52:46 <Madoka-Kaname> No way that'll return, right?
04:52:51 <Madoka-Kaname> Oh
04:52:54 <Madoka-Kaname> > seq (fix ($) 1) 2
04:52:58 <CakeProphet> Madoka-Kaname: note that when seq strictly evaluates something that doesn't mean that it evaluates the structure completely.
04:53:09 <lambdabot> thread killed
04:53:11 <Madoka-Kaname> Makes sense =p
04:53:26 <CakeProphet> so repeat 2 `seq` 2 only evaluates the first node of repeat 2
04:54:05 <Sgeo|web> deepseq?
04:54:29 <CakeProphet> there is a function called deepSeq that evaluates everything to its so-called normal form (aka "fully evaluated")
04:55:16 <Madoka-Kaname> > deepSeq (fix (1:) []) "wee"
04:55:17 <lambdabot> Not in scope: `deepSeq'
04:55:22 <elliott> It's called deepseq and it's in a type-class.
04:55:29 <elliott> It does not make sense for much data, and it is almost always a bad idea.
04:55:35 <elliott> s/much/many/
04:57:42 <CakeProphet> Madoka-Kaname: there's also a function ($!) f x = x `seq` f x
04:57:47 <CakeProphet> aka strict application.
05:01:01 <CakeProphet> Madoka-Kaname: but generally using seq and $! isn't really important unless you're trying to optimize code speed or memory use.
05:01:33 <elliott> seq needs to go back into a typeclass.
05:01:49 <CakeProphet> elliott: por que?
05:01:54 <CakeProphet> also "go back" -- it was in one before?
05:02:00 <elliott> Yes.
05:02:11 <elliott> In 1.4. Haskell 98 was a step back in several ways.
05:02:20 <CakeProphet> What would the benefit of that be?
05:02:25 <elliott> class Eval a where
05:02:26 <elliott> seq :: a -> b -> b
05:02:26 <elliott> strict :: (a -> b) -> a -> b
05:02:26 <elliott> strict f x = x `seq` f x
05:02:44 <CakeProphet> also how does one write a seq instance
05:02:49 <CakeProphet> without a seq?
05:02:52 <elliott> CakeProphet: Allows eta-expansion (because it doesn't say whether functions are lifted or unlifted); avoids massively complicating the semantic model (seq has no denotational semantics).
05:03:14 <elliott> And makes parametricity hold more properly.
05:03:39 <elliott> Other excellent things 1.4 had: (++) in MonadPlus, monad comprehensions, "map" in Functor, empty Void type...
05:03:46 <CakeProphet> waaaaaaah
05:03:54 <CakeProphet> so good.
05:04:02 <CakeProphet> what happened Haskell 98?
05:04:32 <elliott> Oh, and no "fail" in Monad.
05:04:34 <CakeProphet> perhaps they were concerned with the typeclass overhead for the common case of lists?
05:04:39 <elliott> There is no overhead.
05:04:43 <elliott> What happened was concerns about newbies / quality of error messages; and proliferation of constraints in definitions.
05:04:50 <CakeProphet> oh, lame.
05:04:58 <elliott> e.g. using Seq added Eval constraints, and MonadFail constraints or whatever for partial pattern matches, and so on.
05:05:11 <elliott> filter :: MonadZero m => (a -> Bool) -> m a -> m a
05:05:11 <elliott> filter p = applyM (\x -> if p x then return x else zero)
05:05:16 <CakeProphet> it's not like they avoided a profusion of instance-related error messages.
05:05:20 <CakeProphet> I get plenty of those.
05:05:47 <quintopia> did someone ping me?
05:05:52 <elliott> quintopia: probably
05:06:21 <quintopia> okay as long as it's not important enough that you said "yes"
05:06:40 <elliott> liftM3 :: (Monad m) => (a -> b -> c -> d) ->
05:06:41 <elliott> (m a -> m b -> m c -> m d)
05:06:41 <elliott> liftM3 f = \a b c -> [f a' b' c' | a' <- a, b' <- b, c' <- c]
05:06:43 <elliott> Monad comprehensions.
05:06:56 <CakeProphet> o.o
05:07:02 <monqy> monad comprehensions
05:07:13 <CakeProphet> I honestly
05:07:18 <CakeProphet> never use list comprehensions. maybe I should.
05:07:48 <quintopia> they say bitcoin is dead
05:08:06 <CakeProphet> quintopia: they said rock 'n' roll would die.
05:09:37 <CakeProphet> ugh programming C++ is like... flagellantism
05:10:01 <Sgeo|web> "First you have to tell the compiler how to serialize any datatype, in general. Since Haskell datatypes have a regular structure, this means you can just explain how to serialize a few basic datatypes."
05:10:04 <Sgeo|web> Woah
05:10:08 <Sgeo|web> I think I like where this is going
05:10:13 <quintopia> programming C++ is like... programming fortran... without the hardcore hacker feel
05:10:52 <CakeProphet> would that be more of C <->fortran relationship?
05:10:56 <CakeProphet> *wouldn't
05:12:15 <CakeProphet> oh apparently fortran got OO, nevermind.
05:12:26 <elliott> like anyone uses it
05:12:43 <CakeProphet> hmmm
05:12:45 <CakeProphet> I should learn fortran.
05:12:54 <elliott> Sgeo|web: lust after fortran next
05:13:08 <CakeProphet> in my Conquest of Programming Language Knowledge(tm)
05:14:07 <CakeProphet> the main restraint on said conquest being that I cannot think of projects as quickly as I can think of programming languages to learn.
05:15:55 <CakeProphet> :t f
05:15:56 <lambdabot> forall a. (SimpleReflect.FromExpr a) => a
05:15:57 <CakeProphet> :t f 1
05:15:58 <lambdabot> forall t t1. (Num t, SimpleReflect.FromExpr (t -> t1)) => t1
05:16:26 <CakeProphet> it's not related to the integer overloading, but a similar idea.
05:18:29 <CakeProphet> :t a b
05:18:29 <lambdabot> Couldn't match expected type `Expr -> t'
05:18:30 <lambdabot> against inferred type `Expr'
05:18:30 <lambdabot> In the expression: a b
05:18:35 <CakeProphet> :t b
05:18:36 <lambdabot> Expr
05:18:38 <CakeProphet> ah
05:20:36 <CakeProphet> hmm why doesn't SimpleReflect document FromExpr..
05:20:50 <CakeProphet> you know, aside from defining it in source code
05:20:52 <CakeProphet> that doesn't count.
05:21:33 <elliott> CakeProphet: http://twanvl.nl/blog/haskell/simple-reflection-of-expressions
05:21:46 <CakeProphet> :t fun
05:21:47 <lambdabot> forall a. (SimpleReflect.FromExpr a) => String -> a
05:22:30 <elliott> CakeProphet: just read that
05:22:32 <elliott> it's the original post
05:22:32 <CakeProphet> > fun "your mom is" a (var "hobag")
05:22:33 <lambdabot> Ambiguous type variable `a' in the constraints:
05:22:33 <lambdabot> `SimpleReflect.FromExpr ...
05:22:40 <CakeProphet> > fun "your mom is" (a::Expr) (var "hobag")
05:22:41 <lambdabot> Ambiguous type variable `a' in the constraints:
05:22:41 <lambdabot> `SimpleReflect.FromExpr ...
05:22:42 <CakeProphet> sdfijsdfijwer
05:22:50 <CakeProphet> > fun "your mom is" a (var "hobag") :: Expr
05:22:51 <lambdabot> your mom is a hobag
05:23:02 <CakeProphet> bahahahahaha
05:23:35 <Sgeo|web> :t fun
05:23:36 <lambdabot> forall a. (SimpleReflect.FromExpr a) => String -> a
05:23:37 <Sgeo|web> Oh
05:24:10 <quintopia> hobag barbie eh
05:24:16 <CakeProphet> :t h
05:24:17 <lambdabot> forall a. (SimpleReflect.FromExpr a) => a
05:24:20 <CakeProphet> fun is how f g and h are defined.
05:24:27 <CakeProphet> fromExpr . var
05:25:43 * CakeProphet thinks it would be neat if more Haskell programs included a Blah.Reflect that exports SimpleReflect stuff.
05:26:25 <CakeProphet> as an educational tool.
05:27:20 * CakeProphet thinks that /me is a cool way to talk in the third person because he likes to do that sometimes.
05:28:09 * CakeProphet also finds it funny when people forget to convert to third person, so then some anonymous narrator is involved. I like this.
05:28:16 <quintopia> fucking illeists
05:28:56 * CakeProphet is going to see if he can now communicate entirely in third person for the remainder of the night.
05:29:25 * CakeProphet forgot to mention that he also wants to see if he can get away with this without annoying someone.
05:29:37 <CakeProphet> bah, I messed up.
05:29:48 <CakeProphet> I didn't mention anything, the narrator did.
05:29:52 <CakeProphet> er, I mean
05:29:57 <CakeProphet> I did all of the mentioning.
05:29:59 * CakeProphet did not.
05:30:39 <monqy> hi
05:31:07 <elliott> hi monqy hi hi hi
05:31:09 <elliott> my program is broken monqy
05:31:11 <elliott> want to fix it??//
05:31:20 * CakeProphet greets monqy fondly.
05:31:41 <elliott> OH
05:31:43 <elliott> OH I AM SUCH
05:31:44 <elliott> A FUCKING IDIOT
05:31:46 <elliott> OF COURSE IT DOESNT RUN
05:31:47 <elliott> BECAUSE
05:31:50 <elliott> THERES A "FOREVER" LOOP ABOVE IT
05:32:23 * CakeProphet wonders why he stopped working on his RP-oriented MUD client.
05:32:36 * CakeProphet considers writing it in Fortran. Wow, that's a terrible idea CakeProphet.
05:33:33 <CakeProphet> though I think if I did such a thing I would likely provide a custom client, because MUD clients are awful.
05:33:56 * CakeProphet gave up on his quest for third-person narration.
05:34:42 <elliott> monqy: I wrote a program: http://sprunge.us/BMBZ
05:34:58 <monqy> program
05:35:00 <CakeProphet> whoa woah
05:35:01 <CakeProphet> flood
05:35:03 <CakeProphet> flud
05:35:25 <monqy> does it do things
05:35:28 <elliott> CakeProphet: what flood
05:35:29 <monqy> lots of imports
05:35:37 <CakeProphet> elliott: earlier I discovered that flood is oddly spelled.
05:35:44 <CakeProphet> considered the way it's pronounced.
05:35:46 <monqy> flod
05:36:10 <elliott> monqy: that's very few imports for haskell
05:36:12 <CakeProphet> help battery brb
05:36:23 <monqy> it's a lot of imports for me
05:36:28 <monqy> (i live in a cave)
05:37:12 <CakeProphet> hello. test
05:37:12 <CakeProphet> test test test.
05:37:12 <CakeProphet> testing.
05:37:15 <CakeProphet> this is a test.
05:37:25 <CakeProphet> awwww yeah connection wasn't interrupted.
05:37:45 <elliott> import MC.Protocol
05:37:45 <elliott> import MC.Protocol.IO
05:37:45 <elliott> import qualified MC.Protocol.Client as C
05:37:45 <elliott> import qualified MC.Protocol.Server as S
05:37:45 <elliott> import MC.Utils
05:37:45 <elliott>
05:37:47 <elliott> import Prelude hiding (catch)
05:37:49 <elliott> import Data.HashMap.Strict (HashMap)
05:37:51 <elliott> import qualified Data.HashMap.Strict as HM
05:37:53 <elliott> import Data.ByteString (ByteString)
05:37:55 <elliott> import qualified Data.ByteString as B
05:37:57 <elliott> import Data.Text (Text)
05:37:59 <elliott> import qualified Data.Text as T
05:38:01 <elliott> import Control.Monad
05:38:03 <elliott> import Control.Exception
05:38:05 <elliott> import Control.Concurrent
05:38:07 <elliott> import Control.Concurrent.STM
05:38:09 <elliott> import Data.IORef
05:38:11 <elliott> import System.IO
05:38:13 <elliott> import Network
05:38:15 <elliott> import Codec.Zlib
05:38:17 <elliott> monqy: :)
05:38:17 <monqy> imports
05:38:31 -!- zzo38 has quit (Remote host closed the connection).
05:38:33 <monqy> i remember that logn list of inmports from whaichever cpmpiler that was
05:38:35 <monqy> the rlong one
05:38:44 <monqy> (it was long)
05:39:10 <CakeProphet> too many imports are bad for the economy.
05:39:33 <CakeProphet> unless the imports are goods that generate revenue domestically.
05:41:03 <CakeProphet> economics are tricky when programming. It's like being in a circus.
05:41:05 <CakeProphet> good night.
05:42:36 <CakeProphet> oh hey wait
05:42:46 <CakeProphet> say I wanted to like...
05:43:05 <CakeProphet> run a command in emacs, to load a bunch of files that I commonly edit as a group.
05:43:21 <CakeProphet> does this already exist or do I need to go learn emacslisp?
05:46:47 <elliott> monqy: do you see any obvious refactorings...
05:46:50 <elliott> i'd like to make it a little prettier
05:48:37 <monqy> nothing obvious.. id on't work much with fancy io
05:49:59 <elliott> does anyone know of a program that's basically tail -f + readline?
05:50:12 <elliott> i.e. it shows a log in realtime but provides an input line with editing that isn't overwritten by the log
05:50:24 <elliott> preferably just cat logfile | theprogram | processinput
05:51:57 <elliott> shachaf: Oi, you should refactor my code. (I say this because you're the only competent person in the channel.)
05:52:14 <CakeProphet> elliott: which forever did you remove.
05:52:24 <shachaf> elliott: What code?
05:52:38 <elliott> shachaf: http://sprunge.us/caNc
05:52:39 <elliott> That code.
05:54:08 <CakeProphet> elliott: the only thing I see is that you appear to write the equivalent of void . forkIO . forever twice. Though I doubt giving that a name really improves the code.
05:54:19 <elliott> CakeProphet: Not the equivalent.
05:54:26 <elliott> `catch`/`finally`/ are inside the forever. Although, oh.
05:54:28 <elliott> They shouldn't be.
05:54:33 <elliott> Wait, no.
05:54:34 <elliott> They're not.
05:54:37 <elliott> But yeah, no.
05:54:43 <elliott> CakeProphet: The second "forever" is different.
05:54:44 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /hackenv/catch`/`finally`/: No such file or directory \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: /hackenv/catch`/`finally`/: cannot execute: No such file or directory
05:54:57 <elliott> it's void (forkIO (catch (finally ...)))
05:55:31 <CakeProphet> ah
05:55:37 <shachaf> elliott: It doesn't look *that* horrible...
05:55:44 <shachaf> What's the point of all those voids?
05:55:55 <elliott> shachaf: forkIO returns a ThreadId.
05:56:00 <shachaf> So?
05:56:09 <elliott> I'm discarding it. The alternative is _ <-, but it's in tail position once there.
05:56:15 <elliott> shachaf: I like -Wall. :p
05:56:27 <elliott> But yes, it doesn't look horrible, I just want it to be nicer.
05:56:32 <CakeProphet> ignore e would be a nice function in Control.Exception
05:56:42 <shachaf> elliott: Presumably you're going to turn it into something more complicated later on?
05:56:48 <elliott> shachaf: Nope.
05:56:52 <elliott> shachaf: This is literally the tool I need.
05:59:38 <shachaf> elliott: ignoreEOFError e = unless (isEOFError e) (throwIO e), I guess?
06:00:00 <shachaf> No liftA2ing that
06:00:05 <elliott> shachaf: Yeah, I did that (with applicative combinators).
06:00:13 <shachaf> Bad elliott.
06:00:14 <elliott> Then Deewiant was like "seriously though" and I was like "yeah" and didn't actually put it in.
06:00:41 <elliott> flip (liftA2 unless) throwIO should be in Control.Exception.
06:01:08 <elliott> shachaf: The problem with that is that the "where" one-liner sticks out. :p
06:01:13 <elliott> THIS TOTALLY MATTERS
06:01:18 <CakeProphet> elliott: I believe ignoreEOFError could be translated to when.
06:01:34 <CakeProphet> ?
06:01:36 <CakeProphet> no.
06:01:43 <elliott> unless = when . not
06:02:08 <CakeProphet> the condition relies on e so you can't do that.
06:02:14 <shachaf> elliott: I don't think this piece of code is really worth worrying about.
06:02:32 <elliott> shachaf: Yeah, but it distracts me from writing the other portion of this, namely a shell script.
06:02:44 <shachaf> Ew, shell script.
06:03:01 <shachaf> What's the goal of this?
06:03:14 <elliott> shachaf: Backups. The reason I need this server is because of badly-designed software.
06:03:26 <CakeProphet> @pl (\e -> unless (f e) (throwIO e))
06:03:27 <lambdabot> liftM2 unless f throwIO
06:03:30 <shachaf> *Backups*?
06:03:32 <elliott> Anyway, the shell script will literally be "echo foo | nc localhost 9999; blah; echo bar | nc localhost 9999".
06:03:37 <elliott> So it's not so bad.
06:03:42 <shachaf> CakeProphet: I said no lift[A-Z]2!
06:04:03 <CakeProphet> not even liftQ?
06:04:10 <elliott> shachaf: Specifically, I need to stop a piece of software from writing to the data while it's being backed up.
06:04:30 <elliott> shachaf: It has a console designed to be used by human users read from stdin; I need to be able to use it while also having the script send commands.
06:04:39 <elliott> So this program turns a single file into a line-multiplexed server.
06:05:03 <shachaf> Ah.
06:05:29 <elliott> Of course this creates the problem of how _I_ interact with it, but that was why I asked if anyone knows of a tail -f + readline deal. :-)
06:05:54 <elliott> But yeah, rdiff-backup is doing the heavy lifting here.
06:05:56 <shachaf> tail -f + readline?
06:06:11 <CakeProphet> :t (\e -> unless (f e) (throwIO e))
06:06:12 <lambdabot> Not in scope: `throwIO'
06:06:16 <shachaf> Ah, to give you a pseudo-stdin-stdout thingy?
06:06:20 <CakeProphet> :t catch
06:06:21 <lambdabot> forall a. IO a -> (IOError -> IO a) -> IO a
06:06:22 <elliott> shachaf: Yeah.
06:06:31 <elliott> shachaf: tail -f the log file, readline for the actual line input.
06:06:50 <elliott> shachaf: (When stdin is a tty, the bad software does basic terminal stuff so that lines coming in don't overwrite the input.)
06:07:20 <CakeProphet> @hoogle (a -> Bool) -> IO () -> IO ()
06:07:20 <lambdabot> Foreign.Marshal.Error throwIf :: (a -> Bool) -> (a -> String) -> IO a -> IO a
06:07:21 <lambdabot> Foreign.Marshal.Error throwIf_ :: (a -> Bool) -> (a -> String) -> IO a -> IO ()
06:07:21 <lambdabot> Foreign.C.Error throwErrnoIf :: (a -> Bool) -> String -> IO a -> IO a
06:07:33 <CakeProphet> looks like that's a common pattern.
06:07:45 <shachaf> @hoogle+
06:07:45 <lambdabot> Foreign.C.Error throwErrnoIfRetry :: (a -> Bool) -> String -> IO a -> IO a
06:07:45 <lambdabot> Foreign.C.Error throwErrnoIf_ :: (a -> Bool) -> String -> IO a -> IO ()
06:07:45 <lambdabot> Foreign.C.Error throwErrnoIfRetry_ :: (a -> Bool) -> String -> IO a -> IO ()
06:07:49 <shachaf> @hoogle+
06:07:50 <lambdabot> Foreign.C.Error throwErrnoIfRetryMayBlock :: (a -> Bool) -> String -> IO a -> IO b -> IO a
06:07:50 <lambdabot> Foreign.C.Error throwErrnoIfRetryMayBlock_ :: (a -> Bool) -> String -> IO a -> IO b -> IO ()
06:07:50 <lambdabot> Foreign.C.Error throwErrnoPathIf :: (a -> Bool) -> String -> FilePath -> IO a -> IO a
06:08:02 <shachaf> Eh.
06:08:12 <CakeProphet> throwErrnoIfRetryMayBlock_ is a pretty bad name
06:08:21 <shachaf> Ooh, I remember that function.
06:08:40 <shachaf> I was digging around in GHC's I/O implementation trying to figure out how the whole blocking thing worked.
06:08:46 <shachaf> It's such a mess to figure out.
06:08:48 <CakeProphet> :t isEOFError
06:08:49 <lambdabot> Not in scope: `isEOFError'
06:08:56 <shachaf> @let isEOFError _ = False
06:08:57 <lambdabot> Defined.
06:09:04 <CakeProphet> ...
06:09:04 <Vorpal> <elliott> shachaf: (When stdin is a tty, the bad software does basic terminal stuff so that lines coming in don't overwrite the input.) <-- which bad software?
06:09:20 <shachaf> Vorpal: rdif-backup?
06:09:20 <elliott> Vorpal: CB.
06:09:23 <shachaf> Oh.
06:09:28 <Vorpal> elliott: CB being?
06:09:29 <elliott> shachaf: No, rdiff-backup is the good software I'm using to backup.
06:09:36 <elliott> Vorpal: CrBu.
06:09:41 <elliott> It's like a riddle. Of time.
06:09:43 <shachaf> CrBu being?
06:09:50 <elliott> shachaf: The bad software is the program I have to tell to stop writing to the files.
06:09:50 <Vorpal> elliott: is it the mc server?
06:09:59 <elliott> Vorpal: Yes. I dare not speak its name for the horrors it causes me.
06:10:08 <Vorpal> so why call it cb?
06:10:10 <CakeProphet> :t unless
06:10:10 <lambdabot> forall (m :: * -> *). (Monad m) => Bool -> m () -> m ()
06:10:16 <elliott> Vorpal: That's its name.
06:10:25 <Vorpal> oh craftbukkit-0.0.1-SNAPSHOT.jar
06:10:33 <Vorpal> of course
06:11:02 <CakeProphet> anyway, using unless instead of the guard is probably better.
06:11:59 <shachaf> @whatis cb
06:11:59 <lambdabot> I know nothing about cb.
06:12:05 <Vorpal> shachaf: craftbukkit
06:12:09 <Vorpal> shachaf: that is what it is
06:12:18 <shachaf> Wait, what?
06:12:22 <Vorpal> shachaf: which is an minecraft server
06:12:23 <shachaf> That looks like a Minecraft thing.
06:12:25 <Vorpal> shachaf: yes
06:12:29 <shachaf> What does this have to do with backup?
06:12:33 <CakeProphet> is it what it is?
06:12:35 <Vorpal> shachaf: backing up the world?
06:12:43 * shachaf feels like he misunderstood something.
06:12:51 <CakeProphet> > unwords . reverse . words $ "is it what it is"
06:12:52 <shachaf> Ah, well. It's just Minecraft, so I don't feel bad.
06:12:53 <lambdabot> "is it what it is"
06:12:59 <Vorpal> shachaf: what?
06:13:07 <shachaf> @let onwords f = unwords . f . words
06:13:08 <lambdabot> Defined.
06:13:15 <shachaf> > onwords reverse "is it what it is"
06:13:16 <CakeProphet> shachaf: wonderful
06:13:17 <lambdabot> "is it what it is"
06:13:28 <CakeProphet> :t unwords
06:13:29 <lambdabot> [String] -> String
06:13:32 <CakeProphet> :t words
06:13:33 <lambdabot> String -> [String]
06:13:36 <elliott> shachaf: I have to tell the piece of shit server to stop writing to the world every two seconds so I can rdiff-backup it.
06:13:53 <shachaf> Sadly unwords . words =/= id. :-(
06:14:09 <Patashu> wow
06:14:12 <Patashu> fuck java in its flying ass
06:14:15 <Patashu> for making fucking bytes signed
06:14:28 <Vorpal> Patashu: you know that char in C is often signed?
06:14:31 <elliott> "char" can and usually is signed in C, too.
06:14:40 <Patashu> well I want my bytes to be unsigned
06:14:42 <Patashu> how do I fix this
06:14:46 <Vorpal> unsigned byte?
06:14:46 <Deewiant> The difference being that C has the "unsigned" keyword
06:14:47 <Patashu> I'm getting like -12 instead of 244
06:14:49 <Vorpal> ah
06:14:53 <shachaf> elliott: char is for characters.
06:15:01 <elliott> Patashu: You don't.
06:15:04 <elliott> Patashu: Use int or w/e.
06:15:04 <shachaf> That's why it's 32 bits long.
06:15:09 <shachaf> > w/e
06:15:10 <lambdabot> w / e
06:15:10 <CakeProphet> Patashu: The answer is, you use the signed types that are larger than the original unsigned type. I.e. use a short to hold an unsigned byte, use a long to hold an unsigned int. (And use a char to hold an unsigned short.) Yeah, this kinda sucks because now you're using twice as much memory, but there really is no other solution. (Also bear in mind, access to longs is not guaranteed to be atomic - although if you're using
06:15:17 <CakeProphet> http://darksleep.com/player/JavaAndUnsignedTypes.html
06:15:28 <Patashu> I'm using the method read(byte[] b, int off, int len) though
06:15:31 <Patashu> there's no read for int[]
06:15:32 <Patashu> or w/e
06:15:50 <Vorpal> wait, so what if you want an unsigned long long or such in java?
06:16:01 <CakeProphet> Patashu: well it would be short for unsigned byte.
06:16:04 <Patashu> ah, I see what to do
06:16:07 <Patashu> 0x000000FF & (int)buf[index]
06:16:09 <Patashu> this fucking shit everywhere
06:16:13 <Patashu> maybe I'll make a method to do it for me
06:16:28 <shachaf> elliott: If you delete cwd and then ^C your program, it complains.
06:16:33 <shachaf> Just sayin'.
06:16:36 <CakeProphet> Patashu: abstraction????? Have you gone mad!?!?!?!?
06:16:38 <elliott> shachaf: What.
06:16:48 <elliott> Patashu: Or 0xFF.
06:16:52 <shachaf> Wait, maybe that was runghc?
06:17:25 <elliott> shachaf: Sounds likei t to me.
06:17:28 <elliott> Were you stress-testing that?
06:17:31 <elliott> s/i t/ it/
06:17:37 <shachaf> Yep, runghc.
06:17:41 <shachaf> elliott: Nah, just habit.
06:19:23 * shachaf regularly deletes directories while there are still processes running in them.
06:19:29 <shachaf> I also regularly exit bash with kill -9 $$
06:19:34 <Vorpal> what
06:19:35 <Vorpal> why
06:19:45 <Vorpal> shachaf: that takes MORE typing than just plain exit
06:20:00 <Vorpal> you have to be joking
06:20:16 <Patashu> excellent. works like a charm
06:20:21 <Patashu> an ugly charm but who's keeping score
06:20:30 <elliott> shachaf: I shut down my computer with an axe.
06:22:11 <shachaf> Vorpal: I'm not.
06:22:18 <shachaf> Vorpal: It doesn't save command line history.
06:22:27 <CakeProphet> Patashu learns the joys of abstraction.
06:22:31 <Vorpal> shachaf: that can be disabled with set anyway
06:22:40 <shachaf> Vorpal: After the fact?
06:22:43 <Vorpal> or maybe shopt
06:22:47 <shachaf> I want *some* things to be saved in history.
06:22:50 <Vorpal> shachaf: after starting the shell yes
06:23:02 <shachaf> I don't always know when I start a shell whether the commands I'm about to type are going to be something I want to save.
06:23:09 -!- monqy has quit (Quit: hello).
06:23:17 <Vorpal> hm
06:24:42 -!- nooga has joined.
06:48:54 <CakeProphet> mh
06:54:33 -!- Zuu has joined.
06:56:45 <fizzie> You do see quite a lot of &0x{ff,ffff} in Java thanks to the "only signed types" thing.
06:58:43 <fizzie> The way they call the 8 bits wide type "byte" also makes it sound like it should be unsigned. Not that I have a better name for it.
06:59:25 <elliott> signed octet
07:00:11 -!- ive has quit (Quit: leaving).
07:00:11 <elliott> fizzie: Oi, do you know something which is like rlwrap, except it also handles output not overwriting input, and prints a prompt?
07:00:30 <elliott> Basically I want to "tail -f server.log | magicprog | nc localhost 9999", where port 9999 is a server that writes to the console.
07:02:13 <elliott> See, fizzie knows.
07:02:46 <fizzie> "sictet", yes, that's what they should've called it.
07:02:48 <fizzie> I'm not entirely sure what you want magicproc to do there.
07:03:13 <elliott> fizzie: Present readline prompt; and show its input but not overriding its input.
07:03:14 <elliott> Err. That is to say.
07:03:24 <elliott> fizzie: Basically I want something that shows tail -f's output while letting me input things.
07:03:38 <elliott> Without new data on tail -f overwriting my input line, like netcat-IRCing does.
07:03:41 <elliott> Preferably line-edited.
07:03:46 <elliott> It has to exist, come on.
07:09:17 <fizzie> But being in the pipeline like that, magicproc has no access to the controlling terminal. Or, well, I guess it could open it explicitly. Anyway, I don't think I've heard of such a thing.
07:11:54 <fizzie> What about the output from "nc localhost 9999"?
07:14:16 <elliott> fizzie: Well, it's fine if it takes some parameters instead, of course.
07:14:20 <elliott> fizzie: And that can just be discarded.
07:14:36 <elliott> There's this "srw is used to provide a simple line editing interface to a program. The output of the program does not interupt the input to srw, and the input to srw is not echoed."
07:14:42 <elliott> But I don't know if I'm just missing something.
07:15:09 <elliott> And it's, you know, sucklessware, so it isn't using readline or anything simple like that.
07:15:26 <elliott> I'm tempted to just write my own thing; it's just cat + readline.
07:15:32 <elliott> But there must be _something_.
07:15:56 <CakeProphet> where there's a way, perl can do it.
07:16:48 <elliott> CakeProphet: Do it then
07:16:57 <CakeProphet> nah
07:17:19 <CakeProphet> also I assume there are specific requirements that I'm not aware of, otherwise youd just use.... cat + readline
07:17:56 <fizzie> elliott: Hm. What if you rlwrapped "bash -c 'nc localhost 9999 >/dev/null | tail -f server.log'"? The input into that "program" would go to the nc, and the "program"'s output would be tail -f's output, and rlwrap (or srw, or something) would take care of providing line editing for the input and handling output such that it doesn't clobber the prompt.
07:18:37 <elliott> fizzie: That sounds plausible. I suppose it won't take care of, e.g. the completed line being printed out?
07:18:39 <elliott> Like REPLs.
07:19:00 <fizzie> Hrm, probably not, unless your rlwrap-like tool has an "echo the command" flag.
07:19:24 <elliott> I also don't think rlwrap can print a prompt, but... it's a decent idea.
07:19:33 <elliott> elliott@katia:~/Code/line-server$ rlwrap "bash -c 'cat >foo | cat /dev/urandom'"rlwrap: Cannot execute bash -c 'cat >foo | cat /dev/urandom': No such file or directory
07:19:38 <elliott> Sigh.
07:20:22 <Deewiant> -S, --substitute-prompt <prompt>
07:20:22 <Deewiant> Substitute the specified prompt for command's own prompt.
07:20:22 <Deewiant> Mainly useful when command doesn't have a prompt.
07:20:31 <elliott> Right.
07:20:34 <shachaf> elliott: I think you just don't use the qutoes?
07:20:39 <elliott> shachaf: Yeah.
07:21:12 <fizzie> It seems to echo the input, too.
07:21:36 <fizzie> At least rlwrap bash -c 'cat >tmp.out | while true; do echo yay; sleep 1; done' seems to behave sensibly, discounting the lack of prompt, for which -S might help.
07:21:42 <elliott> Does "tail -f" really do that sleep-every-few-seconds thing nowadays?
07:22:28 <elliott> fizzie: -S seems to have annoying side-effects: like it prints a > before every "yay" line.
07:22:38 <elliott> Since rlwrap kind of assumes that the thing is prompt-based.
07:23:25 <shachaf> elliott: Why would tail -f do that?
07:23:47 <elliott> shachaf: -s, --sleep-interval=N
07:23:47 <elliott> with -f, sleep for approximately N seconds (default 1.0) between
07:23:48 <elliott> iterations
07:24:15 <shachaf> Oh.
07:31:10 <elliott> Gah, how do I tell rlwrap that the prompt is just whenever I press enter?
07:39:33 <CakeProphet> write it a letter
07:39:48 <CakeProphet> begin with... Dear rlwrap: ...
07:39:59 <CakeProphet> you use the : because you mean business.
07:45:42 <Patashu> I wrote my hide-data-on-fat16-and-retrieve-it program \o/
07:45:42 <myndzi> |
07:45:42 <myndzi> /<
07:45:46 <Patashu> :D
07:48:02 -!- hagb4rd has joined.
07:48:05 <elliott> Patashu: pls tell me it wasn't actually in java
07:48:16 <Patashu> Yeah I wrote it in java
07:48:19 <Patashu> U mad?
07:48:42 <Patashu> f7u12?
07:49:38 <Patashu> oh no not a channel I'll never care about ever :'(
07:49:46 <Patashu> your omnipotence, please, have mercy
07:49:52 <elliott> Excuse me -minecraft is where all the cool kids hang out.
07:49:55 <Patashu> P.S. what should I have written it in
07:50:08 <elliott> Anything but Java. Or Perl.
07:50:36 <Patashu> I'm basically the ultimate programming scrub
07:50:41 <Patashu> I wrote it in the BlueJ IDE
07:51:06 <elliott> Can I cause you to stop existing somehow
07:51:49 <hagb4rd> no
07:51:56 <hagb4rd> e=mc²
07:51:59 <elliott> Not you.
07:52:00 <elliott> Patashu.
07:52:03 <elliott> Also wrong.
07:52:03 <hagb4rd> i know
07:52:05 <hagb4rd> :)
07:52:16 <Patashu> look on the bright side
07:52:18 <Patashu> i'm not itidus12
07:52:19 <elliott> E = blah blah pc blah.
07:52:27 <elliott> Patashu: Yes, that is one way in which you are distinctly inferior.
07:52:32 <Patashu> what
07:52:32 <elliott> Also it's itidus20.
07:52:35 <Patashu> oh oops
07:52:52 <elliott> Patashu: The #esoteric cable has strongly agreed on the policy of itidus20 supremacy.
07:53:06 <Patashu> supremacy to everyone?
07:53:07 <Patashu> or just me
07:53:33 <elliott> Everyone. Except fungot.
07:53:33 <fungot> elliott: to. why, this is for you guys are a lot
08:04:27 <elliott> fizzie: Hmm, what if the "nc" part was extended so that it printed a recognisable prompt after each input?
08:13:09 <elliott> "At first I thought your program made a fractal image derived from the bootsector for easy human categorization. I get paranoid somebody's gonna call my operating system a virus, the bastards! http://www.losethos.com"
08:13:15 <elliott> LoseThos guy is still most funny guy.
08:14:25 <elliott> "Must anticipate what 14Mhz clock will be when message arrives at application. Microsoft will laugh at you. (There is lots of stuff going on in many tasks in windows all the time and time slices are handed out to tasks and anticipating what a 14MHz clock will be when a time slice is handed to an application and it executes a certain way into the application code with the message getting dispatched... Microsoft would laugh at you. In wet-wired log
08:14:25 <elliott> ic, no less! Now, what were you saying to God and I? Lemme get some popcorn.)"
08:21:06 -!- Phantom_Hoover has joined.
08:22:12 <Phantom_Hoover> Why is Ireland a thing that exists.
08:28:35 -!- Phantom__Hoover has joined.
08:31:56 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
08:34:04 -!- Phantom__Hoover has quit (Ping timeout: 248 seconds).
08:34:19 -!- Phantom__Hoover has joined.
08:36:06 <fizzie> elliott: I made a complicated bash thing that prints a new "> " prompt after each line, but it didn't help. The prompt output is mixed with the "tail -f" output, and rlwrap will not "forward" a prompt ever, so when (as seen by rlwrap) the program outputs "> " and then "yay\n", it will just show "> yay" on the screen and remove the prompt, presumably under the assumption that the prompt is no longer relevant since the program outputted something new.
08:37:07 <elliott> fizzie: Heh.
08:40:02 <elliott> fizzie: So I guess I should just write my own little ditty?
08:40:11 <elliott> fizzie: I suppose I'll have to do the same hacks we do in mcmap for decent prompt handling.
08:41:40 <fizzie> Mmmmaybe. Perhaps quite not that many hacks since all your input comes from file descriptors, not from other threads of the program, so you don't need that extra pipe.
08:43:11 <elliott> Right.
08:43:14 <fizzie> But I do think you need to use the "callback" interface to readline if you want to put some new output there while the input line editing is being done, since otherwise readline will block until the user is finished.
08:43:15 <Vorpal> heh, someone broke sensors-detect code for 2.6.x kernel identification when they fixed it for 3.x kernels
08:43:27 <Vorpal> $ sensors-detect
08:43:27 <Vorpal> Argument ".35.4-L1" isn't numeric in numeric ge (>=) at /usr/sbin/sensors-detect line 2489.
08:43:27 <Vorpal> Kernel version is unsupported (too old, >= 2.6.5 needed)
08:43:33 <Vorpal> $ uname -a
08:43:33 <Vorpal> Linux phoenix 2.6.35.4-L1 #1 Fri Aug 27 17:25:41 CEST 2010 i686 Pentium III (Coppermine) GenuineIntel GNU/Linux
08:44:38 <elliott> Upgrade yer kernel.
08:44:49 <Vorpal> elliott: I'm doing that atm
08:44:55 <Vorpal> anyway yeah, /var/abs/extra/lm_sensors/linux_3.0.patch breaks it
08:45:44 <Vorpal> elliott: I haven't booted this system since like late spring
08:45:50 <Vorpal> that is why it has such an old kernel
08:46:04 <elliott> Having one computer simplifies your life dramatically, it's great.
08:46:17 <elliott> Also not caring about your data I guess is the other component of that.
08:46:43 <Vorpal> elliott: well this computer has an IBM Deskstar iirc. So caring about data is clearly out of the question ANYWAY
08:46:53 <elliott> Heh.
08:47:23 <Vorpal> Model Family: IBM Deskstar 60GXP
08:47:24 <Vorpal> yep
08:47:42 <Vorpal> also known as IBM Deathstar
08:47:46 <Vorpal> because they suck so badly
08:48:02 <Vorpal> it is on 20 GB anyway
08:48:47 <Vorpal> elliott: anyway, I use this computer when I need old hardware. Like a physical serial port.
08:49:14 <Vorpal> serial port by USB devices sucks generally. Never got GPIO to work properly for them
08:50:03 <fizzie> Who was it that released 3.0.0 renumbered back to 2.6.40 to avoid breakage? Ubuntu or someone else?
08:50:11 <Vorpal> fizzie: red hat iirc
08:50:21 <Vorpal> or fedora maybe
08:50:23 <Vorpal> one of the two
08:50:43 -!- nooga has quit (Ping timeout: 256 seconds).
08:50:48 <fizzie> "I'm using Linux 2.6.40 (Fedora 15's version of 3.0) and --" apparently so.
08:51:13 <Vorpal> shown when upgrading udev:
08:51:15 <Vorpal> "rtc is no longer in the audio group and fb devices are no longer in the video group, as permissions and ownership of fb devices are controlled by X."
08:51:26 <Vorpal> that is strange
08:51:35 <Vorpal> it only motivates the latter change, not the former one
08:51:55 <elliott> fizzie: I like how Fedora are the ones who always break everything but they couldn't be arsed this time.
08:52:05 <elliott> Ubuntu ships with the properly-numbered kernel.
08:52:07 <Vorpal> not that I use audio, fb or X on that computer... It is headless and lacks sound chipsets completely
08:52:26 <elliott> I suppose I actually have two computers that I care about, one of them just isn't in this room.
08:52:29 <fizzie> elliott: Possibly their distribution-making scripts were the ones that broke on 3.x. :p
08:52:31 <elliott> And I guess that will become three sometime.
08:52:39 <elliott> fizzie: Nah, it was some driver or something.
08:52:43 <Vorpal> elliott: I have 4 running atm
08:52:49 <Vorpal> I use two regularly
08:52:51 <elliott> Vorpal: Including remote servers?
08:52:56 <Vorpal> elliott: no, as in this room
08:53:07 <elliott> Vorpal: Include servers.
08:53:18 <Vorpal> elliott: well add a VPS that I co-own with a good friend then.
08:53:27 <Vorpal> (50/50 split of the cost)
08:53:31 <elliott> Vorpal: Your life is too complicated.
08:53:53 <fizzie> It's a VPS so it counts as 0.5 computers; co-owning splits that to 0.25.
08:54:01 <Vorpal> XD
08:54:08 <elliott> fizzie: If anything VPSes count as multiple computers, because they're more of a pain than local computers.
08:54:23 <elliott> Network lag, hard to debug problems when they go dead, probably harder to reinstall the OS, etc.
08:54:25 <Vorpal> elliott: anyway I normally just use my desktop and my laptop. I do have that old Dell P3 that I'm upgrading atm, and an old dell laptop. And a first gen ibook with a dead battery
08:54:33 <fizzie> Softwaristically, maybe; hardwaristically at least it's someone else's problem.
08:55:00 <Vorpal> elliott: never had that VPS go dead. Good hosting. Xen too.
08:55:14 <elliott> Vorpal: Then you haven't been running interesting enough things. :-)
08:55:29 <elliott> Vorpal: I wouldn't count things like the iBook; there are certainly other computers in this house, I just never think about them.
08:55:31 <Vorpal> elliott: well maybe not. IRC server. Website. That is about it iirc.
08:55:38 <elliott> Let alone use them.
08:55:46 <Vorpal> elliott: well yeah there are probably "computers" in stuff like the freezer.
08:56:05 <fizzie> There are computers in my basement, and I never use them. :( *sad*
08:56:10 <Vorpal> heh
08:56:24 <Vorpal> elliott: anyway I do turn on the ibook maybe once a year or so when I get nostalgic
08:56:32 <Vorpal> play some Avernum.
08:56:38 <Vorpal> then turn it off and store it away again
08:56:50 <Vorpal> or, EV Override. That was a fun game too.
08:56:56 <fizzie> There's a Sun SparcStation 5, that SGI Indy, and the Sun 4*3.5" external SCSI HD box which makes an incredible amount of noise.
08:57:24 <fizzie> There's like two fans in it, and the disks aren't quiet either.
08:57:30 <Vorpal> heh
08:57:39 <atehwa> Anybody interested in the Helsinki esolang evening school assignments? http://tinyurl.com/5stnu5n
08:58:09 <Vorpal> hm atehwa is from .fi?
08:58:17 <atehwa> yes indeed.
08:58:17 <Vorpal> how many of you guys *are* there?
08:58:24 <Vorpal> (in this channel I mean)
08:58:34 <atehwa> well, there were ~20 participants in the evening school :)
08:58:41 <Vorpal> I meant in this channel.
08:58:45 <elliott> atehwa: I think he means Finns.
08:58:48 <Vorpal> yeah
08:58:54 <atehwa> there might be more on the channel, too, as I recommended the channel to the participants
08:59:04 <atehwa> Vorpal: but now, about 5 from .fi
08:59:07 <atehwa> on the channel
08:59:09 <elliott> Oh, I wonder if we scared any of those guys off. Actually none of them came, I think.
08:59:24 <atehwa> I just sent them the recommendation
08:59:28 <Vorpal> I know fizzie, Deewiant, oklopol and now atehwa are from Finland.
08:59:40 <fizzie> Vorpal: ineiros too.
08:59:43 <Vorpal> oh yeah
08:59:44 <Vorpal> forgot him
08:59:53 <elliott> Zwaarddijk too.
08:59:56 <elliott> And mtve.
08:59:58 <elliott> (I think?)
09:00:09 <atehwa> I don't think mtve is Finnish, but I'm not sure
09:00:19 <elliott> I just assumed, what with fizzie. :p
09:00:36 <elliott> * [aloril] (~aloril@dsl-tkubrasgw3-fe7ef900-153.dhcp.inet.fi): Aloril
09:00:38 <elliott> There's another one.
09:00:40 <Vorpal> elliott: mtve is from US or is using a bouncer or such in US
09:00:42 <elliott> Oh, and fungot counts too.
09:00:43 <fungot> elliott: or is it just me, or i: yet, you rogue! vernon. hark ye: not so much. sorry, this is it! all about macros, a wonderful!' i am sorry, in particular candidate countries. if the transatlantic relationship, but the parliament has possessed him, yet he talkes well, it's open source
09:00:45 <elliott> So there's like eight of 'em.
09:01:30 <Vorpal> and a few Swedes too. Maybe we Scandinavians are driven insane by the dark winters? Thus resulting in a lot of us turning to esolangs?
09:01:30 <fizzie> And where was FireFly from? Somewhere in Scandinavia at least, I think.
09:01:32 <Vorpal> Just a theory
09:01:36 <Vorpal> fizzie: he is from Sweden
09:01:41 <Vorpal> so am I, and olsner
09:01:45 <Vorpal> and BeholdMyGlory iirc
09:01:59 <fizzie> Vorpal: Hokay. The realname did sound Swedish, but there's quite a lot of those in .fi too.
09:02:04 <atehwa> there's really lots of geeks in Finland, compared to the number of people
09:02:13 <Vorpal> + [BeholdMyGlory] (~behold@unaffiliated/beholdmyglory): Arvid <-- hm. Really?
09:02:24 <elliott> I'm not convinced Finland is actually a country, as opposed to, like... I don't know.
09:02:26 <elliott> Maybe the demoscene made it up?
09:02:38 <elliott> fizzie: Confirm/deny?
09:02:42 <Vorpal> you know. I never actually met someone with the same first name as me. It isn't /that/ uncommon.
09:02:48 <atehwa> elliott: no, it had been so already before the schene.
09:02:53 <atehwa> *scene
09:02:55 <Vorpal> but I never run into someone else with my name.
09:03:00 <elliott> atehwa: Long-running myth.
09:03:25 <atehwa> lots of sci-fi, fantasy, math, electronics geeks
09:03:26 <fizzie> Speaking of which, ALTparty 2011 next weekend, best get moving if you need to swim across any oceans or so on.
09:03:32 <atehwa> and language geeks, too.
09:03:33 <Vorpal> elliott: well, they fooled ICANN pretty well then.
09:03:44 <elliott> Does anyone know how to convince ls it's talking to a tty, so it'll columnate etc.?
09:04:11 <Vorpal> elliott: you could create a tty? Like for example xterm does?
09:04:16 <elliott> fizzie: In "Helsingrad", apparently.
09:04:32 <Vorpal> sounds russian ?
09:05:10 <fizzie> Vorpal: It's Helsinki; it's just that this year's theme is "RED MACHINE".
09:05:20 <Vorpal> ah
09:05:53 <fizzie> Also it's reasonably likely that this year is the last year, so try not to miss it.
09:05:59 <atehwa> I wonder if my company will be present @AltParty this year...
09:06:07 <Vorpal> fizzie: oh?
09:06:28 <Vorpal> fizzie: what is ALTparty about btw?
09:06:40 <atehwa> two years ago, we had some kind of supercomputer there that somebody used to calculate frames for their raytraced animation :)
09:06:51 <fizzie> Vorpal: "Alternative Party is a festival of digital culture attended by coders, musicians, designers, hackers, and other digital enthusiasts. In Alternative Party, you can enjoy digital culture in various forms, catch a glimpse of the technology of the future, and experience nostalgic trips with vintage hardware."
09:06:56 <atehwa> Vorpal: demo scene, and general geekiness
09:07:08 * Phantom__Hoover → Ireland
09:07:12 -!- Phantom__Hoover has quit (Quit: Leaving).
09:07:19 <Vorpal> ah
09:07:23 <fizzie> atehwa: Was this the "desktop" Cray CX1 thing?
09:07:48 <atehwa> I don't know the details, I just heard about it after the fact
09:08:19 <fizzie> Someone had one there, though presumably Cray themselves were involved; there was a competition to do stuff with it, with not very many entries.
09:08:41 <elliott> I don't like modern Crays at all.
09:08:43 <elliott> They're so normal.
09:09:09 <Vorpal> elliott: probably because it is cheaper to do it that way
09:09:20 <elliott> No it is because they are bad people.
09:09:20 <atehwa> I doesn't really make sense to build a supercomputer which has so different architecture that you can't test your programs anywhere else
09:09:34 <Vorpal> yeah
09:09:39 <fizzie> Vorpal: Anyway, they're having some financial difficulties this year already, and in the agenda for the organization's yearly meeting that I got for some reason (I don't think I'm a member or anything...) they're suggesting that they won't organize the party any more "in the current form".
09:09:49 <elliott> atehwa: Nooo, it's about the _spirit_.
09:09:53 <elliott> char should be some stupidly large number of bits.
09:09:58 <atehwa> elliott: I understood as much :)
09:10:03 <Vorpal> elliott: that is called a DSP
09:10:04 <elliott> And preferably PDP-endian just for laughs.
09:10:11 <atehwa> 36, preferably.
09:10:18 <Vorpal> I don't think cray ever used PDP-endian?
09:10:19 <elliott> And... say... how about floats are IEEE format, but with the components reversed?
09:10:35 <elliott> Ooh, and maybe we could have a segmentation model where memory addresses are divided into /three/ components.
09:10:43 <elliott> But one of the components is two bits less than the rest, and is multiplied by ten.
09:10:53 <elliott> Also it uses balanced decimal and is a sheep.
09:11:04 <Vorpal> elliott: go make this into an esolang
09:11:07 <atehwa> supercomputing sheep.
09:11:13 <fizzie> There's a (well, two) 40-bit accumulator in the TI TMS320C54x, but "otherwise" it's a boring 16-bit-words machine.
09:11:16 <Vorpal> then implement it with VHDL or Verilog
09:11:47 <fizzie> I think the TI C compiler even implements CHAR_BIT==8 on it.
09:11:48 <elliott> Vorpal: VHDL can do sheep nowadays?
09:11:49 <elliott> Fancy.
09:12:35 <Vorpal> elliott: yeah, use IEEE.std_sheep.all;
09:13:14 <fizzie> Assume a spherical sheep.
09:13:17 <elliott> Vorpal: AKA "use wales;".
09:13:17 <Vorpal> elliott: you could even make it distributed. (the technical term for this is "sheep farm")
09:13:48 <elliott> (Do Welsh jokes even work on a Scandinavian audience.)
09:13:55 <elliott> (Are you even aware of the existence of Wales? We barely are ourselves.)
09:14:06 <Vorpal> elliott: I'm aware of what a Welsh joke is if that is what you mean
09:14:36 <Vorpal> but they don't exist here if that is what you mean
09:15:19 <Vorpal> elliott: anyway "use wales;" looks wrong in VHDL. Pretty sure you want use "Wales.all;" then
09:15:44 <elliott> use whales
09:16:12 <Vorpal> elliott: all is a keyword in that context I /think/. It is usually highlighted as one anyway.
09:20:46 <Sgeo|web> insert sheep
09:21:30 <Sgeo|web> Ok, I should be sleeping as of 5 hours ago
09:25:28 <elliott> Vorpal: You Arch users are lucky: GNU inetutils is now your default source of telnet, ftp, ping, hostname, etc.; maintained by the _wonderful_ ams.
09:25:35 <elliott> PROGRESS
09:25:53 <Vorpal> elliott: oh? I have no idea who that is
09:26:06 <elliott> He's come up a few times in here.
09:26:11 <elliott> He's... "pleasant".
09:26:23 <Vorpal> elliott: so not at all then
09:27:19 <elliott> Vorpal: My first interaction with him, he /ignore'd me because he asked a question about free()'s semantics; I first looked it up in POSIX for him; he said that wasn't C; then politely in the post-C99 draft; he said that wasn't C99; I said they wouldn't change the semantics of something as fundamental as free(NULL) in minor corrective drafts; he called me a troll and /ignored me.
09:27:40 <Vorpal> ouch
09:27:57 <elliott> Then an hour or so later he started bugging people trying to talk about the distro it was a channel for (NixOS) for having non-free software in the repositories (as build scripts).
09:28:05 <elliott> His claimed benefit for removing this would be that it could be hosted on gnu.org FTP.
09:28:28 <Vorpal> eh
09:28:42 <elliott> He's basically rms but less rational and more abrasive.
09:29:17 <Vorpal> hah
09:29:34 * elliott wonders if he should switch to NILFS.
09:29:53 <Vorpal> why?
09:29:56 <fizzie> The filesystem that can only store empty lists. (Okay, not really.)
09:30:15 <elliott> Vorpal: It has all that nice snapshotting and versioning stuff.
09:30:20 <elliott> Plus online resizing??
09:30:27 <elliott> Does anyone know how stable it is. :p
09:30:30 <Vorpal> elliott: well ext4 has online resizing
09:30:42 <elliott> Vorpal: And instantaneous snapshotting?
09:30:43 <Vorpal> so does jfs and xfs iirc
09:30:49 <Vorpal> no
09:30:51 <fizzie> I considered it too, for the snapshots. Never got around doing it.
09:31:01 <elliott> JFS is my go-to file system.
09:31:10 <elliott> It doesn't really support online resizing though; it can't shrink.
09:31:15 <Vorpal> well yeah
09:31:23 <Vorpal> I don't think ext4 can shrink either
09:31:42 <Vorpal> I tend to default to ext4 when I have no specific reason for another file system
09:31:59 <elliott> ext4 is obsolete by design, XFS is unreliable, JFS is pretty good but I don't know how well-maintained it is and the lack of shrinking is kinda suboptimal.
09:32:14 <elliott> btrfs is Oracle.
09:32:19 <Vorpal> elliott: ext4 is stable and reliable though
09:32:33 <Vorpal> obsolete by design yes, but stable and reliable
09:32:35 <elliott> Vorpal: Yes, and it features long fsck times as its primary user-visible feature.
09:32:43 <Vorpal> hah
09:32:52 <elliott> Vorpal: But really, I'm not going to commit to something that is meant to be replaced by an unacceptable system (btrfs) within a few years.
09:32:58 -!- sadhu has joined.
09:33:00 <elliott> That's just setting yourself up for trouble.
09:33:04 <Vorpal> hm
09:33:31 <sadhu> is there any tool out there whic convers strings to bf code which prints the string?
09:33:38 <elliott> NILFS does look neat, and I guess they're storing lots of data on it from the source of it and the design features?
09:33:41 <elliott> But I dunno how stable it is.
09:33:44 <elliott> sadhu: Yes. Tons.
09:33:51 <elliott> !bf_txtgen sup
09:33:52 <Vorpal> sadhu: no. !bf_txtgen doesn't do that at all
09:34:03 <Vorpal> well it is slow
09:34:05 <Vorpal> !help
09:34:08 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
09:34:12 <Vorpal> egobot in general is
09:34:18 <Vorpal> !bf_txtgen test
09:34:19 <elliott> Vorpal: bf_txtgen is a very slow algorithm.
09:34:23 <EgoBot> ​61 +++++++++++++[>+++++++++>++++++++>+><<<<-]>-.>---.<-.+.>>---. [35]
09:34:25 <Vorpal> elliott: not this slow usually
09:34:55 <elliott> Vorpal: Usually we run it on known strings :-)
09:35:01 <elliott> sadhu: How's asm->bf going?
09:35:08 <Vorpal> elliott: it doesn't cache afaik?
09:35:12 <Vorpal> !bf_txtgen test
09:35:14 <EgoBot> ​61 +++++++++++++[>++++++++>+++++++++>+><<<<-]>>-.<---.>-.+.>---. [117]
09:35:15 <fizzie> "Helsinki Hacklab presents the Hacklab Reactor Simulator, an interactive Soviet nuclear plant experience. Feel the power of an explosing nuclear powerplant! We are also happy to tell you more about Helsinki Hacklab, the local hackerspace in Helsinki." The best thing or the best thing?
09:35:17 <Vorpal> !bf_txtgen sup
09:35:20 <EgoBot> ​50 +++++++++[>+++++++++++++>+>><<<<-]>--.++.-----.>+. [511]
09:35:23 <elliott> Vorpal: It does; and improves on previous results.
09:35:27 <Vorpal> elliott: hm
09:35:30 <Vorpal> !bf_txtgen asbdjashd
09:35:31 <elliott> !bf_txtgen Hello, world!
09:35:32 <EgoBot> ​92 ++++++++++++[>++++++++>++++++++++>++++++++>+<<<<-]>+.>-----.>++.++.++++++.<<.>.>--.----.>--. [234]
09:35:33 <EgoBot> ​139 +++++++++[>++++++++>+++++>+++>+<<<<-]>.+++++++++++++++++++++++++++++.+++++++..+++.>-.>+++++.<<++++++++.--------.+++.------.--------.>>+.>+. [309]
09:35:38 <Vorpal> !bf_txtgen asbdjashd
09:35:40 <EgoBot> ​93 ++++++++++++[>++++++++>++++++++++>+++++++++>+<<<<-]>+.>-----.<+.++.>>--.<<---.>.>--.----.>--. [328]
09:35:42 <sadhu> !bf_txtgen hakuna matata
09:35:44 <EgoBot> ​126 +++++++++++++[>+++++++++>+++++++>++++++++>++<<<<-]>>>.<++++++.>+++.<<.>>+++.<.>>++++++.<-.<.<-.>.<.>.>>----------------------. [141]
09:35:45 <elliott> !bf_txtgen Hello, world!
09:35:45 <elliott> !bf_txtgen Hello, world!
09:35:45 <elliott> !bf_txtgen Hello, world!
09:35:48 <elliott> !bf_txtgen Hello, world!
09:35:48 <elliott> !bf_txtgen Hello, world!
09:35:49 <EgoBot> ​139 +++++++++[>++++++++>++++>+++++>+<<<<-]>.+++++++++++++++++++++++++++++.+++++++..+++.>>-.<----.<++++++++.--------.+++.------.--------.>+.>>+. [236]
09:35:49 <EgoBot> ​125 +++++++++[>++++++++>+++++++++++>+++++>+<<<<-]>.>++.+++++++..+++.>-.------------.<++++++++.--------.+++.------.--------.>+.>+. [316]
09:35:49 <EgoBot> ​126 ++++++++++[>+++++++>++++++++++>++++>+<<<<-]>++.>+.+++++++..+++.>++++.------------.<++++++++.--------.+++.------.--------.>+.>. [984]
09:35:51 <EgoBot> ​131 +++++++++++++++[>+++++>+++++++>+++>+<<<<-]>---.>----.+++++++..+++.>-.------------.<++++++++.--------.+++.------.--------.>+.>-----. [753]
09:35:51 <EgoBot> ​127 +++++++++++[>++++++>+++++++++>++++>+<<<<-]>++++++.>++.+++++++..+++.>.------------.<++++++++.--------.+++.------.--------.>+.>-. [545]
09:35:53 <Vorpal> elliott: it is a genetic algorithm
09:35:55 <Vorpal> yes
09:35:57 <elliott> Great, now they're all going to intermingle. :p
09:37:05 <elliott> Gah, why doesn't this GHC binary work on pyralspite.
09:37:50 <Vorpal> elliott: in what way does it fail?
09:38:33 <elliott> Vorpal: It literally hangs on startup.
09:38:34 <elliott> Like, before option parsing.
09:39:21 <Vorpal> elliott: try strace?
09:39:36 <elliott> Fine, more programs on the lean mean server. :p
09:39:48 <Vorpal> elliott: strace is like a few kb large
09:40:10 <Vorpal> 228K says du -h
09:40:50 <elliott> Realtime/signal bullshit.
09:40:53 <elliott> VTALARMs all over the place.
09:40:58 <elliott> It'll be GHC's event manager.
09:41:03 <elliott> God knows.
09:41:30 <Vorpal> elliott: it doesn't hang wrt syscalls anywhere?
09:41:40 <elliott> No, it just does much the same stuff forever.
09:41:44 <Vorpal> hm
09:41:48 <Vorpal> could hang in a loop then
09:42:07 <elliott> Vorpal: No, it's GHC's event manager.
09:42:09 <elliott> rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0
09:42:10 <elliott> getrusage(RUSAGE_SELF, {ru_utime={23, 309456}, ru_stime={0, 836052}, ...}) = 0
09:42:10 <elliott> gettimeofday({1318930854, 544963}, NULL) = 0
09:42:10 <elliott> getrusage(RUSAGE_SELF, {ru_utime={23, 309456}, ru_stime={0, 836052}, ...}) = 0
09:42:10 <elliott> rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
09:42:10 <elliott> --- SIGVTALRM (Virtual timer expired) @ 0 (0) ---
09:42:12 <elliott> rt_sigreturn(0x1a) = 48
09:42:14 <elliott> rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0
09:42:16 <elliott> getrusage(RUSAGE_SELF, {ru_utime={23, 321457}, ru_stime={0, 836052}, ...}) = 0
09:42:18 <elliott> gettimeofday({1318930854, 559230}, NULL) = 0
09:42:20 <elliott> getrusage(RUSAGE_SELF, {ru_utime={23, 321457}, ru_stime={0, 836052}, ...}) = 0
09:42:22 <elliott> rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
09:42:23 <elliott> rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0
09:42:26 <elliott> getrusage(RUSAGE_SELF, {ru_utime={23, 333458}, ru_stime={0, 836052}, ...}) = 0
09:42:28 <elliott> gettimeofday({1318930854, 572662}, NULL) = 0
09:42:29 <elliott> getrusage(RUSAGE_SELF, {ru_utime={23, 333458}, ru_stime={0, 836052}, ...}) = 0
09:42:31 <elliott> etc.
09:42:33 <elliott> Plus a lot of mmapping.
09:42:35 <Vorpal> hm
09:42:43 <Vorpal> elliott: maybe another thread hung?
09:43:05 <elliott> Vorpal: It /doesn't/ /even/ /get/ /to/ /the/ /first/ /statement/. It's hanging in startup.
09:43:10 <elliott> Probably syscall bullshit since this is oldstable.
09:43:16 <Vorpal> ah could be
09:44:14 <sadhu> i have an idea to do it without using GP..with some optimizations
09:44:42 <elliott> There are lots that don't do GP.
09:44:46 <elliott> Most of them beat bf_txtgen.
09:45:24 <sadhu> hmm...
09:50:49 <Vorpal> elliott: try compiling it with an older ghc?
09:51:00 <Vorpal> elliott: btw what is the haskell program you are trying to execute?
09:51:50 <elliott> Vorpal: (a) The one in oldstable doesn't even have a simple combinator I used, and it won't even have the event manager that will make this an efficient program anyway, so I'm disinclined to. (b) One I tailor-wrote for the job.
09:52:11 <Vorpal> elliott: the job of mc console handling?
09:52:17 <elliott> Yes.
09:52:21 <elliott> It's only twenty-five lines.
09:52:27 <Vorpal> elliott: pastebin it
09:52:32 <Vorpal> I would like to see it
09:52:40 -!- sadhu has quit (Ping timeout: 245 seconds).
09:52:46 -!- kaus has joined.
09:53:05 <elliott> Vorpal: http://sprunge.us/aEOV
09:53:30 <Vorpal> hm
09:53:46 <Vorpal> elliott: why does it use network?
09:54:00 <elliott> The part where it's a network server?
09:54:09 <elliott> It listens on a port and merges all lines received into stdout (the console FIFO).
09:54:15 <Vorpal> ah
09:54:32 <Vorpal> elliott: I was wondering why it would use network for it, as opposed to some in-fifos or whatever
09:54:56 <elliott> Vorpal: That's just as long a program, and what's the point? FIFOs are strictly more limited: There's a fixed number of them defined at runtime.
09:55:09 <Vorpal> hm true
09:55:22 <elliott> A server is more flexible and >~blah/foo vs. | nc localhost 9999 is not much difference.
09:55:41 <elliott> Plus someone else can't just write data to a pipe, vs. a FIFO which they could. Not that that would happen, but still.
09:55:47 <elliott> (i.e., while another program is doing so)
09:55:58 <Vorpal> elliott: I don't see it listening only on localhost anywhere
09:56:01 <Vorpal> maybe I missed something
09:56:07 <elliott> Hmm, it doesn't. Maybe I should fix that. :p
09:56:13 <Vorpal> elliott: Does it handle multiple concurrent connections?
09:56:15 <elliott> But... maybe it could be a SPECIAL SURPRISE???
09:56:20 <elliott> Vorpal: Yes, of course, that's the whole point.
09:56:48 <Vorpal> elliott: and it orders them? And what about server output? You need to parse that anyway to know when save-all finished
09:57:08 <elliott> (a) Yes. (b) The server outputs to server.log anyway; and no you don't, you just sleep for a decent amount of time.
09:57:26 <elliott> Even if you did want to read it, it wouldn't be the proper job of this program.
09:57:34 <Vorpal> right
09:59:35 -!- kaus has quit (Read error: Connection reset by peer).
09:59:59 -!- kaus has joined.
10:01:34 -!- kaus_ has joined.
10:04:43 -!- kaus has quit (Ping timeout: 260 seconds).
10:06:09 <elliott> Vorpal: "save-off" -> "save-all" DoesWIM, right?
10:06:13 <elliott> (It does.)
10:11:21 <Vorpal> elliott: WIM?
10:11:27 <elliott> WIM.
10:11:32 <Vorpal> meaning?
10:11:47 <elliott> what I
10:11:50 <Vorpal> ah
10:12:10 <Vorpal> elliott: I forgot if save-all should come before or after save-off
10:12:18 <elliott> Well, save-off just disables automatic saving.
10:12:26 <elliott> So it seems like it should be fine to me.
10:12:40 <Vorpal> elliott: remember save-on when you are done
10:12:43 <elliott> Yes.
10:13:33 <elliott> I really wish this program just worked.
10:14:19 <Vorpal> elliott: upgrade from old-stable?
10:14:31 <elliott> I doubt stable will be much better.
10:14:33 <Vorpal> elliott: anyway wouldn't ghc just use the libc?
10:14:38 <elliott> But it might get me a newer kernel, I suppose.
10:14:46 <Vorpal> which does the actual system calls
10:14:57 <elliott> Vorpal: No shit?
10:14:57 <Vorpal> I assume you didn't link it statically?
10:15:16 <elliott> Tried both.
10:15:18 <elliott> Doesn't work either way.
10:15:18 <Vorpal> hm
10:18:52 <Vorpal> elliott: do something like a simple hello world haskell program compiled on your system and uploaded to the server work?
10:18:55 <Vorpal> does*
10:20:04 <elliott> It won't, since it, as I have said about ten times now, is not even getting to the first statement, which is a trivial pattern match on an IO action that basically just dereferences a pointer.
10:20:33 <Vorpal> elliott: indeed, but depending on what modules you use, different init code could be generated as far as I know
10:40:47 -!- GreaseMonkey has quit (Quit: The Other Game).
10:41:28 -!- kaus_ has quit (Read error: Connection reset by peer).
11:06:36 <elliott> Vorpal: Sigh, this upgrade is making breaky-sounding noises
11:06:45 <Vorpal> elliott: oh?
11:06:53 <elliott> GRUB doesn't seem to have any idea what to do
11:06:55 <Vorpal> elliott: I thought it was a VPS? How could it make noises?
11:06:58 <Vorpal> elliott: ouch
11:07:07 <elliott> /usr/sbin/grub-setup: warn: Attempting to install GRUB to a partition instead of the MBR. This is a BAD idea..
11:07:07 <elliott> /usr/sbin/grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
11:07:08 <elliott> Installation finished. No error reported.
11:07:08 <elliott> Generating grub.cfg ...
11:07:10 <Vorpal> elliott: wait, is grub even used with xen?
11:07:14 <elliott> A New Kind of Definition of Error
11:07:20 <elliott> Vorpal: yes some pvgrub shit i don't even know maybe it doesn't even matter
11:07:25 <elliott> let's plow on ahead and hope nothing goes wrong
11:07:37 <Vorpal> elliott: you could always call support if it fucks up badly
11:07:50 <elliott> Vorpal: for values of call equal to email
11:07:56 <Vorpal> elliott: well yeah
11:08:15 <elliott> okay let's
11:08:15 <Vorpal> elliott: anyway why are you trying to install it to a partition?
11:08:16 <elliott> try rebooting
11:08:27 <elliott> Vorpal: it demanded I told it which partitions to auto install grub to
11:08:31 <elliott> i picked the most likely-looking one
11:08:39 <elliott> guess i picked wrong!!!
11:08:51 <Vorpal> elliott: you should have picked like /dev/sda or whatever it is called I guess?
11:08:53 <elliott> ok reboot time. rip vps
11:09:01 <elliott> Vorpal: yeah no there was like five and they all start with xvd
11:09:09 <Vorpal> elliott: the one with least numbers?
11:09:19 <elliott> all but one had numbers
11:09:21 <elliott> erm
11:09:23 <elliott> opposite of that
11:09:24 <elliott> in retrospect
11:09:27 <elliott> not sure why i picked the one with the number
11:09:30 <elliott> oh well
11:09:39 <Vorpal> elliott: well it might still boot with the old copy of grub. Perhaps
11:09:41 <elliott> if this ssh connection works i will be-
11:09:43 <elliott> holy shit it connected
11:09:47 <elliott> i guess it really doesn't use grub
11:10:03 <Vorpal> elliott: either that or it works with the old copy of grub
11:10:14 <elliott> sure, oh well
11:10:17 <elliott> WFM
11:10:25 <Vorpal> for now at least
11:10:33 <Vorpal> elliott: don't even think about switching to grub2 though
11:10:42 <elliott> Vorpal: that's what the upgrade tried to do
11:10:46 <Vorpal> oh
11:10:53 <Vorpal> elliott: then I bet it doesn't use grub
11:11:00 <elliott> like i said
11:11:01 <elliott> it's pvgrub
11:11:03 <elliott> whatveer that is
11:11:06 <Vorpal> right
11:11:10 <elliott> http://wiki.xen.org/xenwiki/PvGrub
11:11:17 <elliott> "it runs the regular grub inside the created domain itself"
11:11:28 <elliott> neat, haskell program still doesn't work
11:11:34 <Vorpal> ouch
11:11:50 <elliott> Version: 6.12.1-13
11:11:55 <Vorpal> heh
11:12:00 <elliott> nice, it's only over a year old
11:12:02 <elliott> no wait
11:12:04 <elliott> almost two years
11:12:06 <Vorpal> right
11:12:14 <elliott> maybe i should run experimental on this
11:12:19 <Vorpal> elliott: what about using backport of a newer ghc?
11:12:27 <Vorpal> aren't there a backports repo for debian
11:12:27 <elliott> Vorpal: ugghhh
11:12:35 <elliott> i doubt ghc will be backported :P
11:12:38 <Vorpal> well okay
11:13:01 <elliott> i should just put openbsd on this or something, at least i'd be able to trace all the suckiness down to stupid root principles
11:13:09 <Vorpal> XD
11:13:32 <Vorpal> elliott: or rewrite that program to work on older ghc
11:13:38 <Vorpal> or write the program in another language
11:13:46 <elliott> and miss the benefits of an event manager; and want to kill myself
11:13:47 <Vorpal> I'm not suggesting C here
11:13:48 <elliott> respectively
11:13:52 <elliott> i actually really like openbsd's distro/install mechanism
11:13:53 <elliott> like
11:13:55 <elliott> it's so retro
11:14:00 <Vorpal> well yeah
11:14:01 <elliott> all the filenames are the exact same length
11:14:03 <elliott> and there's like
11:14:06 <elliott> xcore.tgz
11:14:10 <elliott> it's just
11:14:12 <elliott> i don't know
11:14:14 <elliott> it just makes me happy
11:14:51 <Vorpal> elliott: what I dislike with freebsd and openbsd is that ports doesn't cover the entire system. Just /usr/local. So nothing outside that is tracked in a package manager
11:15:06 <Vorpal> I have no idea if NetBSD and other *BSD do it that way as well
11:15:08 <elliott> instead of ports, you should just download bsd.tgz
11:15:14 <elliott> which is every single piece of software in binary form.
11:15:20 <elliott> it's like, the size of Debian.
11:15:24 <elliott> and it's all installed simultaneously.
11:15:32 <Vorpal> whatever
11:15:39 <elliott> no that would be so convenient
11:15:40 <elliott> to upgrade
11:15:43 <elliott> you just download a new bsd.tgz
11:15:44 <elliott> and unpack it into /
11:15:52 <Vorpal> elliott: and removed files? What removes them
11:16:08 <elliott> Vorpal: why would you remove files
11:16:10 -!- copumpkin has quit (Ping timeout: 252 seconds).
11:16:35 -!- copumpkin has joined.
11:16:40 <Vorpal> elliott: well, lets say the new version no longer uses /sbin/foobaz but instead does it a different way?
11:16:54 <elliott> Vorpal: symlink
11:17:13 <Vorpal> elliott: it is something executed from startup scripts, nothing the user would run manually
11:17:21 -!- nooga has joined.
11:17:23 <elliott> symlink to maintain old startup scripts, duh
11:17:28 <elliott> you have to write those yourself.
11:17:30 <Vorpal> elliott: besides there might not be single tool that replaces it :P
11:17:41 <elliott> never remove software.
11:17:43 <elliott> that removes choice
11:17:45 <elliott> just add more of it
11:17:50 <Vorpal> elliott: come on, openbsd is not quite the same as LFS for BSD
11:18:03 <elliott> oh good idea you should just download kern.tgz
11:18:06 <elliott> then gcc.tgz
11:18:12 <elliott> and then you have to compile everything yourself
11:18:17 <elliott> actually openbsd should just be an abstract concept
11:18:25 <Vorpal> elliott: actually I think you need like binutils.tgz roo
11:18:26 <Vorpal> too*
11:18:26 <elliott> any bsd created sufficiently manually is openbsd
11:18:33 <elliott> above line should be entire contents of openbsd.org
11:18:41 <elliott> Vorpal: that's included in gcc.tgz
11:18:45 <elliott> to comply with the GFDL
11:18:55 <Vorpal> how...?
11:18:57 <elliott> `quote GFDL
11:19:05 <HackEgo> 146) * Phantom_Hoover wonders where the size of the compiled Linux kernel comes from. <cpressey> To comply with the GFDL, there's a copy of Wikipedia in there.
11:19:16 <Vorpal> heh
11:19:25 <Vorpal> yeah the GFDL is a strange beast
11:21:38 <elliott> honestly, if I had a "phat" enough "pipe", I would just run a server from home
11:21:47 <elliott> but i live in an "unphat" "england"
11:22:35 <Vorpal> I wish I had a better connection as well. Yogscast reported that they were at a lan party in US, and it took like 6 seconds to upload a 1 GB video.
11:22:48 <Vorpal> that is quite amazing
11:25:14 -!- oerjan has joined.
11:25:51 <elliott> haha, arch has finally moved into debian territory
11:26:41 <Vorpal> elliott: oh?
11:26:46 <elliott> they have a testing repo now
11:26:51 <Vorpal> elliott: that is old
11:26:57 <elliott> not that old
11:27:06 <Vorpal> elliott: they had it when I started using arch
11:27:17 <elliott> huh, guess they just started exposing it recently
11:27:36 <Vorpal> elliott: well it is just that the time in testing is really fast. Normally like a few weeks at most.
11:31:52 <elliott> Vorpal: What, Arch doesn't have lilo support any more.
11:32:01 <Vorpal> okay?
11:32:04 <elliott> I think I'm going to ragequit reality.
11:32:21 <Vorpal> elliott: I don't remember when it last had lilo
11:32:27 <elliott> Last time I used it.
11:33:22 <elliott> nilfs + syslinux; gotta be non-traditional.
11:33:52 <Vorpal> XD
11:34:45 <elliott> The entire point of running Linux is so that someone can mention some part of their setup and you can respond "oh, I just [thing]", which then, through repeated confusion as to how you make that work, unravels into an explanation of your entire batshit insane idiosyncratic setup.
11:35:03 <Vorpal> elliott: XD
11:35:18 <elliott> Like, "oh, I literally keep my entire filesystem in CVS."
11:35:22 <Vorpal> heh
11:35:30 <Vorpal> elliott: yeah, my setup doesn't boot on a non-custom kernel
11:35:38 <elliott> Or, "oh, I actually have /usr/local/share and /usr/local/lib on different partitions; the latter is ten gigabytes."
11:35:42 <Vorpal> at least with the stock kernel in arch
11:35:44 <Vorpal> it won't book
11:35:46 <Vorpal> boot*
11:35:58 <elliott> Vorpal: s/on a non-/without a /
11:36:07 <Vorpal> elliott: yeah
11:36:50 <elliott> "Oh, I actually telnet in to a Lisp Machine for IRC."
11:36:51 <Vorpal> elliott: it is down to getting away with a custom kernel without initramfs mess by using md raid autodetect partitions plus an option in the kernel.
11:36:55 <elliott> "Nothing beats real Emacs editing."
11:37:06 <elliott> "Don't talk to me about that GNU imitation."
11:37:09 <elliott> "``''"
11:37:13 <Vorpal> someone need to make a telnet server in elisp
11:37:34 <elliott> Vorpal: So that dry ice cream, what was the texture like.
11:37:57 <Vorpal> elliott: err, trying to remember the word for what I'm thinking about...
11:38:10 <elliott> Pizza?
11:38:18 <elliott> Maybe it was actually pizza, if so.
11:38:32 <Vorpal> elliott: google translate gets it as meringue. Really dry such
11:38:42 <Vorpal> the taste however, nothing I ever tasted before
11:38:45 <elliott> Aww, so it wasn't chewy or anything?
11:39:02 <Vorpal> elliott: it was kind of sticky when it got into your mouth
11:39:05 <Vorpal> very sticky
11:39:07 <elliott> I was imagining, like, fudge, except ice cream flavoured.
11:40:11 <elliott> Vorpal: I like how Arch is zero point zero point two kernel releases ahead of the actual kernel.
11:40:17 <Vorpal> elliott: very hard and dry meringue, that got sticky when in my mouth. Took quite a bit of work to get it away from my teeth using a toothbrush.
11:40:38 <elliott> Clearly you just need to soak it.
11:40:38 <Vorpal> elliott: everything kind of is. 3.0.4 is still listed on kernel.org
11:40:56 <elliott> Vorpal: Oh, is three point zero point six out, just not on kernel.org?
11:41:03 <Vorpal> elliott: I don't know
11:41:15 <elliott> I thought that's what you were saying.
11:41:37 <Vorpal> elliott: I don't know what the official kernel is on. I'm on 3.0.4 with my custom vanilla kernel
11:41:58 <elliott> Custom vanilla.
11:42:03 <Vorpal> oh you said ahead. Thought you said behind
11:42:11 <Vorpal> elliott: well custom as in not stock distro
11:42:20 <Vorpal> and vanilla as in downloaded from kernel.org with no patches
11:42:25 <Vorpal> so yes custom vanilla
11:42:25 <elliott> Maybe I should just use Nix.
11:42:31 <elliott> Vorpal: What, not even BFS?
11:42:35 <Vorpal> elliott: BFS?
11:42:40 <Vorpal> Big Fucking Sword?
11:42:49 <elliott> Boulder Frandomising Sasquatch.
11:42:57 <Vorpal> elliott: so what is BFS?
11:42:59 <elliott> It's a patch that frandomises process boulders with a sasquash.
11:43:05 <elliott> Vorpal: Con Kolivas' scheduler.
11:43:23 <Vorpal> elliott: IO scheduler or CPU scheduler?
11:43:29 <elliott> CPU.
11:43:36 <elliott> It's the Brain Fuck Scheduler that made the rounds a year or so ago.
11:43:41 <elliott> For desktop use.
11:43:53 <Vorpal> yeah I never had any issues with the default scheduler on my desktop. Never noticed any issues
11:44:00 <elliott> http://ck.kolivas.org/patches/bfs/reverse-scalability.png etc.
11:44:00 <Vorpal> and don't fix what isn't broken
11:44:31 <Vorpal> elliott: what is cfs?
11:44:45 <elliott> Completely Fair Scheduler, the sole scheduler the kernel lets you use.
11:44:50 <Vorpal> ah
11:44:59 <elliott> (Completely Fair in that if you have a billion CPUs it's technically "the best".)
11:45:09 <Vorpal> elliott: looks like CFS is slightly better at very large -j
11:45:25 <elliott> Vorpal: No, the four point in green is lower than any red...
11:45:51 <Vorpal> elliott: I mean at make -j12 on both for example
11:45:53 <elliott> Vorpal: In bfs, -j<cores> is basically always optimal.
11:46:01 <elliott> And yes, but why would you run a non-optimal -j?
11:46:02 <Vorpal> elliott: oh I thought it was with 12 cores
11:46:06 <elliott> No, four.
11:46:32 <Vorpal> elliott: anyway what about HT?
11:46:42 <Vorpal> would -j8 be best for me then? with 4 cores + HT
11:46:43 <elliott> HT = cores for scheduling.
11:46:52 <elliott> Just pretend you have twice the cores.
11:47:05 <oerjan> <Vorpal> [...] Took quite a bit of work to get it away from my teeth using a toothbrush. <-- So you accidentally ate glue?
11:47:26 <Vorpal> oerjan: no. Freeze dried ice cream
11:48:15 <elliott> (It's Vorpal's code for glue.)
11:48:23 <Vorpal> XD
11:49:07 * elliott wonders why literally nobody runs X/WM at high priority.
11:49:17 <elliott> I guess bfs' isochronous priority is good there.
11:49:50 <Vorpal> elliott: X/WM?
11:50:01 <elliott> X and WM.
11:50:04 <Vorpal> ah right
11:50:25 <elliott> Yay, resulting system does not boot.
11:50:50 <Vorpal> elliott: what? your vm?
11:50:54 <Vorpal> err
11:50:55 <Vorpal> vps
11:50:56 <elliott> Yes.
11:50:57 <elliott> VM.
11:51:24 <elliott> I wonder why; the flags and partitioning all looks right.
11:51:31 <Vorpal> so not the vps then
11:51:44 <Vorpal> elliott: which distro are you using in the vm?
11:52:07 <elliott> I'm giving one last try of Arch in a VM before I declare it completely useless.
11:52:44 <Vorpal> elliott: well, did you do some sort of strange setup?
11:52:52 <Vorpal> elliott: also what error does it give
11:52:53 <elliott> syslinux probably counts as strange.
11:52:58 <Vorpal> ah yes
11:53:00 <elliott> Vorpal: no bootable medium
11:53:15 <Vorpal> elliott: then don't declare arch linux useless. Declare syslinux useless
11:53:34 <elliott> Arch Linux is useless if it'll install an unworking configuration.
11:53:57 <Vorpal> elliott: it let you select syslinux in the installer?
11:54:09 <elliott> Yse.
11:54:10 <elliott> Yes.
11:54:13 <Vorpal> elliott: that isn't the same as useless though. A bug yes.
11:54:25 <elliott> No, it's useless for that and everything else.
11:54:42 <Vorpal> It would be useless if there was no option that let you get a working configuration. Like it only allowed syslinux and syslinux was bugged
11:57:32 -!- MDude has joined.
11:58:26 <elliott> Maybe I should just take the plunge and become a Slackware addict.
11:58:36 <elliott> Oh, they're onto "13.37".
12:00:42 -!- MSleep has quit (Ping timeout: 244 seconds).
12:03:15 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
12:06:34 <elliott> Vorpal: Convince me not to just run Tiny Core.
12:06:36 <elliott> On everything.
12:06:56 <Vorpal> elliott: what is Tiny Core?
12:08:00 <elliott> You know, the ten meg thing.
12:08:06 <Vorpal> nope?
12:08:17 <elliott> Your brain is a sieve.
12:08:27 <Vorpal> possibly
12:26:43 -!- SimonRC has quit (Ping timeout: 260 seconds).
12:27:37 <fizzie> Don't you usually sniff glue rather than eating it?
12:29:19 -!- pikhq has joined.
12:29:41 <fizzie> My father once introduced me to some family friends of our relatives (who we were visiting) as "...and that glue-sniffer looking guy is my son". That was the fairest.
12:29:55 -!- pikhq_ has quit (Ping timeout: 260 seconds).
12:30:43 <elliott> :D
12:30:57 <oerjan> so by "you" you mean "i"? O KAY
12:32:47 <fizzie> oerjan: It was the indefinite you.
12:33:51 <oerjan> i wouldn't trust a glue-sniffer looking guy on that.
12:34:58 <fizzie> Like the old saying of the jungle goes: the You that can be spoken is not the eternal You.
12:37:05 <oerjan> Laozi the king of the jungle
12:37:35 <fizzie> Anyway, isn't a glue-sniffer exactly the one you'd trust when it comes to matters of whether to sniff or eat glue? He's got the experience, after all.
12:38:04 <oerjan> i am referring to the "you"/"i" switch, here.
12:40:52 <fizzie> There was no switch to refer to. You just haven't got a glue.
12:41:48 <oerjan> sure i do, and i'm sticking to it
12:42:56 -!- sllide has joined.
12:43:04 -!- nooga has quit (Ping timeout: 255 seconds).
12:45:03 <fizzie> Oh, Eri Keeper brand glue is in fact a Finnish product. I was wondering if they sell it in e.g. Burnchurchway.
12:46:11 <oerjan> "Burnchurch Castle, a National Monument, is a well-preserved 15th century Norman tower house with a round gate tower, situated in County Kilkenny, Ireland."
12:46:23 <oerjan> no burnchurchway, though
12:48:33 <fizzie> I almost went with "Burnchurchland", but at the last minute wanted the way of Norway in too.
12:49:55 <oerjan> hey we have to use the nice old wooden churches for _something_
13:00:15 -!- SimonRC has joined.
13:06:05 <Vorpal> oerjan: that thing about Norway went over my head, what did it refer to?
13:16:52 <fizzie> "Varg Vikernes (Norwegian pronunciation: [ˈʋɑrɡ ˈʋiːkəɳeːs]; born 11 February 1973) is a Norwegian black metal musician, convicted murderer, arsonist, and religious, political and nationalist activist. -- Vikernes was further convicted of four counts of arson involving the burnings of historic churches, and was sentenced to 21 years in prison. Having served almost 16 years of his sentence, Vikernes was released on parole in early 2009.[3][4]"
13:16:56 <fizzie> Oh, you let him walk free.
13:23:08 <elliott> I always thought Vikernes should be Finnish.
13:23:14 <elliott> It just seems to fit him better.
13:23:18 <fizzie> We only have copycats in our copyland.
13:23:27 <elliott> You're basically all murderers-in-waiting.
13:23:32 <fizzie> ("Kalle Holm, an 18-year-old Finn known to have played drums in several Finnish metal bands, has stated on his website that he was influenced by Burzum. He set fire to the Porvoo Cathedral in Finland in May 2006: the roof of the church burned, but the ceiling, vaults and interiors survived undamaged.")
13:23:48 <elliott> fizzie: Well, he claims to have not burned any churches.
13:23:49 <fizzie> http://en.wikipedia.org/wiki/File:Church.20060530_PM.porvoo_of_finland.ojp.jpg
13:23:54 <elliott> (He admits the murder thing though.)
13:24:00 <elliott> Churches are just too far.
13:24:10 <elliott> fizzie: What is it with your churches? They're so small.
13:24:23 <fizzie> Small country, small churches.
13:24:44 <elliott> fizzie: I'm pretty sure you're a larger country than us.
13:26:02 <fizzie> Okay, land-area-wise we arere 1.256 yous. Maybe it's not the size but how you use it.
13:26:07 <fizzie> Arere.
13:26:09 <fizzie> Arererere.
13:27:01 <fizzie> They have one ridiculously dimensioned wooden church in the middle of ~nowhere; rumour has it they've mixed centimetres and inches in the architect -> builders step.
13:27:02 <oerjan> it's just that it's mostly lakes, and the finns haven't found out how to build churches in them yet
13:27:13 <elliott> fizzie: Got a link?
13:27:31 <fizzie> It's not big in absolute sense, but it's bigger than you'd expect a random wooden church in the middle of nowhere to be.
13:27:34 <fizzie> I'll see if I can google it.
13:28:06 <fizzie> http://en.wikipedia.org/wiki/Kerim%C3%A4ki_Church
13:28:25 <fizzie> Big church, small WP article.
13:29:38 <fizzie> fi.wikipedia on amputation: "This medical article is a stub."
13:29:51 <oerjan> <fizzie> Oh, you let him walk free. <-- he's even published new music
13:30:22 <elliott> oerjan: He did that from jail, too. (I read up on him once because it was interesting.)
13:30:30 <oerjan> oh maybe
13:31:02 <elliott> He really does have the best possible face for a murderer. I mean, if you ask me.
13:31:42 <fizzie> He does seem to be contemplating murder in the Wikipedia infobox too.
13:32:27 <elliott> Let's consult Wikipedia on this controversial issue.
13:32:29 <elliott> well actually we're all a little racist inside, and that's normal. in fact not being a bit racist isn't normal.
13:32:29 <elliott> 6resurected6satan6 1 year ago 33
13:32:35 <elliott> 6resurected6satan6 weighs in.
13:33:46 <fizzie> I'm a bit surprised no-one has [citation needed]'d the "largest wooden church in the world" sentence, seeing it sitting there all uncited like that.
13:33:53 <elliott> fungot: Your turn.
13:33:53 <fungot> elliott: ( c) a player
13:33:57 <elliott> Ah.
13:34:01 <elliott> What style's it on.
13:34:14 <fizzie> I suppose its own still.
13:34:16 <fizzie> ^style
13:34:16 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot* homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube
13:36:10 <fizzie> Bah, I need to go real soon to this "Experience Aalto!" thing downstairs, to demonstrate our group's research stuffs to first-year students. They even gave us white T-shirts with "A!" in front and "Aalto First Year Experience" in back.
13:36:22 <fizzie> No-one mentioned these clown shirts when they were polling for available volunteers.
13:36:36 <Vorpal> ouch
13:36:42 <elliott> fizzie: How did you get that static GHC binary onto fungot-machine again?
13:36:42 <fungot> elliott: ( that is, levinson went to kish, disappeared, had on your behalf of the commission is not allowed to use the crane, enter any two of these letters, a b y.
13:36:47 <oerjan> fizzie: you should wear red noses just for the sarcasm
13:37:09 <fizzie> elliott: I have a GHC binary there?
13:37:19 <elliott> fizzie: You did, once, for a test.
13:37:37 <fizzie> elliott: I can't recall at all. But certainly if you say so.
13:37:48 <elliott> fizzie: You will clearly be a great help.
13:38:05 <fizzie> oerjan: I don't think I can improvise a red nose in twenty minutes.
13:38:25 <Vorpal> <elliott> fizzie: How did you get that static GHC binary onto fungot-machine again? <-- using floppies
13:38:25 <fungot> Vorpal: and it's self-modifying techniques." stop immobilizes and disables you. in these bones, i shall return! by the way, the wings! now this is a way to the ocean palace? aren't they in the mood to confront vorbis there and then... this ship's gonna save the planet is hurt, are you saying?
13:38:40 <Vorpal> the actual floppy kind of floppy too
13:39:09 <Vorpal> (8-inch)
13:39:44 <fizzie> We had 8-inch floppies for throwing (target, not distance) at one staff christmas party here.
13:40:04 <Vorpal> heh
13:40:18 <oerjan> fizzie: how could you do that with valuable museum treasures!
13:40:33 <fizzie> Oh, I'm sure they survived just fine. They built to last those days.
13:41:12 <oerjan> yeah tutankhamon's computers were rock solid
13:41:33 <fizzie> You're going to get that "King Tut" song going in my head.
13:41:39 <elliott> Hmphs.
13:41:51 <elliott> I will sit here stubbornly until someone solves my problem.
13:41:59 <oerjan> elliott: you have a problem?
13:42:10 <elliott> oerjan: Yes. My program doesn't work on my VPS.
13:42:28 <Vorpal> I tried out OpenIndiana too. I expected some sort of exotic desktop environment. It just uses Gnome 2 as far as I can tell
13:42:29 <Vorpal> :/
13:42:35 <oerjan> too bad i don't have a glue then *MWAHAHAHA*
13:43:12 <fizzie> oerjan: http://www.youtube.com/watch?v=Bl5dZxA-rZY
13:44:11 <elliott> fizzie: oerjan doesn't do the sound thing.
13:44:18 <fizzie> Oh. Sad.
13:45:00 <fizzie> "AIS-Code is on a scale of one to six, one being a minor injury and six being life-threatening. An AIS-Code of 6 is not the code for a deceased patient, but the code for an injury with a very high lethality. An AIS-Code of 9 is used to describe injuries for which not enough information is available for more detailed coding, e.g. crush injury to the head."... is this... talking about ais523?
13:45:33 <elliott> Also referred to as a "feather".
13:45:53 <Vorpal> it even has fucking gnu coreutils for ls
13:45:54 <Vorpal> and so on
13:45:59 <fizzie> What the foo have I clicked anyway, to have the WP "Abbreviated injury scale" article open? I certainly don't remember consciously opening anything like this. (Maybe there's a code for it.)
13:46:00 <Vorpal> this is less exotic than *BSD
13:47:07 <fizzie> (Oh, it's the first A-titled article in the "Medicine stubs" category; I was checking the English text of the stub template.)
13:47:30 <Vorpal> okay mount output is backwards
13:47:35 <oerjan> <elliott> fizzie: oerjan doesn't do the sound thing. <-- oh, i actually did for once.
13:47:38 <Vorpal> $ mount
13:47:40 <Vorpal> / on rpool/ROOT/openindiana read/write/setuid/devices/dev=1810002 on tors jan 1 01:00:00 1970
13:47:43 <elliott> oerjan: gozsh.
13:47:45 <elliott> ...
13:47:47 <elliott> s/z//
13:48:04 <oerjan> with it not being the middle of the night and stuff
13:48:56 <oerjan> but it still feels awkward.
13:50:08 <fizzie> Vorpal: What, no CDE?
13:50:34 <Vorpal> fizzie: indeed. It is plain old Gnome 2. And ls is the boring one from GNU Coreutils.
13:50:34 <fizzie> I don't think there's CDE in real Solaris by default either, though.
13:50:44 <fizzie> (Any more, that is.)
13:50:47 <Vorpal> fizzie: oh it could be there I guess but not default
13:50:58 <fizzie> Welp, downstairs.
13:50:58 <Vorpal> I haven't used it for more than like 20 minutes
13:53:32 <Vorpal> there is like cde-runtime package (not installed), and cde-utils. They seem to not be the full CDE thing with window manager and all, just whatever is needed to run CDE applications
14:10:05 -!- nooga has joined.
14:13:27 -!- augur has quit (Remote host closed the connection).
14:25:15 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:34:16 -!- ais523_ has joined.
14:34:39 -!- pikhq_ has joined.
14:35:27 -!- pikhq has quit (Ping timeout: 276 seconds).
14:57:02 -!- copumpkin has joined.
15:05:47 -!- ais523_ has quit (Ping timeout: 265 seconds).
15:07:14 <elliott> `quote dynamic indentation
15:07:17 <HackEgo> 77) <oklofok> i use dynamic indentation, i indent lines k times, if they are used O(n^k) times during a run of the program
15:10:09 -!- oerjan has quit (Quit: Later).
15:13:04 <fizzie> Vorpal: "Future releases of Solaris will be based on the OpenSolaris open source project, which states that there is no plan to make the Solaris CDE "consolidation" (OS component) available as open source. -- OpenCDE, an open source project to replicate CDE, was started in early 2010. The project intends to reproduce the look and feel, organization, and feature set of CDE without using any CDE-derived code."
15:13:13 <fizzie> Apparently it really isn't there in OpenSolaris either.
15:13:25 <Vorpal> heh
15:19:16 -!- MDude has quit (Ping timeout: 252 seconds).
15:20:14 -!- MSleep has joined.
15:20:33 <fizzie> (Away again; this time homeward bound.)
15:22:09 <Gregor> (I only have a partial backlog, but:)
15:22:11 <Gregor> CDE sucks horribly anyway.
15:22:19 -!- sadhu has joined.
15:22:28 <Gregor> Plus, XFCE was originally a clone of CDE.
15:22:31 <elliott> Gregor: I hear it runs ChatZilla admirably.
15:22:33 <Gregor> Then they went "Oh wait, CDE sucks."
15:22:42 <elliott> X-D
15:23:11 -!- MSleep has changed nick to MDude.
15:24:32 -!- augur has joined.
15:32:01 -!- sadhu has quit (Ping timeout: 244 seconds).
15:36:53 <Gregor> `addquote (Of Minecraft:) <elliott> So basically I didn't understand what it was at all, I thought maybe you were meant to be like a worm and just sort of wriggle about underground.
15:36:55 <HackEgo> 703) (Of Minecraft:) <elliott> So basically I didn't understand what it was at all, I thought maybe you were meant to be like a worm and just sort of wriggle about underground.
15:52:04 -!- ais523 has joined.
15:52:42 <ais523> thing that confused me a while ago: another channel discussing ZZT without automatically assuming the everyone else knew what it was
15:54:21 <elliott> heh
15:59:04 <ais523> also, I just received an interesting offer via email
15:59:15 <ais523> the people who actually own the copyright to the final versions of two of my papers
15:59:38 <ais523> have offered to serve all-rights-reserved-but-you-can-still-look-at-it copies to anyone who visits their website via a link from mine
15:59:47 <ais523> i.e. filtering by referrer
15:59:55 <elliott> what's the catch :P
15:59:58 <ais523> it's an interesting business model suggestion, at least
16:00:09 <elliott> interesting ~ awful
16:00:10 <ais523> elliott: creating an account with them, for one thing
16:00:20 <ais523> yep, I'm trying to figure out how the business model works there
16:00:24 <elliott> ais523: oh; it's easier to get the paper by other means, then
16:00:28 <elliott> so it'll never work
16:00:47 <elliott> well, I suppose it might be harder finding the copies of _yours_ hanging about on the public webspace :-P
16:00:57 <ais523> elliott: well, the email mentioned in passing that they only have the copyright of the final version, not of drafts
16:01:06 <ais523> which is the loophole that absolutely everyone uses (they just post the drafts on their web page)
16:01:15 -!- monqy has joined.
16:01:21 <elliott> People just change like three words before actually submitting it to make that work, right?
16:01:29 <ais523> so presumably they're trying to get things like usage statistics in the situation where people would otherwise check drafts
16:01:31 <elliott> It would be annoying if there was a risk of actual substantial changes
16:01:37 <ais523> elliott: not even that, they put "this space is reserved for the copyright notice"
16:01:40 <elliott> haha
16:01:45 <ais523> and then the publisher removes that when putting the copyright notice in
16:01:47 <ais523> that's a change
16:01:58 <elliott> academic publishing is the most insane business model I've ever heard of
16:02:56 <ais523> so my guess is, they decided that it wasn't losing them any money if they got to serve people final versions who would otherwise look at the drafts
16:04:04 <ais523> and because it's all opt-in by the author, the only people likely to opt in are those who'd put drafts on their homepage anyway
16:04:35 <ais523> I don't think I've linked my latest paper to the channel, anyway; it's about compiling recursion into hardware
16:04:40 <elliott> it's probably harmless, but I don't know that I'd want to support such a silly business model
16:04:50 <elliott> ais523: I'd read it (and pretend to understand it)
16:05:08 <ais523> http://www.cs.bham.ac.uk/~drg/papers/icfp11.pdf
16:05:13 <ais523> same ICFP who do the contest, incidentally
16:05:22 <elliott> I would not expect otherwise
16:05:36 <elliott> ais523: that's not computer modern :'(
16:05:43 <elliott> (ok, I don't like computer modern, but times is worse)
16:05:45 <ais523> isn't it?
16:05:47 * ais523 looks
16:05:51 <elliott> (at least the times on here)
16:06:20 <ais523> you're right, it looks like some Times variant
16:06:38 <elliott> "Unfolding finite recursion in space"
16:06:45 <elliott> missed opportunity for excellent title, there
16:06:51 <ais523> I didn't write the formatting, nor even much of the text; just the content in the only new section (which is about unfolding recursion in time)
16:07:07 <elliott> it's basically a TARDIS, right/
16:07:10 <ais523> the rest is just summaries of previous results to pad out space, and because there's a crazy rule that all the context for a paper has to be explained in the paper itself
16:07:22 <ais523> elliott: no, unfortunately
16:07:40 * elliott would not expect ais523 to be the kind of person to say "unfortunately" to time travel being impossible irl
16:08:14 <ais523> heh
16:08:25 <elliott> ais523: gcc four point oh?
16:08:28 <elliott> even OS X isn't /that/ bad
16:08:35 <ais523> elliott: it was indeed on OS X
16:08:38 <ais523> I have no idea which version
16:08:41 <elliott> leopard
16:08:44 <elliott> but why such an old compiler?
16:08:59 <Deewiant> For the record, OpenSolaris: gcc (GCC) 3.4.3 (csl-sol210-3_4-20050802)
16:09:02 <ais523> I just did gcc --version
16:09:09 <ais523> Deewiant: it's as old as NetHack!
16:09:11 <elliott> Deewiant: Nice
16:09:18 <elliott> ais523: NetHack released in ohfive???
16:09:27 <ais523> elliott: no, NetHack released in 3.4.3
16:09:28 <Deewiant> elliott: No, but it's 3.4.3
16:09:30 <elliott> heh
16:09:38 -!- augur has quit (Remote host closed the connection).
16:10:01 <elliott> there should be a way to link your kernel into an executable too
16:10:05 <elliott> so that static linking would actually solve my problem
16:10:20 <ais523> elliott: static VM?
16:10:20 <Deewiant> What is your problem
16:10:42 <elliott> Deewiant: My Haskell binary doesn't work on my server, it just hangs at startup doing tons of realtime/clock calls and occasionally mmap
16:10:51 <elliott> Looks like something's fucked in the event manager; I've no idea what or why or how to fix
16:10:58 <Deewiant> heh
16:10:59 <elliott> ais523: Yes, exactly
16:11:27 <ais523> oh right, that reminds me of some insane code I wrote recently
16:11:37 <elliott> oh no
16:11:43 <ais523> don't worry, it's C
16:11:46 <elliott> oh no
16:11:50 <Deewiant> :-D
16:12:27 <ais523> I'll remove the explanatory comments so you get the full effect
16:12:31 <elliott> oh no
16:13:18 <ais523> { void* allocforcer[100]; int i; for (i = 0; i < 100; i++) { allocforcer[i] = malloc(64000); } for (i = 0; i < 99; i++) { free(allocforcer[i]); } }
16:13:28 <ais523> the 100 is a reasonably arbitrary number; the 64000 isn't
16:13:42 <elliott> i
16:13:45 <ais523> really, they should both have been #defines but I was being lazy
16:13:59 <elliott> ais523: something about forcing pages to be reserved or filled or something?
16:14:08 <ais523> close, but not perfect
16:14:12 <ais523> notice the memory leak, it's deliberate
16:14:13 <elliott> ais523: disk sectors?
16:14:15 <elliott> hmmm
16:14:22 <elliott> ais523: is it so you can overrun the buffer somehow?
16:14:28 <ais523> nope
16:14:34 <elliott> :(
16:14:40 <ais523> OK, clue: think about the system calls involved
16:14:51 * elliott isn't sure he wants to...
16:14:52 <elliott> hmm
16:15:02 <elliott> ais523: trying to cause an overflow of some kind?
16:15:10 <Deewiant> They depend on the system / libc
16:15:17 <ais523> elliott: no, but you're thinking more along the right lines
16:15:20 <ais523> Deewiant: indeed; Linux / glibc
16:15:35 <elliott> hmm
16:15:51 <ais523> the idea is portable to most other systems and libcs, though, even if perhaps the exact numbers aren't
16:15:58 <elliott> ais523: is it about corrupting or otherwise modifying for a purpose in a non-standard way internal structures of the allocator?
16:16:10 <elliott> i.e., arranging them specifically?
16:16:15 <ais523> sort of
16:16:23 <ais523> it's not about corrupting, the resulting situation is not corrupt at all
16:16:29 <ais523> it is modifying for a purpose, though
16:16:33 <ais523> and the purpose is related to syscalls
16:16:48 <ais523> (incidentally, this has nothing to do with the Secret Project, although it /looks/ like it)
16:16:49 <Deewiant> Changing the program break?
16:16:53 <ais523> Deewiant: yep
16:16:57 <ais523> can you figure out why?
16:17:01 <elliott> i, err, sbrk?
16:17:20 <ais523> elliott: OK, what the code's doing is to get malloc to call sbrk at a particular location
16:17:40 <ais523> the memory leak at the end is so that it won't give back allocated memory to the system, which it could do otherwise (I'm not sure if it actually /did/, but that way's clearer)
16:17:43 <elliott> yikes
16:18:00 <Deewiant> And why do you do want to do that
16:18:02 <ais523> then it's freeing most of the memory between the break and the old end of the heap
16:18:06 <ais523> Deewiant: that's the question
16:18:10 <ais523> if you give up, I'll tell you
16:18:24 <Deewiant> I gave up, maybe elliott didn't
16:18:28 <elliott> i give up
16:18:29 <elliott> and also
16:18:30 <elliott> cry
16:18:31 <elliott> a bit
16:19:02 <ais523> the reason, is so that future memory allocations /don't/ call sbrk
16:19:06 <ais523> until memory fills to a certain size
16:19:09 <elliott> heh
16:19:10 <elliott> why?
16:19:11 <elliott> speed?
16:19:14 <ais523> security
16:19:16 <elliott> wat
16:19:25 <ais523> it's immediately followed by the prctl that disables all but four syscalls
16:19:30 <elliott> heh
16:19:45 <ais523> brk is not one of those four
16:19:55 <ais523> so /without/ doing that, the resulting code wouldn't be able to allocate any memory
16:20:03 <elliott> and then using too much memory kills the program?
16:20:07 <ais523> yep
16:20:08 <elliott> why couldn't you just use brk before doing it?
16:20:14 <ais523> because malloc wouldn't know I'd done that
16:20:25 <ais523> incidentally, the reason "why 64000" is that at 65536, glibc malloc starts using mmap instead
16:21:23 -!- Ngevd has joined.
16:21:29 <elliott> heh
16:21:32 <Ngevd> Hello!
16:21:41 <Ngevd> ais523, wiki spam
16:22:04 <ais523> otherwise I'd just use a big alloc then a small one
16:22:06 <ais523> Ngevd: thanks
16:22:27 <Ngevd> You're welcome!
16:22:36 <ais523> and deleted
16:22:49 <Ngevd> There's a page as well?
16:23:16 <ais523> oh, I missed one page
16:23:21 <ais523> as it wasn't in RSS yet
16:28:02 <Ngevd> So, what's up in the world of esoteric programming?
16:28:28 <elliott> nothing
16:28:35 <ais523> I spent today writing a pointless report, but it's motivated me to work on Anarchy
16:28:47 <ais523> which I can hardly even remember how it's meant to work, now, luckily I wrote a partial spec that might remind me
16:32:37 <elliott> theory: ais523 is actually ireland
16:32:48 <Ngevd> Republic or Northern>?
16:33:01 <ais523> presumably the physical island
16:33:07 <ais523> which includes both
16:33:08 <elliott> whichever one PH has gone to
16:33:18 <elliott> it only makes sense that when PH disappears, ais523 appears
16:34:08 <Ngevd> I made marshmallows!
16:34:42 <elliott> ah
16:39:53 <Ngevd> It's someone in my ancient history class's birthday today
16:40:07 <Ngevd> I mean tomorrow
16:40:12 <Ngevd> I am confused and tired
16:43:52 <ais523> <Microsoft> For the enthusiast who wants to run older operating systems, the option is there to allow you to make that decision.
16:44:08 <ais523> the two levels of indirection are necessary, incidentally; "you are allowed to make that decision" is not necessarily true
16:44:14 -!- augur has joined.
16:44:53 -!- augur has quit (Remote host closed the connection).
17:05:00 -!- augur has joined.
17:05:36 -!- Ngevd has quit (Ping timeout: 245 seconds).
17:05:59 -!- augur has quit (Remote host closed the connection).
17:08:37 -!- sadhu has joined.
17:14:51 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
17:16:10 -!- zzo38 has joined.
17:16:27 <zzo38> Yesterday at the night time, I put the tides in my gopher service.
17:23:14 -!- Ngevd has joined.
17:24:09 <Ngevd> Hello!
17:25:49 <zzo38> Do you like tides on my gopher service?
17:32:27 <Ngevd> I'm not entirely sure I see the point
17:32:37 <Ngevd> I'm not entirely sure what a gopher service is
17:33:06 <zzo38> It is on my computer on port 70
17:38:55 -!- zzo38 has quit (Remote host closed the connection).
17:39:25 <CakeProphet> looks like somebody already found an exploit;
17:41:19 -!- variable has quit (Excess Flood).
17:41:29 <Ngevd> Wasn't me
17:41:33 <elliott> CakeProphet: wfm
17:43:09 -!- variable has joined.
17:44:17 <CakeProphet> elliott: one moment while I look up your insane acronyms.
17:44:28 <CakeProphet> ah.
17:44:59 <CakeProphet> elliott: yes okay I will wait for you. :P
17:45:10 <CakeProphet> I will wait for you while I Work From Home.
17:45:31 <CakeProphet> as a Workflow Manager in the World Federalist Movement.
17:45:37 <CakeProphet> also, What Freakin' Manual?
17:45:50 <CakeProphet> *Fucking
17:46:19 <CakeProphet> whatever I'm going to the Whole Foods Market.
17:46:27 <CakeProphet> though I doubt they sell a Waveform Monitor.
17:46:46 <Ngevd> It updates Wednesday-Friday-Monday
17:52:10 * CakeProphet needs to talk to the Workforce Management of the Western Federation of Miners about claims made by the Wings of Faith Ministries of the World Faith Movement that we have been interferring with their radio station via illegal use of Wide Frequency Modulation.
17:53:10 <Vorpal> CakeProphet: I suspect it was "works for me"
17:53:19 <CakeProphet> Vorpal: oh...?
17:53:21 <CakeProphet> works for me.
17:53:37 <Vorpal> CakeProphet: wfm most often means "works for me" when elliott says it I found.
17:58:18 <CakeProphet> ah yes
17:58:29 <CakeProphet> it was the first choice on this website I found....
17:58:36 <CakeProphet> but, I figured, too obvious.
17:58:40 <CakeProphet> must be one of these other things.
17:58:48 -!- boily has joined.
18:01:16 <sadhu> i just coded a rough string to brainfuck converter
18:01:26 <sadhu> its pretty simple but it can do some optimizations
18:01:26 <CakeProphet> is "string" a language?
18:01:34 <sadhu> lol no
18:01:40 <CakeProphet> so you wrote a brainfuck interpreter?
18:02:03 <Ngevd> No, a text to brainfuck converter
18:02:04 <sadhu> no you input the string and it generates the brainfuck code to print it
18:02:14 <CakeProphet> ohhhh
18:02:15 <CakeProphet> right.
18:02:21 <sadhu> https://gist.github.com/cf21d4abee8853ceb9e3
18:03:57 <CakeProphet> wow Uncyclopedia is so bad.
18:05:08 <CakeProphet> it's the collective humor of hundreds of people who have a terrible sense of humor
18:05:28 <CakeProphet> many of them probably Wikipedia editors, or people who pretend to be wikipedia editors (....?)
18:06:35 -!- augur has joined.
18:18:25 <CakeProphet> http://en.wikipedia.org/wiki/Category:American_cuisine
18:18:29 <CakeProphet> hahahaha frito pie
18:18:31 <CakeProphet> I've had one of those.
18:18:48 <boily> frito, as in potato chips?
18:19:13 <CakeProphet> corn chips, but yes
18:19:43 <CakeProphet> Frito pie is a dish made with chili, cheese, and corn chips. Optional additions include salsa, refried beans, rice, and jalapeños, among others.
18:20:04 <boily> oh, this kind of pie!
18:20:07 <boily> sounds delicious.
18:20:11 <CakeProphet> America is the best at food.
18:20:49 <CakeProphet> we just take everyone elses food and mix it together with our own shit.
18:23:04 <elliott> Hmm, GHC totally needs a way to force a thread to execute some code.
18:23:30 <Ngevd> I've had an idea for a programming language
18:23:35 <elliott> Ooh, I bet I can do this with alwaysSuceeds.
18:23:36 <Ngevd> esoteric, that is
18:23:39 <sadhu> elliott: is this yours https://github.com/ehird ?
18:23:46 <elliott> yes, that's me
18:23:51 <elliott> ehird forked waferbaby/usesthis 1 day ago
18:23:51 <elliott> Forked repository is at ehird/usesthis
18:23:51 <elliott> wtf?
18:23:54 <elliott> i never did that
18:24:00 * elliott deletes...
18:24:40 <sadhu> elliott did you checkout that str2bf
18:24:48 <elliott> yeah, it looks better than bf_txtgen :P
18:24:53 <Ngevd> Anyway, my idea for a new esolang
18:25:09 <Ngevd> An imperative language with ONLY functional features
18:25:27 <Ngevd> Probably been done before
18:26:10 -!- derdon has joined.
18:26:26 <CakeProphet> Ngevd: Lisp?
18:26:26 <Ngevd> In pseudo javascript:
18:26:55 <Ngevd> var x = function(x) {function(y) {x}};
18:28:14 <Ngevd> Actually, imagine python with only lambdas and variable assignations
18:28:14 <Ngevd> Maybe input and print, too
18:28:37 <variable> anyone here clueful with gnuplot ?
18:28:40 <variable> I have a file that likes like this testname | ind_var | old dp1 | old dp2 | new dp1 | new dp2 I want to have 2 separate plots. one per datapoint. Each plot should show the change in the dp from version A to version B with a line for each testname
18:28:53 <Ngevd> Or some variation thereof
18:37:03 <Vorpal> <Ngevd> Actually, imagine python with only lambdas and variable assignations <-- have you seen that irc bot elliott wrote using lots of nested lambdas in python in order to make a non-trivial python program that would work without indentation
18:37:15 <elliott> oklopol wrote a bf interp like that, it's not uncommon
18:37:31 <Vorpal> hm, I haven't seen that one
18:38:08 <Vorpal> <variable> anyone here clueful with gnuplot ? <-- try fizzie. He knew when I asked some gnuplot questions a while ago
18:38:33 <variable> cool
18:38:44 <variable> I now have a file that more closely aligns with what I want to plot
18:39:23 -!- sadhu has quit (Quit: Leaving).
18:39:58 <fizzie> Hrm. What's ind_var?
18:42:43 <variable> fizzie: independent varibale
18:43:09 <variable> (in my case, the size of branch prediction table for a simulator)
18:43:50 <variable> fizzie: my file now looks like testname | ind_var | y_plot_1 | y_plot_2
18:44:20 <fizzie> Well. With a new enough (4.x, should be everywhere by now) I think you just mostly need a suitable "using" specifier. You probably could've done it from the original file with two 'using' lines, actually.
18:44:32 <variable> hrm?
18:44:44 * variable is not gnuplot clueful
18:46:21 <fizzie> I think I need to test it before I say something that's probably not immediately correct.
18:46:30 <fizzie> But how do you want to indicate the differences?
18:46:41 <variable> on the y cord.
18:46:44 <variable> * y axid
18:46:46 <variable> * y axis
18:47:17 <fizzie> Right, but do you want for each test an arrow from the old value to the new one or what?
18:47:17 <Vorpal> elliott: got a link to that "Nix"? Searching is useless, just turns up matches for people writing *nix
18:47:25 <elliott> http://nixos.org/
18:47:28 <Vorpal> thanks
18:47:28 <elliott> NixOS is the thing to google.
18:47:33 <Vorpal> right
18:47:47 * elliott considers rolling NixOS + nilfs.
18:47:49 <Vorpal> no obvious download link. Heh.
18:47:50 <elliott> ON THE EEEEDGE.
18:48:03 <Vorpal> ah there
18:48:50 <Vorpal> oh god, it is gentoo stage3 kind of thing to install
18:48:56 <Vorpal> well not quite
18:49:00 <elliott> Vorpal: No, it's binary-based.
18:49:02 <Vorpal> lots and lots of manual commands though
18:49:09 <fizzie> (Or the difference between the old and new as a signed value indicated by the point?)
18:49:28 <elliott> Vorpal: Doesn't look that bad to me.
18:49:33 <Vorpal> elliott: yeah but I meant as in, no installer (GUI or ncurses or even the openbsd style of asking questions)
18:49:36 <elliott> It's "partition, run a few Nix commands, rbeoot".
18:49:39 <elliott> s/rbe/reb/
18:50:05 <variable> fizzie: https://en.wikipedia.org/wiki/File:NO2_Arrhenius_k_against_T.svg something like this
18:50:17 <variable> where X = size of branch table
18:50:31 <variable> y = new - old
18:50:34 <elliott> Vorpal: I like how it has special instructions for Pidgin-LaTeX in the manual.
18:50:35 <elliott> Priorities.
18:50:40 <Vorpal> elliott: any idea for funky OSes to try out? I did OpenIndiana earlier. Looking for something else. NixOS looks like a bit too much work for just messing around with it in a VM.
18:51:05 <elliott> Vorpal: Tiny Core is quite fun in a VM, at least, especially with its funky package mounting system.
18:51:24 <variable> Vorpal: ReactOS ?
18:51:35 <Vorpal> variable: ew
18:51:41 -!- Nisstyre has quit (Ping timeout: 248 seconds).
18:51:44 <variable> Vorpal: :)
18:51:55 <Vorpal> elliott: oh? package mounting? Hm... Web search turns up github and so on. No obvious place to download an ISO
18:52:08 <elliott> google gives http://tinycorelinux.com/ as first link
18:52:16 <Vorpal> elliott: was using DDG
18:52:27 <elliott> haven't bothered to set ddg on this new install yet
18:52:31 <Vorpal> ah
18:52:53 <elliott> but yeah, a ten meg bootable Xorg system + graphical package manager is impressive in anyone's book
18:52:53 <variable> fizzie: I've got to run now, but I'll read what you write later. Any help you could give me would be great !
18:53:01 <elliott> though flinix of course wants to do it in one and a half.
18:53:36 <fizzie> variable: Uhh, right, okay; so you want a line in the plot for each different 'testname', and the ind_var gives the X value. Okay. I was misinterpreting that you wanted a line i.e. an entry for each 'testname' labeled by the 'testname', indicating a single change. Mhm. That may need some manual pre-splitting so that the lines corresponding to each 'testname' have two empty lines in-between, but not necessarily. I'll try this out, will take a while.
18:53:56 <Vorpal> elliott: no mesa I presume?
18:54:10 <elliott> Vorpal: Well, everything's in a package. :p
18:54:20 <Vorpal> elliott: so how do packages work in there?
18:55:01 <elliott> Vorpal: Mounted into /tmp/some/path/i/forget which gets overlaid onto the rest of the system in a way I forget
18:55:06 <Vorpal> heh
18:55:09 <elliott> Vorpal: Mounted loopback from the tarball
18:55:15 <Vorpal> elliott: are there many packages available?
18:55:19 <elliott> Shitloads
18:55:25 <elliott> It has all of KDE, etc.
18:55:40 <Vorpal> hm
18:55:43 <Vorpal> xfce too I hope
18:55:51 <elliott> It was an example for size.
18:55:57 <Vorpal> elliott: hm which one: TinyCore | MicroCore | MultiCore
18:56:22 <Vorpal> and where are the 64-bit downloads?
18:56:33 <elliott> Vorpal: Middle one doesn't have any kind of X at all.
18:56:36 <elliott> multicore is some kind of bundle thing.
18:56:49 <Vorpal> hm
18:56:56 <elliott> And it apparently supports sixty-four bit says WP, but I dunno how.
18:57:09 <elliott> http://distro.ibiblio.org/tinycorelinux/4.x/
18:57:12 -!- Nisstyre has joined.
18:57:16 <elliott> Shrug.
18:57:26 <Vorpal> hm
18:57:54 <elliott> Just get the thirty-two bit one, YAGN that ram :P
18:58:11 <Vorpal> ibiblio is so slow. I get 20 kb/s from it, as usual
18:58:29 <elliott> http://upload.wikimedia.org/wikipedia/en/timeline/7ca54bb4dd52eef1ecd02ebd1f481d04.png
18:58:32 <elliott> Good timeline.
18:58:39 -!- Nisstyre has quit (Max SendQ exceeded).
18:59:18 <Vorpal> elliott: I was going to assign 6 GB and 2 cores to the vm. Virtualbox is more efficient for 64-bit guests according to the docs
18:59:30 <elliott> Vorpal: Six gigs of what
18:59:33 <Vorpal> elliott: ram?
18:59:38 <elliott> Why, it's Tiny
18:59:53 <Vorpal> elliott: well, why not? I still have 10 for the host
19:00:04 <elliott> Because it'll only see four of it?
19:00:05 -!- Nisstyre has joined.
19:00:12 <Vorpal> elliott: yeah fuck the 32-bitness
19:00:17 <Vorpal> elliott: anyway there is PAE
19:00:24 <elliott> I don't think you quite understand how Tiny the Tiny part of Tiny Core is
19:00:40 <Vorpal> elliott: that was disk space, not ram ?
19:00:47 <elliott> It's everything.
19:00:52 <elliott> It would practically run on a toaster.
19:02:21 <olsner> so would ubuntu if you equipped the toaster with 10GB of storage and >=1GB of RAM
19:03:31 <Ngevd> That could almost run Windows Vista
19:05:43 <elliott> atomically :: STM a -> IO a
19:05:44 <elliott> atomically (STM m) = IO (\s -> (atomically# m) s )
19:05:46 <elliott> Fuck primitives
19:06:49 <copumpkin> elliott: http://hpaste.org/52806
19:06:53 <copumpkin> isn't it cute!?
19:07:09 <elliott> copumpkin: Totally
19:07:33 <Vorpal> gah keymap
19:07:50 -!- oerjan has joined.
19:08:17 <elliott> old_trec = StgTSO_trec(CurrentTSO);
19:08:17 <elliott> /* Nested transactions are not allowed; raise an exception */
19:08:17 <elliott> if (old_trec != NO_TREC) {
19:08:17 <elliott> R1 = base_ControlziExceptionziBase_nestedAtomically_closure;
19:08:17 <elliott> jump stg_raisezh;
19:08:18 <elliott> }
19:08:21 <elliott> Why you gotta be so unoverridable
19:08:40 <shachaf> elliott: Really, why are you trying to do that?
19:08:55 <elliott> shachaf: SHHHHHHHHH I know it's safe because it's right at the end of the transaction.
19:08:57 <elliott> It's like a tail-call.
19:10:34 <elliott> shachaf: OK fine, here's a clue:
19:10:35 <elliott> go <- newEmptyTMVar
19:10:36 <elliott> alwaysSucceeds $ takeTMVar go >> unsafeIOToSTM act
19:10:36 <elliott> putTMVar go ()
19:11:38 <Vorpal> elliott: tiny core is not an option unless I can get the correct keymap in the installer. Too painful otherwise
19:11:51 <elliott> Vorpal: Why are you installing it?
19:11:52 <elliott> It runs from rAM.
19:11:53 <elliott> RAM.
19:11:58 <elliott> It has a keymap setter built in to the preferences thing.
19:12:11 <Vorpal> elliott: looked in the control panel, I see no keymap optionj
19:12:13 <Vorpal> option*
19:12:48 <Vorpal> elliott: besides running it from a CD such changes such as setting keymap won't persist
19:12:51 <elliott> Pretty sure there is, but you could just tell X about it directly
19:13:25 <fizzie> variable: It is awfully tricky to get multiple lines (with different titles) using only a single plot specifier. You almost get it if you separate the datasets (in your case, different testnames) with two newlines and then plot the complete file, but in that case all the lines end up in the same style. It is trivial if you don't mind doing "plot 'blah.data' ... index 0, 'blah.data' ... index 1, ..." with one command per each line, but that requires either fixin
19:13:25 <fizzie> g the number of lines, or generating the plotscript along with the data. Here's an example of what that might look like: http://p.zem.fi/meud
19:13:27 <elliott> shachaf: See, you should be helping me now.
19:13:41 <shachaf> elliott: As a matter of fact, I don't see.
19:13:53 <elliott> shachaf: Poor you.
19:14:40 <fizzie> variable: That will plot one line titled "foobar" with points at x=1, y=(1-0)=1 and x=2, y=(3-0)=3; and another line with x=1, y=(3-0)=3 and x=2, y=(5-0)=5. There's a host of twiddleable settings to control the style of the output further.
19:16:08 <fizzie> variable: As for the other plot, just turn ($4-$2) into ($5-$3). But I don't know offhand of a way to automatically get all indexes (i.e. datasets) of a datafile as actually separate series with different styles, without repeating the (essentially identical, except for the index number) plot specifier. Which is quite stupef. Possibly there is a thing for that too.
19:16:20 <elliott> shachaf: The real real answer is that I'm trying to implement onCommit :: IO () -> STM ().
19:16:36 <fizzie> variable: If you just don't specify "index" at all, it'll plot them all as separate lines just fine, but all the lines will be with the same color and have just one title.
19:17:51 <shachaf> elliott: Isn't there already an implementation of onCommit?
19:18:01 <oerjan> @hoogle onCommit
19:18:02 <lambdabot> No results found
19:18:07 <elliott> shachaf: Yes, in another monad.
19:18:13 <elliott> shachaf: I'm making one that works directly without any changes.
19:18:27 <elliott> shachaf: I already have one that works perfectly except you need to s/atomically/atomicallyIO/.
19:18:35 <elliott> shachaf: Now I have one that works perfectly full stop, except you can't run a transaction from it.
19:19:27 <oerjan> so basically you want a kind of transaction finalizer :P
19:19:34 <elliott> Yep :P
19:19:35 <fizzie> variable: Okay, you can get the lines in a different style automatically too, but not multiple entries in the legend/key/whatever you call it.
19:19:39 <elliott> That's kind of what onCommit is.
19:21:37 <oerjan> molecularily
19:23:28 -!- GreaseMonkey has joined.
19:23:51 * elliott discovered this by trying let m = atomically (onCommit m)
19:23:57 <elliott> the best transaction
19:26:53 -!- tiffany has joined.
19:30:55 -!- hagb4rd2 has joined.
19:31:15 <oerjan> elliott: i don't find any onCommit in the stm package?
19:31:46 <elliott> oerjan: duh, that's why I'm implementing it
19:31:50 <elliott> onCommit :: IO () -> STM ()
19:31:51 <elliott> onCommit act = do
19:31:51 <elliott> go <- newEmptyTMVar
19:31:51 <elliott> alwaysSucceeds $ takeTMVar go >> unsafeIOToSTM act
19:31:51 <elliott> putTMVar go ()
19:32:13 -!- hagb4rd has quit (Ping timeout: 248 seconds).
19:35:35 <oerjan> what does alwaysSucceeds do?
19:36:15 <elliott> oerjan: alwaysSucceeds :: STM a -> STM ()
19:36:15 <elliott> alwaysSucceeds adds a new invariant that must be true when passed to alwaysSucceeds, at the end of the current transaction, and at the end of every subsequent transaction. If it fails at any of those points then the transaction violating it is aborted and the exception raised by the invariant is propagated.
19:36:20 <elliott> "true" here meaning "doesn't throw an exception"
19:36:32 <elliott> I use it as a hook to be able to execute things at the end of the transaction :)
19:36:34 <oerjan> elliott: i already read that, i'm asking because i have no idea what it means
19:36:44 <elliott> the TMVar is to avoid it executing when passed to alwaysSucceeds and at the end of future transactions
19:36:51 <elliott> oerjan: well how do you want me to explain, the above precisely defines its semantics
19:36:54 <elliott> it's just not intuitive
19:37:09 <oerjan> but what is an invariant?
19:37:15 <elliott> oerjan: an action
19:37:36 <elliott> oerjan: it just means that the action is run when passed to alwaysSucceeds, at the end of the current transaction, and at the end of any subsequent transaction
19:37:39 <elliott> oerjan: if it fails, the transaction fails
19:37:55 <oerjan> oh hm
19:38:08 -!- ive has joined.
19:38:16 <elliott> oerjan: so in this case, I use a TMVar to make sure it just does nothing when passed to alwaysSucceeds (first execution), then executes when the transaction finishes (second execution), then never again :)
19:38:27 <elliott> although there might be a race condition, I think not since it's part of the same atomically block
19:38:33 <elliott> (i.e. another transaction ending first)
19:38:40 <elliott> (but I think the adding of these is atomic too, so it should be fine)
19:39:07 <Madoka-Kaname> CakeProphet, (t<<3)*[8/9,1,9/8,6/5,4/3,3/2,0][[0xd2d2c8,0xce4088,0xca32c8,0x8e4009][t>>14&3]>>(0x3dbe4688>>((t>>10&15)>9?18:t>>10&15)*3&7)*3&7]
19:39:14 <Madoka-Kaname> I liked this one
19:39:22 <tiffany> o.o
19:39:26 <elliott> Madoka-Kaname: :slowpoke:
19:39:26 <tiffany> um, how do you run those?
19:39:36 <elliott> tiffany: Would you stop saying o.o all the time it is worse than Madoka-Kaname's one-line pings.
19:39:36 <Madoka-Kaname> elliott, =p
19:39:49 <elliott> It is like a never-ending torrent of suffering delivered in lines.
19:39:56 <elliott> Suffering and pain.
19:40:03 <tiffany> wha?
19:40:05 <elliott> Madoka-Kaname: That one is a total cheat, it's basically just doing sequencing.
19:40:13 <Madoka-Kaname> elliott, yeah, I know.
19:40:32 <elliott> I wonder what the Kolgomorov complexity of Axel F is. (Inspired by rgb.swf.)
19:40:33 * Madoka-Kaname hugs tiffany
19:40:34 <oerjan> elliott: um doesn't takeTMVar prevent the action from succeeding until there's actually a value in it?
19:40:42 <tiffany> how do I run those thingies?
19:40:48 <elliott> oerjan: hmm right
19:40:50 <elliott> oerjan: well, it works :D
19:41:00 <elliott> tiffany: http://www.bemmu.com/music/index.html
19:41:16 <elliott> rgb.swf is really pretty
19:41:22 <elliott> I feel so sorry for epileptics who can't enjoy it
19:41:22 <fizzie> It's not as much of a cheat as my that IIR resonator. :p
19:41:50 <elliott> fizzie: As my that IIR resonator?
19:42:00 <fizzie> elliott: Line-editing gone wrong.
19:42:14 <Madoka-Kaname> elliott, it's a rick roll =p
19:42:20 <Vorpal> <elliott> It is like a never-ending torrent of suffering delivered in lines. <-- you mean no other downloaders, so you never get to a decent share ratio once it downloaded?
19:42:21 <elliott> Madoka-Kaname: No shit.
19:42:34 <ais523> elliott: you're pinged by o.o?
19:42:44 <elliott> ais523: If by "ping" you mean "annoyed", yes. :p
19:42:55 <elliott> Help I looked at rgb.swf and now every other colour seems dull.
19:43:00 <tiffany> .-.
19:43:36 <fizzie> If by "ping" you mean "annoyed", we can deduce you are "annoyeded" by o.o.
19:43:45 * tiffany searches on duckduckgo
19:43:45 <tiffany> http://throbs.net/fun/swf.asp?rgb.swf
19:43:51 <tiffany> how am I not having a seizure from this x_x
19:43:58 <elliott> (Heavy epilepsy warning on the above.)
19:44:28 <tiffany> my eyes hurt now
19:44:37 <elliott> Wow, it actually does oversatuate your eyes.
19:44:40 <elliott> Everything is actually greyish now.
19:44:43 <elliott> This can only be healthy.
19:44:44 <Vorpal> <elliott> tiffany: http://www.bemmu.com/music/index.html <-- what is the algorithm?
19:44:47 <elliott> ais523: wikispam
19:44:56 <elliott> Vorpal: there is no "algorithm", it just samples it
19:45:14 <Vorpal> elliott: samples *what*. What does your expression generate?
19:45:28 <ais523> <spam> oom to use your free herpes dating sites.
19:45:29 <Vorpal> elliott: it looks like a lot of bitshifting and some arcane syntax I have no clue about to me
19:45:42 <elliott> Vorpal pcm
19:45:53 <fizzie> Arcane syntax called array indexing, isn't it?
19:45:54 <Vorpal> elliott: okay so what is the syntax. I can't find any description on the page
19:46:01 <fizzie> It's Javascript.
19:46:06 <Vorpal> hm
19:46:06 <oerjan> ais523: i guess someone _has_ to have that as a fetish
19:46:13 <ais523> I think this spambot is just taking hypothesized Google searches for "dating" without wondering what they actually mean, then clipping them off at random locations
19:46:15 <elliott> see http://www.youtube.com/watch?v=GtQdIYUtAHg for complete programs pipeable to /dev/audio
19:46:27 <ais523> the article titles are big giveaways that that's what's happening
19:46:29 <elliott> or the super-duper version
19:46:30 <elliott> http://www.youtube.com/watch?v=tCRPUv8V22o
19:46:40 <Vorpal> hm
19:46:52 <ais523> also, that spambot is capable of solving the CAPTCHA, incidentally
19:47:06 <ais523> which is not surprising as it's a very easy CAPTCHA, but it does mean it's targeting MediaWiki specifically
19:47:11 <fizzie> elliott: Note that viznut is a .fi person too. COINCIDENCE?
19:47:17 <elliott> fizzie: Well, it's the demoscene.
19:47:30 <elliott> That "Covers Chaos Theory by Conspiracy" one is disappointingly lookup-tabley.
19:47:30 <fizzie> It's not an exclusively Finnish phenomononomon.
19:47:39 <elliott> fizzie: Yes but come on, you're fooling nobody.
19:47:40 <oerjan> viz. a nut
19:48:20 <elliott> That two-one-six one is very impressive, with the evolving beat.
19:48:54 <oerjan> finnish pheromenons
19:48:58 <elliott> Also the one at a bit before seven minutes.
19:49:12 <Vorpal> elliott: oh so there is an implicit loop around the expression you enter on that page. It wasn't clear
19:49:45 <fizzie> It's clear from the example expression in there that it uses 't' for time.
19:49:57 <Vorpal> fizzie: I was wondering what t
19:50:00 <Vorpal> t was*
19:51:06 <Vorpal> hm any way to generate sine waves?
19:51:11 <Vorpal> without too much work
19:51:13 <fizzie> Yes, with "sin".
19:51:17 <fizzie> It autorewrites that to Math.sin.
19:51:25 <Vorpal> fizzie: well yeah I was wondering if that was available in some shape or form
19:52:03 <fizzie> Vorpal: I splonked in an IIR resonator with what amounts to basically code injection earlier: (someone said it didn't work; but it worked for me; might not be quite legal JS therefore)
19:52:05 <fizzie> 128+600*r5(r4(r3(r2(r1(rg((t%40)==0?1:0)))))); }; var r1=r(710,50),r2=r(1100,70),r3=r(2450,110),r4=r(3300,250),r5=r(3750,200),rg=r(0,500); function r(F,BW) { var Z=8000,B=2*Math.exp(-3.14*BW/Z)*cos(2*3.14*F/Z),C=-Math.exp(-2*3.14*BW/Z),p1=0,p2=0; return function(x) { var p=(1-B-C)*x+B*p1+C*p2; p2=p1; p1=p; return p; };
19:52:12 <Vorpal> issue: pausing the sound playing in the web browser is kind of broken
19:52:16 <Vorpal> as in, does nothinmg
19:52:19 <Vorpal> nothing*
19:52:19 <elliott> wfm
19:52:22 <Vorpal> elliott: firefox?
19:52:25 <elliott> chrome
19:52:36 <elliott> fizzie: How... pleasing-sounding.
19:52:49 <elliott> fizzie: Can we do dubstep yet? We need to ruin it.
19:53:14 <fizzie> elliott: Well, it's a fixed-frequency pulse train through a cascade of resonators; it'd be more interesting with some LFO on the filter parameters.
19:53:33 * tiffany generates 5 minutes of one of these :p
19:53:44 <fizzie> Also at work with FF it actually started to play two copies at the same time when I ran it; then pausing actually only paused one of them.
19:53:53 <fizzie> Anyway, it's just 30 seconds.
19:54:09 -!- citiral has joined.
19:54:14 <citiral> Hello!
19:54:29 <Vorpal> fizzie: yes but your one was horrible. And the two copies explain it
19:54:33 <oerjan> `? welcome
19:54:38 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
19:54:56 <citiral> So I just found out about those awesome isoteric languages. Which are some of the best?
19:55:06 <tiffany> my harddrive is making noises ._.
19:55:10 <citiral> esoteric*
19:55:23 <Ngevd> That's all a matter of opinion
19:55:32 <citiral> HDD make noises. I would get worried if it didn't.
19:55:33 <Ngevd> I like Piet
19:55:54 <fizzie> Funge-98 is widely recognized as the most useful language for IRC bot writing there is.
19:55:54 <Vorpal> tiffany: so is mine sometimes. Very faint ones due to the rubber rings between the disk and the metal plates on the side of the disk bay.
19:55:57 <citiral> I prefer some like Befunge-93 and the likes, or a cellular automata one.
19:56:03 <elliott> citiral: My hard-drive doesn't make noises.
19:56:04 <oerjan> unlambda, underload
19:56:06 <elliott> fungot: Say hi to citiral.
19:56:07 <fungot> elliott: to, uhhh.... or even this very difficult issue is discussed, it should be deleted, not merged. but new england flood of may, 1765, curwen's only child, it's ancient history now...
19:56:09 <Vorpal> elliott: you have an SSD...
19:56:12 <fizzie> If you like Befunge:
19:56:13 <fizzie> ^source
19:56:13 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
19:56:13 <Vorpal> of course it doesn't
19:56:14 <elliott> ^source
19:56:14 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
19:56:17 <elliott> ^source
19:56:17 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
19:56:19 <fizzie> elliott: Great minds and so on.
19:56:41 <tiffany> this music generator must be making firefox use a ridiculous amount of ram :/
19:56:41 <citiral> fungot is a bot?
19:56:41 <fungot> citiral: " and this is a new game. there is no particularly good human translation for this concept. a concept usually denoted by a single, savage thrust of her was certain that the noise was as a distress signal is
19:56:47 <Vorpal> citiral: yes
19:56:54 <Vorpal> citiral: written in an esolang
19:56:56 <citiral> Fungot, I LOVE YOU! :D
19:57:07 <elliott> It doesn't respond to people who miscapitalise it.
19:57:07 <fizzie> Sadly, he's case-sensitive.
19:57:13 <citiral> In Befunge-98 someone said?
19:57:15 <Vorpal> yes
19:57:19 <elliott> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
19:57:19 <fungot> elliott: just to help an fnord archive) this song " there had been a gorgeous sunset, and judged it was a million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or ten million or
19:57:23 <citiral> Gotta check that one out.
19:57:26 <Vorpal> guh
19:57:29 <elliott> ^style
19:57:30 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot* homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube
19:57:32 <elliott> ^style irc
19:57:32 <fungot> Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams)
19:57:38 <elliott> fungot: Impress citiral.
19:57:39 <fungot> elliott: ' fnord tulee fnord " hyv fnord" ja fnord fnord. kun fnord, muista fnord fnord ulos.
19:57:43 <fizzie> Haha.
19:57:48 <fizzie> That was the worst.
19:57:52 <elliott> Yes, that...
19:57:53 <fizzie> fungot: Shame on you.
19:57:54 <fungot> fizzie: fnord right, then. the mere existence of win32 is a crime called copyright crime. so maybe that won't be there in 1.11.x, sisc supports srfi-55, aka require-extension, which loads as fast as c
19:58:01 <elliott> "the mere existence of win32 is a crime called copyright crime."
19:58:02 <elliott> Classic.
19:58:07 <Vorpal> citiral: it uses some fingerprints for networking and such (fingerprints are loadable extensions the interpreter provides, iirc fungot uses SOCK, STRN, FING and TOYS)
19:58:07 <fungot> Vorpal: you could say that, but if you do...
19:58:09 <tiffany> hehe
19:58:19 <citiral> I lolled too at that one.
19:58:25 <tiffany> okay yeah killing firefox
19:58:28 <tiffany> if terminal would open
19:58:47 <Vorpal> oh, SCKE too
19:58:47 <fizzie> elliott: It was a bit of Finnish again; here's a translation: ' fnord comes fnord " good fnord" and fnord fnord. when fnord, remember fnord fnord out.
19:58:52 <tiffany> ff just opened with an unresponsive script: Script: resource://gre/modules/XPCOMUtils.jsm:329
19:58:53 <elliott> citiral: I concur with oerjan's nomination of Underload
19:59:28 <Vorpal> fizzie: hm "out". Why am I reminded of radio communications here XD
19:59:35 <elliott> `run echo "hi citral" >foo; cat foo; rm foo
19:59:37 <HackEgo> hi citral
19:59:52 <elliott> !c printf("hi citral\n");
19:59:57 <Vorpal> fizzie: replace the "fnord" with static and it sounds like a vital message that was jammed or something, and a key plot point in a movie
20:00:06 <fizzie> Vorpal: I don't think the Finnish word is used in that context though. It's more strictly "out" as in "exit from some place".
20:00:10 <oerjan> ^ul ((Underload rocks)!a(:^)*S):^
20:00:10 <fungot> ((Underload rocks)!a(:^)*S):^
20:00:11 <elliott> EgoBot? :/
20:00:15 <elliott> Come on, EgoBot.
20:00:15 <Vorpal> fizzie: well your translation I meant
20:00:17 <elliott> You can do it.
20:00:20 <Vorpal> well,*
20:00:28 <elliott> !c printf("hello\n");
20:00:32 <Vorpal> it is slow
20:00:41 <Vorpal> !help
20:00:42 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
20:00:45 <elliott> I think Ritchie left EgoBot.
20:00:45 <Vorpal> maybe?
20:00:47 <citiral> Egobot? :D
20:00:55 <Vorpal> !help languages
20:00:55 <EgoBot> ​languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh.
20:00:58 <elliott> !c printf("SAY HELLO TO CITRIAL OR DIE\n");
20:01:06 <elliott> !c int main() { printf("SAY HELLO TO CITRIAL OR DIE\n"); }
20:01:12 <elliott> !sh echo PLS
20:01:15 <ais523> elliott: oh, I thought you were pinging me there
20:01:18 <Vorpal> hm something fishy going on here
20:01:19 <elliott> citiral: OK, maybe HackEgo just doesn't like you.
20:01:21 <elliott> Erm, EgoBot.
20:01:28 <ais523> but actually, Vorpal did via EgoBot
20:01:37 <ais523> hi citiral, btw
20:01:38 <Vorpal> ais523: I did !help
20:01:41 <ais523> Vorpal: I know
20:01:42 <elliott> > cycle "we have lambdabot too"
20:01:43 <lambdabot> "we have lambdabot toowe have lambdabot toowe have lambdabot toowe have lam...
20:01:44 <ais523> I have a ping on "INTERCAL"
20:01:46 <citiral> WHAT? I wanted to install GTA IV, and now it just prompts me with: Your system is incompatible with GTA IV. Please follow the following link: www.microsoft.com. o.O
20:01:47 <Vorpal> ais523: could be that language interpreters are broken
20:01:50 <Vorpal> !bf_txtgen test
20:01:55 <EgoBot> ​61 +++++++++++++[>+>+++++++++>++++++++><<<<-]>>-.>---.<-.+.<---. [32]
20:01:59 <fizzie> This is one botty channel.
20:02:00 <elliott> !sh echo yay
20:02:03 <Vorpal> hm
20:02:03 <ais523> citiral: does that actually link to Microsoft's homepage?
20:02:06 <elliott> Hmmph.
20:02:08 <ais523> if so, it doesn't seem particularly useful
20:02:15 <citiral> I'm not sure, it doesn't want to open the link.
20:02:27 <ais523> does it even try?
20:02:31 <citiral> Strange, considering I played gtaIV on my pc yesterday.
20:02:33 <ais523> or is it just the URL of Microsoft's homepage underlined?
20:02:36 <elliott> It isn't very confident in its suggestion.
20:02:41 <Vorpal> I played it a few days ago.
20:02:43 <citiral> It doesn't do shit. It just sits there, mocking me.
20:02:45 <elliott> It's like... ah... maybe don't click that.
20:03:21 <Vorpal> it is kind of fun, but gets boring quickly, you have to play the god damn storyline to unlock the whole map for screwing around in
20:03:26 <oerjan> !bf +++++++++++++[>+>+++++++++>++++++++><<<<-]>>-.>---.<-.+.<---.
20:03:30 <citiral> It might be protecting me from getting too little sleep.
20:03:35 <Ngevd> citiral, how did you come across isometric programming languages?
20:03:40 <Vorpal> and then you end up with friends you need to hang out with regularly or they stop liking you
20:03:43 <elliott> citiral: I can vouch for the redundancy of sle;a'sldgfhgbn.,n
20:04:08 <ais523> ^bf +++++++++++++[>+>+++++++++>++++++++><<<<-]>>-.>---.<-.+.<---.
20:04:08 <fungot> test.
20:04:10 <citiral> My dad told me about shakespearian. I got interested and googled it. And then I found a source of awesomness.
20:04:15 <ais523> fungot wins
20:04:15 <fungot> ais523: ( list-tail ' ( 1 2 3
20:04:27 <Ngevd> citiral, you don't live in Hexham, do you?
20:04:30 <citiral> Aha, if I run it in windowsXP compatibility mode, it does get to install.
20:04:35 <elliott> Ngevd: Oh god please no.
20:04:39 <citiral> I live in Belgium.
20:04:39 <elliott> I couldn't take it.
20:04:42 <ais523> elliott: it's worth finding out quickly
20:04:44 <Ngevd> Okay, no0t Hexham
20:04:46 <elliott> But do you live in Hexham, Belgium?
20:04:46 <ais523> oh good, crisis averted
20:04:57 <citiral> No, I live in overrepen, Belgium.
20:04:57 <ais523> citiral: there are two Hexhamers in the channel; everyone was very surprised
20:04:58 <Vorpal> citiral: it runs fine under windows 7 pro (64-bit) for me
20:05:01 <elliott> Wait, I have it on good authority that Belgium doesn't actually exist.
20:05:04 <elliott> This could be a cover.
20:05:13 * elliott greps /hexham/ on http://zapatopi.net/belgium/
20:05:23 <citiral> I had an illegal copy, which installed just fine, now I purchased it to play online, and it doesn't work...
20:05:24 <Vorpal> not on windows atm though. I prefer linux normally
20:05:26 <citiral> oh the irony.
20:05:32 <Vorpal> hah
20:06:01 <citiral> Hope installing it in compatibily mode doesn't screw with some registery entries.
20:06:08 <ais523> first result for "belgium hexham" is http://www.hexhamcourant.co.uk/news/news-at-a-glance/belgium-driver-s-wrong-turn-sparks-rescue-drama-1.764838?referrerPath=news/news-at-a-glance
20:06:12 <ais523> warning: sets tens of cookies
20:06:27 <elliott> The Courant is the best source for useless news ever.
20:06:27 <ais523> why does Firefox not have a "deny for session" option?
20:06:37 <ais523> if I don't want the first cookie, I probably don't want the second cookie either
20:06:40 <coppro> 3/win 7
20:06:45 <ais523> elliott: right, I forgot that you probably new it existed
20:06:48 <ais523> *knew
20:07:03 <ais523> I did write the silent k the first time round, just put it on the wrong word
20:07:13 <ais523> and then forgot to re-add it after deleting it
20:07:14 <elliott> Kcourant.
20:07:29 <elliott> Sounds like a KDE app.
20:08:00 <ais523> doesnt kanything that karbitrarily kstart with k ksound like a kde app?
20:08:14 <oerjan> kmaybe.
20:09:08 <Vorpal> <ais523> why does Firefox not have a "deny for session" option? <-- you mean the thing where you get a stack of "deny cookie?" from the same site? Utterly annoying that.
20:09:13 <Vorpal> what actually causes it?
20:09:36 <Vorpal> I mean, even if I select to remember the deny they are actually all opened before I get to click
20:09:37 <ais523> Firefox devs just not imagining that someone who wants to specifically allow/deny cookies might not want to save the preference for future sessoins
20:09:38 <ais523> *sessions
20:09:43 <ais523> it's just as bad with the allow options
20:09:53 <citiral> funbot!
20:09:56 <ais523> it's just that I'm more likely to allow cookies from a site permanently than once
20:09:58 <elliott> "Post 1, 2, 3: on x86-64, an int is generally 4 bits wide, just like on a regular x86 system."
20:10:07 <citiral> fungot!
20:10:07 <fungot> citiral: do you have
20:10:10 <ais523> elliott: Windows, clearly
20:10:12 <Vorpal> ais523: that is not the issue for me. I'm talking about where you get a whole stack of cookie windows *at once* so you have to click through every one of them
20:10:21 <elliott> ais523: yep, the famous four-bit Windows???
20:10:23 <ais523> Vorpal: that happens on both cases to me too
20:10:32 <ais523> elliott: the 8086 isn't actually a 4-bit processor
20:10:37 <ais523> and I don't think Windows runs on a 4086
20:10:37 <Vorpal> it is really annoying
20:10:40 <ais523> which I may have just invented
20:10:44 <Gregor> 4004 for the win 8-D
20:10:54 <ais523> Vorpal: extra annoying is that all the windows are modal
20:10:59 <ais523> and sometimes don't open in the right order
20:11:02 <Vorpal> ais523: relative firefox yeah
20:11:05 <ais523> so you have to figure out which one you have to click on first
20:11:09 <elliott> Gregor: I wonder if there's any 4004 emulators.
20:11:09 <oerjan> Gregor: EgoBot is borken okthxbye
20:11:18 <Vorpal> ais523: they open right on top for me
20:11:32 <ais523> Vorpal: same for me, but sometimes they open right on top in the wrong order
20:11:36 <Vorpal> so uh, if they were modal I couldn't handle it. Since they don't show up in the task bar either
20:11:41 <ais523> so you have to move them so as to find which one you have to click on next
20:11:43 <ais523> they're application-modal
20:11:44 <Vorpal> err, modal in wrong order I mean
20:11:46 <ais523> not system-modal
20:11:50 <citiral> Is there a big difference between befunge-93 and -98?
20:11:55 <ais523> citiral: yes
20:12:04 <ais523> -98 is a much larger language; -93 is more of a toy
20:12:05 <citiral> How big is big?
20:12:23 <ais523> well, -98 has massive library support (for an esolang)
20:12:24 <elliott> huge
20:12:32 <elliott> a -93 interpreter can be done in about two, three pages of code
20:12:33 <Vorpal> ais523: the only things that should be system modal would be dialogues like "are you sure you want to log out" or "enter password to open package manager"
20:12:35 <ais523> befunge-98 probably has the best library support of any esolang
20:12:39 <elliott> -98 takes a thousand lines in just about any language
20:12:41 <ais523> and -98 is pretty hard to implement
20:12:41 <elliott> and that's before fingerprints
20:12:47 <elliott> and those thousand lines are going to be wrong the first fifty times
20:12:59 <ais523> Vorpal: I disagree about either of those
20:13:00 <Gregor> -98 is a general-purpose programming language used for vital business logic of dozens of Fortune-500 companies. -93 is only used by Google.
20:13:11 <Vorpal> <elliott> -98 takes a thousand lines in just about any language <-- cfunge is about 10000 lines iirc
20:13:15 <ais523> in particular, log out confirmation dialog boxes, I often quickly do things in the background while they're open
20:13:22 <elliott> Vorpal: C isn't a language, and I said before fingerprints.
20:13:34 <Vorpal> elliott: ah
20:13:35 <elliott> "Is it possible to overclock this CPU to achieve higher speeds? General Heed (talk) 18:10, 28 August 2010 (UTC)" --[[Talk:Intel 4004]]
20:13:39 <citiral> Oh well, let's try IRP first then.
20:13:44 <elliott> oh dear
20:13:49 <citiral> :D
20:13:57 <ais523> citiral: just so you know, #irp exists as a honeypot for redditors
20:13:58 <Gregor> elliott: lol
20:14:03 <ais523> it took me a while to figure this out, incidentally
20:14:05 <Vorpal> elliott: also first 10 times unless you written a befunge-98 interpreter in another language before
20:14:24 <ais523> strangely, it spontaneously ended up fulfilling its original purpose, as some people mistook it for a channel about IRP and idled there, ready to act as an interp
20:14:24 <Vorpal> elliott: I mean, doing efunge was quite easy. I did end up redoing the funge space representation. That was about it.
20:14:31 <citiral> Please write an befunge-98 interpreter please.
20:14:34 <citiral> a*
20:14:38 <elliott> citiral: ~/Code/shiro
20:14:53 <ais523> there are quite a lot of befunge-98 interps around nowadays
20:14:57 <fizzie> elliott: A three-gigaherz 4004.
20:15:02 <ais523> and thanks to Deewiant's efforts in compliance testing, some of them even work
20:15:04 <elliott> fizzie: Liquid nitrogen cooled.
20:15:14 <elliott> ais523: ...to a different spec than is written :P
20:15:17 <citiral> But I got to go.
20:15:21 <ais523> bye, see you later
20:15:26 <elliott> Bye, see you NEVER.
20:15:29 <elliott> Everyone gets one visit to this chanenl.
20:15:30 <elliott> ONE
20:15:37 <citiral> Well, watch me!
20:15:43 <elliott> ais523: BAAAAAN
20:15:49 -!- citiral has left.
20:15:58 <ais523> elliott: I've seen nothing in citiral's behaviour that would make me want to ban him/her
20:16:06 <Vorpal> al: https://launchpad.net/cfunge
20:16:08 <Vorpal> err
20:16:11 <elliott> thanks al
20:16:13 <Vorpal> I removed that line
20:16:24 <Vorpal> elliott: I managed to delete half the line then hit enter
20:16:28 <Vorpal> and it remove some from the front
20:16:31 <Vorpal> wtf
20:16:44 <Ngevd> I'm a bit behind, but I once made a befunge-93 interpreter in /Scratch/
20:16:46 <ais523> heh, I assumed you were pinging yourself for a moment
20:16:53 <ais523> when I realised "citiral" also ended "al"
20:16:57 <Vorpal> ais523: right
20:16:58 <ais523> Ngevd: ouch
20:17:00 <fizzie> elliott: And 48 gigabytes of RAM. (The best thing to have in a thing with a 12-bit address bus.)
20:17:04 <Vorpal> what is Scratch?
20:17:10 <ais523> do you have anything vaguely corresponding to source-code, that's actually human-readable?
20:17:12 <ais523> Vorpal: Smalltalk VM
20:17:15 <Vorpal> ah
20:17:15 <Ngevd> Educational programming language aimed at under 12
20:17:25 <ais523> wait, no, that's Squeak
20:17:25 <Vorpal> fizzie: what has 48 GB RAM?
20:17:43 <fizzie> Vorpal: The 3-gigahertz 4004.
20:18:03 <Vorpal> lol
20:18:09 <Vorpal> (actually laughed out loud)
20:18:11 <Gregor> fizzie: fungot runs on a 3GHz 4004, doesn't it?
20:18:11 <fungot> Gregor: apart from the windows 95 and 98 setup cds
20:18:23 <Vorpal> as long as it isn't an AOL CD
20:18:25 <Vorpal> remember those?
20:18:41 <Vorpal> never saw one in real life. But they became rather infamous I seem to remember.
20:18:47 <ais523> Vorpal: I have seen one
20:18:47 <Gregor> AOL /CD/s? Try AOL floppies.
20:18:55 <Vorpal> heh
20:18:59 <ais523> gah, I'm trying to remember the password that was printed on it, now
20:19:15 <ais523> I think half of it was "CLENCH", it was two capitalised dictionary words separated by a hyphen
20:19:26 <CakeProphet> :o
20:19:51 <fizzie> They had ISP CDs here, though not AOL. I don't think there were too many for-free floppies, though you did use to get a software floppy with the contract.
20:19:58 <CakeProphet> PELVIC-CLENCH?
20:20:07 <ais523> elliott/Ngevd: is the Hexham Courant a serious newspaper?
20:20:12 <elliott> yes
20:20:12 <Ngevd> Yes
20:20:22 <ais523> hmm, good to know
20:20:22 <CakeProphet> ais523: serious as Hexam.
20:20:40 <CakeProphet> +h
20:20:48 <ais523> Hehxam?
20:20:52 <ais523> Hexamh?
20:20:55 <ais523> hHexam?
20:20:58 <Vorpal> I remember the ISP floppies that came with the first modem my parents had
20:21:21 <Vorpal> it had Netscape 2 for mac, PPP software for mac os 6 and mac os 7 and such things
20:21:28 <Vorpal> Eudora too
20:21:38 <ais523> I know when I was young, I was confused by all the companies that assumed that people's TVs and computers were in the same room as their telephones
20:21:49 <ais523> I remember running backwards and forwards across the house with a sheet of paper full of numbers
20:21:50 <fizzie> I remember our EUnet floppy came with at least a Trumpet Winsock copy, Mosaic 1-or-2.something, and some really random utilities.
20:22:01 <ais523> in order to do Microsoft's telephone activation service thing for Windows
20:22:03 <Vorpal> fizzie: even older heh
20:22:24 <Vorpal> ais523: that must have been recently
20:22:33 <Ngevd> The first time I used a computer would have been...
20:22:33 <Vorpal> why not use online activation
20:22:34 <ais523> Vorpal: early XP
20:22:36 <Ngevd> 1998-9 ish?
20:22:40 <ais523> and no internet connection, obviously
20:22:48 <Ngevd> It had a CLI
20:22:51 <Vorpal> ais523: by the time of xp and no dialup even?
20:22:52 <Vorpal> huh
20:22:57 <Ngevd> It was in our garage
20:23:03 <ais523> Vorpal: I /still/ have no Internet connection at home
20:23:16 <Vorpal> ais523: heh
20:23:29 <Vorpal> ais523: why?
20:23:30 <ais523> I'm kind-of surprised you didn't notice
20:23:38 <ais523> Vorpal: range of possible answers
20:23:45 <ais523> "I don't want one" is true, but badly explained
20:24:02 <Vorpal> ais523: I thought you finally had one. Must have confused you with some other person.
20:24:18 <Vorpal> finally got one*
20:24:18 <fizzie> Vorpal: It was the only Internet connection I've had that had the opportunity to make a "local call": you could sign a cheaper contract (something like 17p/min as opposed to 22p/min) for a connection that blackhole-routed everything going outside Finland.
20:24:20 <ais523> I have one at work
20:24:27 <ais523> and I'm not currently at work, although I am currently online
20:24:33 <Vorpal> fizzie: heh
20:24:37 <ais523> fizzie: that's amazing
20:24:38 <Vorpal> fizzie: I assume you didn't?
20:25:00 <Vorpal> <ais523> and I'm not currently at work, although I am currently online <-- so where are you then?
20:25:00 <ais523> I can understand "blackhole everything we don't have a peering agreement with"
20:25:06 <Vorpal> wifi hotspot?
20:25:07 <ais523> Vorpal: neither at work nor at home
20:25:12 <ais523> also, not a public connection
20:25:18 <ais523> I borrow from friends, mostly
20:25:28 -!- augur has quit (Remote host closed the connection).
20:25:39 <Vorpal> ais523: ah, you should try to borrow from neighbours. Then you could get internet at home
20:25:46 <fizzie> Vorpal: No, I think it was mostly meant e.g. for folks that only wanted Internet to connect to their company network.
20:25:55 <ais523> Vorpal: with their permission…
20:26:00 <Vorpal> ais523: obviously
20:26:13 <ais523> come to think of it, I'm the only person who actually knows how to find out the password on the connection
20:26:16 <fizzie> Or, well, I don't know. There wasn't *that* much of a web.
20:26:26 <ais523> nobody knows it off by heart because it's long and random hexadecimal
20:26:26 <Vorpal> ais523: that is why you would try to become friends with some suitable neighbours.
20:26:32 <ais523> but the computer has it memorized
20:26:37 <Vorpal> well yeah
20:26:45 <Vorpal> that tends to be the case
20:26:47 <fizzie> Presumably you could still send "international" email and read Usenet and so on.
20:26:48 <Vorpal> ais523: is it WEP?
20:26:51 <elliott> <ais523> "I don't want one" is true, but badly explained
20:26:58 <ais523> Vorpal: WPA1
20:27:09 <Vorpal> ais523: okay, then it would take a while to find out I guess
20:27:11 <ais523> so not actually secure, but not as bad as WEP, and a max-length password helps a bit
20:27:36 -!- elliott has quit (Remote host closed the connection).
20:27:42 <Vorpal> I really wish my access point at home supported WPA 2 Enterprise, I have to settle for WPA2
20:27:50 <variable> fizzie: back
20:28:20 <fizzie> variable: I don't have a real solution for you, but there's some things in the log.
20:28:23 <variable> fizzie: it seems your answer scrolled off <fizzie> variable: If you just don't specify "index" at all, it'll plot them all as separate lines just fine, but all the lines will be with the same color and have just one title. ---> first thing I see
20:28:26 <Vorpal> WPA2 PSK*
20:28:33 * variable could easily change the format though
20:28:42 <Vorpal> variable: what about the logs?
20:28:55 <Vorpal> (as linked in the topic)
20:29:03 <variable> oh right
20:29:04 * variable forgot
20:29:11 <Vorpal> variable: or your local logs of course
20:29:32 <variable> Vorpal: I don't log this channel because its logged itself :)
20:29:37 <Vorpal> right
20:30:00 <variable> I'm looking
20:31:12 <fizzie> variable: Search for "variable:"; all the stuff is pretty much grouped together there, near before what you last saw.
20:31:21 <variable> mkay
20:31:49 <variable> Vorpal: I also have a hg checkout of the logs apparently
20:32:07 <Vorpal> variable: nice
20:32:26 <Vorpal> variable: I have my logs in a local postgresql db for this channel (not for other channels though)
20:32:31 <Vorpal> useful for useless statistics
20:32:37 <Vorpal> and quick searching
20:32:42 <variable> yeah, I've been meaning to get that set up
20:33:02 <fizzie> variable: Anyway, the inability to only make multiple data series out of separate things physically listed in the "plot" command (as opposed to "all datasets in a multi-dataset file") is an annoying limitation of gnuplot; it might be circumventable, but I don't quite know how. Personally I've sometimes just manually listed things in the plot script, and at other times generated the plot script along with the data.
20:33:06 <Vorpal> variable: ask fizzie for some useful scripts. Pulls from the old clog archive rather than Gregor's archive though
20:33:20 <variable> mkay
20:33:34 <Vorpal> unless he updated his scripts
20:33:47 <variable> fizzie: I don't mind changing how the data gets formatted. I basically need to be able to plot how my modifications to the simulator help or hurt
20:35:54 <variable> oh - no hg logs of today :(
20:36:01 * variable looks at topic
20:36:42 <fizzie> variable: Yes, well, changing the datafile format only gets you so far. You can get the lines you want, but with a single "plot 'blah.dat' using ..." command, it's always going to end up being a single data series, so (a) all the lines get the same style (though there is a hack to give them different colors), and more importantly (b) they will have only one entry in the key/legend thing.
20:37:18 <variable> fizzie: I could use multiple 'plot' lines I guess?
20:37:20 <fizzie> 19:13:25: <fizzie> variable: It is awfully tricky to get multiple lines (with different titles) using only a single plot specifier. You almost get it if you separate the datasets (in your case, different testnames) with two newlines and then plot the complete file, but in that case all the lines end up in the same style. It is trivial if you don't mind doing "plot 'blah.data' ... index 0, 'blah.data' ... index 1, ..." with one command per each line, but that re
20:37:20 <fizzie> quires either fixin
20:37:20 <fizzie> 19:13:25: <fizzie> g the number of lines, or generating the plotscript along with the data. Here's an example of what that might look like: http://p.zem.fi/meud
20:37:27 <fizzie> That paste has an example of that sort of thing.
20:37:31 <variable> fizzie: yeah reading
20:37:47 <variable> http://p.zem.fi/meud
20:38:16 <fizzie> (An autogenerated random four-character name from the alphabet [0-9a-z], IIRC.)
20:38:18 <variable> fizzie: let me put slightly differently. Given that I have this set of data what would be the "correct" thing to do ?
20:39:48 <fizzie> variable: Uh, well. Modifying your script to print out "foo.data" and then "foo.plot" so you can just run "gnuplot foo.plot" is a reasonable solution, if not the prettiest. Of course there are other tools to plot things. A Pythonist might consider matplotlib, which is nice except it has a bit of a clunky interface.
20:40:47 <fizzie> (It half-assedly tries to emulate MATLAB's plotting tools for some unfathomable reason.)
20:41:31 <variable> fizzie: I was planning on using this into a "let me learn gnuplot" but yeah, other tools might work work
20:41:48 <variable> which tool do you find best / easiest for plotting benchmark data ?
20:42:31 <ais523> variable: I've never tried that using anything other than INTERCAL
20:42:56 <variable> ais523: o.O
20:43:05 <ais523> variable: I've never tried that using INTERCAL either
20:43:06 -!- pikhq_ has quit (Ping timeout: 245 seconds).
20:43:18 <variable> ais523: so I assumed :)
20:43:59 <fizzie> Uh, well. I tend to default to gnuplot for one-off things. I'd consider matplotlib if the script to deal with the data happened to already be in Python, since in that case it'd be a natural-ish fit. And, well... if the output was going in a LaTeX document, I might go with TikZ's plotting tools. And if the output was designed for web, I might go with Protovis or d3 or something.
20:44:06 <fizzie> With other things I'm not so familiar.
20:44:18 <variable> fizzie: output is going to latex
20:44:54 <variable> oooh
20:44:57 <variable> TikZ looks nice
20:45:17 <fizzie> It's more of a graphics library than plotting library, but it can be (ab)used for plots too.
20:45:39 <variable> http://www.texample.net/tikz/examples/line-plot-example/
20:45:42 <variable> exactly what I want
20:45:47 <variable> [ with a different scale ]
20:46:43 <fizzie> Well, yes, but that's got the different plotted series explicitly listed in there. If you're willing to do that, it's possible to use GNUplot. Though TikZ is nice in that there's absolutely no work in getting the output into the LaTeX doc; it's already there.
20:46:52 <fizzie> Away for a moment now.
20:47:25 <variable> fizzie: I'd prefer to have the data in an external file
20:47:29 <variable> but it isn't critical
20:48:30 <Vorpal> ais523: now you should try plotting with intercal
20:49:17 <Vorpal> generate a bmp file or something. If you have byte IO (iirc there is some intercal extension for that in c-intercal?).
20:49:56 <ais523> Vorpal: yes, and an incompatible one in CLC-INTERCAL
20:50:04 <Vorpal> right
20:50:09 <Vorpal> ais523: I forgot how they work.
20:50:16 <Vorpal> ais523: wasn't one based on the delta or some such?
20:50:18 <fizzie> (You can use external files with TikZ too.)
20:50:50 <ais523> Vorpal: the C-INTERCAL idea is, that all the possible bytes are written on a circular tape, and you have to work out how many positions to move it
20:50:54 <ais523> so it's effectively delta
20:51:02 <Vorpal> ais523: and the CLC one?
20:51:03 <ais523> except that one of input/output, I forget which, uses the other side of the tape
20:51:06 <ais523> so you have to reverse bits
20:51:07 <variable> fizzie: mkay. I'm taking a closer look then
20:51:13 <ais523> the CLC one is hard to easily explain
20:51:19 <Vorpal> ais523: give it a try?
20:51:27 <Vorpal> (please)
20:51:53 <ais523> http://smuggle.intercal.org.uk/manual/input_output.html#binary
20:52:02 <Vorpal> thanks
20:53:42 -!- pikhq has joined.
20:54:26 <Vorpal> "The current implementation does not check that the padding is sufficiently random, although this might well change in future."
20:54:28 <Vorpal> heh
20:54:32 <Vorpal> all ones is random
20:55:18 <Vorpal> ais523: anyway that IO system is in some ways crazier than the c-intercal one, and in other ways saner than it.
20:55:39 <ais523> they're both stateful IIRC
20:55:52 <Vorpal> oh, maybe I misunderstood the thing then
20:56:04 <ais523> or maybe I did
20:56:20 <ais523> there's a reason CLC-INTERCAL binary IO isn't implemented in C-INTERCAL
20:56:23 <Vorpal> ais523: anyway C-INTERCAL has another byte IO. The cfunge stuff could probably be used for that. Forgot how you sent values between them though
20:57:04 <ais523> Baudot doesn't have 256 different codepoints
20:57:17 <Vorpal> ais523: well of course?
20:57:25 <Vorpal> I looked at the binary IO section
20:57:38 <Vorpal> Alphanumeric I/O is different
20:57:42 <Vorpal> and mentions baudot
20:58:04 <Vorpal> ais523: or is baudot involved in the IFFI stuff?
20:58:16 <ais523> oh, no
20:58:21 <ais523> you can FFI to something with a sensible stdout
20:58:27 <ais523> C would probably make more sense than Funge-98
20:58:32 <Vorpal> well yeah
20:59:04 <Vorpal> ais523: cfunge has quite a sensible stdout and stdin though. Same sort of saneness as brainfuck mostly
20:59:15 <ais523> yep
20:59:30 <ais523> I'm including funges as "things with a sensible stdout"
20:59:45 <Vorpal> ais523: http://smuggle.intercal.org.uk/manual/input_output.html#numeric mentions ick and sick? Is that ick a different one than the C-INTERCAL one?
20:59:49 <Vorpal> if so, how confusing
21:00:08 <ais523> no, it's C-INTERCAL it's referring to there
21:00:52 -!- oerjan has quit (Remote host closed the connection).
21:00:59 <Vorpal> ais523: I guess "if it is ick or 1972, you get the overline like C-INTERCAL does" confused me. It sounded like "ick does the same as C-INTERCAL does" which would be kind of pointless to say if ick *was* C-INTERCAL
21:01:01 -!- oerjan has joined.
21:01:24 <ais523> oh, CLC-INTERCAL has a C-INTERCAL emulation mode
21:01:28 <Vorpal> ah
21:01:32 <ais523> which is also called ick
21:01:32 <Vorpal> makes more sense
21:01:46 <ais523> C-INTERCAL has a CLC-INTERCAL emulation mode called -X
21:01:50 <Vorpal> ais523: it installs that as a binary name?
21:01:53 <ais523> no
21:01:53 <Vorpal> or as a parameter?
21:01:55 <Vorpal> ah
21:01:55 <ais523> preload name
21:02:00 <Vorpal> uh?
21:02:09 <Vorpal> what?
21:02:13 <ais523> Vorpal: to answer that I'd have to explain how CLC-INTERCAL works
21:02:21 <ais523> which I'm really not up to right now
21:02:27 <Vorpal> ais523: oh you mean the stuff that it is kind of like non-time reversed feather?
21:02:30 <Vorpal> right
21:02:37 <Vorpal> err, time traveling*
21:03:00 <ais523> I'm actually not sure if that's involved or not
21:03:08 <Vorpal> time travel?
21:03:09 <ais523> not because I'm unaware of how CLC-INTERCAL works, I just can't figure it out
21:03:14 <ais523> no, self-modification
21:03:22 <Vorpal> I thought you said it was doing that
21:03:23 <Vorpal> hm
21:03:33 <Vorpal> like it started out as a perl script and turned into intercal at the end
21:03:36 <Vorpal> or something
21:03:43 <ais523> no
21:03:52 <ais523> think of the perl script as a VM
21:03:55 <Vorpal> ah right
21:03:56 <ais523> that runs IACC programs
21:04:01 <Vorpal> ah yes, now I remember
21:04:07 <ais523> IACC is capable of self-modifying itself into INTERCAL
21:04:08 <Vorpal> was ages ago I last looked into it
21:04:23 <Vorpal> ais523: so then self modification is clearly involved
21:04:59 <ais523> yes
21:05:07 <ais523> but self-modification doesn't necessarily have anything to do with Feather
21:05:14 <Vorpal> oh
21:05:30 <Vorpal> I have a question: does anyone know why it was implemented like that? It seems a fairly stupid way to do it. Over-complicated. Is that perhaps the reason?
21:05:56 <ais523> partly for flexibility
21:06:07 <ais523> oh, the IACC interp is also written in IACC, incidentally
21:06:13 <Vorpal> right
21:06:20 <ais523> so CLC-INTERCAL ships with iacc.iacc because otherwise you could never get started
21:06:56 <Vorpal> ais523: you say IACC interpreter? Wouldn't it compile to bytecode? Or what role does the perl vm play?
21:07:13 <ais523> anyway, a preload is an iacc file that gets compiled/run (there isn't much of a distinction between the two in CLC-INTERCAL) before the program is compiled
21:07:22 <Vorpal> yeah
21:07:45 <ais523> Vorpal: don't try to make a distinction between "compile" and "run" in CLC-INTERCAL, you won't get very far
21:07:50 <Vorpal> okay
21:07:58 <ais523> because it JTLs
21:08:06 <Vorpal> JTL?
21:08:07 <ais523> it's a bit like JITting, except more confusing
21:08:13 <Vorpal> oh too late
21:08:15 <Vorpal> now I remember
21:08:37 <Vorpal> ais523: well, the iacc.iacc must be executed by *something* able to interpret it. You can't escape that.
21:08:40 <ais523> but basically, the compiler mostly only runs at runtime
21:08:57 <ais523> wait, it's iacc.io that gets shipped
21:09:01 <Vorpal> ah
21:09:05 <ais523> which is the iacc compiler compiled, by itself, to bytecode
21:09:09 <Vorpal> right
21:09:13 <Vorpal> that makes far more sense
21:09:15 <ais523> the bytecode mostly consists of commands to run the compiler, IIRC
21:10:14 <ais523> (this sort of thing explains how nobody knows how CLC-INTERCAL handles operator precedence, incidentally; I ran a few tests on it to try to determine it experimentally, but I can't remember the results)
21:10:34 <Vorpal> ais523: not even the author?
21:10:48 <ais523> yep; he thought he did once, but then changed his mind
21:11:06 <Vorpal> besides, you need the same operator precedence as the original intercal. Or stuff wouldn't work
21:11:12 <Vorpal> so that trivially gives the answer
21:11:30 <ais523> Vorpal: have you /seen/ the operator precedence table in the original INTERCAL?
21:11:36 <Vorpal> ais523: nope
21:11:37 <Vorpal> tell me
21:11:43 <Vorpal> ais523: is it not there?
21:11:45 <ais523> let me find it
21:11:55 <ais523> there is one, but it's empty
21:12:03 <Vorpal> ais523: ah...
21:12:13 <Vorpal> ais523: so what operator precedence does it in fact use?
21:12:31 <Vorpal> some tests on the original should help there
21:12:43 <ais523> http://www.catb.org/~esr/intercal/intercal.ps page 11
21:12:53 <ais523> also, the original mostly isn't available
21:13:08 <ais523> someone came on alt.lang.intercal once to say that they still had a paper copy of it, which they were willing to scan in
21:13:10 <ais523> but it never happened
21:13:14 <CakeProphet> http://www.youtube.com/watch?v=98AKFQkaWJM
21:13:17 <CakeProphet> my region of the country
21:13:22 <CakeProphet> has a lot of excellent individuals.
21:13:26 <ais523> C-INTERCAL's precedences are the same as the ones experimentally determined from CLC-INTERCAL
21:13:27 <CakeProphet> bright young lads.
21:13:31 <Vorpal> ais523: right.
21:13:43 <ais523> the general advice is to always use explicit sparkears so that it doesn't matter
21:13:49 <Vorpal> ais523: what about example programs from the original?
21:13:59 <Vorpal> or the manual
21:14:01 <ais523> they always use explict sparkears
21:14:04 <Vorpal> ah
21:14:15 <Vorpal> maybe there wasn't any precedence ?
21:14:40 <Vorpal> brb
21:14:47 <ais523> Vorpal: if I was the sort of person who generally facepalmed, I would be facepalming right now
21:14:57 <ais523> it indeed doesn't have precedence, that's the point
21:15:05 <ais523> it does not explain what #1~#2~#3 means, though
21:15:35 <ais523> (oh, and IIRC, C-INTERCAL doesn't have precedence, just associativity)
21:16:06 -!- ive has quit (Ping timeout: 252 seconds).
21:16:10 <ais523> (in that all operators are in the same precedence band if they have the same arity)
21:19:17 -!- Patashu has joined.
21:19:55 <Vorpal> <ais523> it does not explain what #1~#2~#3 means, though <-- it might, depending on the parser. If it was something similar to yacc maybe they just let shift/reduce sort it out?
21:20:21 <ais523> was yacc around in 1972?
21:20:35 <Vorpal> ais523: no idea. But I said "something similar to"
21:20:58 <Vorpal> ais523: and what language was the original written in?
21:21:04 <ais523> SPITBOL
21:21:23 <ais523> (I'm not sure if even C was around in 1972, incidentally)
21:21:47 <Vorpal> ais523: well, were there any parser generators for SPITBOL?
21:22:06 <ais523> how should I know?
21:22:41 <Vorpal> well you knew what the language in use was, you knew more than me, you might have known. I had no indication you didn't know until your reply
21:23:09 -!- Ngevd has quit (Ping timeout: 248 seconds).
21:24:06 -!- augur has joined.
21:29:31 <oerjan> i thought snobol was essentially the first parsing language, or something like that
21:29:50 <oerjan> (spitbol is an implementation of it)
21:32:28 <oerjan> "SNOBOL4 patterns subsume BNF grammars, which are equivalent to context-free grammars and more powerful than regular expressions."
21:32:29 -!- ive has joined.
21:34:43 <pikhq> ais523: C was 1973, so. :)
21:34:55 <ais523> pretty close
21:35:08 <ais523> wow, INTERCAL predating C is pretty hard to imagine
21:35:08 <pikhq> Though, of course, its ancestry goes back a bit further.
21:35:30 <pikhq> It's not like Thompson and Ritchie got together one day in 1973 and went "Let's make C", and it was so.
21:35:30 <CakeProphet> any idea why C became so popular?
21:35:31 <ais523> yep, I assume INTERCAL was around at the same time as B, in that case
21:35:35 <ais523> CakeProphet: UNIX
21:35:48 <CakeProphet> ah
21:36:29 <oerjan> "A SNOBOL pattern can be very simple or extremely complex. A simple pattern is just a text string (e.g. "ABCD"), but a complex pattern may be a large structure describing, for example, the complete grammar of a computer language. It is possible to implement a language interpreter in SNOBOL almost directly from a Backus-Naur form expression of it, with few changes. Creating a macro assembler and an interpreter for a completely theoretical piece of hardwa
21:36:54 <ais523> oerjan: sounds surprisingly like Perl 6 regexen
21:36:57 <oerjan> hardware could take as little as a few hundred lines, with a new instruction being added with a single line.
21:37:54 <ais523> well of course, completely theoretical hardware is often easier to implement than practical hardware
21:38:00 <ais523> because it's mostly invented by mathematicians
21:39:03 <CakeProphet> ais523: more like discovered. bahahahahahaha.
21:39:15 <CakeProphet> (I would say invented too.)
21:39:20 * oerjan swats CakeProphet -----###
21:42:08 <oerjan> "That made it clear that we needed another name!! We sat and talked and drank coffee and shot rubber bands and after much too much time someone said -- most likely Ralph -- "We don't have a Snowball chance in hell of finding a name". All of us yelled at once, "WE GOT IT -- SNOBOL" in the spirit of all the BOL languages. We then stretched our mind to find what it stood for."
21:42:28 <CakeProphet> oerjan: I'm sure that's how it happened
21:42:36 <CakeProphet> they were all just "SNOBOL!!!!" spelled just like that.
21:44:30 -!- zzo38 has joined.
21:48:42 <zzo38> Good?
21:48:53 <CakeProphet> good?
21:48:56 <CakeProphet> good
21:48:58 <CakeProphet> good is good
21:49:00 <zzo38> ?
21:49:01 <zzo38> OK
21:55:36 <CakeProphet> zzo38: do you allow beholders as PCs in your campaigns?
21:56:13 -!- hagb4rd2 has quit (Ping timeout: 248 seconds).
22:00:55 <zzo38> CakeProphet: I would if I could determine the level adjustment to use.
22:01:16 <zzo38> But normally I do not, because no level adjustment is listed.
22:03:32 <zzo38> Do *you* allow it?
22:05:36 <CakeProphet> I don't play D&D, so...
22:05:48 <CakeProphet> but I played a hack and slash MUD where beholders were playable characters, and enjoyed playing a beholder, so...
22:05:53 <CakeProphet> it's something I'd possibly enjoy in D&D
22:06:21 <zzo38> Well, I am not the DM of the anyways, however.
22:06:44 <zzo38> But it is not permitted normally because there is no level adjustment specified.
22:07:52 <zzo38> (However, in Icosahedral RPG, all creatures have the number of pseudolevels specified)
22:08:39 <CakeProphet> zzo38: I would assume it would be because they're abberations and thus don't traditionally fit the whole adventurer model.
22:08:42 <pikhq> zzo38: It's actually entirely feasible to play races without named level adjustments.
22:09:15 <pikhq> zzo38: The hit die simply become levels in the race.
22:10:06 <CakeProphet> zzo38: like, what reason would a beholder have for being in a campaign with traditional D&D characters?
22:10:07 <zzo38> pikhq: No LA is different from LA=0 (all races in player's handbook implicitly have LA=0)
22:10:53 <zzo38> CakeProphet: Use your imagination! It doesn't matter if they are aberrations or not. I myself play monster character; but always by LA.
22:10:58 <CakeProphet> zzo38: unless, of course, it was a non-standard beholder.
22:10:59 <pikhq> zzo38: Still, you can fudge it easy.
22:11:26 <zzo38> pikhq: Yes, the book Savage Species has ideas about determining what the LA value should be.
22:11:35 <pikhq> Ah, right, that's the book.
22:11:45 <pikhq> Good stuff.
22:11:54 <CakeProphet> disintegrate objects, transmute flesh to stone, cause sleep, slow the motion of objects or beings, charm animals, charm humans, cause death, induce fear, levitate objects, and inflict serious wounds
22:12:00 <CakeProphet> cause death, that's a good magical power.
22:12:09 <CakeProphet> I assume levitate is how they move.
22:12:15 <pikhq> Yup!
22:12:26 <zzo38> It depends what version.
22:12:59 <CakeProphet> I recall in the MUD I played instead of wield weapons with limbs like most races you use the levitation eye.
22:13:06 <CakeProphet> *wielding
22:13:38 <zzo38> In addition, I invented a feat allowing you to change one magical power to a different one (you must select a the time you select the feat, after which it is permanent) (this feat can also be used with NPC beholders, for example, if the DM makes a strange challenge)
22:13:53 <zzo38> (There are restrictions on which spells are selectable, though)
22:15:20 <CakeProphet> I suppose a Spectator would be the most convincing kind of playable beholder
22:15:24 <CakeProphet> since they're apparently somewhat friendly.
22:17:13 <Vorpal> CakeProphet: I pick chaotic evil
22:17:16 <Vorpal> ;P
22:17:37 <zzo38> Fine, pick whatever alignment you want
22:17:59 <Vorpal> zzo38: just arguing that non-friendly playable beholder might make sense too
22:18:27 <CakeProphet> perhaps if they had an ulterior motive that required them to not eat the party members in their sleep. :P
22:18:31 <zzo38> Vorpal: Yes, it can; and anyways, individuals also differ, especially player characters since player characters are exceptional anyways
22:18:48 <Vorpal> which RPG is this anyway?
22:19:15 <zzo38> CakeProphet: Maybe. But it can also be due to having other thing to eat
22:19:59 <CakeProphet> certainly a beholder would have to be non-traditional to be a player character though, since their mindset is to destroy anything that isn't the same kind of beholder as they.
22:20:27 <CakeProphet> but that's fine. that would be interesting.
22:20:34 <zzo38> CakeProphet: Yes; that much would almost always be the case.
22:20:47 <CakeProphet> therefore, I get 20 eyestalks. :P
22:21:00 <zzo38> But it is OK since player characters are supposed to be exceptional anyways, so it is OK.
22:21:16 <zzo38> CakeProphet: Actually, to get 20 eyestalks maybe you need to increase the LA then?
22:21:24 <CakeProphet> I would think so.
22:21:31 <CakeProphet> 5 of them are the "cause death" kind. :P
22:21:33 <zzo38> But I suppose it could be valid to do so.
22:22:20 <CakeProphet> 4 eyestalks (and the anti-magic center eye) would be a more reasonable level adjustment.
22:22:45 <zzo38> The level adjustment has to be a number.
22:22:54 <CakeProphet> ere, right. I'm saying.
22:22:55 <zzo38> Such as +4 or +10 or whatever.
22:23:01 <CakeProphet> that kind of beholder would have a more reasonable level adustment.
22:23:02 <zzo38> And there is racial HD as well.
22:23:27 <zzo38> O, that is what you are saying; yes I think you are correct.
22:23:38 <CakeProphet> also, do beholders have classes? does that make sense?
22:23:51 <zzo38> They can have classes as much as anyone could, I suppose.
22:24:00 <zzo38> But if racial HD is at least 1, it is not required.
22:27:33 * CakeProphet imagines a beholder templar.
22:30:34 <CakeProphet> beholder necromancer would be fun.
22:34:34 -!- nooga has quit (Ping timeout: 252 seconds).
22:36:28 <zzo38> I invented a collection of documents for a new campaign setting for D&D 3.5e, with different locations, gods, planes, etc. It also has some rule variants.
22:37:26 <zzo38> Different classes get different number of action points. There are a few additional penalties for resurrection, but all are suppressed if the caster sacrifices his life; doing so also allows resurrecting nonwilling creatures.
22:38:40 <zzo38> Time on the Death plane runs at double speed (which is the reason for some of the aging effects of resurrection). The Astral plane is infinite dimensional (in both time and in space), and touches all other planes (both inner and outer) at every point of the Astral plane. The Astral plane counts as neither inner nor outer.
22:40:00 <zzo38> Alignment entries and alignment subtypes of creatures are not used. Any creature is just as likely to be of any alignment as it is of any other. [Making the game more difficult] Exceptions include: * Mindless undead, which never have good alignment * Animals and other creatures with Int<3 or no Int score and have an entry of Always Neutral, which are actually always NN
22:40:09 <zzo38> * Angels, devils, and demons, with alignment subtypes, and have the Outsider type, which use the alignment entries specified (although there are still extremely rare possibilities to change alignment)
22:40:24 <zzo38> However, the alignment listed in the book is what many inexperienced humans who deal with this stuff often believe (it is unknown exactly why this is, however). Spells that detect alignments usually operate on the target's current actions. The aura level for past actions is decreased by 1 every 12 hours.
22:40:42 <zzo38> Some notable groups in the campaign world include: *
22:41:12 <zzo38> Some notable groups in the campaign world include: * The Spanish Inquisition * Librarians Against Monsters * Librarians Against Librarians Against Monsters * Special Artifact Guild * The Ancient Wizard Society
22:42:24 <zzo38> The prime material plane is the same as the etherial plane indexed 0, while the normal etherial plane is the etherial plane indexed 1. Every one of them has its own shadow plane.
22:43:03 <Vorpal> zzo38: oh so this is a comical setting?
22:43:21 <zzo38> Vorpal: No, it is just a new setting. There are a few comical things in it, I suppose.
22:43:33 <Vorpal> zzo38: the Monty Python reference above for example
22:43:44 <zzo38> Yes it does include one Monty Python reference.
22:44:14 <zzo38> The rules used, though, can be used with any setting even if you change things such as removing the Monty Python stuff and so on, even though it is standard listed, you are not required to use it.
22:48:10 <zzo38> Actually I designed some of the things in the setting based on my Super ASCII MZX Town series of computer games. The Spanish Inquisition is found in both Part I and Part II, while Librarians Against Monsters (and Librarians Against Librarians Against Monsters) is only Part II.
22:57:08 -!- pumpkin has joined.
22:57:34 -!- pumpkin has changed nick to copumpkin_.
22:59:36 -!- SgeoN1 has joined.
23:00:11 -!- copumpkin has quit (Ping timeout: 245 seconds).
23:01:49 -!- ais523 has quit (Ping timeout: 248 seconds).
23:02:14 <SgeoN1> My PHP professor doesn't know PHP.
23:02:14 -!- copumpkin_ has changed nick to copumpkin.
23:02:41 <SgeoN1> His example used array_values on a regular array...
23:03:02 <SgeoN1> Cue arguments between a classmate and him
23:03:56 <SgeoN1> Oh, n/m
23:04:24 -!- SgeoN1 has quit (Read error: Connection reset by peer).
23:04:40 -!- SgeoN2 has joined.
23:08:16 -!- sllide has quit (Read error: Connection reset by peer).
23:08:32 -!- evincar has joined.
23:18:14 <CakeProphet> SgeoN2: what do you mean n/m? was it not a regular array?
23:20:33 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
23:23:03 <CakeProphet> wow, higher order functions in PHP
23:23:05 <CakeProphet> are amazing
23:23:18 <CakeProphet> array_filter($array1, "odd");
23:23:20 <CakeProphet> so good.
23:28:12 <shachaf> $n = "array1"; array_filter($$n, "odd");
23:29:12 -!- SgeoN2 has quit (Ping timeout: 258 seconds).
23:29:42 -!- SgeoN1 has joined.
23:29:49 <SgeoN1> It was processed with aarray_unique
23:30:02 <SgeoN1> array
23:30:14 <oerjan> aamazing
23:30:20 -!- SgeoN1 has quit (Read error: Connection reset by peer).
23:30:48 -!- SgeoN1 has joined.
23:36:04 <SgeoN1> Fun fact: array_unique does not renumber indexes
23:36:50 <CakeProphet> here's array_unique in perl. my %seen; @array = grep {!$seen{$_}++} @array
23:37:30 <CakeProphet> except it renumbers indices.
23:37:45 <CakeProphet> and is mutable (I'm guess array_unique is not?)
23:37:52 <CakeProphet> er an immutable operation
23:37:52 <CakeProphet> I mean
23:38:12 <CakeProphet> not in-place? what is the term for that.
23:38:53 <oerjan> pure
23:39:12 <CakeProphet> sure that orks.
23:39:14 <CakeProphet> +w
23:39:24 <oerjan> although i hesitate to use that term for the above code
23:39:24 <CakeProphet> except it's... not really pure because it uses a hash table.
23:39:33 <CakeProphet> and mutably updates said table
23:39:48 <oerjan> well it just uses an implicit ST monad ;P
23:39:54 <CakeProphet> ah yes of course.
23:42:01 -!- copumpkin has joined.
23:42:30 <CakeProphet> (notice the infection of Haskell mind virus in its final stage. It won't be long before oerjan degenerates into a non-sentient pile of fleshy finger trees.)
23:42:56 <oerjan> yeah elliott already did, have you seen that picture?
23:43:06 <CakeProphet> er, no.
23:43:21 <CakeProphet> I thought something was up
23:43:24 <oerjan> i'm afraid i didn't save the link
23:43:24 <CakeProphet> he's been acting a little strange.
23:43:29 <CakeProphet> maybe it's just the teenage hormones.
23:44:08 <oerjan> `log elliot[t]> .*finger tree.*http
23:44:40 <HackEgo> 2011-05-13.txt:06:20:31: <elliott> i drew a finger tree http://i.imgur.com/sRyCi.png
23:44:54 <CakeProphet> oh god.
23:45:16 <CakeProphet> tragic.
23:45:33 <CakeProphet> looks more like a cyclic graph...
23:45:54 <oerjan> don't you mean acyclic, it's a tree after all
23:46:04 <CakeProphet> no it has fingers pointing downward what's up with that.
23:46:26 <CakeProphet> I think it has cycles, dude.
23:46:40 <CakeProphet> bro. man.
23:46:41 <oerjan> ok
23:46:48 <CakeProphet> sir.
23:47:12 <CakeProphet> comrade sir you need to dudechill, bro.
23:47:35 <oerjan> jolly good, yo
23:47:37 <CakeProphet> brofessional brogrammers.
23:49:12 <CakeProphet> for(@array) { delete $_ if !$seen{$_}++ }
23:49:15 <CakeProphet> would give you the PHP semantics.
23:50:04 <CakeProphet> er...
23:50:11 <CakeProphet> for(@array) { delete $_ if $seen{$_}++ }
23:50:16 <CakeProphet> for(0..$#array) { splice @array, $_, 1 if $seen{$_}++ }
23:50:23 <CakeProphet> would be inplace and reordering indices.
23:55:49 <CakeProphet> http://search.cpan.org/~genie/Tie-LazyList-0.05/LazyList.pm
23:55:51 <CakeProphet> weeeeee
23:57:27 <CakeProphet> I don't think you really get much out of using that package though.
23:58:40 -!- derdon has quit (Remote host closed the connection).
23:59:08 <CakeProphet> REHash is interesting. It lets you find hash keys by regex.
23:59:30 <CakeProphet> but that's... basically just a grep.
23:59:55 <CakeProphet> er, well, a map actually.
←2011-10-17 2011-10-18 2011-10-19→ ↑2011 ↑all