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 Trying to root my Nook 00:49:04 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 :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 ?hoogle Int -> [a] -> ([a], [a]) 00:55:32 lambdabot? 00:55:32 parse error on input `->' 00:55:32 ?hoogle Int -> [a] -> ([a], [a]) 00:55:32 Prelude splitAt :: Int -> [a] -> ([a], [a]) 00:55:32 Data.List splitAt :: Int -> [a] -> ([a], [a]) 00:55:32 Data.List genericSplitAt :: Integral i => i -> [b] -> ([b], [b]) 00:55:32 Prelude splitAt :: Int -> [a] -> ([a], [a]) 00:55:32 Data.List splitAt :: Int -> [a] -> ([a], [a]) 00:55:33 Data.List genericSplitAt :: Integral i => i -> [b] -> ([b], [b]) 00:55:44 ?hoogle a -> [a] -> ([a], [a]) 00:55:45 Prelude splitAt :: Int -> [a] -> ([a], [a]) 00:55:45 Data.List splitAt :: Int -> [a] -> ([a], [a]) 00:55:45 Data.List genericSplitAt :: Integral i => i -> [b] -> ([b], [b]) 00:58:27 > (break . (==)) 4 [1..10] 00:58:28 ([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 @hoogle list 01:11:32 module Control.Monad.List 01:11:32 module Data.List 01:11:32 Language.Haskell.Syntax list_cons_name :: HsQName 01:11:34 Someone else is looking at what I'm trying to do, but I'm hoping he's doing something ... else 01:11:54 oh hm 01:12:34 -!- Jafet has joined. 01:12:44 Sgeo|web: just divide and conquer 01:12:46 "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 That's not much. 01:16:38 such an angry young man http://www.reddit.com/r/haskell/comments/lf71l/deprecate_preludehead_and_partial_functions/c2s80l2 01:17:10 What's the worse that can happen if I put a class constraint in a newtype? 01:17:11 oerjan: That isn't angry. You've clearly never seen me get angry. 01:17:13 (Yeahyeah, modulo etc.) 01:17:21 oerjan: I was just correcting the blog post amendment. :p 01:17:25 shachaf: See, that's me angry. 01:17:33 Sgeo|web: You mean newtype (Foo a) => Bar a = ...? 01:17:35 elliott: That's you every day of the week. 01:17:45 elliott: Take that newtype back! 01:18:02 Not Bar a, just Bar, then the a is on the right of the = 01:18:03 elliott: ah but i'm just pointing out that your _base level_ is already angry. also, joking. 01:18:18 Sgeo|web: Data-type contexts are not in Haskell. 01:18:22 Their extension is also deprecated. 01:18:25 Huh? 01:18:30 This is because they do nothing. 01:18:34 If they think you do, you are wrong. 01:18:41 (They do something, but it isn't what you want.) 01:18:48 You do not want a data-type context. 01:19:02 elliott: But they *really* think I do! 01:19:51 So, it won't make my instance work? 01:20:01 No. 01:20:12 I ... can't write my instance then 01:20:16 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 hpaste. 01:22:04 Hold on 01:22:44 http://hpaste.org/52778 01:22:57 Which instance is this? 01:23:19 The Num FakeNum one 01:23:28 What the fuck sort of number is that? 01:23:30 I can't do that + there, and can't force these things to be num 01:23:38 elliott: tricky ones. 01:23:38 Sgeo|web: Just make an (a -> b) instance. 01:23:43 ...I can? 01:23:46 Your (+) function is a trivial specialisation of it. 01:23:57 Wait, WHAT? 01:24:59 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 elliott: I don't think that's how it works. 01:25:45 Totally is. 01:25:48 Sgeo|web: 01:25:51 > (f + g) x 01:25:51 I don't even know what Sgeo|web is trying to do. 01:25:52 Ambiguous type variable `a' in the constraints: 01:25:52 `GHC.Num.Num a' 01:25:52 ari... 01:25:54 Gah. 01:25:55 > (f + g) x :: Expr 01:25:57 f x + g x 01:26:48 Then can I fill in my own values for x given that? 01:27:09 > (f + g) 99 :: Expr 01:27:10 f 99 + g 99 01:27:16 > (succ + pred) 99 01:27:17 198 01:27:46 > ($ "x") + ($ "y") $ length 01:27:47 2 01:27:52 elliott: Stop abusing Sgeo|web. 01:28:02 Oh, wait. 01:28:04 Sgeo|web: ^ i think this one is precisely your type 01:28:05 -!- tiffany has quit (Quit: Leaving). 01:28:08 Sgeo|web is the abusive one. 01:28:14 Sgeo|web: Stop abusing Haskell. 01:28:31 shachaf: Sgeo|web has no concept of using a language as intended. 01:28:34 -!- augur has joined. 01:28:41 Sgeo|web: What are s and a? 01:28:48 Is this a continuation thing? 01:28:48 elliott: I know that the way I should be doing this is probably monads 01:29:04 > ($ "3") + ($ "4") $ read :: Int 01:29:04 7 01:29:05 Sgeo|web: What? 01:29:06 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 BRB 01:29:15 Sgeo|web: There is nothing about monads here. 01:29:19 Sgeo|web: ^ like that? :P 01:29:24 You're just using "monads" as a mystical catch-all like everyone who doesn't know Haskell does 01:30:03 :( 01:30:56 Sgeo|web: also note that instead of the lambda you could write (+) (FakeNum a) (FakeNum b) f = ... 01:30:58 > ($ "3") ++ ($ "4") $ id :: String 01:31:00 "34" 01:31:00 zomg 01:31:20 CakeProphet: Or 01:31:24 (FakeNum a + FakeNum b) f = ... 01:31:28 But I'm not sure that works. 01:31:33 Instance methods have defined arity, don't they? 01:31:42 oh? didn't know you could write it like that on the lhs. 01:31:56 elliott: believe so. 01:32:12 Someone else is trying to explain why I need GADTs 01:32:18 lolwat 01:32:21 why what are you doing. 01:32:22 elliott: you don't need to define them pointfully, if that's what you mean 01:32:28 oerjan: I mean, does 01:32:32 (a + b) c = ... 01:32:32 work 01:32:33 Sgeo|web: Where 01:32:47 hm... 01:32:49 Sine 01:32:52 I wouldn't trust Haskell advice outside of #esoteric or #haskell :p 01:33:01 > let (a + b) c = a c + b c in (sin + cos) 1 01:33:02 Occurs check: cannot construct the infinite type: t = t1 -> t 01:33:03 Sgeo|web: But seriously, just define the (a -> b) instance if you really must. 01:33:13 oops 01:33:14 (a -> b) instance? 01:33:21 > let (a + b) c = a c Prelude.+ b c in (sin + cos) 1 01:33:22 1.3817732906760363 01:33:28 As in, making a -> b an instance of something or is a -> b a class? 01:33:30 suddenly 01:33:46 a -> b is definitely not a class. 01:33:54 because it's a type 01:33:54 Sgeo|web: yes, making a Num (a -> b) instance, like the one lambdabot has 01:34:19 though a a -> b class would be fun 01:34:24 with a ($) method 01:34:46 such that space application is translated to $ :P 01:34:56 "space application" being f x 01:35:24 Would that make Arrows to be easier to use? 01:35:38 it would mostly be bad I think. 01:35:44 Sgeo|web: Arrows don't even have an apply method. 01:35:49 Oh. 01:35:56 unless you count ArrowApply :) 01:36:41 Sgeo|web: anyway did you see my lambdabot examples above 01:36:57 I ... don't quite understand it 01:36:59 CakeProphet: which doesn't fit the type of dollar 01:37:01 The examples 01:37:08 Sgeo|web: 01:37:13 > (length + length) "abc" 01:37:14 6 01:37:26 Ah 01:37:29 Hmmmmmmm 01:37:40 elliott: i was trying to give examples that fit precisely his FakeNum type 01:38:01 :t ($ "3") 01:38:02 forall b. ([Char] -> b) -> b 01:38:15 oerjan: Hardly matters if the instance doesn't exploit it. 01:38:18 I ... let me see if I can use my useage 01:38:19 (Not that it could.) 01:38:24 > ($ "3") + ($ "4") $ read :: Int 01:38:25 7 01:38:27 Where are the Data.Map functions? 01:38:52 > (length + length) "abc" 01:38:52 6 01:38:56 Sgeo|web: In Data.Map. 01:40:06 length * 2 :3 01:40:27 > (length * 2) abc 01:40:27 Not in scope: `abc' 01:40:28 > Data.Map.lookup "x" + Data.Map.lookup "y" $ Data.Map.fromList [("x",2), ("y",3)] 01:40:29 Not in scope: `Data.Map.lookup'Not in scope: `Data.Map.lookup'Not in scope:... 01:40:29 > (length * 2) "abc" 01:40:30 6 01:40:35 > 2 * length ^ 2 + 1 $ "hm..." 01:40:36 51 01:40:37 Sgeo|web: M. 01:40:44 > M.lookup "x" + M.lookup "y" $ M.fromList [("x",2), ("y",3)] 01:40:45 No instance for (GHC.Num.Num (Data.Maybe.Maybe a)) 01:40:45 arising from a use of... 01:41:12 > (fromJust . Data.Map.lookup) "x" + (fromJust . Data.Map.lookup) "y" $ Data.Map.fromList [("x",2), ("y",3)] 01:41:13 Not in scope: `Data.Map.lookup'Not in scope: `Data.Map.lookup'Not in scope:... 01:41:35 > (fromJust . M.lookup) "x" + (fromJust . M.lookup) "y" $ M.fromList [("x",2), ("y",3)] 01:41:35 Couldn't match expected type `Data.Maybe.Maybe a' 01:41:36 against inferred ... 01:41:40 Sgeo|web: Don't fromJust. :-( 01:41:56 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 thus allowing length * 2 01:42:23 ...well, length isn't exactly integral. :P 01:42:25 -!- monqy has quit (Ping timeout: 240 seconds). 01:42:29 Sgeo|web: There's an operator for that, and you don't understand (.). 01:43:25 Sgeo|web: f (g x y) !== (f . g) x y 01:43:36 @unpl (f .) . g 01:43:36 (\ d i -> f (g d i)) 01:43:59 > fromJust . M.lookup "x" + fromJust . M.lookup "y" $ M.fromList [("x",2), ("y",3)] 01:44:00 5 01:44:03 FOR GOD'S SAKE 01:44:07 M.! 01:44:15 > (M.! "x") + (M.! "y") $ M.fromList [("x",2), ("y",3)] 01:44:16 5 01:44:28 ok, angry young man 01:44:41 -!- monqy has joined. 01:45:20 oerjan: ;_; 01:45:29 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 @hoogle (.:) 01:45:40 No results found 01:45:42 yeah... 01:47:04 .:: 01:47:09 -!- bd_ has joined. 01:47:27 > (M.!) "x" + (M.!) "y" $ M.fromList [("x",2), ("y",3)] 01:47:27 shachaf: not falling for it.... not falling for it.... not -- AAAAAAAH 01:47:28 Couldn't match expected type `Data.Map.Map k a' 01:47:28 against inferred ty... 01:47:30 :t (.::) 01:47:31 Not in scope: `.::' 01:47:35 shachaf: ;_; 01:47:38 i'm reminded of those principia mathematica dots 01:48:10 which i suppose had a similar purpose of avoiding parentheses :P 01:48:11 * Sgeo|web copies elliott's thing 01:48:12 oerjan: those are great 01:48:15 @pl (f .) . g 01:48:15 (f .) . g 01:48:16 > (M.! "x") + (M.! "y") + 10 $ M.fromList [("x",2), ("y",3)] 01:48:17 15 01:48:18 :( 01:48:20 @let (.::)=fmap fmap fmap fmap fmap 01:48:21 Huh 01:48:21 Defined. 01:48:22 @pl \f g -> (f .) . g 01:48:23 (.) . (.) 01:48:27 best operator 01:48:46 the "third nipple" operator 01:49:32 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 > ((:[])>=>(:[])) 2 01:49:51 [2] 01:50:10 > ((:[])>=>(:[])>=>(:[])>=>(:[])>=>(:[])) 2 01:50:10 [2] 01:50:21 you may include as many angry totem levels as you please. 01:50:34 the angry totem pole just keeps returning 01:50:52 oerjan: oh ho ho ho ho. my hat off to you sir. 01:51:06 Does the Num (a -> b) instance use any extensions? 01:51:15 no 01:51:28 Sgeo|web: That would be Num b => Num (a -> b), and no. But good luck writing a Show for it... 01:51:45 > ($ 2) :: Int -> Int 01:51:45 Couldn't match expected type `GHC.Types.Int' 01:51:46 against inferred type ... 01:51:47 oops 01:51:53 > (+ 2) :: Int -> Int 01:51:53 Overlapping instances for GHC.Show.Show 01:51:54 (GHC.T... 01:52:10 * Sgeo|web wouldn't attempt to write a Show for it, other than show = const "" 01:52:12 lambdabot: your instances are a mess 01:52:20 > id 01:52:20 Overlapping instances for GHC.Show.Show (a -> a) 01:52:21 arising from a use of `... 01:52:27 Wait, where did bd_ appear from. 01:52:30 Sgeo|web: more importantly, it's injecting a really ugly instance into the global namespace 01:52:31 Oh, there it is. 01:52:36 elliott: Over there ---------> 01:53:17 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 incidentally the Num instance for (a -> b) just lifts everything into the reader monad 01:53:47 > f x y z + 42 :: Expr 01:53:48 f x y z + 42 01:54:18 > let f _ _ _ _ = undefined in f 1 2 3 + 42 01:54:19 Overlapping instances for GHC.Show.Show (t -> a) 01:54:19 arising from a use of `... 01:54:37 > let f _ _ _ _ = undefined in f 1 2 3 + 42 == 43 01:54:38 *Exception: (==): No overloading for function 01:54:54 Oops, your argument mismatch type error became a runtime error now :) 01:54:56 > ((f + 1) 2 + 3) 4 + 5 :: Expr 01:54:57 f 2 4 + 1 + 3 + 5 01:55:10 elliott: I still think the proper way is to use monads, because this way, I can't do == with these things 01:55:18 > 2 "best" "misfeature" 01:55:19 2 01:55:23 Sgeo|web: you still haven't defined how on earth this is related to monads in any way at all 01:55:25 At least, unless you can write halts :: a -> Bool for me? 01:55:36 what 01:55:45 Wait, is that a sufficient condition for making (a -> b) an Eq instance? 01:55:46 yeah I'm just going to leave you to this 01:55:49 let halts = ((const True) $!) 01:55:50 Or just necessary? 01:55:53 -!- Jafet has quit (Quit: Leaving.). 01:56:04 > 2 . "best" . "misfeature" 01:56:05 Couldn't match expected type `a1 -> a' 01:56:05 against inferred type `[GHC.... 01:56:33 > 2 "best" . "misfeature" 01:56:35 [2,2,2,2,2,2,2,2,2,2] 01:56:46 :t ($!) 01:56:46 forall a b. (a -> b) -> a -> b 01:56:49 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 You could even define Eq and Show if you did it with a GADT! 01:57:15 o.O 01:57:31 structural equality, mind you 01:59:08 bd_: how would a gadt help 01:59:24 https://gist.github.com/1294383 something along these lines 01:59:46 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 why not just newtype FakeNum s a = FakeNum ((s -> a) -> a) 02:00:25 and instance Num a => Num (FakeNum s a) 02:00:44 if you don't want to pollute instances of real functions 02:00:46 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 hm i guess i don't know what Sgeo|web wants to use it for, so maybe 02:01:22 but yeah, point is there's no reason to pollute instances of functions 02:01:34 I think I actually have a chance of getting the FakeNum s a thing to work, so 02:01:38 there's no reason to do what Sgeo|web is doing in the first place. 02:01:42 whatever that is. 02:01:44 instance Something (a -> b) is fun to play with but not so fun to debug with 02:01:51 elliott: for fun 02:02:04 Sgeo|web: in that case I fully endorse the GADT method ;) 02:02:14 -!- MDude has changed nick to MSleep. 02:02:16 for values of fun equal to wasting your time painfully 02:02:48 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 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 imNotCreativeEnoughToNameThisFunction do { a <- term "x"; b <- term "y"; return a + b == 5 } [("x",2),("y",3)] 02:05:50 Sgeo|web: learn to precedence :P 02:05:58 return (a + b == 5) 02:06:21 bd_: monads don't inherently have embedded functions 02:06:23 [] is a monad, after all 02:07:12 Sgeo|web: that's called the reader monad, where term k = asks ($ k) 02:07:16 elliott: good point 02:07:27 bd_: if lists were functions 02:07:34 but I fail to see how he'll construct his delayed-symbolic-evaluation monad without using embedded functions :) 02:07:37 term k = asks (M.! k) :P 02:08:01 elliott: my way is more general :) 02:08:16 bd_: oh, hmm, huh 02:08:21 where the environment = M.! someMap 02:08:47 I think Reader monad is more sane than RVar for my purposes then >.> 02:08:53 Now bd_ knows what I really want to do >.> 02:08:58 no I don't. 02:09:07 The mcmc thing 02:09:16 I still need to watch that video though 02:09:17 ... not seeing how Reader would be very helpful for that! 02:09:50 Function to adjust the values of the "random" variables, I guess 02:09:54 Again, I need to learn MCMC 02:10:09 I'm having an impression that I'm doing X-Y, but oh well 02:10:12 I'll learn 02:10:23 RVar? 02:10:41 What on earth are you actually doing 02:10:47 near as I can tell he's trying to do some sort of markov chain traverser 02:10:59 and was thinking about using Data.RVar for it 02:11:33 the docs for RVar have a nice random walk example that could probably be adapted to a markov chain easily enough... 02:11:45 oh well. "good luck with that" 02:12:02 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 + 02:12:32 111 02:12:32 + if impl(ghc == 7.2.1) 02:12:32 112 02:12:32 + -- Doesn't work under GHC 7.2.1 due to 02:12:32 113 02:12:34 + -- http://hackage.haskell.org/trac/ghc/ticket/5410 02:12:37 114 02:12:38 + Buildable: False 02:12:40 also it doesn't work 02:14:08 nice :) 02:17:26 http://www.exoticmeatmarket.com/aflime.html LION STEAKS, GETCHER LION STEAKS 02:50:26 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 the exe depends on the dll 02:53:18 that's all 02:53:34 it could even be in c:\windows 02:54:01 Gregor: yikes. 02:54:22 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 Gregor: fake, right? 02:54:48 PatashuXantheres: hopefully 02:54:57 'hopefully' lol 02:54:59 -!- PatashuXantheres has changed nick to Patashu. 02:55:28 The DLL needs to be in the lookup path for DLLs... 02:55:31 "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 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 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 (I *think* it's a configuration option, and that cygwin sticks the path to cygwin.dll in there?) 02:57:20 I assume by "normal techniques" they mean "looking around a mounted filesystem". 02:57:28 yes 02:57:39 Yeah, that'd work quite well. 02:57:42 awesome 02:58:12 You could also do something more awesome and esoteric. 02:58:23 Store long file names without corresponding short file names. 02:58:29 hmm! 02:59:11 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 do you have to go to NT level to circmvrent that? 03:02:21 No, you have to access the partition yourself. 03:02:33 It's also part of Linux VFAT, I think. 03:02:55 nice 03:23:24 Should I try to first grok GADTs or Rank 2 whatevers or existentials? 03:26:01 You should first grok grokking. 03:26:06 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 "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 That... is stunningly simple to understand, I think 03:43:08 But I have a feeling I'm missing the reason why that's normally the case 03:44:36 that is an awful explanation 03:44:42 Sgeo|web: In the simplest case, existential types are sort of like implicit casting to an interface in languages like Java 03:44:58 but with multiple parameters you get far more generality than you do with just an interface. 03:45:05 CakeProphet: i... 03:45:06 no 03:45:13 elliott: is that not a good analogy? 03:45:25 Sgeo|web: ask #haskell. 03:45:26 @pl (\x -> x%2==0) 03:45:26 (0 ==) . (% 2) 03:45:31 :t isEven 03:45:32 Not in scope: `isEven' 03:45:32 elliott: do those things not compare? do they not have similar roles? I think they do. 03:45:33 :t even 03:45:34 forall a. (Integral a) => a -> Bool 03:45:42 > (%) 03:45:43 Overlapping instances for GHC.Show.Show 03:45:43 (a -> ... 03:45:47 huh 03:45:52 :t (%) 03:45:53 forall a. (Integral a) => a -> a -> Ratio a 03:46:05 Madoka-Kaname: not what you want 03:46:17 :t mod 03:46:18 forall a. (Integral a) => a -> a -> a 03:46:27 > map (`mod` 5) [1..] 03:46:28 [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 > map even [1..] 03:46:37 [False,True,False,True,False,True,False,True,False,True,False,True,False,Tr... 03:46:48 > filter even [1..] 03:46:50 [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 > evens 03:46:58 Not in scope: `evens' 03:47:01 ah. 03:47:12 though they may be in a library or something. no need. 03:47:14 :t (map (*2) . filter even) [1,2,3,4,5,8] 03:47:15 forall a. (Integral a) => [a] 03:47:15 *thought 03:47:18 > (map (*2) . filter even) [1,2,3,4,5,8] 03:47:20 [4,8,16] 03:49:14 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 ...er 03:49:29 lol. accidentally hit enter before I ctrl+K'd 03:49:49 probably should have ctrl+U'd though. 03:49:50 CakeProphet: i'm really not up to correcting your iffy analogy right now. i'm pretty busy. sorry 03:50:18 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 because... they are. 03:50:50 but the things you can do with interfaces, you can do with typeclasses and existentials. 03:50:59 no? 03:56:37 -!- zzo38 has joined. 03:57:27 -!- augur has joined. 04:01:34 > (\あ -> あ) 1 04:01:35 1 04:02:01 > (\何か -> 何か) 1 04:02:02 1 04:04:21 どうして日本語で書くの? 04:04:22 > 1 2 3 4 5 04:04:23 1 04:05:25 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 um 04:05:37 its pure haskell 04:05:38 also 04:05:42 ? 04:05:51 that doesn't rely on that instance 04:06:04 I didn't say it did. 04:06:07 those two things are comoketely separate 04:06:10 yes you did 04:06:11 but I'm pretty sure that is the purpose of its existence. 04:06:14 no 04:07:01 -!- ive has joined. 04:07:07 also "1 2 3 4 5" is not a valid expression according to GHC. 04:07:14 well, it is syntactically. 04:07:15 yes it is 04:07:41 hint: it will type with one line of code 04:07:56 > 1 2 3 4 5 04:07:57 1 04:08:14 elliott: an instance declaration, yes? Will it /run/ in one line of code? 04:08:41 > 1 2 + 3 4 04:08:42 4 04:08:51 :t 1 2 3 4 5 04:08:51 > (1 2) 3 04:08:52 forall t t1. (Num (t1 -> t), Num t1) => t 04:08:53 1 04:09:05 :t 1 2 04:09:06 forall t t1. (Num (t1 -> t), Num t1) => t 04:09:17 Oh 04:09:20 fromIntergral? 04:09:20 elliott: It won't type; there's no instance of Num (a -> b -> c -> d) by default. 04:09:29 Madoka-Kaname: 1 is a function, duh. 04:09:32 :P 04:10:14 elliott: but you're basically saying that valid Haskell != bad hack 04:10:41 "put in lambdabots evaluator" 04:10:45 in which case, I'll get back to you when I finish my IsString instance that executes arbitrary perl. 04:11:00 CakeProphet: I'm pretty sure what you're seeing is just a normal, perfectly sane instance of Num. 04:11:15 Nums via Church numerals, if I had to guess. 04:11:20 no 04:11:20 > 0.5 34 04:11:21 0.5 04:11:35 elliott: Then what is it? 04:11:49 > (sum / length) [0..9] 04:11:50 No instance for (GHC.Real.Fractional GHC.Types.Int) 04:11:50 arising from a use o... 04:11:56 > (sum / length) [0.0..9] 04:11:57 No instance for (GHC.Real.Fractional GHC.Types.Int) 04:11:58 arising from a use o... 04:12:01 ffs 04:12:07 elliott: "1 2" does not type with just Prelude. 04:12:28 its not normal 04:12:29 sane 04:12:31 or church 04:12:47 Then what *is* it? 04:13:07 :t f x y z 04:13:08 forall t. (SimpleReflect.FromExpr (Expr -> t)) => t 04:13:11 > (length + length) [0,9] 04:13:12 4 04:13:16 CakeProphet: THAT IS UNRELATED 04:13:21 _COMPLETELY_ 04:13:26 elliott: OKAY I WAS SORT OF TESTING TO SEE IF IT WAS RELAX 04:13:41 elliott: YOU EXPLAIN NOTHING 04:13:48 pikhq_: 04:13:50 > (length + length) [0,9] 04:13:51 4 04:13:54 pikhq_: yeah I don't know why you're trying to elliott to explain anything. 04:13:58 > (length / length) [0,9] 04:13:58 +get 04:13:59 No instance for (GHC.Real.Fractional GHC.Types.Int) 04:13:59 arising from a use o... 04:14:08 > (length `div` length) [0,9] 04:14:09 No instance for (GHC.Real.Integral ([a] -> GHC.Types.Int)) 04:14:10 arising from ... 04:14:12 oh come on 04:14:21 > (length - length) [0,9] 04:14:21 0 04:14:25 > (length / length) [0.0, 0.9] 04:14:25 No instance for (GHC.Real.Fractional GHC.Types.Int) 04:14:26 arising from a use o... 04:14:27 > (length + 99) [0,9] 04:14:28 101 04:14:35 pikhq_: explained. 04:14:46 I want the name of the instance and its source. 04:15:02 instances dont have names 04:15:13 You know what I mean. 04:15:22 nope 04:15:50 Ah, yes, you're a crazy person who thinks (length + length) [0,9] explains (length + length) [0,9] 04:16:02 i gave three examples 04:16:10 :t length + length 04:16:10 w/e, keep being stubborn 04:16:10 forall a. [a] -> Int 04:16:20 :t (length +) 04:16:21 forall a. ([a] -> Int) -> [a] -> Int 04:16:40 Num instance on functions, as far as I can tell. 04:17:13 Instance of Num for (Num n) => (n -> n), apparently. 04:17:27 so then "term term" automatically types as a -> b? 04:17:33 er a -> a in that case I guess. 04:17:44 pikhq_: uhh 04:17:53 yeah if my examples typed with that 04:17:59 :t \x->1 x 04:18:00 forall t t1. (Num (t -> t1)) => t -> t1 04:18:07 Derp. 04:18:24 I'm not entirely clear how that magically makes integer literals into functions. 04:18:38 :t 9 04:18:39 forall t. (Num t) => t 04:18:50 This time I fixed the gopher SWPC for really. 04:18:53 elliott: uh huh? 04:18:53 do you actually know haskell 04:19:04 elliott: I do. 04:19:34 elliott: do you actually know how to explain things instead of just being a jackass? 04:19:35 practically every feature of the language i have had to explain to your confusion 04:19:40 (Answer: no) 04:19:42 :t 9 04:19:42 forall t. (Num t) => t 04:19:46 + Num instance 04:19:49 = ????? 04:20:14 at what point does 1 2 3 4 5 solicit the services of (+), (-), or (*)? 04:20:27 :t 9 04:20:28 forall t. (Num t) => t 04:20:34 I know the type of 9, sir. 04:20:35 + Num instance for functions 04:20:38 = ????????????? 04:21:18 > 9 . 8 04:21:19 No instance for (GHC.Show.Show (f b)) 04:21:19 arising from a use of `M2427776621... 04:21:25 > (9 . 8) 7 04:21:26 9 04:22:10 :t const 8 04:22:11 forall t b. (Num t) => b -> t 04:22:24 :t (9 >>= 8) 04:22:25 forall (m :: * -> *) a b. (Num (m a), Num (m b), Monad m) => m b 04:22:57 > (9 >>= 8) 7 04:22:58 8 04:23:10 exciting instance. 04:24:03 > map (5 + 5) [1..] 04:24:04 [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 > 'a' 2 3 04:24:39 Couldn't match expected type `t1 -> t2 -> t' 04:24:40 against inferred type ... 04:24:56 needs moar OverloadedChars 04:25:07 function instance of IsChar 04:25:15 Num instance of IsChar 04:25:18 weak typing yesssssss 04:25:32 er well Int instance of IsChar. 04:26:49 > fix 1 04:26:49 1 04:26:52 fixed. 04:28:22 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 s/able/allow/ 04:28:41 s/allow/allow me (?#ack...)/ 04:32:15 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 right, I was confused because I didn't realize that "f a" always enforces f to be type a -> b 04:33:14 as opposed to applying integers 04:33:28 I mean, I knew intuitively that it does enforce that, but not that GHC does that. 04:33:40 It simply must. 04:33:41 it's simple unification, there is no special rule 04:33:56 elliott: cool, dude. 04:34:13 You'd literally have to break type inference for that to not happen. And a lot of other things besides. :) 04:34:32 right, the more familiar example of a -> b as a Monad does the same thing. 04:34:46 integer overloading magic just confused me. 04:35:00 *number 04:36:43 elliott: I was confused I thought the entire world was derived of special cases. 04:37:05 yes, I too am under the impression that this is how you model things 04:37:16 indeed. 04:37:45 I tend to model things with intuition. Sometimes this is inexact. Shit happens. 04:38:49 so, you don't know Haskell, just a bunch of special cases? ok 04:39:14 well, for starters, I do not fully know the process GHC uses to derive types. 04:39:30 do I know Haskell. Sure, by some definition of know. 04:40:08 yes this is totally a ghc specific thing 04:40:13 hindley and milner, famous ghc hackers 04:40:17 languages = implementations 04:40:23 elliott: totally. 04:40:49 perhaps if you didn't know everything things like not knowing things would make more sense to you. 04:42:02 > iterate (*2) 04:42:03 Overlapping instances for GHC.Show.Show (a -> [a]) 04:42:03 arising from a use of... 04:42:05 :t iterate 04:42:06 forall a. (a -> a) -> a -> [a] 04:42:15 > iterate (*2) 1 04:42:16 [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,... 04:42:23 > iterate (\x -> x * x) 1 04:42:24 [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 > iterate (\x -> x * x) 2 04:42:25 [2,4,16,256,65536,4294967296,18446744073709551616,3402823669209384634633746... 04:42:33 > iterate (\x -> x * x * x) 2 04:42:34 [2,8,512,134217728,2417851639229258349412352,141347765182270746366663800059... 04:42:43 > iterate (\x -> x * x * x * x * x * x) 2 04:42:44 [2,64,68719476736,105312291668557186697918027683670432318895095400549111254... 04:42:50 Okey, yeah, it's not going to overflow, is it? 04:42:55 > iterate 2 undefined 04:42:55 [*Exception: Prelude.undefined 04:42:58 :( 04:43:03 > 2 undefined 04:43:04 2 04:43:26 * CakeProphet scratches head. 04:43:39 @src iterate 04:43:39 iterate f x = x : iterate f (f x) 04:43:49 * CakeProphet scratches his head even more. 04:43:53 ah 04:43:54 yes 04:44:09 > iterate 2 0 04:44:10 [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 > join iterate 2 04:44:20 Occurs check: cannot construct the infinite type: a = a -> a 04:44:23 bah 04:44:38 > tail (iterate 9 undefined) 04:44:39 [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 > iterate 2 2 04:44:44 [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 ah okay. 04:45:47 er, not referring to iterate 2 2 04:45:50 I, uh, figured that out 04:46:07 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 > iterate unsafeCoerce undefined 04:46:21 Not in scope: `unsafeCoerce' 04:46:24 integer overloading, apparently the bane of my existence. 04:46:45 So... 04:46:59 forceEval :: a -> a 04:47:04 forceEval = unsafeCoerce 04:47:12 forceEval = id 04:47:14 most likely 04:47:25 though it could be unsafeCoerce :: a -> a 04:47:28 which is just... id. 04:48:19 :t join asTypeOf 04:48:20 forall a. a -> a 04:48:23 could also be that. 04:48:23 forceEval :: a -> a 04:48:29 Madoka-Kaname: a "forceEval" function makes no sense. 04:48:37 semantically, implementation-wise, every-wise. 04:48:42 Well.... 04:48:44 elliott: well, it makes sense... as id. id is forceEval. :P 04:48:51 Madoka-Kaname: No. 04:48:56 Maybe "strict" would be a better word? 04:48:57 ;. 04:48:58 reverse . reverse for lists 04:48:58 ;.; 04:49:06 Madoka-Kaname: not id does not magically strictly evaluate. 04:49:09 (no 04:49:12 :t seq 04:49:13 forall a t. a -> t -> t 04:49:28 unsafeCoerce undefined seems to error, at least. 04:49:38 Madoka-Kaname: when evaluated, yes. 04:49:48 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 Madoka-Kaname: try putting it as the second argument to const 04:49:57 elliott, ;.; 04:50:09 > undefined `seq` 2 04:50:10 *Exception: Prelude.undefined 04:50:13 * Madoka-Kaname drops an anvil on elliott 04:50:14 Die 04:50:18 k 04:50:25 Madoka-Kaname: const 2 undefined == 2 04:50:34 Madoka-Kaname: const 2 (unsafeCoerce undefined) == 2 04:50:39 :t const 04:50:40 forall a b. a -> b -> a 04:50:43 > const 2 3 04:50:44 2 04:50:49 > const 2 "holy crap anything" 04:50:50 2 04:51:07 what's up, #esoteric 04:51:14 > const 2 (repeat "dude this list repeats /forever/") 04:51:15 2 04:51:58 > let x = repeat "dude this list repeats /forever/" in x `seq` const 2 x 04:51:59 2 04:52:31 > seq (fix ($)) 2 04:52:31 2 04:52:41 :t fix ($) 04:52:42 forall a b. a -> b 04:52:46 No way that'll return, right? 04:52:51 Oh 04:52:54 > seq (fix ($) 1) 2 04:52:58 Madoka-Kaname: note that when seq strictly evaluates something that doesn't mean that it evaluates the structure completely. 04:53:09 thread killed 04:53:11 Makes sense =p 04:53:26 so repeat 2 `seq` 2 only evaluates the first node of repeat 2 04:54:05 deepseq? 04:54:29 there is a function called deepSeq that evaluates everything to its so-called normal form (aka "fully evaluated") 04:55:16 > deepSeq (fix (1:) []) "wee" 04:55:17 Not in scope: `deepSeq' 04:55:22 It's called deepseq and it's in a type-class. 04:55:29 It does not make sense for much data, and it is almost always a bad idea. 04:55:35 s/much/many/ 04:57:42 Madoka-Kaname: there's also a function ($!) f x = x `seq` f x 04:57:47 aka strict application. 05:01:01 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 seq needs to go back into a typeclass. 05:01:49 elliott: por que? 05:01:54 also "go back" -- it was in one before? 05:02:00 Yes. 05:02:11 In 1.4. Haskell 98 was a step back in several ways. 05:02:20 What would the benefit of that be? 05:02:25 class Eval a where 05:02:26 seq :: a -> b -> b 05:02:26 strict :: (a -> b) -> a -> b 05:02:26 strict f x = x `seq` f x 05:02:44 also how does one write a seq instance 05:02:49 without a seq? 05:02:52 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 And makes parametricity hold more properly. 05:03:39 Other excellent things 1.4 had: (++) in MonadPlus, monad comprehensions, "map" in Functor, empty Void type... 05:03:46 waaaaaaah 05:03:54 so good. 05:04:02 what happened Haskell 98? 05:04:32 Oh, and no "fail" in Monad. 05:04:34 perhaps they were concerned with the typeclass overhead for the common case of lists? 05:04:39 There is no overhead. 05:04:43 What happened was concerns about newbies / quality of error messages; and proliferation of constraints in definitions. 05:04:50 oh, lame. 05:04:58 e.g. using Seq added Eval constraints, and MonadFail constraints or whatever for partial pattern matches, and so on. 05:05:11 filter :: MonadZero m => (a -> Bool) -> m a -> m a 05:05:11 filter p = applyM (\x -> if p x then return x else zero) 05:05:16 it's not like they avoided a profusion of instance-related error messages. 05:05:20 I get plenty of those. 05:05:47 did someone ping me? 05:05:52 quintopia: probably 05:06:21 okay as long as it's not important enough that you said "yes" 05:06:40 liftM3 :: (Monad m) => (a -> b -> c -> d) -> 05:06:41 (m a -> m b -> m c -> m d) 05:06:41 liftM3 f = \a b c -> [f a' b' c' | a' <- a, b' <- b, c' <- c] 05:06:43 Monad comprehensions. 05:06:56 o.o 05:07:02 monad comprehensions 05:07:13 I honestly 05:07:18 never use list comprehensions. maybe I should. 05:07:48 they say bitcoin is dead 05:08:06 quintopia: they said rock 'n' roll would die. 05:09:37 ugh programming C++ is like... flagellantism 05:10:01 "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 Woah 05:10:08 I think I like where this is going 05:10:13 programming C++ is like... programming fortran... without the hardcore hacker feel 05:10:52 would that be more of C <->fortran relationship? 05:10:56 *wouldn't 05:12:15 oh apparently fortran got OO, nevermind. 05:12:26 like anyone uses it 05:12:43 hmmm 05:12:45 I should learn fortran. 05:12:54 Sgeo|web: lust after fortran next 05:13:08 in my Conquest of Programming Language Knowledge(tm) 05:14:07 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 :t f 05:15:56 forall a. (SimpleReflect.FromExpr a) => a 05:15:57 :t f 1 05:15:58 forall t t1. (Num t, SimpleReflect.FromExpr (t -> t1)) => t1 05:16:26 it's not related to the integer overloading, but a similar idea. 05:18:29 :t a b 05:18:29 Couldn't match expected type `Expr -> t' 05:18:30 against inferred type `Expr' 05:18:30 In the expression: a b 05:18:35 :t b 05:18:36 Expr 05:18:38 ah 05:20:36 hmm why doesn't SimpleReflect document FromExpr.. 05:20:50 you know, aside from defining it in source code 05:20:52 that doesn't count. 05:21:33 CakeProphet: http://twanvl.nl/blog/haskell/simple-reflection-of-expressions 05:21:46 :t fun 05:21:47 forall a. (SimpleReflect.FromExpr a) => String -> a 05:22:30 CakeProphet: just read that 05:22:32 it's the original post 05:22:32 > fun "your mom is" a (var "hobag") 05:22:33 Ambiguous type variable `a' in the constraints: 05:22:33 `SimpleReflect.FromExpr ... 05:22:40 > fun "your mom is" (a::Expr) (var "hobag") 05:22:41 Ambiguous type variable `a' in the constraints: 05:22:41 `SimpleReflect.FromExpr ... 05:22:42 sdfijsdfijwer 05:22:50 > fun "your mom is" a (var "hobag") :: Expr 05:22:51 your mom is a hobag 05:23:02 bahahahahaha 05:23:35 :t fun 05:23:36 forall a. (SimpleReflect.FromExpr a) => String -> a 05:23:37 Oh 05:24:10 hobag barbie eh 05:24:16 :t h 05:24:17 forall a. (SimpleReflect.FromExpr a) => a 05:24:20 fun is how f g and h are defined. 05:24:27 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 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 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 bah, I messed up. 05:29:48 I didn't mention anything, the narrator did. 05:29:52 er, I mean 05:29:57 I did all of the mentioning. 05:29:59 * CakeProphet did not. 05:30:39 hi 05:31:07 hi monqy hi hi hi 05:31:09 my program is broken monqy 05:31:11 want to fix it??// 05:31:20 * CakeProphet greets monqy fondly. 05:31:41 OH 05:31:43 OH I AM SUCH 05:31:44 A FUCKING IDIOT 05:31:46 OF COURSE IT DOESNT RUN 05:31:47 BECAUSE 05:31:50 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 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 monqy: I wrote a program: http://sprunge.us/BMBZ 05:34:58 program 05:35:00 whoa woah 05:35:01 flood 05:35:03 flud 05:35:25 does it do things 05:35:28 CakeProphet: what flood 05:35:29 lots of imports 05:35:37 elliott: earlier I discovered that flood is oddly spelled. 05:35:44 considered the way it's pronounced. 05:35:46 flod 05:36:10 monqy: that's very few imports for haskell 05:36:12 help battery brb 05:36:23 it's a lot of imports for me 05:36:28 (i live in a cave) 05:37:12 hello. test 05:37:12 test test test. 05:37:12 testing. 05:37:15 this is a test. 05:37:25 awwww yeah connection wasn't interrupted. 05:37:45 import MC.Protocol 05:37:45 import MC.Protocol.IO 05:37:45 import qualified MC.Protocol.Client as C 05:37:45 import qualified MC.Protocol.Server as S 05:37:45 import MC.Utils 05:37:45 05:37:47 import Prelude hiding (catch) 05:37:49 import Data.HashMap.Strict (HashMap) 05:37:51 import qualified Data.HashMap.Strict as HM 05:37:53 import Data.ByteString (ByteString) 05:37:55 import qualified Data.ByteString as B 05:37:57 import Data.Text (Text) 05:37:59 import qualified Data.Text as T 05:38:01 import Control.Monad 05:38:03 import Control.Exception 05:38:05 import Control.Concurrent 05:38:07 import Control.Concurrent.STM 05:38:09 import Data.IORef 05:38:11 import System.IO 05:38:13 import Network 05:38:15 import Codec.Zlib 05:38:17 monqy: :) 05:38:17 imports 05:38:31 -!- zzo38 has quit (Remote host closed the connection). 05:38:33 i remember that logn list of inmports from whaichever cpmpiler that was 05:38:35 the rlong one 05:38:44 (it was long) 05:39:10 too many imports are bad for the economy. 05:39:33 unless the imports are goods that generate revenue domestically. 05:41:03 economics are tricky when programming. It's like being in a circus. 05:41:05 good night. 05:42:36 oh hey wait 05:42:46 say I wanted to like... 05:43:05 run a command in emacs, to load a bunch of files that I commonly edit as a group. 05:43:21 does this already exist or do I need to go learn emacslisp? 05:46:47 monqy: do you see any obvious refactorings... 05:46:50 i'd like to make it a little prettier 05:48:37 nothing obvious.. id on't work much with fancy io 05:49:59 does anyone know of a program that's basically tail -f + readline? 05:50:12 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 preferably just cat logfile | theprogram | processinput 05:51:57 shachaf: Oi, you should refactor my code. (I say this because you're the only competent person in the channel.) 05:52:14 elliott: which forever did you remove. 05:52:24 elliott: What code? 05:52:38 shachaf: http://sprunge.us/caNc 05:52:39 That code. 05:54:08 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 CakeProphet: Not the equivalent. 05:54:26 `catch`/`finally`/ are inside the forever. Although, oh. 05:54:28 They shouldn't be. 05:54:33 Wait, no. 05:54:34 They're not. 05:54:37 But yeah, no. 05:54:43 CakeProphet: The second "forever" is different. 05:54:44 ​/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 it's void (forkIO (catch (finally ...))) 05:55:31 ah 05:55:37 elliott: It doesn't look *that* horrible... 05:55:44 What's the point of all those voids? 05:55:55 shachaf: forkIO returns a ThreadId. 05:56:00 So? 05:56:09 I'm discarding it. The alternative is _ <-, but it's in tail position once there. 05:56:15 shachaf: I like -Wall. :p 05:56:27 But yes, it doesn't look horrible, I just want it to be nicer. 05:56:32 ignore e would be a nice function in Control.Exception 05:56:42 elliott: Presumably you're going to turn it into something more complicated later on? 05:56:48 shachaf: Nope. 05:56:52 shachaf: This is literally the tool I need. 05:59:38 elliott: ignoreEOFError e = unless (isEOFError e) (throwIO e), I guess? 06:00:00 No liftA2ing that 06:00:05 shachaf: Yeah, I did that (with applicative combinators). 06:00:13 Bad elliott. 06:00:14 Then Deewiant was like "seriously though" and I was like "yeah" and didn't actually put it in. 06:00:41 flip (liftA2 unless) throwIO should be in Control.Exception. 06:01:08 shachaf: The problem with that is that the "where" one-liner sticks out. :p 06:01:13 THIS TOTALLY MATTERS 06:01:18 elliott: I believe ignoreEOFError could be translated to when. 06:01:34 ? 06:01:36 no. 06:01:43 unless = when . not 06:02:08 the condition relies on e so you can't do that. 06:02:14 elliott: I don't think this piece of code is really worth worrying about. 06:02:32 shachaf: Yeah, but it distracts me from writing the other portion of this, namely a shell script. 06:02:44 Ew, shell script. 06:03:01 What's the goal of this? 06:03:14 shachaf: Backups. The reason I need this server is because of badly-designed software. 06:03:26 @pl (\e -> unless (f e) (throwIO e)) 06:03:27 liftM2 unless f throwIO 06:03:30 *Backups*? 06:03:32 Anyway, the shell script will literally be "echo foo | nc localhost 9999; blah; echo bar | nc localhost 9999". 06:03:37 So it's not so bad. 06:03:42 CakeProphet: I said no lift[A-Z]2! 06:04:03 not even liftQ? 06:04:10 shachaf: Specifically, I need to stop a piece of software from writing to the data while it's being backed up. 06:04:30 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 So this program turns a single file into a line-multiplexed server. 06:05:03 Ah. 06:05:29 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 But yeah, rdiff-backup is doing the heavy lifting here. 06:05:56 tail -f + readline? 06:06:11 :t (\e -> unless (f e) (throwIO e)) 06:06:12 Not in scope: `throwIO' 06:06:16 Ah, to give you a pseudo-stdin-stdout thingy? 06:06:20 :t catch 06:06:21 forall a. IO a -> (IOError -> IO a) -> IO a 06:06:22 shachaf: Yeah. 06:06:31 shachaf: tail -f the log file, readline for the actual line input. 06:06:50 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 @hoogle (a -> Bool) -> IO () -> IO () 06:07:20 Foreign.Marshal.Error throwIf :: (a -> Bool) -> (a -> String) -> IO a -> IO a 06:07:21 Foreign.Marshal.Error throwIf_ :: (a -> Bool) -> (a -> String) -> IO a -> IO () 06:07:21 Foreign.C.Error throwErrnoIf :: (a -> Bool) -> String -> IO a -> IO a 06:07:33 looks like that's a common pattern. 06:07:45 @hoogle+ 06:07:45 Foreign.C.Error throwErrnoIfRetry :: (a -> Bool) -> String -> IO a -> IO a 06:07:45 Foreign.C.Error throwErrnoIf_ :: (a -> Bool) -> String -> IO a -> IO () 06:07:45 Foreign.C.Error throwErrnoIfRetry_ :: (a -> Bool) -> String -> IO a -> IO () 06:07:49 @hoogle+ 06:07:50 Foreign.C.Error throwErrnoIfRetryMayBlock :: (a -> Bool) -> String -> IO a -> IO b -> IO a 06:07:50 Foreign.C.Error throwErrnoIfRetryMayBlock_ :: (a -> Bool) -> String -> IO a -> IO b -> IO () 06:07:50 Foreign.C.Error throwErrnoPathIf :: (a -> Bool) -> String -> FilePath -> IO a -> IO a 06:08:02 Eh. 06:08:12 throwErrnoIfRetryMayBlock_ is a pretty bad name 06:08:21 Ooh, I remember that function. 06:08:40 I was digging around in GHC's I/O implementation trying to figure out how the whole blocking thing worked. 06:08:46 It's such a mess to figure out. 06:08:48 :t isEOFError 06:08:49 Not in scope: `isEOFError' 06:08:56 @let isEOFError _ = False 06:08:57 Defined. 06:09:04 ... 06:09:04 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 Vorpal: rdif-backup? 06:09:20 Vorpal: CB. 06:09:23 Oh. 06:09:28 elliott: CB being? 06:09:29 shachaf: No, rdiff-backup is the good software I'm using to backup. 06:09:36 Vorpal: CrBu. 06:09:41 It's like a riddle. Of time. 06:09:43 CrBu being? 06:09:50 shachaf: The bad software is the program I have to tell to stop writing to the files. 06:09:50 elliott: is it the mc server? 06:09:59 Vorpal: Yes. I dare not speak its name for the horrors it causes me. 06:10:08 so why call it cb? 06:10:10 :t unless 06:10:10 forall (m :: * -> *). (Monad m) => Bool -> m () -> m () 06:10:16 Vorpal: That's its name. 06:10:25 oh craftbukkit-0.0.1-SNAPSHOT.jar 06:10:33 of course 06:11:02 anyway, using unless instead of the guard is probably better. 06:11:59 @whatis cb 06:11:59 I know nothing about cb. 06:12:05 shachaf: craftbukkit 06:12:09 shachaf: that is what it is 06:12:18 Wait, what? 06:12:22 shachaf: which is an minecraft server 06:12:23 That looks like a Minecraft thing. 06:12:25 shachaf: yes 06:12:29 What does this have to do with backup? 06:12:33 is it what it is? 06:12:35 shachaf: backing up the world? 06:12:43 * shachaf feels like he misunderstood something. 06:12:51 > unwords . reverse . words $ "is it what it is" 06:12:52 Ah, well. It's just Minecraft, so I don't feel bad. 06:12:53 "is it what it is" 06:12:59 shachaf: what? 06:13:07 @let onwords f = unwords . f . words 06:13:08 Defined. 06:13:15 > onwords reverse "is it what it is" 06:13:16 shachaf: wonderful 06:13:17 "is it what it is" 06:13:28 :t unwords 06:13:29 [String] -> String 06:13:32 :t words 06:13:33 String -> [String] 06:13:36 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 Sadly unwords . words =/= id. :-( 06:14:09 wow 06:14:12 fuck java in its flying ass 06:14:15 for making fucking bytes signed 06:14:28 Patashu: you know that char in C is often signed? 06:14:31 "char" can and usually is signed in C, too. 06:14:40 well I want my bytes to be unsigned 06:14:42 how do I fix this 06:14:46 unsigned byte? 06:14:46 The difference being that C has the "unsigned" keyword 06:14:47 I'm getting like -12 instead of 244 06:14:49 ah 06:14:53 elliott: char is for characters. 06:15:01 Patashu: You don't. 06:15:04 Patashu: Use int or w/e. 06:15:04 That's why it's 32 bits long. 06:15:09 > w/e 06:15:10 w / e 06:15:10 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 http://darksleep.com/player/JavaAndUnsignedTypes.html 06:15:28 I'm using the method read(byte[] b, int off, int len) though 06:15:31 there's no read for int[] 06:15:32 or w/e 06:15:50 wait, so what if you want an unsigned long long or such in java? 06:16:01 Patashu: well it would be short for unsigned byte. 06:16:04 ah, I see what to do 06:16:07 0x000000FF & (int)buf[index] 06:16:09 this fucking shit everywhere 06:16:13 maybe I'll make a method to do it for me 06:16:28 elliott: If you delete cwd and then ^C your program, it complains. 06:16:33 Just sayin'. 06:16:36 Patashu: abstraction????? Have you gone mad!?!?!?!? 06:16:38 shachaf: What. 06:16:48 Patashu: Or 0xFF. 06:16:52 Wait, maybe that was runghc? 06:17:25 shachaf: Sounds likei t to me. 06:17:28 Were you stress-testing that? 06:17:31 s/i t/ it/ 06:17:37 Yep, runghc. 06:17:41 elliott: Nah, just habit. 06:19:23 * shachaf regularly deletes directories while there are still processes running in them. 06:19:29 I also regularly exit bash with kill -9 $$ 06:19:34 what 06:19:35 why 06:19:45 shachaf: that takes MORE typing than just plain exit 06:20:00 you have to be joking 06:20:16 excellent. works like a charm 06:20:21 an ugly charm but who's keeping score 06:20:30 shachaf: I shut down my computer with an axe. 06:22:11 Vorpal: I'm not. 06:22:18 Vorpal: It doesn't save command line history. 06:22:27 Patashu learns the joys of abstraction. 06:22:31 shachaf: that can be disabled with set anyway 06:22:40 Vorpal: After the fact? 06:22:43 or maybe shopt 06:22:47 I want *some* things to be saved in history. 06:22:50 shachaf: after starting the shell yes 06:23:02 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 hm 06:24:42 -!- nooga has joined. 06:48:54 mh 06:54:33 -!- Zuu has joined. 06:56:45 You do see quite a lot of &0x{ff,ffff} in Java thanks to the "only signed types" thing. 06:58:43 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 signed octet 07:00:11 -!- ive has quit (Quit: leaving). 07:00:11 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 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 See, fizzie knows. 07:02:46 "sictet", yes, that's what they should've called it. 07:02:48 I'm not entirely sure what you want magicproc to do there. 07:03:13 fizzie: Present readline prompt; and show its input but not overriding its input. 07:03:14 Err. That is to say. 07:03:24 fizzie: Basically I want something that shows tail -f's output while letting me input things. 07:03:38 Without new data on tail -f overwriting my input line, like netcat-IRCing does. 07:03:41 Preferably line-edited. 07:03:46 It has to exist, come on. 07:09:17 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 What about the output from "nc localhost 9999"? 07:14:16 fizzie: Well, it's fine if it takes some parameters instead, of course. 07:14:20 fizzie: And that can just be discarded. 07:14:36 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 But I don't know if I'm just missing something. 07:15:09 And it's, you know, sucklessware, so it isn't using readline or anything simple like that. 07:15:26 I'm tempted to just write my own thing; it's just cat + readline. 07:15:32 But there must be _something_. 07:15:56 where there's a way, perl can do it. 07:16:48 CakeProphet: Do it then 07:16:57 nah 07:17:19 also I assume there are specific requirements that I'm not aware of, otherwise youd just use.... cat + readline 07:17:56 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 fizzie: That sounds plausible. I suppose it won't take care of, e.g. the completed line being printed out? 07:18:39 Like REPLs. 07:19:00 Hrm, probably not, unless your rlwrap-like tool has an "echo the command" flag. 07:19:24 I also don't think rlwrap can print a prompt, but... it's a decent idea. 07:19:33 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 Sigh. 07:20:22 -S, --substitute-prompt 07:20:22 Substitute the specified prompt for command's own prompt. 07:20:22 Mainly useful when command doesn't have a prompt. 07:20:31 Right. 07:20:34 elliott: I think you just don't use the qutoes? 07:20:39 shachaf: Yeah. 07:21:12 It seems to echo the input, too. 07:21:36 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 Does "tail -f" really do that sleep-every-few-seconds thing nowadays? 07:22:28 fizzie: -S seems to have annoying side-effects: like it prints a > before every "yay" line. 07:22:38 Since rlwrap kind of assumes that the thing is prompt-based. 07:23:25 elliott: Why would tail -f do that? 07:23:47 shachaf: -s, --sleep-interval=N 07:23:47 with -f, sleep for approximately N seconds (default 1.0) between 07:23:48 iterations 07:24:15 Oh. 07:31:10 Gah, how do I tell rlwrap that the prompt is just whenever I press enter? 07:39:33 write it a letter 07:39:48 begin with... Dear rlwrap: ... 07:39:59 you use the : because you mean business. 07:45:42 I wrote my hide-data-on-fat16-and-retrieve-it program \o/ 07:45:42 | 07:45:42 /< 07:45:46 :D 07:48:02 -!- hagb4rd has joined. 07:48:05 Patashu: pls tell me it wasn't actually in java 07:48:16 Yeah I wrote it in java 07:48:19 U mad? 07:48:42 f7u12? 07:49:38 oh no not a channel I'll never care about ever :'( 07:49:46 your omnipotence, please, have mercy 07:49:52 Excuse me -minecraft is where all the cool kids hang out. 07:49:55 P.S. what should I have written it in 07:50:08 Anything but Java. Or Perl. 07:50:36 I'm basically the ultimate programming scrub 07:50:41 I wrote it in the BlueJ IDE 07:51:06 Can I cause you to stop existing somehow 07:51:49 no 07:51:56 e=mc² 07:51:59 Not you. 07:52:00 Patashu. 07:52:03 Also wrong. 07:52:03 i know 07:52:05 :) 07:52:16 look on the bright side 07:52:18 i'm not itidus12 07:52:19 E = blah blah pc blah. 07:52:27 Patashu: Yes, that is one way in which you are distinctly inferior. 07:52:32 what 07:52:32 Also it's itidus20. 07:52:35 oh oops 07:52:52 Patashu: The #esoteric cable has strongly agreed on the policy of itidus20 supremacy. 07:53:06 supremacy to everyone? 07:53:07 or just me 07:53:33 Everyone. Except fungot. 07:53:33 elliott: to. why, this is for you guys are a lot 08:04:27 fizzie: Hmm, what if the "nc" part was extended so that it printed a recognisable prompt after each input? 08:13:09 "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 LoseThos guy is still most funny guy. 08:14:25 "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 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 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 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 fizzie: Heh. 08:40:02 fizzie: So I guess I should just write my own little ditty? 08:40:11 fizzie: I suppose I'll have to do the same hacks we do in mcmap for decent prompt handling. 08:41:40 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 Right. 08:43:14 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 heh, someone broke sensors-detect code for 2.6.x kernel identification when they fixed it for 3.x kernels 08:43:27 $ sensors-detect 08:43:27 Argument ".35.4-L1" isn't numeric in numeric ge (>=) at /usr/sbin/sensors-detect line 2489. 08:43:27 Kernel version is unsupported (too old, >= 2.6.5 needed) 08:43:33 $ uname -a 08:43:33 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 Upgrade yer kernel. 08:44:49 elliott: I'm doing that atm 08:44:55 anyway yeah, /var/abs/extra/lm_sensors/linux_3.0.patch breaks it 08:45:44 elliott: I haven't booted this system since like late spring 08:45:50 that is why it has such an old kernel 08:46:04 Having one computer simplifies your life dramatically, it's great. 08:46:17 Also not caring about your data I guess is the other component of that. 08:46:43 elliott: well this computer has an IBM Deskstar iirc. So caring about data is clearly out of the question ANYWAY 08:46:53 Heh. 08:47:23 Model Family: IBM Deskstar 60GXP 08:47:24 yep 08:47:42 also known as IBM Deathstar 08:47:46 because they suck so badly 08:48:02 it is on 20 GB anyway 08:48:47 elliott: anyway, I use this computer when I need old hardware. Like a physical serial port. 08:49:14 serial port by USB devices sucks generally. Never got GPIO to work properly for them 08:50:03 Who was it that released 3.0.0 renumbered back to 2.6.40 to avoid breakage? Ubuntu or someone else? 08:50:11 fizzie: red hat iirc 08:50:21 or fedora maybe 08:50:23 one of the two 08:50:43 -!- nooga has quit (Ping timeout: 256 seconds). 08:50:48 "I'm using Linux 2.6.40 (Fedora 15's version of 3.0) and --" apparently so. 08:51:13 shown when upgrading udev: 08:51:15 "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 that is strange 08:51:35 it only motivates the latter change, not the former one 08:51:55 fizzie: I like how Fedora are the ones who always break everything but they couldn't be arsed this time. 08:52:05 Ubuntu ships with the properly-numbered kernel. 08:52:07 not that I use audio, fb or X on that computer... It is headless and lacks sound chipsets completely 08:52:26 I suppose I actually have two computers that I care about, one of them just isn't in this room. 08:52:29 elliott: Possibly their distribution-making scripts were the ones that broke on 3.x. :p 08:52:31 And I guess that will become three sometime. 08:52:39 fizzie: Nah, it was some driver or something. 08:52:43 elliott: I have 4 running atm 08:52:49 I use two regularly 08:52:51 Vorpal: Including remote servers? 08:52:56 elliott: no, as in this room 08:53:07 Vorpal: Include servers. 08:53:18 elliott: well add a VPS that I co-own with a good friend then. 08:53:27 (50/50 split of the cost) 08:53:31 Vorpal: Your life is too complicated. 08:53:53 It's a VPS so it counts as 0.5 computers; co-owning splits that to 0.25. 08:54:01 XD 08:54:08 fizzie: If anything VPSes count as multiple computers, because they're more of a pain than local computers. 08:54:23 Network lag, hard to debug problems when they go dead, probably harder to reinstall the OS, etc. 08:54:25 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 Softwaristically, maybe; hardwaristically at least it's someone else's problem. 08:55:00 elliott: never had that VPS go dead. Good hosting. Xen too. 08:55:14 Vorpal: Then you haven't been running interesting enough things. :-) 08:55:29 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 elliott: well maybe not. IRC server. Website. That is about it iirc. 08:55:38 Let alone use them. 08:55:46 elliott: well yeah there are probably "computers" in stuff like the freezer. 08:56:05 There are computers in my basement, and I never use them. :( *sad* 08:56:10 heh 08:56:24 elliott: anyway I do turn on the ibook maybe once a year or so when I get nostalgic 08:56:32 play some Avernum. 08:56:38 then turn it off and store it away again 08:56:50 or, EV Override. That was a fun game too. 08:56:56 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 There's like two fans in it, and the disks aren't quiet either. 08:57:30 heh 08:57:39 Anybody interested in the Helsinki esolang evening school assignments? http://tinyurl.com/5stnu5n 08:58:09 hm atehwa is from .fi? 08:58:17 yes indeed. 08:58:17 how many of you guys *are* there? 08:58:24 (in this channel I mean) 08:58:34 well, there were ~20 participants in the evening school :) 08:58:41 I meant in this channel. 08:58:45 atehwa: I think he means Finns. 08:58:48 yeah 08:58:54 there might be more on the channel, too, as I recommended the channel to the participants 08:59:04 Vorpal: but now, about 5 from .fi 08:59:07 on the channel 08:59:09 Oh, I wonder if we scared any of those guys off. Actually none of them came, I think. 08:59:24 I just sent them the recommendation 08:59:28 I know fizzie, Deewiant, oklopol and now atehwa are from Finland. 08:59:40 Vorpal: ineiros too. 08:59:43 oh yeah 08:59:44 forgot him 08:59:53 Zwaarddijk too. 08:59:56 And mtve. 08:59:58 (I think?) 09:00:09 I don't think mtve is Finnish, but I'm not sure 09:00:19 I just assumed, what with fizzie. :p 09:00:36 * [aloril] (~aloril@dsl-tkubrasgw3-fe7ef900-153.dhcp.inet.fi): Aloril 09:00:38 There's another one. 09:00:40 elliott: mtve is from US or is using a bouncer or such in US 09:00:42 Oh, and fungot counts too. 09:00:43 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 So there's like eight of 'em. 09:01:30 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 And where was FireFly from? Somewhere in Scandinavia at least, I think. 09:01:32 Just a theory 09:01:36 fizzie: he is from Sweden 09:01:41 so am I, and olsner 09:01:45 and BeholdMyGlory iirc 09:01:59 Vorpal: Hokay. The realname did sound Swedish, but there's quite a lot of those in .fi too. 09:02:04 there's really lots of geeks in Finland, compared to the number of people 09:02:13 + [BeholdMyGlory] (~behold@unaffiliated/beholdmyglory): Arvid <-- hm. Really? 09:02:24 I'm not convinced Finland is actually a country, as opposed to, like... I don't know. 09:02:26 Maybe the demoscene made it up? 09:02:38 fizzie: Confirm/deny? 09:02:42 you know. I never actually met someone with the same first name as me. It isn't /that/ uncommon. 09:02:48 elliott: no, it had been so already before the schene. 09:02:53 *scene 09:02:55 but I never run into someone else with my name. 09:03:00 atehwa: Long-running myth. 09:03:25 lots of sci-fi, fantasy, math, electronics geeks 09:03:26 Speaking of which, ALTparty 2011 next weekend, best get moving if you need to swim across any oceans or so on. 09:03:32 and language geeks, too. 09:03:33 elliott: well, they fooled ICANN pretty well then. 09:03:44 Does anyone know how to convince ls it's talking to a tty, so it'll columnate etc.? 09:04:11 elliott: you could create a tty? Like for example xterm does? 09:04:16 fizzie: In "Helsingrad", apparently. 09:04:32 sounds russian ? 09:05:10 Vorpal: It's Helsinki; it's just that this year's theme is "RED MACHINE". 09:05:20 ah 09:05:53 Also it's reasonably likely that this year is the last year, so try not to miss it. 09:05:59 I wonder if my company will be present @AltParty this year... 09:06:07 fizzie: oh? 09:06:28 fizzie: what is ALTparty about btw? 09:06:40 two years ago, we had some kind of supercomputer there that somebody used to calculate frames for their raytraced animation :) 09:06:51 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 Vorpal: demo scene, and general geekiness 09:07:08 * Phantom__Hoover → Ireland 09:07:12 -!- Phantom__Hoover has quit (Quit: Leaving). 09:07:19 ah 09:07:23 atehwa: Was this the "desktop" Cray CX1 thing? 09:07:48 I don't know the details, I just heard about it after the fact 09:08:19 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 I don't like modern Crays at all. 09:08:43 They're so normal. 09:09:09 elliott: probably because it is cheaper to do it that way 09:09:20 No it is because they are bad people. 09:09:20 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 yeah 09:09:39 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 atehwa: Nooo, it's about the _spirit_. 09:09:53 char should be some stupidly large number of bits. 09:09:58 elliott: I understood as much :) 09:10:03 elliott: that is called a DSP 09:10:04 And preferably PDP-endian just for laughs. 09:10:11 36, preferably. 09:10:18 I don't think cray ever used PDP-endian? 09:10:19 And... say... how about floats are IEEE format, but with the components reversed? 09:10:35 Ooh, and maybe we could have a segmentation model where memory addresses are divided into /three/ components. 09:10:43 But one of the components is two bits less than the rest, and is multiplied by ten. 09:10:53 Also it uses balanced decimal and is a sheep. 09:11:04 elliott: go make this into an esolang 09:11:07 supercomputing sheep. 09:11:13 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 then implement it with VHDL or Verilog 09:11:47 I think the TI C compiler even implements CHAR_BIT==8 on it. 09:11:48 Vorpal: VHDL can do sheep nowadays? 09:11:49 Fancy. 09:12:35 elliott: yeah, use IEEE.std_sheep.all; 09:13:14 Assume a spherical sheep. 09:13:17 Vorpal: AKA "use wales;". 09:13:17 elliott: you could even make it distributed. (the technical term for this is "sheep farm") 09:13:48 (Do Welsh jokes even work on a Scandinavian audience.) 09:13:55 (Are you even aware of the existence of Wales? We barely are ourselves.) 09:14:06 elliott: I'm aware of what a Welsh joke is if that is what you mean 09:14:36 but they don't exist here if that is what you mean 09:15:19 elliott: anyway "use wales;" looks wrong in VHDL. Pretty sure you want use "Wales.all;" then 09:15:44 use whales 09:16:12 elliott: all is a keyword in that context I /think/. It is usually highlighted as one anyway. 09:20:46 insert sheep 09:21:30 Ok, I should be sleeping as of 5 hours ago 09:25:28 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 PROGRESS 09:25:53 elliott: oh? I have no idea who that is 09:26:06 He's come up a few times in here. 09:26:11 He's... "pleasant". 09:26:23 elliott: so not at all then 09:27:19 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 ouch 09:27:57 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 His claimed benefit for removing this would be that it could be hosted on gnu.org FTP. 09:28:28 eh 09:28:42 He's basically rms but less rational and more abrasive. 09:29:17 hah 09:29:34 * elliott wonders if he should switch to NILFS. 09:29:53 why? 09:29:56 The filesystem that can only store empty lists. (Okay, not really.) 09:30:15 Vorpal: It has all that nice snapshotting and versioning stuff. 09:30:20 Plus online resizing?? 09:30:27 Does anyone know how stable it is. :p 09:30:30 elliott: well ext4 has online resizing 09:30:42 Vorpal: And instantaneous snapshotting? 09:30:43 so does jfs and xfs iirc 09:30:49 no 09:30:51 I considered it too, for the snapshots. Never got around doing it. 09:31:01 JFS is my go-to file system. 09:31:10 It doesn't really support online resizing though; it can't shrink. 09:31:15 well yeah 09:31:23 I don't think ext4 can shrink either 09:31:42 I tend to default to ext4 when I have no specific reason for another file system 09:31:59 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 btrfs is Oracle. 09:32:19 elliott: ext4 is stable and reliable though 09:32:33 obsolete by design yes, but stable and reliable 09:32:35 Vorpal: Yes, and it features long fsck times as its primary user-visible feature. 09:32:43 hah 09:32:52 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 That's just setting yourself up for trouble. 09:33:04 hm 09:33:31 is there any tool out there whic convers strings to bf code which prints the string? 09:33:38 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 But I dunno how stable it is. 09:33:44 sadhu: Yes. Tons. 09:33:51 !bf_txtgen sup 09:33:52 sadhu: no. !bf_txtgen doesn't do that at all 09:34:03 well it is slow 09:34:05 !help 09:34:08 ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help . 09:34:12 egobot in general is 09:34:18 !bf_txtgen test 09:34:19 Vorpal: bf_txtgen is a very slow algorithm. 09:34:23 ​61 +++++++++++++[>+++++++++>++++++++>+><<<<-]>-.>---.<-.+.>>---. [35] 09:34:25 elliott: not this slow usually 09:34:55 Vorpal: Usually we run it on known strings :-) 09:35:01 sadhu: How's asm->bf going? 09:35:08 elliott: it doesn't cache afaik? 09:35:12 !bf_txtgen test 09:35:14 ​61 +++++++++++++[>++++++++>+++++++++>+><<<<-]>>-.<---.>-.+.>---. [117] 09:35:15 "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 !bf_txtgen sup 09:35:20 ​50 +++++++++[>+++++++++++++>+>><<<<-]>--.++.-----.>+. [511] 09:35:23 Vorpal: It does; and improves on previous results. 09:35:27 elliott: hm 09:35:30 !bf_txtgen asbdjashd 09:35:31 !bf_txtgen Hello, world! 09:35:32 ​92 ++++++++++++[>++++++++>++++++++++>++++++++>+<<<<-]>+.>-----.>++.++.++++++.<<.>.>--.----.>--. [234] 09:35:33 ​139 +++++++++[>++++++++>+++++>+++>+<<<<-]>.+++++++++++++++++++++++++++++.+++++++..+++.>-.>+++++.<<++++++++.--------.+++.------.--------.>>+.>+. [309] 09:35:38 !bf_txtgen asbdjashd 09:35:40 ​93 ++++++++++++[>++++++++>++++++++++>+++++++++>+<<<<-]>+.>-----.<+.++.>>--.<<---.>.>--.----.>--. [328] 09:35:42 !bf_txtgen hakuna matata 09:35:44 ​126 +++++++++++++[>+++++++++>+++++++>++++++++>++<<<<-]>>>.<++++++.>+++.<<.>>+++.<.>>++++++.<-.<.<-.>.<.>.>>----------------------. [141] 09:35:45 !bf_txtgen Hello, world! 09:35:45 !bf_txtgen Hello, world! 09:35:45 !bf_txtgen Hello, world! 09:35:48 !bf_txtgen Hello, world! 09:35:48 !bf_txtgen Hello, world! 09:35:49 ​139 +++++++++[>++++++++>++++>+++++>+<<<<-]>.+++++++++++++++++++++++++++++.+++++++..+++.>>-.<----.<++++++++.--------.+++.------.--------.>+.>>+. [236] 09:35:49 ​125 +++++++++[>++++++++>+++++++++++>+++++>+<<<<-]>.>++.+++++++..+++.>-.------------.<++++++++.--------.+++.------.--------.>+.>+. [316] 09:35:49 ​126 ++++++++++[>+++++++>++++++++++>++++>+<<<<-]>++.>+.+++++++..+++.>++++.------------.<++++++++.--------.+++.------.--------.>+.>. [984] 09:35:51 ​131 +++++++++++++++[>+++++>+++++++>+++>+<<<<-]>---.>----.+++++++..+++.>-.------------.<++++++++.--------.+++.------.--------.>+.>-----. [753] 09:35:51 ​127 +++++++++++[>++++++>+++++++++>++++>+<<<<-]>++++++.>++.+++++++..+++.>.------------.<++++++++.--------.+++.------.--------.>+.>-. [545] 09:35:53 elliott: it is a genetic algorithm 09:35:55 yes 09:35:57 Great, now they're all going to intermingle. :p 09:37:05 Gah, why doesn't this GHC binary work on pyralspite. 09:37:50 elliott: in what way does it fail? 09:38:33 Vorpal: It literally hangs on startup. 09:38:34 Like, before option parsing. 09:39:21 elliott: try strace? 09:39:36 Fine, more programs on the lean mean server. :p 09:39:48 elliott: strace is like a few kb large 09:40:10 228K says du -h 09:40:50 Realtime/signal bullshit. 09:40:53 VTALARMs all over the place. 09:40:58 It'll be GHC's event manager. 09:41:03 God knows. 09:41:30 elliott: it doesn't hang wrt syscalls anywhere? 09:41:40 No, it just does much the same stuff forever. 09:41:44 hm 09:41:48 could hang in a loop then 09:42:07 Vorpal: No, it's GHC's event manager. 09:42:09 rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0 09:42:10 getrusage(RUSAGE_SELF, {ru_utime={23, 309456}, ru_stime={0, 836052}, ...}) = 0 09:42:10 gettimeofday({1318930854, 544963}, NULL) = 0 09:42:10 getrusage(RUSAGE_SELF, {ru_utime={23, 309456}, ru_stime={0, 836052}, ...}) = 0 09:42:10 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 09:42:10 --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- 09:42:12 rt_sigreturn(0x1a) = 48 09:42:14 rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0 09:42:16 getrusage(RUSAGE_SELF, {ru_utime={23, 321457}, ru_stime={0, 836052}, ...}) = 0 09:42:18 gettimeofday({1318930854, 559230}, NULL) = 0 09:42:20 getrusage(RUSAGE_SELF, {ru_utime={23, 321457}, ru_stime={0, 836052}, ...}) = 0 09:42:22 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 09:42:23 rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0 09:42:26 getrusage(RUSAGE_SELF, {ru_utime={23, 333458}, ru_stime={0, 836052}, ...}) = 0 09:42:28 gettimeofday({1318930854, 572662}, NULL) = 0 09:42:29 getrusage(RUSAGE_SELF, {ru_utime={23, 333458}, ru_stime={0, 836052}, ...}) = 0 09:42:31 etc. 09:42:33 Plus a lot of mmapping. 09:42:35 hm 09:42:43 elliott: maybe another thread hung? 09:43:05 Vorpal: It /doesn't/ /even/ /get/ /to/ /the/ /first/ /statement/. It's hanging in startup. 09:43:10 Probably syscall bullshit since this is oldstable. 09:43:16 ah could be 09:44:14 i have an idea to do it without using GP..with some optimizations 09:44:42 There are lots that don't do GP. 09:44:46 Most of them beat bf_txtgen. 09:45:24 hmm... 09:50:49 elliott: try compiling it with an older ghc? 09:51:00 elliott: btw what is the haskell program you are trying to execute? 09:51:50 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 elliott: the job of mc console handling? 09:52:17 Yes. 09:52:21 It's only twenty-five lines. 09:52:27 elliott: pastebin it 09:52:32 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 Vorpal: http://sprunge.us/aEOV 09:53:30 hm 09:53:46 elliott: why does it use network? 09:54:00 The part where it's a network server? 09:54:09 It listens on a port and merges all lines received into stdout (the console FIFO). 09:54:15 ah 09:54:32 elliott: I was wondering why it would use network for it, as opposed to some in-fifos or whatever 09:54:56 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 hm true 09:55:22 A server is more flexible and >~blah/foo vs. | nc localhost 9999 is not much difference. 09:55:41 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 (i.e., while another program is doing so) 09:55:58 elliott: I don't see it listening only on localhost anywhere 09:56:01 maybe I missed something 09:56:07 Hmm, it doesn't. Maybe I should fix that. :p 09:56:13 elliott: Does it handle multiple concurrent connections? 09:56:15 But... maybe it could be a SPECIAL SURPRISE??? 09:56:20 Vorpal: Yes, of course, that's the whole point. 09:56:48 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 (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 Even if you did want to read it, it wouldn't be the proper job of this program. 09:57:34 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 Vorpal: "save-off" -> "save-all" DoesWIM, right? 10:06:13 (It does.) 10:11:21 elliott: WIM? 10:11:27 WIM. 10:11:32 meaning? 10:11:47 what I 10:11:50 ah 10:12:10 elliott: I forgot if save-all should come before or after save-off 10:12:18 Well, save-off just disables automatic saving. 10:12:26 So it seems like it should be fine to me. 10:12:40 elliott: remember save-on when you are done 10:12:43 Yes. 10:13:33 I really wish this program just worked. 10:14:19 elliott: upgrade from old-stable? 10:14:31 I doubt stable will be much better. 10:14:33 elliott: anyway wouldn't ghc just use the libc? 10:14:38 But it might get me a newer kernel, I suppose. 10:14:46 which does the actual system calls 10:14:57 Vorpal: No shit? 10:14:57 I assume you didn't link it statically? 10:15:16 Tried both. 10:15:18 Doesn't work either way. 10:15:18 hm 10:18:52 elliott: do something like a simple hello world haskell program compiled on your system and uploaded to the server work? 10:18:55 does* 10:20:04 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 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 Vorpal: Sigh, this upgrade is making breaky-sounding noises 11:06:45 elliott: oh? 11:06:53 GRUB doesn't seem to have any idea what to do 11:06:55 elliott: I thought it was a VPS? How could it make noises? 11:06:58 elliott: ouch 11:07:07 /usr/sbin/grub-setup: warn: Attempting to install GRUB to a partition instead of the MBR. This is a BAD idea.. 11:07:07 /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 Installation finished. No error reported. 11:07:08 Generating grub.cfg ... 11:07:10 elliott: wait, is grub even used with xen? 11:07:14 A New Kind of Definition of Error 11:07:20 Vorpal: yes some pvgrub shit i don't even know maybe it doesn't even matter 11:07:25 let's plow on ahead and hope nothing goes wrong 11:07:37 elliott: you could always call support if it fucks up badly 11:07:50 Vorpal: for values of call equal to email 11:07:56 elliott: well yeah 11:08:15 okay let's 11:08:15 elliott: anyway why are you trying to install it to a partition? 11:08:16 try rebooting 11:08:27 Vorpal: it demanded I told it which partitions to auto install grub to 11:08:31 i picked the most likely-looking one 11:08:39 guess i picked wrong!!! 11:08:51 elliott: you should have picked like /dev/sda or whatever it is called I guess? 11:08:53 ok reboot time. rip vps 11:09:01 Vorpal: yeah no there was like five and they all start with xvd 11:09:09 elliott: the one with least numbers? 11:09:19 all but one had numbers 11:09:21 erm 11:09:23 opposite of that 11:09:24 in retrospect 11:09:27 not sure why i picked the one with the number 11:09:30 oh well 11:09:39 elliott: well it might still boot with the old copy of grub. Perhaps 11:09:41 if this ssh connection works i will be- 11:09:43 holy shit it connected 11:09:47 i guess it really doesn't use grub 11:10:03 elliott: either that or it works with the old copy of grub 11:10:14 sure, oh well 11:10:17 WFM 11:10:25 for now at least 11:10:33 elliott: don't even think about switching to grub2 though 11:10:42 Vorpal: that's what the upgrade tried to do 11:10:46 oh 11:10:53 elliott: then I bet it doesn't use grub 11:11:00 like i said 11:11:01 it's pvgrub 11:11:03 whatveer that is 11:11:06 right 11:11:10 http://wiki.xen.org/xenwiki/PvGrub 11:11:17 "it runs the regular grub inside the created domain itself" 11:11:28 neat, haskell program still doesn't work 11:11:34 ouch 11:11:50 Version: 6.12.1-13 11:11:55 heh 11:12:00 nice, it's only over a year old 11:12:02 no wait 11:12:04 almost two years 11:12:06 right 11:12:14 maybe i should run experimental on this 11:12:19 elliott: what about using backport of a newer ghc? 11:12:27 aren't there a backports repo for debian 11:12:27 Vorpal: ugghhh 11:12:35 i doubt ghc will be backported :P 11:12:38 well okay 11:13:01 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 XD 11:13:32 elliott: or rewrite that program to work on older ghc 11:13:38 or write the program in another language 11:13:46 and miss the benefits of an event manager; and want to kill myself 11:13:47 I'm not suggesting C here 11:13:48 respectively 11:13:52 i actually really like openbsd's distro/install mechanism 11:13:53 like 11:13:55 it's so retro 11:14:00 well yeah 11:14:01 all the filenames are the exact same length 11:14:03 and there's like 11:14:06 xcore.tgz 11:14:10 it's just 11:14:12 i don't know 11:14:14 it just makes me happy 11:14:51 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 I have no idea if NetBSD and other *BSD do it that way as well 11:15:08 instead of ports, you should just download bsd.tgz 11:15:14 which is every single piece of software in binary form. 11:15:20 it's like, the size of Debian. 11:15:24 and it's all installed simultaneously. 11:15:32 whatever 11:15:39 no that would be so convenient 11:15:40 to upgrade 11:15:43 you just download a new bsd.tgz 11:15:44 and unpack it into / 11:15:52 elliott: and removed files? What removes them 11:16:08 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 elliott: well, lets say the new version no longer uses /sbin/foobaz but instead does it a different way? 11:16:54 Vorpal: symlink 11:17:13 elliott: it is something executed from startup scripts, nothing the user would run manually 11:17:21 -!- nooga has joined. 11:17:23 symlink to maintain old startup scripts, duh 11:17:28 you have to write those yourself. 11:17:30 elliott: besides there might not be single tool that replaces it :P 11:17:41 never remove software. 11:17:43 that removes choice 11:17:45 just add more of it 11:17:50 elliott: come on, openbsd is not quite the same as LFS for BSD 11:18:03 oh good idea you should just download kern.tgz 11:18:06 then gcc.tgz 11:18:12 and then you have to compile everything yourself 11:18:17 actually openbsd should just be an abstract concept 11:18:25 elliott: actually I think you need like binutils.tgz roo 11:18:26 too* 11:18:26 any bsd created sufficiently manually is openbsd 11:18:33 above line should be entire contents of openbsd.org 11:18:41 Vorpal: that's included in gcc.tgz 11:18:45 to comply with the GFDL 11:18:55 how...? 11:18:57 `quote GFDL 11:19:05 146) * Phantom_Hoover wonders where the size of the compiled Linux kernel comes from. To comply with the GFDL, there's a copy of Wikipedia in there. 11:19:16 heh 11:19:25 yeah the GFDL is a strange beast 11:21:38 honestly, if I had a "phat" enough "pipe", I would just run a server from home 11:21:47 but i live in an "unphat" "england" 11:22:35 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 that is quite amazing 11:25:14 -!- oerjan has joined. 11:25:51 haha, arch has finally moved into debian territory 11:26:41 elliott: oh? 11:26:46 they have a testing repo now 11:26:51 elliott: that is old 11:26:57 not that old 11:27:06 elliott: they had it when I started using arch 11:27:17 huh, guess they just started exposing it recently 11:27:36 elliott: well it is just that the time in testing is really fast. Normally like a few weeks at most. 11:31:52 Vorpal: What, Arch doesn't have lilo support any more. 11:32:01 okay? 11:32:04 I think I'm going to ragequit reality. 11:32:21 elliott: I don't remember when it last had lilo 11:32:27 Last time I used it. 11:33:22 nilfs + syslinux; gotta be non-traditional. 11:33:52 XD 11:34:45 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 elliott: XD 11:35:18 Like, "oh, I literally keep my entire filesystem in CVS." 11:35:22 heh 11:35:30 elliott: yeah, my setup doesn't boot on a non-custom kernel 11:35:38 Or, "oh, I actually have /usr/local/share and /usr/local/lib on different partitions; the latter is ten gigabytes." 11:35:42 at least with the stock kernel in arch 11:35:44 it won't book 11:35:46 boot* 11:35:58 Vorpal: s/on a non-/without a / 11:36:07 elliott: yeah 11:36:50 "Oh, I actually telnet in to a Lisp Machine for IRC." 11:36:51 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 "Nothing beats real Emacs editing." 11:37:06 "Don't talk to me about that GNU imitation." 11:37:09 "``''" 11:37:13 someone need to make a telnet server in elisp 11:37:34 Vorpal: So that dry ice cream, what was the texture like. 11:37:57 elliott: err, trying to remember the word for what I'm thinking about... 11:38:10 Pizza? 11:38:18 Maybe it was actually pizza, if so. 11:38:32 elliott: google translate gets it as meringue. Really dry such 11:38:42 the taste however, nothing I ever tasted before 11:38:45 Aww, so it wasn't chewy or anything? 11:39:02 elliott: it was kind of sticky when it got into your mouth 11:39:05 very sticky 11:39:07 I was imagining, like, fudge, except ice cream flavoured. 11:40:11 Vorpal: I like how Arch is zero point zero point two kernel releases ahead of the actual kernel. 11:40:17 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 Clearly you just need to soak it. 11:40:38 elliott: everything kind of is. 3.0.4 is still listed on kernel.org 11:40:56 Vorpal: Oh, is three point zero point six out, just not on kernel.org? 11:41:03 elliott: I don't know 11:41:15 I thought that's what you were saying. 11:41:37 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 Custom vanilla. 11:42:03 oh you said ahead. Thought you said behind 11:42:11 elliott: well custom as in not stock distro 11:42:20 and vanilla as in downloaded from kernel.org with no patches 11:42:25 so yes custom vanilla 11:42:25 Maybe I should just use Nix. 11:42:31 Vorpal: What, not even BFS? 11:42:35 elliott: BFS? 11:42:40 Big Fucking Sword? 11:42:49 Boulder Frandomising Sasquatch. 11:42:57 elliott: so what is BFS? 11:42:59 It's a patch that frandomises process boulders with a sasquash. 11:43:05 Vorpal: Con Kolivas' scheduler. 11:43:23 elliott: IO scheduler or CPU scheduler? 11:43:29 CPU. 11:43:36 It's the Brain Fuck Scheduler that made the rounds a year or so ago. 11:43:41 For desktop use. 11:43:53 yeah I never had any issues with the default scheduler on my desktop. Never noticed any issues 11:44:00 http://ck.kolivas.org/patches/bfs/reverse-scalability.png etc. 11:44:00 and don't fix what isn't broken 11:44:31 elliott: what is cfs? 11:44:45 Completely Fair Scheduler, the sole scheduler the kernel lets you use. 11:44:50 ah 11:44:59 (Completely Fair in that if you have a billion CPUs it's technically "the best".) 11:45:09 elliott: looks like CFS is slightly better at very large -j 11:45:25 Vorpal: No, the four point in green is lower than any red... 11:45:51 elliott: I mean at make -j12 on both for example 11:45:53 Vorpal: In bfs, -j is basically always optimal. 11:46:01 And yes, but why would you run a non-optimal -j? 11:46:02 elliott: oh I thought it was with 12 cores 11:46:06 No, four. 11:46:32 elliott: anyway what about HT? 11:46:42 would -j8 be best for me then? with 4 cores + HT 11:46:43 HT = cores for scheduling. 11:46:52 Just pretend you have twice the cores. 11:47:05 [...] Took quite a bit of work to get it away from my teeth using a toothbrush. <-- So you accidentally ate glue? 11:47:26 oerjan: no. Freeze dried ice cream 11:48:15 (It's Vorpal's code for glue.) 11:48:23 XD 11:49:07 * elliott wonders why literally nobody runs X/WM at high priority. 11:49:17 I guess bfs' isochronous priority is good there. 11:49:50 elliott: X/WM? 11:50:01 X and WM. 11:50:04 ah right 11:50:25 Yay, resulting system does not boot. 11:50:50 elliott: what? your vm? 11:50:54 err 11:50:55 vps 11:50:56 Yes. 11:50:57 VM. 11:51:24 I wonder why; the flags and partitioning all looks right. 11:51:31 so not the vps then 11:51:44 elliott: which distro are you using in the vm? 11:52:07 I'm giving one last try of Arch in a VM before I declare it completely useless. 11:52:44 elliott: well, did you do some sort of strange setup? 11:52:52 elliott: also what error does it give 11:52:53 syslinux probably counts as strange. 11:52:58 ah yes 11:53:00 Vorpal: no bootable medium 11:53:15 elliott: then don't declare arch linux useless. Declare syslinux useless 11:53:34 Arch Linux is useless if it'll install an unworking configuration. 11:53:57 elliott: it let you select syslinux in the installer? 11:54:09 Yse. 11:54:10 Yes. 11:54:13 elliott: that isn't the same as useless though. A bug yes. 11:54:25 No, it's useless for that and everything else. 11:54:42 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 Maybe I should just take the plunge and become a Slackware addict. 11:58:36 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 Vorpal: Convince me not to just run Tiny Core. 12:06:36 On everything. 12:06:56 elliott: what is Tiny Core? 12:08:00 You know, the ten meg thing. 12:08:06 nope? 12:08:17 Your brain is a sieve. 12:08:27 possibly 12:26:43 -!- SimonRC has quit (Ping timeout: 260 seconds). 12:27:37 Don't you usually sniff glue rather than eating it? 12:29:19 -!- pikhq has joined. 12:29:41 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 :D 12:30:57 so by "you" you mean "i"? O KAY 12:32:47 oerjan: It was the indefinite you. 12:33:51 i wouldn't trust a glue-sniffer looking guy on that. 12:34:58 Like the old saying of the jungle goes: the You that can be spoken is not the eternal You. 12:37:05 Laozi the king of the jungle 12:37:35 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 i am referring to the "you"/"i" switch, here. 12:40:52 There was no switch to refer to. You just haven't got a glue. 12:41:48 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 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 "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 no burnchurchway, though 12:48:33 I almost went with "Burnchurchland", but at the last minute wanted the way of Norway in too. 12:49:55 hey we have to use the nice old wooden churches for _something_ 13:00:15 -!- SimonRC has joined. 13:06:05 oerjan: that thing about Norway went over my head, what did it refer to? 13:16:52 "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 Oh, you let him walk free. 13:23:08 I always thought Vikernes should be Finnish. 13:23:14 It just seems to fit him better. 13:23:18 We only have copycats in our copyland. 13:23:27 You're basically all murderers-in-waiting. 13:23:32 ("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 fizzie: Well, he claims to have not burned any churches. 13:23:49 http://en.wikipedia.org/wiki/File:Church.20060530_PM.porvoo_of_finland.ojp.jpg 13:23:54 (He admits the murder thing though.) 13:24:00 Churches are just too far. 13:24:10 fizzie: What is it with your churches? They're so small. 13:24:23 Small country, small churches. 13:24:44 fizzie: I'm pretty sure you're a larger country than us. 13:26:02 Okay, land-area-wise we arere 1.256 yous. Maybe it's not the size but how you use it. 13:26:07 Arere. 13:26:09 Arererere. 13:27:01 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 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 fizzie: Got a link? 13:27:31 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 I'll see if I can google it. 13:28:06 http://en.wikipedia.org/wiki/Kerim%C3%A4ki_Church 13:28:25 Big church, small WP article. 13:29:38 fi.wikipedia on amputation: "This medical article is a stub." 13:29:51 Oh, you let him walk free. <-- he's even published new music 13:30:22 oerjan: He did that from jail, too. (I read up on him once because it was interesting.) 13:30:30 oh maybe 13:31:02 He really does have the best possible face for a murderer. I mean, if you ask me. 13:31:42 He does seem to be contemplating murder in the Wikipedia infobox too. 13:32:27 Let's consult Wikipedia on this controversial issue. 13:32:29 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 6resurected6satan6 1 year ago 33 13:32:35 6resurected6satan6 weighs in. 13:33:46 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 fungot: Your turn. 13:33:53 elliott: ( c) a player 13:33:57 Ah. 13:34:01 What style's it on. 13:34:14 I suppose its own still. 13:34:16 ^style 13:34:16 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 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 No-one mentioned these clown shirts when they were polling for available volunteers. 13:36:36 ouch 13:36:42 fizzie: How did you get that static GHC binary onto fungot-machine again? 13:36:42 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 fizzie: you should wear red noses just for the sarcasm 13:37:09 elliott: I have a GHC binary there? 13:37:19 fizzie: You did, once, for a test. 13:37:37 elliott: I can't recall at all. But certainly if you say so. 13:37:48 fizzie: You will clearly be a great help. 13:38:05 oerjan: I don't think I can improvise a red nose in twenty minutes. 13:38:25 fizzie: How did you get that static GHC binary onto fungot-machine again? <-- using floppies 13:38:25 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 the actual floppy kind of floppy too 13:39:09 (8-inch) 13:39:44 We had 8-inch floppies for throwing (target, not distance) at one staff christmas party here. 13:40:04 heh 13:40:18 fizzie: how could you do that with valuable museum treasures! 13:40:33 Oh, I'm sure they survived just fine. They built to last those days. 13:41:12 yeah tutankhamon's computers were rock solid 13:41:33 You're going to get that "King Tut" song going in my head. 13:41:39 Hmphs. 13:41:51 I will sit here stubbornly until someone solves my problem. 13:41:59 elliott: you have a problem? 13:42:10 oerjan: Yes. My program doesn't work on my VPS. 13:42:28 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 :/ 13:42:35 too bad i don't have a glue then *MWAHAHAHA* 13:43:12 oerjan: http://www.youtube.com/watch?v=Bl5dZxA-rZY 13:44:11 fizzie: oerjan doesn't do the sound thing. 13:44:18 Oh. Sad. 13:45:00 "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 Also referred to as a "feather". 13:45:53 it even has fucking gnu coreutils for ls 13:45:54 and so on 13:45:59 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 this is less exotic than *BSD 13:47:07 (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 okay mount output is backwards 13:47:35 fizzie: oerjan doesn't do the sound thing. <-- oh, i actually did for once. 13:47:38 $ mount 13:47:40 / on rpool/ROOT/openindiana read/write/setuid/devices/dev=1810002 on tors jan 1 01:00:00 1970 13:47:43 oerjan: gozsh. 13:47:45 ... 13:47:47 s/z// 13:48:04 with it not being the middle of the night and stuff 13:48:56 but it still feels awkward. 13:50:08 Vorpal: What, no CDE? 13:50:34 fizzie: indeed. It is plain old Gnome 2. And ls is the boring one from GNU Coreutils. 13:50:34 I don't think there's CDE in real Solaris by default either, though. 13:50:44 (Any more, that is.) 13:50:47 fizzie: oh it could be there I guess but not default 13:50:58 Welp, downstairs. 13:50:58 I haven't used it for more than like 20 minutes 13:53:32 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 `quote dynamic indentation 15:07:17 77) 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 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 Apparently it really isn't there in OpenSolaris either. 15:13:25 heh 15:19:16 -!- MDude has quit (Ping timeout: 252 seconds). 15:20:14 -!- MSleep has joined. 15:20:33 (Away again; this time homeward bound.) 15:22:09 (I only have a partial backlog, but:) 15:22:11 CDE sucks horribly anyway. 15:22:19 -!- sadhu has joined. 15:22:28 Plus, XFCE was originally a clone of CDE. 15:22:31 Gregor: I hear it runs ChatZilla admirably. 15:22:33 Then they went "Oh wait, CDE sucks." 15:22:42 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 `addquote (Of Minecraft:) 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 703) (Of Minecraft:) 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 thing that confused me a while ago: another channel discussing ZZT without automatically assuming the everyone else knew what it was 15:54:21 heh 15:59:04 also, I just received an interesting offer via email 15:59:15 the people who actually own the copyright to the final versions of two of my papers 15:59:38 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 i.e. filtering by referrer 15:59:55 what's the catch :P 15:59:58 it's an interesting business model suggestion, at least 16:00:09 interesting ~ awful 16:00:10 elliott: creating an account with them, for one thing 16:00:20 yep, I'm trying to figure out how the business model works there 16:00:24 ais523: oh; it's easier to get the paper by other means, then 16:00:28 so it'll never work 16:00:47 well, I suppose it might be harder finding the copies of _yours_ hanging about on the public webspace :-P 16:00:57 elliott: well, the email mentioned in passing that they only have the copyright of the final version, not of drafts 16:01:06 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 People just change like three words before actually submitting it to make that work, right? 16:01:29 so presumably they're trying to get things like usage statistics in the situation where people would otherwise check drafts 16:01:31 It would be annoying if there was a risk of actual substantial changes 16:01:37 elliott: not even that, they put "this space is reserved for the copyright notice" 16:01:40 haha 16:01:45 and then the publisher removes that when putting the copyright notice in 16:01:47 that's a change 16:01:58 academic publishing is the most insane business model I've ever heard of 16:02:56 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 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 I don't think I've linked my latest paper to the channel, anyway; it's about compiling recursion into hardware 16:04:40 it's probably harmless, but I don't know that I'd want to support such a silly business model 16:04:50 ais523: I'd read it (and pretend to understand it) 16:05:08 http://www.cs.bham.ac.uk/~drg/papers/icfp11.pdf 16:05:13 same ICFP who do the contest, incidentally 16:05:22 I would not expect otherwise 16:05:36 ais523: that's not computer modern :'( 16:05:43 (ok, I don't like computer modern, but times is worse) 16:05:45 isn't it? 16:05:47 * ais523 looks 16:05:51 (at least the times on here) 16:06:20 you're right, it looks like some Times variant 16:06:38 "Unfolding finite recursion in space" 16:06:45 missed opportunity for excellent title, there 16:06:51 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 it's basically a TARDIS, right/ 16:07:10 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 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 heh 16:08:25 ais523: gcc four point oh? 16:08:28 even OS X isn't /that/ bad 16:08:35 elliott: it was indeed on OS X 16:08:38 I have no idea which version 16:08:41 leopard 16:08:44 but why such an old compiler? 16:08:59 For the record, OpenSolaris: gcc (GCC) 3.4.3 (csl-sol210-3_4-20050802) 16:09:02 I just did gcc --version 16:09:09 Deewiant: it's as old as NetHack! 16:09:11 Deewiant: Nice 16:09:18 ais523: NetHack released in ohfive??? 16:09:27 elliott: no, NetHack released in 3.4.3 16:09:28 elliott: No, but it's 3.4.3 16:09:30 heh 16:09:38 -!- augur has quit (Remote host closed the connection). 16:10:01 there should be a way to link your kernel into an executable too 16:10:05 so that static linking would actually solve my problem 16:10:20 elliott: static VM? 16:10:20 What is your problem 16:10:42 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 Looks like something's fucked in the event manager; I've no idea what or why or how to fix 16:10:58 heh 16:10:59 ais523: Yes, exactly 16:11:27 oh right, that reminds me of some insane code I wrote recently 16:11:37 oh no 16:11:43 don't worry, it's C 16:11:46 oh no 16:11:50 :-D 16:12:27 I'll remove the explanatory comments so you get the full effect 16:12:31 oh no 16:13:18 { 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 the 100 is a reasonably arbitrary number; the 64000 isn't 16:13:42 i 16:13:45 really, they should both have been #defines but I was being lazy 16:13:59 ais523: something about forcing pages to be reserved or filled or something? 16:14:08 close, but not perfect 16:14:12 notice the memory leak, it's deliberate 16:14:13 ais523: disk sectors? 16:14:15 hmmm 16:14:22 ais523: is it so you can overrun the buffer somehow? 16:14:28 nope 16:14:34 :( 16:14:40 OK, clue: think about the system calls involved 16:14:51 * elliott isn't sure he wants to... 16:14:52 hmm 16:15:02 ais523: trying to cause an overflow of some kind? 16:15:10 They depend on the system / libc 16:15:17 elliott: no, but you're thinking more along the right lines 16:15:20 Deewiant: indeed; Linux / glibc 16:15:35 hmm 16:15:51 the idea is portable to most other systems and libcs, though, even if perhaps the exact numbers aren't 16:15:58 ais523: is it about corrupting or otherwise modifying for a purpose in a non-standard way internal structures of the allocator? 16:16:10 i.e., arranging them specifically? 16:16:15 sort of 16:16:23 it's not about corrupting, the resulting situation is not corrupt at all 16:16:29 it is modifying for a purpose, though 16:16:33 and the purpose is related to syscalls 16:16:48 (incidentally, this has nothing to do with the Secret Project, although it /looks/ like it) 16:16:49 Changing the program break? 16:16:53 Deewiant: yep 16:16:57 can you figure out why? 16:17:01 i, err, sbrk? 16:17:20 elliott: OK, what the code's doing is to get malloc to call sbrk at a particular location 16:17:40 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 yikes 16:18:00 And why do you do want to do that 16:18:02 then it's freeing most of the memory between the break and the old end of the heap 16:18:06 Deewiant: that's the question 16:18:10 if you give up, I'll tell you 16:18:24 I gave up, maybe elliott didn't 16:18:28 i give up 16:18:29 and also 16:18:30 cry 16:18:31 a bit 16:19:02 the reason, is so that future memory allocations /don't/ call sbrk 16:19:06 until memory fills to a certain size 16:19:09 heh 16:19:10 why? 16:19:11 speed? 16:19:14 security 16:19:16 wat 16:19:25 it's immediately followed by the prctl that disables all but four syscalls 16:19:30 heh 16:19:45 brk is not one of those four 16:19:55 so /without/ doing that, the resulting code wouldn't be able to allocate any memory 16:20:03 and then using too much memory kills the program? 16:20:07 yep 16:20:08 why couldn't you just use brk before doing it? 16:20:14 because malloc wouldn't know I'd done that 16:20:25 incidentally, the reason "why 64000" is that at 65536, glibc malloc starts using mmap instead 16:21:23 -!- Ngevd has joined. 16:21:29 heh 16:21:32 Hello! 16:21:41 ais523, wiki spam 16:22:04 otherwise I'd just use a big alloc then a small one 16:22:06 Ngevd: thanks 16:22:27 You're welcome! 16:22:36 and deleted 16:22:49 There's a page as well? 16:23:16 oh, I missed one page 16:23:21 as it wasn't in RSS yet 16:28:02 So, what's up in the world of esoteric programming? 16:28:28 nothing 16:28:35 I spent today writing a pointless report, but it's motivated me to work on Anarchy 16:28:47 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 theory: ais523 is actually ireland 16:32:48 Republic or Northern>? 16:33:01 presumably the physical island 16:33:07 which includes both 16:33:08 whichever one PH has gone to 16:33:18 it only makes sense that when PH disappears, ais523 appears 16:34:08 I made marshmallows! 16:34:42 ah 16:39:53 It's someone in my ancient history class's birthday today 16:40:07 I mean tomorrow 16:40:12 I am confused and tired 16:43:52 For the enthusiast who wants to run older operating systems, the option is there to allow you to make that decision. 16:44:08 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 Yesterday at the night time, I put the tides in my gopher service. 17:23:14 -!- Ngevd has joined. 17:24:09 Hello! 17:25:49 Do you like tides on my gopher service? 17:32:27 I'm not entirely sure I see the point 17:32:37 I'm not entirely sure what a gopher service is 17:33:06 It is on my computer on port 70 17:38:55 -!- zzo38 has quit (Remote host closed the connection). 17:39:25 looks like somebody already found an exploit; 17:41:19 -!- variable has quit (Excess Flood). 17:41:29 Wasn't me 17:41:33 CakeProphet: wfm 17:43:09 -!- variable has joined. 17:44:17 elliott: one moment while I look up your insane acronyms. 17:44:28 ah. 17:44:59 elliott: yes okay I will wait for you. :P 17:45:10 I will wait for you while I Work From Home. 17:45:31 as a Workflow Manager in the World Federalist Movement. 17:45:37 also, What Freakin' Manual? 17:45:50 *Fucking 17:46:19 whatever I'm going to the Whole Foods Market. 17:46:27 though I doubt they sell a Waveform Monitor. 17:46:46 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 CakeProphet: I suspect it was "works for me" 17:53:19 Vorpal: oh...? 17:53:21 works for me. 17:53:37 CakeProphet: wfm most often means "works for me" when elliott says it I found. 17:58:18 ah yes 17:58:29 it was the first choice on this website I found.... 17:58:36 but, I figured, too obvious. 17:58:40 must be one of these other things. 17:58:48 -!- boily has joined. 18:01:16 i just coded a rough string to brainfuck converter 18:01:26 its pretty simple but it can do some optimizations 18:01:26 is "string" a language? 18:01:34 lol no 18:01:40 so you wrote a brainfuck interpreter? 18:02:03 No, a text to brainfuck converter 18:02:04 no you input the string and it generates the brainfuck code to print it 18:02:14 ohhhh 18:02:15 right. 18:02:21 https://gist.github.com/cf21d4abee8853ceb9e3 18:03:57 wow Uncyclopedia is so bad. 18:05:08 it's the collective humor of hundreds of people who have a terrible sense of humor 18:05:28 many of them probably Wikipedia editors, or people who pretend to be wikipedia editors (....?) 18:06:35 -!- augur has joined. 18:18:25 http://en.wikipedia.org/wiki/Category:American_cuisine 18:18:29 hahahaha frito pie 18:18:31 I've had one of those. 18:18:48 frito, as in potato chips? 18:19:13 corn chips, but yes 18:19:43 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 oh, this kind of pie! 18:20:07 sounds delicious. 18:20:11 America is the best at food. 18:20:49 we just take everyone elses food and mix it together with our own shit. 18:23:04 Hmm, GHC totally needs a way to force a thread to execute some code. 18:23:30 I've had an idea for a programming language 18:23:35 Ooh, I bet I can do this with alwaysSuceeds. 18:23:36 esoteric, that is 18:23:39 elliott: is this yours https://github.com/ehird ? 18:23:46 yes, that's me 18:23:51 ehird forked waferbaby/usesthis 1 day ago 18:23:51 Forked repository is at ehird/usesthis 18:23:51 wtf? 18:23:54 i never did that 18:24:00 * elliott deletes... 18:24:40 elliott did you checkout that str2bf 18:24:48 yeah, it looks better than bf_txtgen :P 18:24:53 Anyway, my idea for a new esolang 18:25:09 An imperative language with ONLY functional features 18:25:27 Probably been done before 18:26:10 -!- derdon has joined. 18:26:26 Ngevd: Lisp? 18:26:26 In pseudo javascript: 18:26:55 var x = function(x) {function(y) {x}}; 18:28:14 Actually, imagine python with only lambdas and variable assignations 18:28:14 Maybe input and print, too 18:28:37 anyone here clueful with gnuplot ? 18:28:40 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 Or some variation thereof 18:37:03 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 oklopol wrote a bf interp like that, it's not uncommon 18:37:31 hm, I haven't seen that one 18:38:08 anyone here clueful with gnuplot ? <-- try fizzie. He knew when I asked some gnuplot questions a while ago 18:38:33 cool 18:38:44 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 Hrm. What's ind_var? 18:42:43 fizzie: independent varibale 18:43:09 (in my case, the size of branch prediction table for a simulator) 18:43:50 fizzie: my file now looks like testname | ind_var | y_plot_1 | y_plot_2 18:44:20 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 hrm? 18:44:44 * variable is not gnuplot clueful 18:46:21 I think I need to test it before I say something that's probably not immediately correct. 18:46:30 But how do you want to indicate the differences? 18:46:41 on the y cord. 18:46:44 * y axid 18:46:46 * y axis 18:47:17 Right, but do you want for each test an arrow from the old value to the new one or what? 18:47:17 elliott: got a link to that "Nix"? Searching is useless, just turns up matches for people writing *nix 18:47:25 http://nixos.org/ 18:47:28 thanks 18:47:28 NixOS is the thing to google. 18:47:33 right 18:47:47 * elliott considers rolling NixOS + nilfs. 18:47:49 no obvious download link. Heh. 18:47:50 ON THE EEEEDGE. 18:48:03 ah there 18:48:50 oh god, it is gentoo stage3 kind of thing to install 18:48:56 well not quite 18:49:00 Vorpal: No, it's binary-based. 18:49:02 lots and lots of manual commands though 18:49:09 (Or the difference between the old and new as a signed value indicated by the point?) 18:49:28 Vorpal: Doesn't look that bad to me. 18:49:33 elliott: yeah but I meant as in, no installer (GUI or ncurses or even the openbsd style of asking questions) 18:49:36 It's "partition, run a few Nix commands, rbeoot". 18:49:39 s/rbe/reb/ 18:50:05 fizzie: https://en.wikipedia.org/wiki/File:NO2_Arrhenius_k_against_T.svg something like this 18:50:17 where X = size of branch table 18:50:31 y = new - old 18:50:34 Vorpal: I like how it has special instructions for Pidgin-LaTeX in the manual. 18:50:35 Priorities. 18:50:40 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 Vorpal: Tiny Core is quite fun in a VM, at least, especially with its funky package mounting system. 18:51:24 Vorpal: ReactOS ? 18:51:35 variable: ew 18:51:41 -!- Nisstyre has quit (Ping timeout: 248 seconds). 18:51:44 Vorpal: :) 18:51:55 elliott: oh? package mounting? Hm... Web search turns up github and so on. No obvious place to download an ISO 18:52:08 google gives http://tinycorelinux.com/ as first link 18:52:16 elliott: was using DDG 18:52:27 haven't bothered to set ddg on this new install yet 18:52:31 ah 18:52:53 but yeah, a ten meg bootable Xorg system + graphical package manager is impressive in anyone's book 18:52:53 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 though flinix of course wants to do it in one and a half. 18:53:36 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 elliott: no mesa I presume? 18:54:10 Vorpal: Well, everything's in a package. :p 18:54:20 elliott: so how do packages work in there? 18:55:01 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 heh 18:55:09 Vorpal: Mounted loopback from the tarball 18:55:15 elliott: are there many packages available? 18:55:19 Shitloads 18:55:25 It has all of KDE, etc. 18:55:40 hm 18:55:43 xfce too I hope 18:55:51 It was an example for size. 18:55:57 elliott: hm which one: TinyCore | MicroCore | MultiCore 18:56:22 and where are the 64-bit downloads? 18:56:33 Vorpal: Middle one doesn't have any kind of X at all. 18:56:36 multicore is some kind of bundle thing. 18:56:49 hm 18:56:56 And it apparently supports sixty-four bit says WP, but I dunno how. 18:57:09 http://distro.ibiblio.org/tinycorelinux/4.x/ 18:57:12 -!- Nisstyre has joined. 18:57:16 Shrug. 18:57:26 hm 18:57:54 Just get the thirty-two bit one, YAGN that ram :P 18:58:11 ibiblio is so slow. I get 20 kb/s from it, as usual 18:58:29 http://upload.wikimedia.org/wikipedia/en/timeline/7ca54bb4dd52eef1ecd02ebd1f481d04.png 18:58:32 Good timeline. 18:58:39 -!- Nisstyre has quit (Max SendQ exceeded). 18:59:18 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 Vorpal: Six gigs of what 18:59:33 elliott: ram? 18:59:38 Why, it's Tiny 18:59:53 elliott: well, why not? I still have 10 for the host 19:00:04 Because it'll only see four of it? 19:00:05 -!- Nisstyre has joined. 19:00:12 elliott: yeah fuck the 32-bitness 19:00:17 elliott: anyway there is PAE 19:00:24 I don't think you quite understand how Tiny the Tiny part of Tiny Core is 19:00:40 elliott: that was disk space, not ram ? 19:00:47 It's everything. 19:00:52 It would practically run on a toaster. 19:02:21 so would ubuntu if you equipped the toaster with 10GB of storage and >=1GB of RAM 19:03:31 That could almost run Windows Vista 19:05:43 atomically :: STM a -> IO a 19:05:44 atomically (STM m) = IO (\s -> (atomically# m) s ) 19:05:46 Fuck primitives 19:06:49 elliott: http://hpaste.org/52806 19:06:53 isn't it cute!? 19:07:09 copumpkin: Totally 19:07:33 gah keymap 19:07:50 -!- oerjan has joined. 19:08:17 old_trec = StgTSO_trec(CurrentTSO); 19:08:17 /* Nested transactions are not allowed; raise an exception */ 19:08:17 if (old_trec != NO_TREC) { 19:08:17 R1 = base_ControlziExceptionziBase_nestedAtomically_closure; 19:08:17 jump stg_raisezh; 19:08:18 } 19:08:21 Why you gotta be so unoverridable 19:08:40 elliott: Really, why are you trying to do that? 19:08:55 shachaf: SHHHHHHHHH I know it's safe because it's right at the end of the transaction. 19:08:57 It's like a tail-call. 19:10:34 shachaf: OK fine, here's a clue: 19:10:35 go <- newEmptyTMVar 19:10:36 alwaysSucceeds $ takeTMVar go >> unsafeIOToSTM act 19:10:36 putTMVar go () 19:11:38 elliott: tiny core is not an option unless I can get the correct keymap in the installer. Too painful otherwise 19:11:51 Vorpal: Why are you installing it? 19:11:52 It runs from rAM. 19:11:53 RAM. 19:11:58 It has a keymap setter built in to the preferences thing. 19:12:11 elliott: looked in the control panel, I see no keymap optionj 19:12:13 option* 19:12:48 elliott: besides running it from a CD such changes such as setting keymap won't persist 19:12:51 Pretty sure there is, but you could just tell X about it directly 19:13:25 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 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 shachaf: See, you should be helping me now. 19:13:41 elliott: As a matter of fact, I don't see. 19:13:53 shachaf: Poor you. 19:14:40 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 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 shachaf: The real real answer is that I'm trying to implement onCommit :: IO () -> STM (). 19:16:36 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 elliott: Isn't there already an implementation of onCommit? 19:18:01 @hoogle onCommit 19:18:02 No results found 19:18:07 shachaf: Yes, in another monad. 19:18:13 shachaf: I'm making one that works directly without any changes. 19:18:27 shachaf: I already have one that works perfectly except you need to s/atomically/atomicallyIO/. 19:18:35 shachaf: Now I have one that works perfectly full stop, except you can't run a transaction from it. 19:19:27 so basically you want a kind of transaction finalizer :P 19:19:34 Yep :P 19:19:35 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 That's kind of what onCommit is. 19:21:37 molecularily 19:23:28 -!- GreaseMonkey has joined. 19:23:51 * elliott discovered this by trying let m = atomically (onCommit m) 19:23:57 the best transaction 19:26:53 -!- tiffany has joined. 19:30:55 -!- hagb4rd2 has joined. 19:31:15 elliott: i don't find any onCommit in the stm package? 19:31:46 oerjan: duh, that's why I'm implementing it 19:31:50 onCommit :: IO () -> STM () 19:31:51 onCommit act = do 19:31:51 go <- newEmptyTMVar 19:31:51 alwaysSucceeds $ takeTMVar go >> unsafeIOToSTM act 19:31:51 putTMVar go () 19:32:13 -!- hagb4rd has quit (Ping timeout: 248 seconds). 19:35:35 what does alwaysSucceeds do? 19:36:15 oerjan: alwaysSucceeds :: STM a -> STM () 19:36:15 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 "true" here meaning "doesn't throw an exception" 19:36:32 I use it as a hook to be able to execute things at the end of the transaction :) 19:36:34 elliott: i already read that, i'm asking because i have no idea what it means 19:36:44 the TMVar is to avoid it executing when passed to alwaysSucceeds and at the end of future transactions 19:36:51 oerjan: well how do you want me to explain, the above precisely defines its semantics 19:36:54 it's just not intuitive 19:37:09 but what is an invariant? 19:37:15 oerjan: an action 19:37:36 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 oerjan: if it fails, the transaction fails 19:37:55 oh hm 19:38:08 -!- ive has joined. 19:38:16 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 although there might be a race condition, I think not since it's part of the same atomically block 19:38:33 (i.e. another transaction ending first) 19:38:40 (but I think the adding of these is atomic too, so it should be fine) 19:39:07 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 I liked this one 19:39:22 o.o 19:39:26 Madoka-Kaname: :slowpoke: 19:39:26 um, how do you run those? 19:39:36 tiffany: Would you stop saying o.o all the time it is worse than Madoka-Kaname's one-line pings. 19:39:36 elliott, =p 19:39:49 It is like a never-ending torrent of suffering delivered in lines. 19:39:56 Suffering and pain. 19:40:03 wha? 19:40:05 Madoka-Kaname: That one is a total cheat, it's basically just doing sequencing. 19:40:13 elliott, yeah, I know. 19:40:32 I wonder what the Kolgomorov complexity of Axel F is. (Inspired by rgb.swf.) 19:40:33 * Madoka-Kaname hugs tiffany 19:40:34 elliott: um doesn't takeTMVar prevent the action from succeeding until there's actually a value in it? 19:40:42 how do I run those thingies? 19:40:48 oerjan: hmm right 19:40:50 oerjan: well, it works :D 19:41:00 tiffany: http://www.bemmu.com/music/index.html 19:41:16 rgb.swf is really pretty 19:41:22 I feel so sorry for epileptics who can't enjoy it 19:41:22 It's not as much of a cheat as my that IIR resonator. :p 19:41:50 fizzie: As my that IIR resonator? 19:42:00 elliott: Line-editing gone wrong. 19:42:14 elliott, it's a rick roll =p 19:42:20 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 Madoka-Kaname: No shit. 19:42:34 elliott: you're pinged by o.o? 19:42:44 ais523: If by "ping" you mean "annoyed", yes. :p 19:42:55 Help I looked at rgb.swf and now every other colour seems dull. 19:43:00 .-. 19:43:36 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 http://throbs.net/fun/swf.asp?rgb.swf 19:43:51 how am I not having a seizure from this x_x 19:43:58 (Heavy epilepsy warning on the above.) 19:44:28 my eyes hurt now 19:44:37 Wow, it actually does oversatuate your eyes. 19:44:40 Everything is actually greyish now. 19:44:43 This can only be healthy. 19:44:44 tiffany: http://www.bemmu.com/music/index.html <-- what is the algorithm? 19:44:47 ais523: wikispam 19:44:56 Vorpal: there is no "algorithm", it just samples it 19:45:14 elliott: samples *what*. What does your expression generate? 19:45:28 oom to use your free herpes dating sites. 19:45:29 elliott: it looks like a lot of bitshifting and some arcane syntax I have no clue about to me 19:45:42 Vorpal pcm 19:45:53 Arcane syntax called array indexing, isn't it? 19:45:54 elliott: okay so what is the syntax. I can't find any description on the page 19:46:01 It's Javascript. 19:46:06 hm 19:46:06 ais523: i guess someone _has_ to have that as a fetish 19:46:13 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 see http://www.youtube.com/watch?v=GtQdIYUtAHg for complete programs pipeable to /dev/audio 19:46:27 the article titles are big giveaways that that's what's happening 19:46:29 or the super-duper version 19:46:30 http://www.youtube.com/watch?v=tCRPUv8V22o 19:46:40 hm 19:46:52 also, that spambot is capable of solving the CAPTCHA, incidentally 19:47:06 which is not surprising as it's a very easy CAPTCHA, but it does mean it's targeting MediaWiki specifically 19:47:11 elliott: Note that viznut is a .fi person too. COINCIDENCE? 19:47:17 fizzie: Well, it's the demoscene. 19:47:30 That "Covers Chaos Theory by Conspiracy" one is disappointingly lookup-tabley. 19:47:30 It's not an exclusively Finnish phenomononomon. 19:47:39 fizzie: Yes but come on, you're fooling nobody. 19:47:40 viz. a nut 19:48:20 That two-one-six one is very impressive, with the evolving beat. 19:48:54 finnish pheromenons 19:48:58 Also the one at a bit before seven minutes. 19:49:12 elliott: oh so there is an implicit loop around the expression you enter on that page. It wasn't clear 19:49:45 It's clear from the example expression in there that it uses 't' for time. 19:49:57 fizzie: I was wondering what t 19:50:00 t was* 19:51:06 hm any way to generate sine waves? 19:51:11 without too much work 19:51:13 Yes, with "sin". 19:51:17 It autorewrites that to Math.sin. 19:51:25 fizzie: well yeah I was wondering if that was available in some shape or form 19:52:03 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 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 issue: pausing the sound playing in the web browser is kind of broken 19:52:16 as in, does nothinmg 19:52:19 nothing* 19:52:19 wfm 19:52:22 elliott: firefox? 19:52:25 chrome 19:52:36 fizzie: How... pleasing-sounding. 19:52:49 fizzie: Can we do dubstep yet? We need to ruin it. 19:53:14 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 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 Anyway, it's just 30 seconds. 19:54:09 -!- citiral has joined. 19:54:14 Hello! 19:54:29 fizzie: yes but your one was horrible. And the two copies explain it 19:54:33 `? welcome 19:54:38 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 So I just found out about those awesome isoteric languages. Which are some of the best? 19:55:06 my harddrive is making noises ._. 19:55:10 esoteric* 19:55:23 That's all a matter of opinion 19:55:32 HDD make noises. I would get worried if it didn't. 19:55:33 I like Piet 19:55:54 Funge-98 is widely recognized as the most useful language for IRC bot writing there is. 19:55:54 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 I prefer some like Befunge-93 and the likes, or a cellular automata one. 19:56:03 citiral: My hard-drive doesn't make noises. 19:56:04 unlambda, underload 19:56:06 fungot: Say hi to citiral. 19:56:07 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 elliott: you have an SSD... 19:56:12 If you like Befunge: 19:56:13 ^source 19:56:13 http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 19:56:13 of course it doesn't 19:56:14 ^source 19:56:14 http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 19:56:17 ^source 19:56:17 http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 19:56:19 elliott: Great minds and so on. 19:56:41 this music generator must be making firefox use a ridiculous amount of ram :/ 19:56:41 fungot is a bot? 19:56:41 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 citiral: yes 19:56:54 citiral: written in an esolang 19:56:56 Fungot, I LOVE YOU! :D 19:57:07 It doesn't respond to people who miscapitalise it. 19:57:07 Sadly, he's case-sensitive. 19:57:13 In Befunge-98 someone said? 19:57:15 yes 19:57:19 http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 19:57:19 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 Gotta check that one out. 19:57:26 guh 19:57:29 ^style 19:57:30 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 ^style irc 19:57:32 Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams) 19:57:38 fungot: Impress citiral. 19:57:39 elliott: ' fnord tulee fnord " hyv fnord" ja fnord fnord. kun fnord, muista fnord fnord ulos. 19:57:43 Haha. 19:57:48 That was the worst. 19:57:52 Yes, that... 19:57:53 fungot: Shame on you. 19:57:54 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 "the mere existence of win32 is a crime called copyright crime." 19:58:02 Classic. 19:58:07 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 Vorpal: you could say that, but if you do... 19:58:09 hehe 19:58:19 I lolled too at that one. 19:58:25 okay yeah killing firefox 19:58:28 if terminal would open 19:58:47 oh, SCKE too 19:58:47 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 ff just opened with an unresponsive script: Script: resource://gre/modules/XPCOMUtils.jsm:329 19:58:53 citiral: I concur with oerjan's nomination of Underload 19:59:28 fizzie: hm "out". Why am I reminded of radio communications here XD 19:59:35 `run echo "hi citral" >foo; cat foo; rm foo 19:59:37 hi citral 19:59:52 !c printf("hi citral\n"); 19:59:57 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 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 ^ul ((Underload rocks)!a(:^)*S):^ 20:00:10 ((Underload rocks)!a(:^)*S):^ 20:00:11 EgoBot? :/ 20:00:15 Come on, EgoBot. 20:00:15 fizzie: well your translation I meant 20:00:17 You can do it. 20:00:20 well,* 20:00:28 !c printf("hello\n"); 20:00:32 it is slow 20:00:41 !help 20:00:42 ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help . 20:00:45 I think Ritchie left EgoBot. 20:00:45 maybe? 20:00:47 Egobot? :D 20:00:55 !help languages 20:00:55 ​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 !c printf("SAY HELLO TO CITRIAL OR DIE\n"); 20:01:06 !c int main() { printf("SAY HELLO TO CITRIAL OR DIE\n"); } 20:01:12 !sh echo PLS 20:01:15 elliott: oh, I thought you were pinging me there 20:01:18 hm something fishy going on here 20:01:19 citiral: OK, maybe HackEgo just doesn't like you. 20:01:21 Erm, EgoBot. 20:01:28 but actually, Vorpal did via EgoBot 20:01:37 hi citiral, btw 20:01:38 ais523: I did !help 20:01:41 Vorpal: I know 20:01:42 > cycle "we have lambdabot too" 20:01:43 "we have lambdabot toowe have lambdabot toowe have lambdabot toowe have lam... 20:01:44 I have a ping on "INTERCAL" 20:01:46 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 ais523: could be that language interpreters are broken 20:01:50 !bf_txtgen test 20:01:55 ​61 +++++++++++++[>+>+++++++++>++++++++><<<<-]>>-.>---.<-.+.<---. [32] 20:01:59 This is one botty channel. 20:02:00 !sh echo yay 20:02:03 hm 20:02:03 citiral: does that actually link to Microsoft's homepage? 20:02:06 Hmmph. 20:02:08 if so, it doesn't seem particularly useful 20:02:15 I'm not sure, it doesn't want to open the link. 20:02:27 does it even try? 20:02:31 Strange, considering I played gtaIV on my pc yesterday. 20:02:33 or is it just the URL of Microsoft's homepage underlined? 20:02:36 It isn't very confident in its suggestion. 20:02:41 I played it a few days ago. 20:02:43 It doesn't do shit. It just sits there, mocking me. 20:02:45 It's like... ah... maybe don't click that. 20:03:21 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 !bf +++++++++++++[>+>+++++++++>++++++++><<<<-]>>-.>---.<-.+.<---. 20:03:30 It might be protecting me from getting too little sleep. 20:03:35 citiral, how did you come across isometric programming languages? 20:03:40 and then you end up with friends you need to hang out with regularly or they stop liking you 20:03:43 citiral: I can vouch for the redundancy of sle;a'sldgfhgbn.,n 20:04:08 ^bf +++++++++++++[>+>+++++++++>++++++++><<<<-]>>-.>---.<-.+.<---. 20:04:08 test. 20:04:10 My dad told me about shakespearian. I got interested and googled it. And then I found a source of awesomness. 20:04:15 fungot wins 20:04:15 ais523: ( list-tail ' ( 1 2 3 20:04:27 citiral, you don't live in Hexham, do you? 20:04:30 Aha, if I run it in windowsXP compatibility mode, it does get to install. 20:04:35 Ngevd: Oh god please no. 20:04:39 I live in Belgium. 20:04:39 I couldn't take it. 20:04:42 elliott: it's worth finding out quickly 20:04:44 Okay, no0t Hexham 20:04:46 But do you live in Hexham, Belgium? 20:04:46 oh good, crisis averted 20:04:57 No, I live in overrepen, Belgium. 20:04:57 citiral: there are two Hexhamers in the channel; everyone was very surprised 20:04:58 citiral: it runs fine under windows 7 pro (64-bit) for me 20:05:01 Wait, I have it on good authority that Belgium doesn't actually exist. 20:05:04 This could be a cover. 20:05:13 * elliott greps /hexham/ on http://zapatopi.net/belgium/ 20:05:23 I had an illegal copy, which installed just fine, now I purchased it to play online, and it doesn't work... 20:05:24 not on windows atm though. I prefer linux normally 20:05:26 oh the irony. 20:05:32 hah 20:06:01 Hope installing it in compatibily mode doesn't screw with some registery entries. 20:06:08 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 warning: sets tens of cookies 20:06:27 The Courant is the best source for useless news ever. 20:06:27 why does Firefox not have a "deny for session" option? 20:06:37 if I don't want the first cookie, I probably don't want the second cookie either 20:06:40 3/win 7 20:06:45 elliott: right, I forgot that you probably new it existed 20:06:48 *knew 20:07:03 I did write the silent k the first time round, just put it on the wrong word 20:07:13 and then forgot to re-add it after deleting it 20:07:14 Kcourant. 20:07:29 Sounds like a KDE app. 20:08:00 doesnt kanything that karbitrarily kstart with k ksound like a kde app? 20:08:14 kmaybe. 20:09:08 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 what actually causes it? 20:09:36 I mean, even if I select to remember the deny they are actually all opened before I get to click 20:09:37 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 *sessions 20:09:43 it's just as bad with the allow options 20:09:53 funbot! 20:09:56 it's just that I'm more likely to allow cookies from a site permanently than once 20:09:58 "Post 1, 2, 3: on x86-64, an int is generally 4 bits wide, just like on a regular x86 system." 20:10:07 fungot! 20:10:07 citiral: do you have 20:10:10 elliott: Windows, clearly 20:10:12 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 ais523: yep, the famous four-bit Windows??? 20:10:23 Vorpal: that happens on both cases to me too 20:10:32 elliott: the 8086 isn't actually a 4-bit processor 20:10:37 and I don't think Windows runs on a 4086 20:10:37 it is really annoying 20:10:40 which I may have just invented 20:10:44 4004 for the win 8-D 20:10:54 Vorpal: extra annoying is that all the windows are modal 20:10:59 and sometimes don't open in the right order 20:11:02 ais523: relative firefox yeah 20:11:05 so you have to figure out which one you have to click on first 20:11:09 Gregor: I wonder if there's any 4004 emulators. 20:11:09 Gregor: EgoBot is borken okthxbye 20:11:18 ais523: they open right on top for me 20:11:32 Vorpal: same for me, but sometimes they open right on top in the wrong order 20:11:36 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 so you have to move them so as to find which one you have to click on next 20:11:43 they're application-modal 20:11:44 err, modal in wrong order I mean 20:11:46 not system-modal 20:11:50 Is there a big difference between befunge-93 and -98? 20:11:55 citiral: yes 20:12:04 -98 is a much larger language; -93 is more of a toy 20:12:05 How big is big? 20:12:23 well, -98 has massive library support (for an esolang) 20:12:24 huge 20:12:32 a -93 interpreter can be done in about two, three pages of code 20:12:33 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 befunge-98 probably has the best library support of any esolang 20:12:39 -98 takes a thousand lines in just about any language 20:12:41 and -98 is pretty hard to implement 20:12:41 and that's before fingerprints 20:12:47 and those thousand lines are going to be wrong the first fifty times 20:12:59 Vorpal: I disagree about either of those 20:13:00 -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 -98 takes a thousand lines in just about any language <-- cfunge is about 10000 lines iirc 20:13:15 in particular, log out confirmation dialog boxes, I often quickly do things in the background while they're open 20:13:22 Vorpal: C isn't a language, and I said before fingerprints. 20:13:34 elliott: ah 20:13:35 "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 Oh well, let's try IRP first then. 20:13:44 oh dear 20:13:49 :D 20:13:57 citiral: just so you know, #irp exists as a honeypot for redditors 20:13:58 elliott: lol 20:14:03 it took me a while to figure this out, incidentally 20:14:05 elliott: also first 10 times unless you written a befunge-98 interpreter in another language before 20:14:24 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 elliott: I mean, doing efunge was quite easy. I did end up redoing the funge space representation. That was about it. 20:14:31 Please write an befunge-98 interpreter please. 20:14:34 a* 20:14:38 citiral: ~/Code/shiro 20:14:53 there are quite a lot of befunge-98 interps around nowadays 20:14:57 elliott: A three-gigaherz 4004. 20:15:02 and thanks to Deewiant's efforts in compliance testing, some of them even work 20:15:04 fizzie: Liquid nitrogen cooled. 20:15:14 ais523: ...to a different spec than is written :P 20:15:17 But I got to go. 20:15:21 bye, see you later 20:15:26 Bye, see you NEVER. 20:15:29 Everyone gets one visit to this chanenl. 20:15:30 ONE 20:15:37 Well, watch me! 20:15:43 ais523: BAAAAAN 20:15:49 -!- citiral has left. 20:15:58 elliott: I've seen nothing in citiral's behaviour that would make me want to ban him/her 20:16:06 al: https://launchpad.net/cfunge 20:16:08 err 20:16:11 thanks al 20:16:13 I removed that line 20:16:24 elliott: I managed to delete half the line then hit enter 20:16:28 and it remove some from the front 20:16:31 wtf 20:16:44 I'm a bit behind, but I once made a befunge-93 interpreter in /Scratch/ 20:16:46 heh, I assumed you were pinging yourself for a moment 20:16:53 when I realised "citiral" also ended "al" 20:16:57 ais523: right 20:16:58 Ngevd: ouch 20:17:00 elliott: And 48 gigabytes of RAM. (The best thing to have in a thing with a 12-bit address bus.) 20:17:04 what is Scratch? 20:17:10 do you have anything vaguely corresponding to source-code, that's actually human-readable? 20:17:12 Vorpal: Smalltalk VM 20:17:15 ah 20:17:15 Educational programming language aimed at under 12 20:17:25 wait, no, that's Squeak 20:17:25 fizzie: what has 48 GB RAM? 20:17:43 Vorpal: The 3-gigahertz 4004. 20:18:03 lol 20:18:09 (actually laughed out loud) 20:18:11 fizzie: fungot runs on a 3GHz 4004, doesn't it? 20:18:11 Gregor: apart from the windows 95 and 98 setup cds 20:18:23 as long as it isn't an AOL CD 20:18:25 remember those? 20:18:41 never saw one in real life. But they became rather infamous I seem to remember. 20:18:47 Vorpal: I have seen one 20:18:47 AOL /CD/s? Try AOL floppies. 20:18:55 heh 20:18:59 gah, I'm trying to remember the password that was printed on it, now 20:19:15 I think half of it was "CLENCH", it was two capitalised dictionary words separated by a hyphen 20:19:26 :o 20:19:51 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 PELVIC-CLENCH? 20:20:07 elliott/Ngevd: is the Hexham Courant a serious newspaper? 20:20:12 yes 20:20:12 Yes 20:20:22 hmm, good to know 20:20:22 ais523: serious as Hexam. 20:20:40 +h 20:20:48 Hehxam? 20:20:52 Hexamh? 20:20:55 hHexam? 20:20:58 I remember the ISP floppies that came with the first modem my parents had 20:21:21 it had Netscape 2 for mac, PPP software for mac os 6 and mac os 7 and such things 20:21:28 Eudora too 20:21:38 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 I remember running backwards and forwards across the house with a sheet of paper full of numbers 20:21:50 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 in order to do Microsoft's telephone activation service thing for Windows 20:22:03 fizzie: even older heh 20:22:24 ais523: that must have been recently 20:22:33 The first time I used a computer would have been... 20:22:33 why not use online activation 20:22:34 Vorpal: early XP 20:22:36 1998-9 ish? 20:22:40 and no internet connection, obviously 20:22:48 It had a CLI 20:22:51 ais523: by the time of xp and no dialup even? 20:22:52 huh 20:22:57 It was in our garage 20:23:03 Vorpal: I /still/ have no Internet connection at home 20:23:16 ais523: heh 20:23:29 ais523: why? 20:23:30 I'm kind-of surprised you didn't notice 20:23:38 Vorpal: range of possible answers 20:23:45 "I don't want one" is true, but badly explained 20:24:02 ais523: I thought you finally had one. Must have confused you with some other person. 20:24:18 finally got one* 20:24:18 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 I have one at work 20:24:27 and I'm not currently at work, although I am currently online 20:24:33 fizzie: heh 20:24:37 fizzie: that's amazing 20:24:38 fizzie: I assume you didn't? 20:25:00 and I'm not currently at work, although I am currently online <-- so where are you then? 20:25:00 I can understand "blackhole everything we don't have a peering agreement with" 20:25:06 wifi hotspot? 20:25:07 Vorpal: neither at work nor at home 20:25:12 also, not a public connection 20:25:18 I borrow from friends, mostly 20:25:28 -!- augur has quit (Remote host closed the connection). 20:25:39 ais523: ah, you should try to borrow from neighbours. Then you could get internet at home 20:25:46 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 Vorpal: with their permission… 20:26:00 ais523: obviously 20:26:13 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 Or, well, I don't know. There wasn't *that* much of a web. 20:26:26 nobody knows it off by heart because it's long and random hexadecimal 20:26:26 ais523: that is why you would try to become friends with some suitable neighbours. 20:26:32 but the computer has it memorized 20:26:37 well yeah 20:26:45 that tends to be the case 20:26:47 Presumably you could still send "international" email and read Usenet and so on. 20:26:48 ais523: is it WEP? 20:26:51 "I don't want one" is true, but badly explained 20:26:58 Vorpal: WPA1 20:27:09 ais523: okay, then it would take a while to find out I guess 20:27:11 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 I really wish my access point at home supported WPA 2 Enterprise, I have to settle for WPA2 20:27:50 fizzie: back 20:28:20 variable: I don't have a real solution for you, but there's some things in the log. 20:28:23 fizzie: it seems your answer scrolled off 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 WPA2 PSK* 20:28:33 * variable could easily change the format though 20:28:42 variable: what about the logs? 20:28:55 (as linked in the topic) 20:29:03 oh right 20:29:04 * variable forgot 20:29:11 variable: or your local logs of course 20:29:32 Vorpal: I don't log this channel because its logged itself :) 20:29:37 right 20:30:00 I'm looking 20:31:12 variable: Search for "variable:"; all the stuff is pretty much grouped together there, near before what you last saw. 20:31:21 mkay 20:31:49 Vorpal: I also have a hg checkout of the logs apparently 20:32:07 variable: nice 20:32:26 variable: I have my logs in a local postgresql db for this channel (not for other channels though) 20:32:31 useful for useless statistics 20:32:37 and quick searching 20:32:42 yeah, I've been meaning to get that set up 20:33:02 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 variable: ask fizzie for some useful scripts. Pulls from the old clog archive rather than Gregor's archive though 20:33:20 mkay 20:33:34 unless he updated his scripts 20:33:47 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 oh - no hg logs of today :( 20:36:01 * variable looks at topic 20:36:42 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 fizzie: I could use multiple 'plot' lines I guess? 20:37:20 19:13:25: 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 quires either fixin 20:37:20 19:13:25: 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 That paste has an example of that sort of thing. 20:37:31 fizzie: yeah reading 20:37:47 http://p.zem.fi/meud 20:38:16 (An autogenerated random four-character name from the alphabet [0-9a-z], IIRC.) 20:38:18 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 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 (It half-assedly tries to emulate MATLAB's plotting tools for some unfathomable reason.) 20:41:31 fizzie: I was planning on using this into a "let me learn gnuplot" but yeah, other tools might work work 20:41:48 which tool do you find best / easiest for plotting benchmark data ? 20:42:31 variable: I've never tried that using anything other than INTERCAL 20:42:56 ais523: o.O 20:43:05 variable: I've never tried that using INTERCAL either 20:43:06 -!- pikhq_ has quit (Ping timeout: 245 seconds). 20:43:18 ais523: so I assumed :) 20:43:59 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 With other things I'm not so familiar. 20:44:18 fizzie: output is going to latex 20:44:54 oooh 20:44:57 TikZ looks nice 20:45:17 It's more of a graphics library than plotting library, but it can be (ab)used for plots too. 20:45:39 http://www.texample.net/tikz/examples/line-plot-example/ 20:45:42 exactly what I want 20:45:47 [ with a different scale ] 20:46:43 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 Away for a moment now. 20:47:25 fizzie: I'd prefer to have the data in an external file 20:47:29 but it isn't critical 20:48:30 ais523: now you should try plotting with intercal 20:49:17 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 Vorpal: yes, and an incompatible one in CLC-INTERCAL 20:50:04 right 20:50:09 ais523: I forgot how they work. 20:50:16 ais523: wasn't one based on the delta or some such? 20:50:18 (You can use external files with TikZ too.) 20:50:50 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 so it's effectively delta 20:51:02 ais523: and the CLC one? 20:51:03 except that one of input/output, I forget which, uses the other side of the tape 20:51:06 so you have to reverse bits 20:51:07 fizzie: mkay. I'm taking a closer look then 20:51:13 the CLC one is hard to easily explain 20:51:19 ais523: give it a try? 20:51:27 (please) 20:51:53 http://smuggle.intercal.org.uk/manual/input_output.html#binary 20:52:02 thanks 20:53:42 -!- pikhq has joined. 20:54:26 "The current implementation does not check that the padding is sufficiently random, although this might well change in future." 20:54:28 heh 20:54:32 all ones is random 20:55:18 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 they're both stateful IIRC 20:55:52 oh, maybe I misunderstood the thing then 20:56:04 or maybe I did 20:56:20 there's a reason CLC-INTERCAL binary IO isn't implemented in C-INTERCAL 20:56:23 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 Baudot doesn't have 256 different codepoints 20:57:17 ais523: well of course? 20:57:25 I looked at the binary IO section 20:57:38 Alphanumeric I/O is different 20:57:42 and mentions baudot 20:58:04 ais523: or is baudot involved in the IFFI stuff? 20:58:16 oh, no 20:58:21 you can FFI to something with a sensible stdout 20:58:27 C would probably make more sense than Funge-98 20:58:32 well yeah 20:59:04 ais523: cfunge has quite a sensible stdout and stdin though. Same sort of saneness as brainfuck mostly 20:59:15 yep 20:59:30 I'm including funges as "things with a sensible stdout" 20:59:45 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 if so, how confusing 21:00:08 no, it's C-INTERCAL it's referring to there 21:00:52 -!- oerjan has quit (Remote host closed the connection). 21:00:59 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 oh, CLC-INTERCAL has a C-INTERCAL emulation mode 21:01:28 ah 21:01:32 which is also called ick 21:01:32 makes more sense 21:01:46 C-INTERCAL has a CLC-INTERCAL emulation mode called -X 21:01:50 ais523: it installs that as a binary name? 21:01:53 no 21:01:53 or as a parameter? 21:01:55 ah 21:01:55 preload name 21:02:00 uh? 21:02:09 what? 21:02:13 Vorpal: to answer that I'd have to explain how CLC-INTERCAL works 21:02:21 which I'm really not up to right now 21:02:27 ais523: oh you mean the stuff that it is kind of like non-time reversed feather? 21:02:30 right 21:02:37 err, time traveling* 21:03:00 I'm actually not sure if that's involved or not 21:03:08 time travel? 21:03:09 not because I'm unaware of how CLC-INTERCAL works, I just can't figure it out 21:03:14 no, self-modification 21:03:22 I thought you said it was doing that 21:03:23 hm 21:03:33 like it started out as a perl script and turned into intercal at the end 21:03:36 or something 21:03:43 no 21:03:52 think of the perl script as a VM 21:03:55 ah right 21:03:56 that runs IACC programs 21:04:01 ah yes, now I remember 21:04:07 IACC is capable of self-modifying itself into INTERCAL 21:04:08 was ages ago I last looked into it 21:04:23 ais523: so then self modification is clearly involved 21:04:59 yes 21:05:07 but self-modification doesn't necessarily have anything to do with Feather 21:05:14 oh 21:05:30 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 partly for flexibility 21:06:07 oh, the IACC interp is also written in IACC, incidentally 21:06:13 right 21:06:20 so CLC-INTERCAL ships with iacc.iacc because otherwise you could never get started 21:06:56 ais523: you say IACC interpreter? Wouldn't it compile to bytecode? Or what role does the perl vm play? 21:07:13 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 yeah 21:07:45 Vorpal: don't try to make a distinction between "compile" and "run" in CLC-INTERCAL, you won't get very far 21:07:50 okay 21:07:58 because it JTLs 21:08:06 JTL? 21:08:07 it's a bit like JITting, except more confusing 21:08:13 oh too late 21:08:15 now I remember 21:08:37 ais523: well, the iacc.iacc must be executed by *something* able to interpret it. You can't escape that. 21:08:40 but basically, the compiler mostly only runs at runtime 21:08:57 wait, it's iacc.io that gets shipped 21:09:01 ah 21:09:05 which is the iacc compiler compiled, by itself, to bytecode 21:09:09 right 21:09:13 that makes far more sense 21:09:15 the bytecode mostly consists of commands to run the compiler, IIRC 21:10:14 (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 ais523: not even the author? 21:10:48 yep; he thought he did once, but then changed his mind 21:11:06 besides, you need the same operator precedence as the original intercal. Or stuff wouldn't work 21:11:12 so that trivially gives the answer 21:11:30 Vorpal: have you /seen/ the operator precedence table in the original INTERCAL? 21:11:36 ais523: nope 21:11:37 tell me 21:11:43 ais523: is it not there? 21:11:45 let me find it 21:11:55 there is one, but it's empty 21:12:03 ais523: ah... 21:12:13 ais523: so what operator precedence does it in fact use? 21:12:31 some tests on the original should help there 21:12:43 http://www.catb.org/~esr/intercal/intercal.ps page 11 21:12:53 also, the original mostly isn't available 21:13:08 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 but it never happened 21:13:14 http://www.youtube.com/watch?v=98AKFQkaWJM 21:13:17 my region of the country 21:13:22 has a lot of excellent individuals. 21:13:26 C-INTERCAL's precedences are the same as the ones experimentally determined from CLC-INTERCAL 21:13:27 bright young lads. 21:13:31 ais523: right. 21:13:43 the general advice is to always use explicit sparkears so that it doesn't matter 21:13:49 ais523: what about example programs from the original? 21:13:59 or the manual 21:14:01 they always use explict sparkears 21:14:04 ah 21:14:15 maybe there wasn't any precedence ? 21:14:40 brb 21:14:47 Vorpal: if I was the sort of person who generally facepalmed, I would be facepalming right now 21:14:57 it indeed doesn't have precedence, that's the point 21:15:05 it does not explain what #1~#2~#3 means, though 21:15:35 (oh, and IIRC, C-INTERCAL doesn't have precedence, just associativity) 21:16:06 -!- ive has quit (Ping timeout: 252 seconds). 21:16:10 (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 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 was yacc around in 1972? 21:20:35 ais523: no idea. But I said "something similar to" 21:20:58 ais523: and what language was the original written in? 21:21:04 SPITBOL 21:21:23 (I'm not sure if even C was around in 1972, incidentally) 21:21:47 ais523: well, were there any parser generators for SPITBOL? 21:22:06 how should I know? 21:22:41 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 i thought snobol was essentially the first parsing language, or something like that 21:29:50 (spitbol is an implementation of it) 21:32:28 "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 ais523: C was 1973, so. :) 21:34:55 pretty close 21:35:08 wow, INTERCAL predating C is pretty hard to imagine 21:35:08 Though, of course, its ancestry goes back a bit further. 21:35:30 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 any idea why C became so popular? 21:35:31 yep, I assume INTERCAL was around at the same time as B, in that case 21:35:35 CakeProphet: UNIX 21:35:48 ah 21:36:29 "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 oerjan: sounds surprisingly like Perl 6 regexen 21:36:57 hardware could take as little as a few hundred lines, with a new instruction being added with a single line. 21:37:54 well of course, completely theoretical hardware is often easier to implement than practical hardware 21:38:00 because it's mostly invented by mathematicians 21:39:03 ais523: more like discovered. bahahahahahaha. 21:39:15 (I would say invented too.) 21:39:20 * oerjan swats CakeProphet -----### 21:42:08 "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 oerjan: I'm sure that's how it happened 21:42:36 they were all just "SNOBOL!!!!" spelled just like that. 21:44:30 -!- zzo38 has joined. 21:48:42 Good? 21:48:53 good? 21:48:56 good 21:48:58 good is good 21:49:00 ? 21:49:01 OK 21:55:36 zzo38: do you allow beholders as PCs in your campaigns? 21:56:13 -!- hagb4rd2 has quit (Ping timeout: 248 seconds). 22:00:55 CakeProphet: I would if I could determine the level adjustment to use. 22:01:16 But normally I do not, because no level adjustment is listed. 22:03:32 Do *you* allow it? 22:05:36 I don't play D&D, so... 22:05:48 but I played a hack and slash MUD where beholders were playable characters, and enjoyed playing a beholder, so... 22:05:53 it's something I'd possibly enjoy in D&D 22:06:21 Well, I am not the DM of the anyways, however. 22:06:44 But it is not permitted normally because there is no level adjustment specified. 22:07:52 (However, in Icosahedral RPG, all creatures have the number of pseudolevels specified) 22:08:39 zzo38: I would assume it would be because they're abberations and thus don't traditionally fit the whole adventurer model. 22:08:42 zzo38: It's actually entirely feasible to play races without named level adjustments. 22:09:15 zzo38: The hit die simply become levels in the race. 22:10:06 zzo38: like, what reason would a beholder have for being in a campaign with traditional D&D characters? 22:10:07 pikhq: No LA is different from LA=0 (all races in player's handbook implicitly have LA=0) 22:10:53 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 zzo38: unless, of course, it was a non-standard beholder. 22:10:59 zzo38: Still, you can fudge it easy. 22:11:26 pikhq: Yes, the book Savage Species has ideas about determining what the LA value should be. 22:11:35 Ah, right, that's the book. 22:11:45 Good stuff. 22:11:54 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 cause death, that's a good magical power. 22:12:09 I assume levitate is how they move. 22:12:15 Yup! 22:12:26 It depends what version. 22:12:59 I recall in the MUD I played instead of wield weapons with limbs like most races you use the levitation eye. 22:13:06 *wielding 22:13:38 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 (There are restrictions on which spells are selectable, though) 22:15:20 I suppose a Spectator would be the most convincing kind of playable beholder 22:15:24 since they're apparently somewhat friendly. 22:17:13 CakeProphet: I pick chaotic evil 22:17:16 ;P 22:17:37 Fine, pick whatever alignment you want 22:17:59 zzo38: just arguing that non-friendly playable beholder might make sense too 22:18:27 perhaps if they had an ulterior motive that required them to not eat the party members in their sleep. :P 22:18:31 Vorpal: Yes, it can; and anyways, individuals also differ, especially player characters since player characters are exceptional anyways 22:18:48 which RPG is this anyway? 22:19:15 CakeProphet: Maybe. But it can also be due to having other thing to eat 22:19:59 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 but that's fine. that would be interesting. 22:20:34 CakeProphet: Yes; that much would almost always be the case. 22:20:47 therefore, I get 20 eyestalks. :P 22:21:00 But it is OK since player characters are supposed to be exceptional anyways, so it is OK. 22:21:16 CakeProphet: Actually, to get 20 eyestalks maybe you need to increase the LA then? 22:21:24 I would think so. 22:21:31 5 of them are the "cause death" kind. :P 22:21:33 But I suppose it could be valid to do so. 22:22:20 4 eyestalks (and the anti-magic center eye) would be a more reasonable level adjustment. 22:22:45 The level adjustment has to be a number. 22:22:54 ere, right. I'm saying. 22:22:55 Such as +4 or +10 or whatever. 22:23:01 that kind of beholder would have a more reasonable level adustment. 22:23:02 And there is racial HD as well. 22:23:27 O, that is what you are saying; yes I think you are correct. 22:23:38 also, do beholders have classes? does that make sense? 22:23:51 They can have classes as much as anyone could, I suppose. 22:24:00 But if racial HD is at least 1, it is not required. 22:27:33 * CakeProphet imagines a beholder templar. 22:30:34 beholder necromancer would be fun. 22:34:34 -!- nooga has quit (Ping timeout: 252 seconds). 22:36:28 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 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 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 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 * 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 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 Some notable groups in the campaign world include: * 22:41:12 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 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 zzo38: oh so this is a comical setting? 22:43:21 Vorpal: No, it is just a new setting. There are a few comical things in it, I suppose. 22:43:33 zzo38: the Monty Python reference above for example 22:43:44 Yes it does include one Monty Python reference. 22:44:14 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 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 My PHP professor doesn't know PHP. 23:02:14 -!- copumpkin_ has changed nick to copumpkin. 23:02:41 His example used array_values on a regular array... 23:03:02 Cue arguments between a classmate and him 23:03:56 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 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 wow, higher order functions in PHP 23:23:05 are amazing 23:23:18 array_filter($array1, "odd"); 23:23:20 so good. 23:28:12 $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 It was processed with aarray_unique 23:30:02 array 23:30:14 aamazing 23:30:20 -!- SgeoN1 has quit (Read error: Connection reset by peer). 23:30:48 -!- SgeoN1 has joined. 23:36:04 Fun fact: array_unique does not renumber indexes 23:36:50 here's array_unique in perl. my %seen; @array = grep {!$seen{$_}++} @array 23:37:30 except it renumbers indices. 23:37:45 and is mutable (I'm guess array_unique is not?) 23:37:52 er an immutable operation 23:37:52 I mean 23:38:12 not in-place? what is the term for that. 23:38:53 pure 23:39:12 sure that orks. 23:39:14 +w 23:39:24 although i hesitate to use that term for the above code 23:39:24 except it's... not really pure because it uses a hash table. 23:39:33 and mutably updates said table 23:39:48 well it just uses an implicit ST monad ;P 23:39:54 ah yes of course. 23:42:01 -!- copumpkin has joined. 23:42:30 (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 yeah elliott already did, have you seen that picture? 23:43:06 er, no. 23:43:21 I thought something was up 23:43:24 i'm afraid i didn't save the link 23:43:24 he's been acting a little strange. 23:43:29 maybe it's just the teenage hormones. 23:44:08 `log elliot[t]> .*finger tree.*http 23:44:40 2011-05-13.txt:06:20:31: i drew a finger tree http://i.imgur.com/sRyCi.png 23:44:54 oh god. 23:45:16 tragic. 23:45:33 looks more like a cyclic graph... 23:45:54 don't you mean acyclic, it's a tree after all 23:46:04 no it has fingers pointing downward what's up with that. 23:46:26 I think it has cycles, dude. 23:46:40 bro. man. 23:46:41 ok 23:46:48 sir. 23:47:12 comrade sir you need to dudechill, bro. 23:47:35 jolly good, yo 23:47:37 brofessional brogrammers. 23:49:12 for(@array) { delete $_ if !$seen{$_}++ } 23:49:15 would give you the PHP semantics. 23:50:04 er... 23:50:11 for(@array) { delete $_ if $seen{$_}++ } 23:50:16 for(0..$#array) { splice @array, $_, 1 if $seen{$_}++ } 23:50:23 would be inplace and reordering indices. 23:55:49 http://search.cpan.org/~genie/Tie-LazyList-0.05/LazyList.pm 23:55:51 weeeeee 23:57:27 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 REHash is interesting. It lets you find hash keys by regex. 23:59:30 but that's... basically just a grep. 23:59:55 er, well, a map actually.