00:13:14 -!- madbr has joined. 00:13:23 -!- Phantom__Hoover has quit (Quit: Leaving). 00:20:50 -!- pumpkin has quit (Quit: Computer has gone to sleep.). 00:43:47 -!- copumpkin has joined. 00:49:54 -!- sllide has quit (Read error: Connection reset by peer). 00:55:58 -!- copumpkin has changed nick to JesusGarcia. 00:56:11 OK, I got the Haskell program to load the \fontdimen values from a TFM font. 00:56:15 -!- JesusGarcia has changed nick to copumpkin. 00:56:25 Now I just need to add the other stuff too. 00:57:22 -!- Darth_Cliche has joined. 01:07:43 The "makeFont" function takes thirteen parameters, ten of which are applied using the <*> operator. 01:08:05 -!- Vorpal has quit (Ping timeout: 248 seconds). 01:09:39 (map fromEnum <$> (mReadData h 12 :: IO [Word16])) >>= \z -> makeFont n m z <$> mReadData h (z !! 1) <*> mReadData h ((z !! 3) + 1 - (z !! 2)) <*> mReadData h (z !! 4) <*> mReadData h (z !! 5) <*> mReadData h (z !! 6) <*> ........ 01:27:04 -!- SgeoN1 has quit (Read error: Connection reset by peer). 01:27:22 -!- SgeoN1 has joined. 02:00:07 -!- CakeProphet has joined. 02:00:35 guard is a very useful command, I have used it with the list monad and with the Maybe monad. 02:00:46 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.). 02:18:47 ninuini\ 02:23:37 yes 02:23:42 i agree 02:23:49 -!- copumpkin has quit (Ping timeout: 260 seconds). 02:24:14 -!- copumpkin has joined. 02:34:54 i met a burglar 02:35:21 chatted with him for 5 minutes, went home and called the cops. will prolly be stabbed soon enough :D 02:35:27 Now I made the entire part of the Graphics.DVI program for loading font metrics. 02:36:25 Because it is a functional programming language, it is entirely different to the other programs for doing so. 02:40:25 Inside of a record syntax it has the code: fontDimen = 0 : transEnum (shiftR (head pa) 4) : (rescale fsc <$> tail pa), firstChar = transEnum $ hdr !! 2, leftBoundChar = guard (last lk >= 0xFF000000) >> makeLigKern ke' (drop (fromEnum $ last lk .&. 0xFFFF) lk), 02:42:33 -!- nooga has quit (Ping timeout: 255 seconds). 02:53:35 -!- Zuu has quit (Ping timeout: 244 seconds). 03:02:53 -!- Madoka-Kaname has quit (Read error: Operation timed out). 03:09:11 -!- Madoka-Kaname has joined. 03:09:11 -!- Madoka-Kaname has quit (Changing host). 03:09:11 -!- Madoka-Kaname has joined. 03:09:51 However it doesn't check that the font file is valid, so it is possible to get runtime errors if something tries to access index in a table that is larger than the number of items in that table. 03:46:02 -!- tiffany has quit (Quit: Leaving). 03:51:42 -!- variable has quit (Excess Flood). 03:53:37 -!- variable has joined. 03:59:15 -!- variable has quit (Excess Flood). 04:01:38 -!- variable has joined. 04:14:20 So I finally implemented WebSplat Zalgofication. 04:14:23 And it's SO SLOW :( 04:24:26 What does Zalgofication mean? 04:28:46 This is instructions for a chess variant I invented a while ago, and I wrote it on paper. I will describe: Except for the king, the pieces are flat, and the owner is known by the direction they are facing, rathan than by colors. The king is tall piece like a tombstone. Pawns move one space directly forward (even when capturing), and cannot promote. There are six other kind of pieces. 04:28:58 1 (Cannon): Moves like Chinese cannon. 04:29:04 2 (Rider): It is (2,0) rider. 04:29:53 3 (Abstain): As rook, can capture your own as well as opponent's pieces. It destroys itself (going to opponent's bench) whenever it capture something. Toggle abstain mark of the type and owner of the captured piece. Abstained pieces cannot move. 04:30:52 4 (Mingle): Cannot capture. Move orghogonally an even number of spaces, and can jump over other pieces. Contents of squares it jumps over are interleaved (e.g. ABCD -> ACBD, ABCDEFGH -> AEBFCGDH). 04:31:22 5 (Ignore): Move like a rook but cannot capture. Toggle ignore mark of square moved from. Ignored squares cannot be moved into except by number fives. 04:32:14 6 (Select): No displacement capture. Move one orghogonally then over any number of squares rookwise. Pieces on squares with a piece of same type on adjacent square (opposite direction of first move) are captured by you (you choose order). Other ones fall towards first moved space stops on square just before reaching it. 04:43:56 -!- oerjan has joined. 05:03:55 I have read something about a probability monad. It seem to me, it would be, return makes one value with 1 probability, fmap maps the values, join multiplies the inner probabilities by the outer probabilities, (>>) just results in the value on the right, (>>=) applies a probabilistic function to values. Actually, I think the probability values could be any monoid; it doesn't have to be a number. 05:05:04 Although if it is a number, and the contained value is of a type having equality, then you can simplify by adding the probabilities together, by having a separate function that does that. 05:23:31 -!- MDude has changed nick to MSleep. 05:39:54 -!- GreaseMonkey has quit (Quit: The Other Game). 06:21:53 Gregor: iei 06:22:14 eieio 06:22:14 oerjan: You have 2 new messages. '/msg lambdabot @messages' to read them. 06:23:57 that elliott, so calm and patient 06:25:41 > ala Sum foldMap [1,2,3,4] 06:25:42 Not in scope: `foldMap' 06:25:49 @_@ 06:26:07 > ala Sum Data.Foldable.foldMap [1,2,3,4] 06:26:08 10 06:26:24 fancy 06:26:52 @tell elliott fancy 06:26:52 Consider it noted. 06:28:15 45*60*25 06:29:07 > ala Product Data.Foldable.foldMap [45,60,25] 06:29:07 67500 06:29:56 yeah i did it with bc :P 06:37:34 -!- CakeProphet has quit (Ping timeout: 260 seconds). 06:41:31 -!- hagb4rd has quit (Ping timeout: 240 seconds). 06:59:14 :t ala 06:59:15 forall o n b n' o'. (Newtype n o, Newtype n' o') => (o -> n) -> ((o -> n) -> b -> n') -> b -> o' 06:59:31 @src ala 06:59:31 Source not found. There are some things that I just don't know. 06:59:36 @hoogle ala 06:59:37 Data.List intercalate :: [a] -> [[a]] -> [a] 06:59:37 Graphics.UI.GLUT.Callbacks.Window DialAndButtonBoxButton :: ButtonIndex -> KeyState -> DialAndButtonBoxInput 06:59:37 Graphics.UI.GLUT.Callbacks.Window type DialAndButtonBoxCallback = DialAndButtonBoxInput -> IO () 07:00:43 I added a few more classes related to monoids: MonoidPlus, Group, MonoidMinus, MonoidNorm. 07:02:11 MonoidPlus adds mpempty and mpappend, which should be distributive over mempty and mappend; Group adds minverse. 07:02:39 Madoka-Kaname: http://hackage.haskell.org/packages/archive/newtype/latest/doc/html/Control-Newtype.html 07:03:58 zzo38: MonoidPlus is called a semiring 07:04:19 oerjan: O, I didn't know that. 07:05:14 Actually it isn't; the annihilation property does not necessarily hold. 07:05:57 oh 07:08:38 Now I added a Semiring class, that adds no additional methods but it is only used to tell you which ones are semirings. 07:12:25 Actually, there is another property that is not part of the definition of MonoidPlus, which is commutative addition. 07:17:24 argh 07:17:38 unlambda/ski calculus is so unforgiving 07:20:02 !unlambda ``````````````````````.I.s. .e.g.o.b.o.t. .w.o.r.k.i.n.g. .n.o.w.?i 07:20:24 !help don't bet on it 07:20:25 ​Sorry, I have no help for don_t_bet_on_it! 07:20:40 oh hm 07:21:26 @unlambda ```````````.T.h.i.s. .m.i.g.h.t..i 07:21:27 This might. 07:34:59 -!- monqy has quit (Quit: hello). 07:36:06 -!- CakeProphet has joined. 07:36:11 -!- CakeProphet has quit (Changing host). 07:36:11 -!- CakeProphet has joined. 07:40:32 this channel is a waste. 07:44:25 it's better than that other one 07:46:34 no. 07:46:51 how do you know 07:46:51 this is a game. 07:47:40 What kind of game? Chess game or card game? 07:48:00 a game of masturbation. 07:48:37 zzo38: a board game that isnt chess 07:49:06 @tell elliott HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA 07:49:06 Consider it noted. 08:16:31 -!- Ngevd has joined. 08:19:54 Hello 08:26:42 Now I added the instance Num t => Ring (Product t); 08:39:51 -!- Jafet has joined. 08:40:43 -!- sebbu has quit (Ping timeout: 240 seconds). 08:41:41 -!- sebbu has joined. 08:41:41 -!- sebbu has quit (Changing host). 08:41:42 -!- sebbu has joined. 08:53:27 -!- oerjan has quit (Quit: leaving). 09:18:57 -!- hagb4rd has joined. 09:19:08 -!- Phantom_Hoover has joined. 09:31:59 -!- oklopol has quit (Ping timeout: 260 seconds). 09:33:00 -!- Zuu has joined. 09:42:38 -!- Ngevd has quit (Ping timeout: 252 seconds). 09:51:56 -!- zzo38 has quit (Remote host closed the connection). 10:11:42 -!- Ngevd has joined. 10:14:14 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds). 10:24:59 -!- SgeoN1 has quit (Quit: Bye). 10:25:13 -!- nooga has joined. 10:26:26 -!- Phantom_Hoover has joined. 10:29:01 ``s`k``s`k``s`k``s`k``s`k``s`k``si`kksks`sikk 10:29:04 damnit 10:29:08 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: `s`k``s`k``s`k``s`k``s`k``s`k``si`kksks`sikk: not found 10:29:19 madbr? 10:29:34 function that makes a pair in unlambda I think 10:30:07 took a couple hours to figure out (without cheating and looking up in the docs) 10:31:02 obviously that function is probably crucial for any data type aside from the bit 10:31:21 Or the natural number 10:31:53 Pair as in standard LC pair? 10:32:10 dunno what standard LC part means 10:32:32 http://en.wikipedia.org/wiki/Lambda_calculus#Pairs 10:32:40 when it gets 3 arguments, returns the first one if true, second one if false 10:33:56 ngevd: I guess you can build numbers from church numerals or something but it's probably faster to do bit arrays or trees 10:34:13 for larger numbers 10:34:28 I really wouldn't know 10:35:17 but yeah basically unlambda is incredibly laborious to write :o 10:36:27 madbr, the standard pair is \x y f -> f x y. 10:36:54 S(S(KS)(S(KK)(S(KS)(S(K(SI))K))))(KK) in definitely not unlambda notation 10:37:11 similar but a bit different I guess 10:37:48 How does yours work? 10:37:55 f is different 10:38:22 f is either i for true (first member), or `ki for false (second member) 10:38:37 i won't work 10:38:42 You want k for true 10:38:42 True... isn't i. 10:38:47 What Ngevd said. 10:39:00 i would apply the two arguments together, I think 10:39:09 Yep. 10:39:09 Unless unlambda is weirder than I thought 10:40:02 guess you could use k for true and `ki for false, then you would have a skighly different pair constructor yes 10:41:04 I don't see how you can use i for true at all. 10:41:24 i can't get rid of information 10:41:42 i = don't replace with i, `ki = replace with i 10:41:50 Information-hoarding is a terrible condition, Ngevd. 10:42:11 apply on a function that replaces the input with something else 10:42:24 Ah, right. 10:42:38 Sound, if convoluted. 10:42:55 is there anything not convoluted in lambda calculus :o 10:43:09 No, not at all. 10:43:43 By which I mean it's not all that convoluted. 10:44:33 ah 10:44:39 is there anything not convoluted in unlambda then ? :D 10:44:55 Unlambda is terrible, so I decline to comment. 10:45:27 it's terrible and awesome I guess 10:45:36 though it's just ski calculus really 10:46:36 but yeah a good esoteric language should have mindfuck power, and unlambda definitely qualifies 10:46:46 It's not my favourite language 10:46:47 By fa 10:46:47 r 10:46:49 For mindfuck, go for Malbolge 10:47:19 no that's just random shit 10:47:32 It's not "random shit" 10:47:41 Clearly it's too much of a "mindfuck" for your mind 10:47:54 Saying that, it's too much of a mindfuck for my mind 10:48:14 I don't remember the details of malbolge too much 10:48:26 http://esolangs.org/wiki/Malbolge 10:48:29 but last time I remember it's just evil and not at all deep 10:50:06 A Malbolge program is something I can stand in awe at 10:50:19 I'm not a fan of bitwise languages I guess 10:50:30 Good news, Malbolge is tritwise! 10:50:34 :P 10:50:50 but yeah it's just imperative 10:51:03 and not some mindbendingly crazy new paradigm 10:51:45 Unlambda's paradigm dates back to at least 1924 10:51:57 true 10:52:18 madbr, Unlambda's paradigm predates conventional imperative programming. 10:52:26 Which dates to 1954 10:52:55 If Assembly is counted as a different paradigm 10:53:23 Which comes from about the same time 10:54:44 yeah ok 10:55:37 still thinking the point is to come up with crazy paradigms :D 10:55:50 Like Piet? 10:56:39 Or Befunge? 10:56:45 sorta yeah 10:57:06 But not like Unlambda 10:57:32 anyways, sleep 10:57:34 -!- madbr has quit (Quit: Radiateur). 10:58:00 He seems nice 11:04:02 Flobnar seems interesting 11:11:12 -!- Ngevd has quit (Ping timeout: 252 seconds). 11:12:57 -!- Ngevd has joined. 11:19:39 I think a funge on the hyperbolic plane would be interesting 11:20:18 Shame I haven't actually figured out how the hyperbolic plane works 11:24:01 -!- sebbu2 has joined. 11:24:02 -!- sebbu2 has quit (Changing host). 11:24:02 -!- sebbu2 has joined. 11:27:31 -!- sebbu has quit (Ping timeout: 240 seconds). 11:35:27 -!- zzo38 has joined. 11:40:23 It seem the MonadPlus instance for Parsec does not follow the laws. 11:48:42 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .). 11:54:15 -!- pikhq_ has joined. 11:54:38 -!- pikhq has quit (Ping timeout: 258 seconds). 12:10:44 -!- Ngevd has quit (Ping timeout: 240 seconds). 12:24:04 -!- Vorpal has joined. 13:00:46 -!- variable has quit (Excess Flood). 13:04:08 -!- variable has joined. 13:05:50 Funge a klein bottle 13:22:43 Shame I haven't actually figured out how the hyperbolic plane works 13:23:05 One way to think of it is that the angles around a point add up to more than 360°. 13:23:32 This is wrong, but it's wrong in a way which is right if you don't go into too much depth. 13:23:53 Oh, right, he left. 13:44:17 -!- sllide has joined. 13:49:28 Jafet, sure, why not 13:50:06 -!- Ngevd has joined. 13:50:13 Well, the first question is whether you're going to funge in three dimensions or four 13:50:31 Hello! 13:50:31 ouch 13:50:42 I saw what you said, Phantom_Hoover 13:50:46 Hmm 13:51:25 Jafet, wait, the klein bottle forms a plane that is connected to itself in "weird" ways doesn't it? 13:51:37 Oh, Houlton, Maine. 13:51:44 Why do you despise Hexham so? 13:52:06 http://kleinbottle.com 13:54:01 Vorpal, ... 13:54:14 http://en.wikipedia.org/wiki/Fundamental_polygon 13:54:23 I'm going to leave this here. 13:54:57 Jafet, fun fact, the guy who runs that site also caught Markus Hess. 13:55:43 A Klein bottle is a Mooobius strip made even weirder, right? 13:56:15 It's a Mobius strip with the other edges joined as well. 13:56:22 Thought sp 13:56:28 that is what I meant 13:56:54 Langton's ant on a Mooobius strip: taking metaphors the wrong way 13:58:13 Langton's cow on a Mooobius strip sounds more likely. 14:05:29 -!- sebbu2 has changed nick to sebbu. 14:24:11 -!- ais523 has joined. 14:34:33 -!- MSleep has changed nick to MDude. 14:36:09 so, it turns out that the recent zero-day affecting Windows turned out to be a security bug in the kernel's font parser 14:36:22 ...! 14:36:34 Seems an odd place for a security bug 14:37:00 seems like an odd place for a font parser 14:37:42 apparently it's historical reasons based on trying to run NT 4 on old hardware, and they never moved it back 14:39:35 ais523, heh 14:40:16 ais523, I thought NT 3/4 tried to put a lot of stuff in user space? 14:40:36 perhaps. but not that 14:40:40 right 14:43:57 Didn't NT4 in fact move some stuff back into kernel space for speeds. 14:44:38 ah, perhaps 14:45:06 "The graphics device interface handles image management for the monitor and printers. It provides system calls to allow user programs to write on the monitor or printers in a device-independent way. It also contains the window manager and hardware device drivers. In versions of NT prior to NT 4.0, it was in user space but the performance was disappointing, so Microsoft moved it into the kernel to speed it up." 14:45:48 heh, so GDI /is/ kernel? I'd always wondered about that 14:46:21 -!- Ngevd has quit (Ping timeout: 256 seconds). 14:46:37 Random web-quote, so take with a grain of salt; also about NT4. 14:46:39 I think in modern windows it runs parts in user space again 14:46:45 like the window manager 14:47:00 and parts of the graphics drivers 14:47:01 There's probably architectural docs in MSDN. 14:47:02 the window manager isn't in GDI 14:47:24 ais523, it said so above 14:47:38 hmm 14:47:40 " It also contains the window manager and hardware device drivers." 14:47:50 well, it's not user-visible that it's in GDI 14:47:55 I think 14:48:27 in vista/7 there is dwm.exe (unrelated to dwm on *nix) which is the compositing "Desktop Window Manager" iirc 14:49:34 -!- tiffany has joined. 14:50:19 Win7 has funny permissions things; sometimes Synergy clicks will not let you switch focus to some window, or to send key/mouse events when switched, if it's somehow... different. 14:51:17 E.g. the photoalbum creation software from this one printing company was like that, for some unfathomable reason. 15:18:58 ouch 15:27:03 Remember that one of the major security holes in Windows was in a parser for image files. 15:27:21 Yes, folks, code injection in image files. 15:42:53 Jafet: but WMF was an image format in the same sense that vim or TECO is a text editor 15:43:02 it was more of a programming language for describing images 15:43:20 it probably /shouldn't/ have had an FFI, though 15:44:29 Seeing as we're in this channel... 15:44:44 What was its computational class? (sans the ill-conceived FFI) 15:45:06 iirc it's basically a serialized list of GDI function calls 15:47:31 Jafet: think an LBA that can't take inputs 15:57:56 -!- nooga has quit (Ping timeout: 240 seconds). 16:01:19 -!- nooga has joined. 16:02:10 -!- monqy has joined. 16:07:56 Seems an odd place for a security bug 16:08:04 Welcome to Windows. 16:10:51 -!- elliott has joined. 16:11:03 -!- Ngevd has joined. 16:12:22 does windows have butlers to great you at each security hole? 16:12:42 =p 16:13:21 Does Dr Watson count? 16:13:22 No, you idiot, that's not what butlers do. 16:13:34 It has doormen 16:13:39 "Welcome to the Windows Font Parser. Which kernel subsystem would you like access to?" 16:13:46 xD 16:17:18 q 16:17:19 elliott: You have 2 new messages. '/msg lambdabot @messages' to read them. 16:18:10 @tell elliott You have 2 new messages. '/msg lambdabot @messages' to read them. 16:18:10 Consider it noted. 16:18:16 hi 16:18:17 elliott: You have 1 new message. '/msg lambdabot @messages' to read it. 16:18:19 @messages 16:18:20 olsner said 9s ago: You have 2 new messages. '/msg lambdabot @messages' to read them. 16:18:23 @messages 16:18:24 You don't have any new messages. 16:18:26 he;lp 16:18:40 olsner: that was ridiculous 16:19:03 ais523: the point exactly 16:19:05 oh wait i didnt follow the instructions 16:19:10 /msg lambdabot @messages 16:19:14 yay now i see them 16:19:19 they are the best messages. 16:19:44 22:31:39: Does the people managing the account for HackageDB have UNIX mail? I send a UNIX message to them and I don't know if it work. 16:19:45 :') 16:20:56 elliott, you going to the bonfire tonight? 16:21:18 Now I made the MonoidicT monad transformer. newtype MonoidicT a m b = MonoidicT { runMonoidicT :: m (a, b) }; I also made the Monad instance for Monoid t => Monad ((,) t) 16:21:38 zzo38: WriterT 16:22:03 elliott: what does Writer do? 16:22:12 Ngevd: No, I'm plotting to destroy the universe because I'm a grouch who hates fun. 16:22:26 Minecraft bonfire night! 16:22:31 Minefire night. 16:22:33 Minefight. 16:22:38 ais523: That's a supremely vague question ... 16:22:46 elliott: indeed it is 16:22:49 elliott, cool, that means I can go without fear of destroying the universe 16:22:51 could you help me formulate a better question? 16:23:13 I gather that it's some sort of monad that lets you produce intermediate results 16:23:24 but I'm not sure of the details, or whether or not that description is confusingly misleading 16:23:46 ais523: Writer w a is a monad if w is a monoid 16:23:48 elliott: Yes it is similar. But I used the Monoid t => Monad ((,) t) monad. 16:24:13 ais523: it's just (w,a) underneath; return a = (mempty,a); (w,a) >>= f = let (w',b) = f a in (mappend w w', b) 16:24:18 ais523: so you can use it to e.g. produce a log 16:24:24 "tell" adds to the monoid 16:24:29 do tell "doing a"; a; tell "doing b"; b 16:24:31 erm 16:24:37 do tell ["doing a"]; a; tell ["doing b"]; b 16:24:42 that's Writer [String] whateverbreturns 16:24:51 you can run it and get the final result plus the [String] out of it 16:24:53 the end 16:24:57 oh, and tell itself takes a monadic value as argument? 16:25:01 WriterT is like that but a transformer 16:25:03 ais523: ...no 16:25:35 elliott: well, could I convert ["doing a"] to Just "doing a"? 16:25:38 and likewise for the second 16:25:44 and end up with Just "doing b"? 16:26:07 OK, now I'm not sure you understand how either monoids or monads work at all... 16:26:47 elliott: I sort-of understand Haskell monads, and category theory monoids 16:26:56 but can't combine the category theory idea with the Haskell you're sohwing 16:27:03 They had a instance Monoid t => Applicative ((,) t) but had no Monad instance so I made one up by: join (x, (y, z)) = (x |*| y, z); 16:27:12 ais523: what type do you think tell is 16:27:25 (Where |*| is infix operator for mappend) 16:27:35 ah, hmm, is List an instance of Monoid, that defines append as some sort of named operator? 16:27:46 that may have been what I'm missing 16:27:48 @kind List 16:27:49 Not in scope: type constructor or class `List' 16:27:57 @kind [Int] 16:27:58 * 16:28:05 @src Monoid 16:28:05 class Monoid a where 16:28:05 mempty :: a 16:28:05 mappend :: a -> a -> a 16:28:05 mconcat :: [a] -> a 16:28:06 For list monoid: mempty = []; mappend = (++); 16:28:19 mconcat is derived, I take it? 16:28:32 it has a default value 16:28:37 foldr mappend mempty 16:28:40 mconcat is derived automatically but you can override it to make it more efficiently 16:28:42 in that case, I think I understand now 16:28:59 interpreting the operation on a monoid as "append" is the Haskellism I'm mising 16:29:01 *missing 16:29:02 > runWriter (tell ["fooing bars"] >> tell ["done fooing bars", "it was great"]) 16:29:03 ((),["fooing bars","done fooing bars","it was great"]) 16:29:07 mathematically, there's no reason it has to correspond to that at all 16:29:09 > runWriter (tell ["fooing bars"] >> tell ["done fooing bars", "it was great"] >> return 99) 16:29:10 (99,["fooing bars","done fooing bars","it was great"]) 16:29:17 I also made the instance Category c => Monoid (c t t) 16:29:19 ais523: I'd prefer it be "empty" and (<>) 16:29:46 I'm used to monoids made out of, say, 0 and addition 16:30:02 i would not support that :) 16:30:03 There is such a monoid in Haskell; it is the Sum monoid 16:30:04 which don't fit the Haskell idea too well 16:30:15 ais523: those fit into the "haskell idea" perfectly 16:30:22 the names are historical and bad 16:30:24 well, they're expressible in Haskell 16:30:29 For multiplication you need a Product monoid 16:30:32 but "Writer" is a bit of a silly name for it 16:30:42 ais523: how is Writer related? 16:30:45 Writer isn't a monoid 16:31:00 elliott: because it applies to monoids 16:31:03 it's silly to say that something that happens to /use/ monoids constitutes part of Haskell's idea of what a monoid is 16:31:10 well, OK 16:31:22 bear in mind that Writer is also a fairly legacy name :P 16:31:26 it's sort of dual to Reader 16:31:27 I'd say it's evidence of Haskell's idea, rather than being part of the idea 16:31:29 is the reason it's named that 16:31:32 i.e. effect rather than cause 16:31:33 (Reader = (->)) 16:31:58 what does Reader actually operate on? being equivalent to (->) is too heavily Haskell-golfed for me to work it out mentally 16:32:44 Reader r a ~ r -> a 16:32:47 it's just a newtype wrapper 16:32:56 There is a (e ->) monad; it is: return = const; fmap = (.); join f x = f x x; (I worked it out on paper at first and found it is the same thing) 16:33:09 ais523: and the instance Monad ((->) r) is identical to the instance Monad (Reader r) 16:33:18 ais523: it's called Reader because it lets you pass around one bit of mutable state implicitly 16:33:19 erm 16:33:21 ais523: it's called Reader because it lets you pass around one bit of IMmutable state implicitly 16:33:22 You use the module Control.Monad.Reader for the (e ->) monad. 16:33:36 elliott: ah right, that doesn't really fit with my idea of what a reverse of Writer would be 16:33:41 I imagined it taking elements from a list 16:33:43 or something like that 16:33:44 ais523: me neither, that's why I said "sort of" :) 16:33:50 that's the Supply monad 16:33:55 (elements from a list) 16:33:59 which isn't in the stdlib 16:34:24 elliott: the monad that Haskell calls Reader came up in a CS lecture, btw 16:34:27 That is, sometimes is the use of using the monadic "join" for functions, so that is usually the reason why I will have import Control.Monad.Reader. 16:34:36 ais523: it calls it (->) too 16:34:40 Dan thought he'd invented it, and called it the "clock monad" as it's what he was using it for 16:34:40 there are instances for both 16:34:47 in fact, join is really useful on functions 16:34:49 it just duplicates its parameter 16:34:49 I said it was pretty much just a read-only state monad 16:34:51 > join (+) 5 16:34:53 10 16:35:16 ais523: I'm not sure what it takes to think you could have invented a monad so trivial... 16:35:17 wait, what does join do again? I keep forgetting how it relates to >>= 16:35:21 elliott: likewise 16:35:22 A lot of people can make up the same monads as other people; it is mathematics so such things are possible. 16:35:24 I suppose lack of Haskell knowledge suffices 16:35:25 probably just not having seen it before 16:35:30 ais523: join = (>>= id) 16:35:33 :: m (m a) -> m a 16:35:37 ... well with a Monad constraint :P 16:35:41 so 16:35:47 (r -> (r -> a)) -> (r -> a) 16:35:51 so 16:35:53 elliott: hmm, why is that operation useful? and can you define >>= in terms of it? 16:35:55 (a -> a -> b) -> a -> b 16:36:11 ais523: I just gave a use for it; and (>>=) can be defined in terms of join and fmap 16:36:27 you can't define fmap with just return and join, but all monads are functors anyway, haskell just doesn't realise it 16:36:48 ais523: anyway, join is used in the category theory definition 16:36:52 instead of (>>=) 16:36:55 I know, I've seen it but didn't understand it 16:37:13 that's because you don't understand monads :) 16:37:15 hmm, why is there no fmapM? I'm guessing because fmap doesn't have a defined evaluation order 16:37:27 I readily admit I don't really fundamentally understand them 16:37:29 just enough to use them 16:37:29 :t Data.Traversable.mapM 16:37:30 forall a (m :: * -> *) b (t :: * -> *). (Data.Traversable.Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) 16:37:43 Functor => Foldable => Traversable 16:37:46 is the hierarchy there 16:38:16 ais523: but fmapM doesn't even make sense 16:38:27 not in general 16:38:32 but it does in a lot of specific cases 16:38:36 including some that would have been useful 16:38:39 fmap is general. 16:38:42 ais523: fmapM :: (Monad m) => (a -> m b) -> (r -> c) -> m (r -> b) 16:38:47 (for the (->) monad) 16:38:52 well, (->) functor :) 16:38:58 It's pretty weird to name something after fmap if it isn't general. 16:38:59 erm 16:39:02 ais523: fmapM :: (Monad m) => (a -> m b) -> (r -> a) -> m (r -> b) 16:39:07 that looks better 16:39:14 ais523: you have a bad definition of better 16:39:23 well, the first version was obviously wrong 16:39:25 ais523: that's unsafePerformIO :) 16:39:37 no it isn't 16:39:39 :t unsafePerformIO 16:39:40 Not in scope: `unsafePerformIO' 16:39:41 fmapM putStrLn :: (String -> a) -> IO (String -> ()) 16:39:51 fmapM putStrLn id :: IO (String -> ()) 16:39:58 the function you get out of that prints every time it's called 16:40:25 therefore not every functor has fmapM qed 16:40:32 elliott: well, say, putStrLn "x" is of type IO () 16:40:42 I don't see why that's any safer than IO (String -> ()) 16:40:57 ais523: and that's because you don't understand Haskell's IO! 16:41:20 IO is a little crazy as monads go, indeed 16:41:22 no, it's not 16:41:26 you just don't understand it 16:41:42 IO being a monad is practically irrelevant to understanding it, too, it's just a way of using it 16:42:07 IO () is a value describing a side-effectful program that returns (); IO (String -> ()) is a value describing a side-effectful program that returns (a pure function taking a String and returning ()) 16:42:17 say we have m :: IO (String -> ()) 16:42:19 IO being a monad does also make it functor, applicative, and that kind of stuff. 16:42:33 ais523: do f <- m; return (doPureComputationWith f) 16:42:48 ais523: doPureComputationWith calls f ten times, but f magically prints when it's called oops! 16:44:07 yep, this is basically a good argument for showing that fmapM doesn't work on (->) 16:44:16 but there are a whole load of functors, like Tree, where it would be useful 16:44:23 and in fact, it's the same argument in both cases 16:44:30 that's why Traversable exists P: 16:44:30 the problem is that functions don't define an evaluation order 16:44:32 s/P:/:P/ 16:44:37 which /does/ define an evaluation order 16:44:40 I made up the instance Alternative IO 16:44:41 and if they /did/, there'd be no issue with (->) 16:44:48 yes it would 16:44:51 sorry, you're wrong 16:44:57 there is _no way_ to implement the type I gave without unsafePerformIO 16:45:00 at all 16:45:02 full stop 16:45:07 empty = fail []; x <|> y = catch x $ \e -> modifyIOError (\z -> if z == userError [] then e else z) y; 16:45:24 elliott: it'd be called safePerformIO if evaluation order were defined in Haskell 16:45:25 it just isn't 16:45:39 (that is, order, and existence) 16:45:39 ais523: I give up 16:45:51 I think we have different mental images of the same thing 16:45:52 evaluation order is irrelevant here 16:46:05 it's completely irrelevant to the question of whether to be pure or not 16:46:15 Someone made up a instance MonadPlus IO but it does not follow the right zero law and also doesn't follow the monoid laws either! 16:46:18 ais523: if you have an impure language, then unsafePerformIO is safe too 16:46:20 even if it's lazy 16:46:23 right 16:46:31 it's an orthogonal issue 16:47:19 The MonadPlus for Parsec does not follow the right zero law either. 16:47:42 It follows the left zero law; maybe the right zero law should be removed from the documentation? 16:47:45 back to logreading! 16:47:48 02:34:54: i met a burglar 16:47:48 02:35:21: chatted with him for 5 minutes, went home and called the cops. will prolly be stabbed soon enough :D 16:47:48 :') 16:48:03 hmm, what does that smiley mean? 16:48:08 crying with happiness? 16:48:25 it means the world is beautiful, or something 16:48:37 but yes i suppose that's the literal meaning 16:48:45 although ' looks like just a single tear to me 16:48:56 well, it is 16:49:03 :") 16:49:04 Do you think my instance Alternative IO is correct? 16:49:07 because trying to render all the tears doesn't work well in ASCII 16:49:15 :''''''''''''''''''''''''''') 16:49:20 see what I mean? 16:49:35 :'''')'''''' 16:49:43 ''''''''''''' 16:49:45 * elliott puddle of tears 16:50:19 If I had a language that had one command, "interpret input as brainfuck program", would it be Turing-Complete? 16:50:37 yes, according to most definitions 16:50:42 no 16:50:45 according to most definitions 16:50:46 except the other definitions 16:50:54 hehehe 16:50:58 Ngevd: Many people have asked about things like that before already. 16:51:05 elliott: well, it's meta-TC 16:51:13 And there already is an esolang like that for that purpose anyways! 16:51:15 ais523: don't even 16:51:16 in that it can express an interp for a TC language 16:51:22 Ngevd: see here: 16:51:29 we've had this argument before, but I can't remember the conclusion 16:51:33 Ngevd: v 16:51:35 Ngevd: http://esolangs.org/wiki/%E2%84%92 16:52:30 ais523: the conclusion between people who aren't messing about on an IRC channel appears to be that models without input are better anyway so it's irrelevant 16:52:41 right 16:52:46 although i only have one source for that :P 16:52:51 and I forget who it is 16:52:54 I appear to have disconnected 16:52:59 Ngevd: amazing 16:52:59 Or perhaps am just lagging 16:53:02 considering you're still here 16:53:51 Oh there we go 16:53:51 All the responses just flooded in 16:54:22 I used the MonadicT transformer with list monad to make like the probability distributions, since it is clear what join should mean. 16:54:46 MonadicT? 16:55:21 I mean it is called MonoidicT 16:55:23 I made a mistake 16:55:36 It is actually called: newtype MonoidicT a m b = MonoidicT { runMonoidicT :: m (a, b) }; 16:55:39 To be more exact. 16:56:05 it's still just WriterT afaict :P 16:56:16 There is also the instance Monoid t => Monad ((,) t) join (x, (y, z)) = (x |*| y, z); (where |*| is really mappend) 16:57:02 that's just Writer isn't it 16:57:26 There is already the instance Monoid t => Applicative ((,) t) but they forgot the Monad 16:57:30 -!- zzo38 has quit (Remote host closed the connection). 17:23:39 -!- Jafet has quit (Quit: Leaving.). 17:34:01 -!- oerjan has joined. 17:37:44 I don't see how you can use i for true at all. 17:38:17 i'm pretty sure you _can_ convert i and `ki to k and `ki 17:39:30 `ix = x, ``kix = i 17:39:32 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ix: not found 17:39:48 ```kix`ki = `ki 17:39:49 Whoa 17:39:49 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ``kix`ki: not found 17:39:55 Suddenly I see a crazy way to do it 17:39:58 ``ix`ki = `x`ki 17:40:00 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: `ix`ki: not found 17:40:08 thus we need x = `kk 17:40:08 so 17:40:22 ```kk`ki 17:40:23 elliott: you _could_, like, add an initial space or something :P 17:40:24 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ``kk`ki: not found 17:40:25 oerjan: right? 17:40:40 `hi hakcego 17:40:43 `thanks 17:40:48 NO HACKEGO: ``i`kk`ki = k; ```ki`kk`ki = `ki 17:40:51 i believe. 17:41:06 Phantom_Hoover: SO HA 17:41:25 yeah looks right 17:43:18 But backwards...? 17:43:30 i vaguely recall a theorem that if you have two LC terms in weak (head?) normal form, which are _not_ equivalent, then it is possible to find something to apply them to that gives any desired result. 17:44:00 Ngevd: what is backwards? 17:44:14 oerjan: that's either an astonishing or obvious theorem, if true 17:44:18 I'm not sure which 17:44:39 in some sense it's obvious because they're not equivalent, in another sense it's astonishing that you can... get useful results out of that? 17:45:49 elliott: some of the vagueness may be in the exact requirements needed :P 17:46:05 heh 17:46:33 i think it was in barendregt's famous LC book 17:47:18 *drecht 17:47:26 -!- Ngevd has quit (Ping timeout: 244 seconds). 17:47:35 "The Lambda Calculus -- Its Syntax and Semantics" 17:48:40 not beta-eta equivalent, was probably one of the requirements 17:49:41 and the weak normal form stuff was to ensure you had enough in it to not infinitely loop 17:49:44 oh hm 17:50:04 or possibly it involved having different types 17:50:13 -!- aloril has quit (Ping timeout: 255 seconds). 17:50:30 anyway i and `ki are both fully normalizable 17:50:43 -!- derrik has joined. 17:51:18 oerjan: different types to the single type the LC has? :-) 17:52:27 elliott: the book had a lot about type systems for LC 17:52:31 elliott: "typed lambda calculus" and "untyped lambda calculus" both exist 17:52:44 ais523: I know 17:52:47 and in fact, without an explicit "untyped", "typed" seems to be implied among actual computer scientists 17:52:49 because they like types 17:53:02 and used it to prove nontrivial facts about untyped LC itself, iirc 17:53:25 * elliott doesn't think that's true at all, and suspects you might be using "actual computer scientists" to mean "computer scientists whose work filters down to me" 17:53:35 or at least it seems fishy to me 17:53:58 elliott: I mean "computer scientists whose seminars I attend" 17:54:02 right :p 17:54:14 but really, untyped LC is a bit uninteresting nowadays 17:54:17 * elliott has never seen "the lambda calculus" used to mean anything but the untyped version, at least without context 17:54:22 because it doesn't form a nontrivial category 17:54:44 if you're using LC as the basis of something, TLC tends to work better 17:54:59 (and if you go down the other route, you seem to end up with Ursala) 17:55:16 elliott: one of the type systems was one which had the property that a term had a type iff it had a terminating reduction, iirc 17:55:23 ais523: Ursala has types, sort of :P 17:55:38 oerjan: yeah, I figured it was something like that 17:55:47 of course that means _finding_ a type is undecidable 17:55:57 oerjan: I'm pretty sure you can make a type system that types /everything/ in LC reasonably, but -- yeah, that 17:56:02 but for normalized terms, it was possible 17:56:29 and iirc the type was preserved by reductions -- both ways 17:57:04 elliott: one of the type systems was one which had the property that a term had a type iff it had a terminating reduction, iirc 17:57:20 so if it terminates, you essentially know the possible types are the same as for the result 17:57:21 oerjan: does this include terms that depend on partial reductions of non-terminating terms? 17:57:25 hmm, I dunno whether that's possible 17:57:30 wait, of course it isn't 17:57:49 "Proposed criticism of lambda calculus 17:57:49 01-Nov-2008: I suggest adding a section "Controversy in lambda calculus" because it seems like overkill on fairly useless stuff. I still ponder "Why Johnny can't program" & "Why Johnny can't de-virus" & "Why Johnny can't word search" etc. I think subjects like lambda calculus created a nerd-iverse (re: "universe") that wasted hours on useless math games." 17:57:55 -- [[Talk:Lambda calculus]]] 17:57:58 s/]]]/]]/ 17:57:59 elliott: depends on what you mean by non-terminating 17:58:03 oerjan: heh 17:58:34 "My view is to cite sources that consider lambda calculus to be a limited concept that thwarted the expansion of computer science in other areas. For example, it has become common knowledge that languages are easier to program when using the standard syntax of algebra (but with words as variable names, not just x/y/z). The vast majority of all software systems originally written in LISP have been re-written in procedural, non-list languages." 17:58:35 you can have something reducing to head normal forms while subparts never terminate 17:58:36 this comment... 17:58:47 oerjan: right 17:59:21 -!- Ngevd has joined. 18:00:43 Sorry about my tendency to lag out 18:01:10 elliott: Apparently that person is rather ignorant of, well, functional languages newer than 1980. 18:01:28 Or older than sometime in the 60s, for that matter. 18:04:07 -!- aloril has joined. 18:05:13 the type of \f x -> f (f x) was something like ((a -> b) /\ (b -> c)) -> a -> c 18:05:26 *the principal type 18:05:34 fully normalized terms had those 18:05:56 Man, Stanislav has managed to turn McCarthy's death into his most intolerable blog post yet. 18:06:28 :( 18:06:40 What, is that the same Mathnerd314. 18:07:15 oerjan: Wait, did you just bring up my favourite function? 18:07:29 * shachaf considers reading scrollback. 18:07:50 for only head normalizable terms, non-terminating subterms would get the special type omega 18:08:24 which was only allowed to the left of -> or something like that 18:09:13 shachaf: it was just the simplest example i could think of of a function which requires an intersection of types in that type system 18:09:21 oerjan: So Y would get the correct type, but its subterms would involve omega? 18:09:54 Ugh, so much scrollback. 18:09:59 elliott: well since it's not fully normalizable it may not have a principal type 18:10:07 Hmm, right. 18:10:14 but it would have a type for every occasion where it "works" 18:10:18 iirc 18:10:25 * shachaf just wants a polymorphic \x y -> x (x y); why do we need all these fancy tricks? 18:10:41 i don't see any fancy trick 18:11:36 I guess that's pretty simple, actually. 18:11:44 :t \x y -> x (x y) 18:11:45 forall t. (t -> t) -> t -> t 18:11:54 I don't see the problem 18:12:19 ais523: the problem is that there are ways to apply the untyped \x y -> x (x y) which don't follow that type 18:12:50 @ty let f :: forall a f. (forall b. b -> f b) -> a -> f (f a); f x y = x (x y) in f 18:12:51 forall (f :: * -> *) a. (forall b. b -> f b) -> a -> f (f a) 18:12:52 hmm, I will call this function 2 18:13:07 > let f :: forall a f. (forall b. b -> f b) -> a -> f (f a); f x y = x (x y) in f Just True 18:13:08 Just (Just True) 18:13:18 ais523: well of course it's the church numeral 2 18:13:22 yes 18:13:46 btw, people experimenting with Web of Lies, did you come to any conclusions but "it doesn't run on modern Linux"? 18:14:27 ais523: I would come to conclusions if I could get it working 18:14:33 ais523: I'm just waiting for you to fix the bug :P 18:14:50 I can think up a fix that will almost certainly work, but feels a bit insecure 18:14:56 which is to only partially drop permissions in the main process 18:15:04 and then undrop them again when that bit of code reads 18:15:31 I just don't like leaving around root perms even in the ssuid 18:15:41 Going to the bonfire 18:15:43 Bye 18:15:48 -!- Ngevd has quit (Quit: AWAAAAY!). 18:16:29 because someone who can exploit a security bug in WOL could call the undrop command themselves 18:16:54 -!- zzo38 has joined. 18:17:22 ais523: hmm, could you somehow drop root privs /at clone() time/? 18:17:29 so that the relevant process is /never/ owned by root 18:17:55 the problem is that fakeinit actually needs the root privs, it calls mknod a lot 18:17:58 ais523: or, better: if your effective UID isn't root (but your real UID still is), do spawned processes get owned by your effective UID? 18:18:01 the processes are dropped by the time the process under test runs 18:18:10 *perms are dropped 18:18:11 you could change that before forking or w/e, then change it back 18:18:14 so by the second clone, the perms aren't there 18:18:37 basically, there are three processes: weboflies, fakeinit, process under test 18:18:50 weboflies forks fakeinit as root; fakeinit forks the process after dropping perms, so as nonroot 18:19:24 right 18:19:33 ais523: I see a flaw in your reasoning 18:19:36 and weboflies then can't read the process under test's perms on any computers but mine 18:19:39 for some reason 18:19:52 ais523: how are /any/ /proc/N/fd directories owned by non-root in a typical linux system by your logic? 18:19:59 it's all done by dropping privileges from root and forking, at some level 18:20:17 elliott: I'm not trying to make an argument here, I'm just stating facts 18:20:32 the observed conclusion doesn't seem to follow from the actual facts, which is why I'm confused 18:20:35 ais523: yes, but your reasoning for the bug has been "/proc/N/fd is owned by root because it started off like that" 18:20:43 which you've just shown absurd, I think 18:20:45 yes 18:21:02 -!- derrik has left. 18:21:16 hmm, why don't you check the perms on /proc/fd for init, gdm/kdm/getty/equivalent, and your shell? 18:21:37 I'd do it, except the problem doesn't happen on my computer 18:22:03 [elliott@dinky ~]$ ls -lhd /proc/1/fd 18:22:04 dr-x------ 2 root root 0 Nov 5 18:20 /proc/1/fd 18:22:04 [elliott@dinky ~]$ ls -lhd /proc/$(pgrep slim)/fd 18:22:04 dr-x------ 2 root root 0 Nov 5 16:09 /proc/632/fd 18:22:04 [elliott@dinky ~]$ ls -lhd /proc/$(pgrep bash | tail -n 1)/fd 18:22:04 ls: cannot access /proc/7274/fd: No such file or directory 18:22:06 [elliott@dinky ~]$ ls -lhd /proc/$(pgrep bash | tail -n 2 | head -n 1)/fd 18:22:08 ls: cannot access /proc/7276/fd: No such file or directory 18:22:15 but 18:22:16 [elliott@dinky ~]$ ls -lhd /proc/self/fd 18:22:17 dr-x------ 2 elliott users 0 Nov 5 18:21 /proc/self/fd 18:22:35 [elliott@dinky ~]$ ps 18:22:35 PID TTY TIME CMD 18:22:35 7244 pts/1 00:00:00 bash 18:22:35 7282 pts/1 00:00:00 ps 18:22:35 [elliott@dinky ~]$ ls -lhd /proc/7244/fd 18:22:35 dr-x------ 2 elliott users 0 Nov 5 18:20 /proc/7244/fd 18:22:52 elliott: oh, by "shell" I meant along the lines of "GNOME shell" 18:22:57 ah 18:22:58 is slim the login process? 18:23:02 slim is my DM 18:23:12 ais523: I can check ck-launch-session, xfce4-session, xfwm4... 18:23:14 which do you want :p 18:23:20 [elliott@dinky ~]$ cat ~/.xinitrc 18:23:21 #!/bin/sh 18:23:21 exec ck-launch-session startxfce4 18:23:41 elliott: whichever one gets execed most directly by the login process 18:23:42 ah, ck-launch-session actually isn't alive any more 18:23:54 the processes dying is making this a bit harder to trace 18:23:56 ais523: That would be... ~/.xinitrc, probably 18:24:02 632 ? 00:00:00 slim 18:24:02 639 tty7 00:04:44 X 18:24:02 642 ? 00:00:00 udevd 18:24:02 643 ? 00:00:00 udevd 18:24:02 661 ? 00:00:00 dhcpcd 18:24:03 662 ? 00:00:00 sh 18:24:04 674 ? 00:00:00 dbus-launch 18:24:06 675 ? 00:00:00 dbus-daemon 18:24:08 679 ? 00:00:00 xfconfd 18:24:10 684 ? 00:00:00 ssh-agent 18:24:13 694 ? 00:00:00 xfce4-session 18:24:15 I'll check the sh, dbus-launch, and xfce4-session 18:24:45 [elliott@dinky ~]$ ls -lhd /proc/662/fd # sh 18:24:45 dr-x------ 2 elliott users 0 Nov 5 16:09 /proc/662/fd 18:24:45 [elliott@dinky ~]$ ls -lhd /proc/674/fd # dbus-launch 18:24:45 dr-x------ 2 elliott users 0 Nov 5 16:10 /proc/674/fd 18:24:45 [elliott@dinky ~]$ ls -lhd /proc/694/fd # xfce4-session 18:24:46 dr-x------ 2 elliott users 0 Nov 5 16:10 /proc/694/fd 18:25:10 ais523: aha 18:25:19 ais523: when you clone from fakeinit, do you remember to specify you want a new fd namespace? 18:25:36 err, those exist? 18:25:45 I think so, but I'll have to check 18:25:47 of course 18:25:57 pid = clone(child_handler, 18:25:58 (char*)p1stack + sizeof(p1stack) - sizeof(void*), 18:25:58 CLONE_PTRACE, argv); 18:25:58 (I need to leave stdin/stdout/stderr connected, ofc, but a new fd namespace would do that) 18:25:59 ais523: you don't 18:26:02 fix that :) 18:26:02 aha 18:26:17 yes I do 18:26:20 it's a negative flag 18:26:25 huh? 18:26:29 hmm 18:26:32 new FD namespace is done by /not/ specifying CLONE_FILES 18:26:38 oh, indeed 18:26:43 ais523: gah, that seemed /so obvious/ 18:26:46 Now I have the classes: MonoidPlus, Group, MonoidMinus, MonoidNorm, MonoidPlusNorm, Semiring, and Ring. When doing probability distributions, you could generalize it to not necessarily proper probabilities, if you have a type which is both Ring and MonoidPlusNorm. Now you can join probabilities, normalize it, and so on. You could use complex numbers if you want to. 18:27:06 ais523: I hate it when I have a really good aha moment and it isn't the bug 18:27:12 yep 18:27:14 especially when it's an /actual bug/ still, but not the one I'm trying to fix 18:27:36 who doesn't 18:28:15 CLONE_PID (obsolete) 18:28:15 If CLONE_PID is set, the child process is created with the same process ID as the calling process. This is good for hacking the system, but other‐ 18:28:15 wise of not much use. Since 2.3.21 this flag can be specified only by the system boot process (PID 0). It disappeared in Linux 2.5.16. 18:28:42 oh, I end up fixing loads of bugs when looking for other bugs 18:28:47 so I find it useful 18:29:36 -!- sebbu has quit (Read error: Connection reset by peer). 18:29:52 ais523: gah, there doesn't look like anything relevant in man 2 clone 18:30:07 -!- sebbu has joined. 18:30:07 -!- sebbu has quit (Changing host). 18:30:07 -!- sebbu has joined. 18:30:25 No context-reading again, but relevant? http://www.mail-archive.com/git-commits-head@vger.kernel.org/msg11654.html -- it's a 2.6.22 patch which makes /proc/N/fd directory have a custom permissions handler which overrides the usual when task_pid(current) == proc_pid(inode). But it could have been removed for all I know. 18:30:47 that's interesting 18:30:53 that sounds suspiciously relevant 18:30:54 what do task IDs handle again? 18:31:02 That's of course not something that'd show up in the permissions-as-seen-by-ls. 18:31:13 fizzie: basically the problem is that we have /proc/N owned by someuser but /proc/N/fd owned by root 18:31:16 and we have no idea why 18:31:17 (Okay, away again.) 18:31:24 damn :) 18:31:35 + * /proc/pid/fd needs a special permission handler so that a process can still 18:31:35 + * access /proc/self/fd after it has executed a setuid(). 18:31:41 ais523: ok, this is sounding very worryingly relevant? 18:32:18 no, I don't think it is relevant; that's covering the case where a process starts suid root or run via sudo, drops permissions, then tries to read /proc/self/fd 18:32:28 16:39:02: ais523: fmapM :: (Monad m) => (a -> m b) -> (r -> a) -> m (r -> b) 18:32:52 :t mapM 18:32:53 forall a (m :: * -> *) b. (Monad m) => (a -> m b) -> [a] -> m [b] 18:33:04 ais523: still, we have a case of dropping permissions from root, and then a child failing to read /proc/N/fd... 18:33:12 ais523: it would help if I knew what tasks are 18:33:48 elliott: I think that that's special-casing something in the existing behaviour, and the existing behaviour is what's relevant 18:34:00 hmm, okay 18:34:49 I'm racking my brains for things that could be relevant and resolve the inconsistency 18:34:59 maybe Linux just doesn't like you? 18:35:01 if pgids or sids were involved, they'd both explain what was happening, but I see no reason for them to be 18:35:06 elliott: *doesn't like you? 18:35:08 it works for /me/ 18:35:14 hm i guess that actually cannot be written 18:35:22 ais523: you could be lying! maybe they want everyone else to think you're a crank! 18:35:24 oerjan: that was my /point/ 18:35:42 ais523: also, correcting something I said to itself is... 18:35:44 O KAY 18:35:45 on my system, I can read the process-under-test's FDs from the main process, but not fakeinit's, which is simple and makes sense 18:35:54 oerjan: read onwards :P 18:36:09 elliott: it's not correcting to itself; the referent of "you" is different in each case 18:36:20 corrections are textual! 18:36:23 as in, it was a substitution on meaning not words 18:36:30 I don't see why I can't use a semantic correction 18:36:32 for a semantic mistake 18:36:34 you should have s/you/me/'d in the correction, so that the resulting statement I would have made would have been correct 18:38:48 but then it isn't a correction at the semantic level! 18:39:15 hmm, it'd be great if there were a better channel than #esoteric for "weird corner cases of Linux people don't generally care about" 18:41:03 heh 18:41:13 I don't even see where the corner case /is/, though 18:41:26 the problem is basically "Linux breaks after I do [huge laundry list of terrible things]" 18:41:30 yes 18:41:31 I don't think anybody can solve that problem but you 18:41:44 but I can't solve it directly, because the problem doesn't exist on my system 18:42:19 Want an ssh account? :-P 18:42:24 hmm, I suppose the simplest test is to write a process that is originally run as root, then does setresuid, fork, exec, and the process it execs hangs a while (sleep 100 would do) 18:42:30 then check the perms there 18:42:46 I'd need root access as well as an ssh account to test this, and that'd be a bit of a crazy thing to give me 18:43:08 (and a very crazy thing to give anyone else) 18:43:54 main(c,v){setresuid(0,0,0);if(!fork()){execlp(v[1],v+1);};sleep(100);} 18:43:59 ran as ./a.out sleep 100 18:44:00 that's not dropping perms 18:44:00 look good? 18:44:04 oh, er 18:44:07 s/0/1000/ 18:44:07 you need to set them to some values other than 0 18:44:11 (my user accoutn) 18:44:12 account 18:44:18 yep, that looks reasonable 18:44:28 assuming execlp does what you think it does; I can never remember which of the execs are which 18:44:35 shouldn't that be execvp? 18:44:40 you're giving it an array as argument 18:44:45 oh, right 18:44:52 yep, execvp, I just checked 18:44:59 run that with sleep 100 as args, as root 18:45:05 and see what happens 18:45:26 augh.c:1:48: error: subscripted value is neither array nor pointer nor vector 18:45:27 o;ps 18:45:34 forgot my K&R type declaration of v 18:45:37 you need to give argv a type 18:45:43 main(c,v)char**v;{setresuid(0,0,0);if(!fork()){execvp(v[1],v+1);};sleep(100);} 18:45:46 im good programer 18:45:58 ais523: oh, maybe it should print its pid 18:46:02 on both halves of the fork 18:46:06 it's likely obvious anyway, but it'd help 18:48:11 main(c,v)char**v;{setresuid(1000,1000,1000);if(c=fork())printf("%d %d\n",c,getpid());else execvp(v[1],v+1);sleep(100);} 18:48:12 here we go 18:48:32 [elliott@dinky weboflies]$ ls -lhd /proc/7583{,/fd} 18:48:32 dr-xr-xr-x 8 elliott root 0 Nov 5 18:47 /proc/7583 18:48:32 dr-x------ 2 root root 0 Nov 5 18:47 /proc/7583/fd 18:48:32 [elliott@dinky weboflies]$ ls -lhd /proc/7584{,/fd} 18:48:32 dr-xr-xr-x 8 elliott root 0 Nov 5 18:47 /proc/7584 18:48:33 dr-x------ 2 elliott root 0 Nov 5 18:47 /proc/7584/fd 18:48:34 ais523: wait, what? 18:48:41 oh, elliott:root is expected 18:48:45 I didn't change the gid 18:48:47 yes, indeed 18:49:07 but 7583's result is v. interesting 18:49:14 ais523: I suppose I should try clone rather than fork 18:49:17 7583's result is consistent with my system 18:49:22 and yes, that's the next thing to try 18:49:33 you could even give CLONE_PTRACE as an arg, I guess 18:49:35 starting to regret my chosen coding style already 18:49:50 can you do main(c,char**v), incidentally? 18:49:52 ais523: wouldn't that freeze the child? 18:49:53 and no 18:50:04 elliott: nope, CLONE_PTRACE only does anything if you're being ptraced yourself 18:50:09 ah, okay 18:50:11 you're thinking of PTRACE_TRACEME 18:50:33 child_stack can be NULL, right? 18:50:35 CLONE_PTRACE basically means "debugged-ness propagates over the clone"; weboflies injects it into other process's clone calls 18:50:47 elliott: it isn't for me; the docs say it can't be 18:50:53 what should I make it? 18:50:56 but apparently it can be anyway, it's just undocumented 18:51:00 heh 18:51:01 I made it a char array 18:51:07 I'll make it NULL out of laze 18:51:09 wait, you can pass arbitrary arguments to the fn with clone? 18:51:20 and then there's three arguments /after/ the varargs? 18:51:25 just the one void* 18:51:27 it's not varargs 18:51:30 oh, ok. 18:51:31 int flags, void *arg, ... 18:51:31 /* pid_t *ptid, struct user_desc *tls, pid_t *ctid */ ); 18:51:34 that's still wtf though 18:51:38 well, it is, but only to hide the fact that those three args are optional 18:51:43 oh 18:51:46 it's not ... as in varargs, but as in stdarg 18:51:53 err, not stdarg 18:51:58 whatever was used before varargs was invented 18:52:35 incidentally, strace injects CLONE_PTRACE into other process's fork/clone calls too 18:52:39 f(v)char**v;{execvp(v[1],v+1);} 18:52:39 main(c,v)char**v;{setresuid(1000,1000,1000);printf("%d %d\n",clone(f,0,CLONE_PTRACE,v),getpid());sleep(100);} 18:52:45 even changing fork to clone for that purpose 18:52:49 ais523: heh 18:53:02 (the interface is identical syscall-wise; just different in glibc) 18:53:20 ais523: oh no, clone() is returning -1 18:53:30 perhaps you can't put NULL there 18:53:32 in glibc 18:53:35 just in the direct kernel syscall 18:53:36 yeah, probably 18:53:39 I'll allocate a char array 18:53:43 how many bytes should it be, roughly? 18:53:51 enough for one exec call 18:53:56 so 100 will easily be enough 18:54:06 make it 512 18:54:07 #define _GNU_SOURCE 18:54:07 #include 18:54:07 f(v)char**v;{execvp(v[1],v+1);} 18:54:07 main(c,v)char**v;{char s[1024];setresuid(1000,1000,1000);printf("%d %d\n",clone(f,s,CLONE_PTRACE,v),getpid());sleep(100);} 18:54:08 beautiful 18:54:19 wait, you put it /on the stack/? 18:54:24 make that thing static! 18:54:29 [elliott@dinky weboflies]$ ls -lhd /proc/7739{,/fd} 18:54:29 dr-xr-xr-x 8 elliott root 0 Nov 5 18:53 /proc/7739 18:54:29 dr-x------ 2 root root 0 Nov 5 18:53 /proc/7739/fd 18:54:29 [elliott@dinky weboflies]$ ls -lhd /proc/7740{,/fd} 18:54:29 dr-xr-xr-x 8 elliott root 0 Nov 5 18:53 /proc/7740 18:54:30 dr-x------ 2 elliott root 0 Nov 5 18:53 /proc/7740/fd 18:54:31 I'm not sure what happens if you put a stack on the stack 18:54:34 but it seems sort-of wrong 18:54:36 ais523: it works, apparently! 18:54:54 elliott: OK, so now we have to figure out what weboflies is doing differently 18:55:06 ais523: it's formatted slightly more sanely, for one 18:55:18 ais523: try removing all whitespace 18:55:53 I doubt that'll matter 18:57:00 ais523: am i meant to be reading weboflies.c here, or are you? :-) 18:58:13 I'm quite familiar with it already, and I'm trying to guess what's different 18:58:14 from memory 18:58:37 What does weboflies do? 18:59:09 Phantom_Hoover: make people go insane 18:59:26 Phantom_Hoover: also, catch flies 18:59:38 Cool. 18:59:44 How does it go about the former? 19:00:13 Phantom_Hoover: by directly twiddling bits in their process's memory 19:00:15 Phantom_Hoover: catching lots of bugs and then making people figure out what's causing them 19:00:19 get it? 19:00:21 flies are bugs!!!!!! 19:00:30 webobugs 19:00:32 Ah. 19:00:32 in ways that have a tendency to confuse Linux 19:03:40 http://en.wikipedia.org/wiki/Lists_of_Zambia-related_topics 19:03:42 I... 19:05:12 airports, birds, settlements 19:09:53 http://en.wikipedia.org/wiki/Talk:Lists_of_Zambia-related_topics 19:09:55 least loved article 19:21:40 i submit that the wikipedia list system will eventually evolve sentience when it becomes so complicated that it requires a TC kind/sort system. 19:21:53 :D 19:22:16 -!- Vorpal has quit (Ping timeout: 260 seconds). 19:27:51 "Well, I usually use whatever comes handy, but I'm sure there are other approaches — like, for example, trying something almost unusable first. 19:27:56 " 19:28:02 seen on haskell-cafe 19:32:18 heh 19:40:44 ais523: any ideas about weboflies? 19:41:34 no, I'm a little stumped 19:41:51 Gregor: OMG, the Node folks just keep on giving. Get this: ASYNCHRONOUS testing. http://vowsjs.org/ 19:41:54 Webscale tests! 19:41:55 let me make sure it isn't a schrödingbug 19:42:57 yep, it's working just fine for me, still 19:44:43 ais523: I could give you root ssh access to a VM 19:46:27 elliott: hmm, might help 19:46:35 such a pity that weboflies repels debuggers 19:46:36 we bo flies here 19:46:52 ais523: ok, I'll set one up... you could set up your own VM, but I guess you don't have a recent iso handy 19:46:59 right 19:47:08 I don't have a recent iso handy of /anything/ 19:47:13 hmm, neither do I, but I can download one quickly 19:47:18 it'll be a 32-bit vm to simplify things 19:47:29 also, qemu, since I don't have VirtualBox installed 19:50:04 -!- nooga has quit (Ping timeout: 240 seconds). 19:51:30 ais523: right, I'll have a VM up in 15 minutes or so 19:52:07 I suppose I'm glad you aren't insane enough to give people you only know over the Internet root access to your main computer 19:52:38 ais523: I was going to, but then I realised I didn't want you to have read access to ~ 19:52:57 yes, that's probably a good idea ;) 19:53:09 not giving me read access to ~ 19:53:11 there should be something like root identical in every way except that they can't elevate to root or read directories with a certain special bit set 19:53:18 (I'm amused that you don't mind me having /write/ access to ~, though) 19:53:32 ais523: meh, the only thing you could do with that is trash things 19:53:57 I've known people who literally have ~ accessible via http. 19:53:59 I could rewrite your .bashrc to change the perms on your home dir so that I could read them, I guess 19:54:08 pikhq_: normish had / accessible via http 19:54:12 but it wasn't really a normal system 19:54:21 ais523: yes, but I don't think you /would/ do that :) 19:54:31 IIRC, ams has that setup. 19:54:32 (I don't really think you'd look at ~ either, but it's a bit too readily accessible for me to be happy about it) 19:54:46 Of course, ams is anything but normal. 19:54:50 right, and I'd feel uneasy having access to it even if I didn't use it 19:55:02 hmm, home directories should be encrypted loopback filesystems 19:55:14 problem: you'd have to type your private key in on every login 19:55:27 I suppose password-encrypted would work, actually 19:55:34 Well, you already have to type a password in on every login. 19:55:37 right 19:55:53 gah, I need a better name for my temporary stuff than ~/Temp 19:56:05 (needs to be titlecased because ~/Code is permanently ingrained in my brain) 19:56:15 elliott: how temporary? 19:56:22 ais523: good question :) 19:56:24 I use /var/tmp for temporary stuff that needs to persist across reboots 19:56:27 in this case, the VM HD in question 19:56:28 and /tmp for other temporary stuff 19:56:38 it's not so temporary that I want it in a system temporary directory 19:56:41 oh, I probably would put that in /tmp 19:56:46 but I won't feel any great loss if I rm -r ~/Temp 19:56:56 hmm, ~/Junk is tempting 19:57:39 I have a specific directory for things that I want to keep around because they'd be time-consuming to redownload and reunpack, but are too large and unimportant back up 19:57:45 *to back up 19:57:50 that's /var/cache 19:58:05 which is why downloaded packages are stored there 19:58:09 well, OK 19:58:14 but it's not quite the same as /var/cache 19:58:25 it's things like the repo of gnome-games (with entire history) 19:58:29 this is why my Keep system is best :) 19:58:32 and my builds of it 19:58:35 those would go in ~/Keep/YYYY-MM 19:58:39 you don't normally build things in /var/cache, do you? 19:58:44 indeed 19:58:59 (2/3) installing vde2 [######################] 100% 19:58:59 Change /etc/conf.d/vde to your needs. 19:58:59 vde config files should be placed in /etc/vde, sample files are provided. 19:58:59 iptables and dhcpd sample files have been installed to '/usr/share/vde2'. 19:58:59 Merge those examples, if needed to the according config files. 19:59:00 blahh, I hope qemu networking works without doing that 19:59:06 I anticipate forwarding the ssh port to be a pain 19:59:14 what's vde? 19:59:21 a dependency of qemu 19:59:23 elliott: reverse-tunnel from the VM outwards? 19:59:35 ais523: I mean, exposing it on my local machine outside of the VM 19:59:42 the default networking mode of most VM's doesn't do that 19:59:50 right, I see 20:00:17 [elliott@dinky Temp]$ qemu-img create weboflies.qemu2 4G 20:00:17 Formatting 'weboflies.qemu2', fmt=raw size=4294967296 20:00:17 [elliott@dinky Temp]$ ls -lh 20:00:17 total 0 20:00:17 -rw-r--r-- 1 elliott users 4.0G Nov 5 19:59 weboflies.qemu2 20:00:18 turns out qemu2 =/= qcow2 20:00:36 [elliott@dinky Temp]$ qemu-img create -f qcow2 weboflies.qcow2 4G 20:00:36 Formatting 'weboflies.qcow2', fmt=qcow2 size=4294967296 encryption=off cluster_size=65536 20:00:36 [elliott@dinky Temp]$ ls -lh weboflies.qcow2 20:00:36 -rw-r--r-- 1 elliott users 193K Nov 5 19:59 weboflies.qcow2 20:00:36 better 20:00:45 elliott: is it a sparse file? 20:00:52 ais523: presumably; it created instantly 20:00:54 for some weboflies test, I was using a sparse ext4 20:01:04 which is 4G notional size, but much smaller on disk 20:01:48 It's not a sparse file as far as the underlying filesystem is concerned; the logic for doing that is in qemu itself for the qcow2 format. 20:03:03 pikhq_: he was talking about the previous raw noe 20:03:04 pikhq_: I meant in qemu2 20:03:04 one 20:03:07 ais523: qcow2 20:03:09 :D 20:03:20 elliott: so one issue with sparse files is, that they don't decompress well 20:03:25 Yeah, the raw format is just a naive sparse file. 20:03:34 haha 20:03:34 they compress just fine, but decompressing tends to actually write out all the zeroes 20:03:35 ais523: tar -S 20:03:54 pikhq_: that is good to know 20:04:01 GNU tar records sequences of 0s so it can write it out as a sparse file again using that option. 20:04:12 why isn't that default? 20:04:24 elliott: It's a GNU-specific extension to the format. 20:04:36 oh, it's at record time, not unpack time? 20:04:39 Yeah. 20:04:40 yes 20:04:42 right 20:05:15 When you unpack with a non-supporting tar, you basically get a file with a header describing the sparseness and a bunch of bits. 20:05:51 IIRC the format was designed so that, at least in principle, you could use a small C program to unpack that. 20:07:53 ais523: how much RAM will you need? :p 20:08:06 only a few megabytes, to run tests 20:08:21 I don't think Linux will even boot with that little :) 20:08:32 Man, Arch's installer is so slow and clunky. 20:08:35 a few megabytes ... and then a gigabyte to boot the rest of the system 20:08:38 There's a noticable delay after hitting any button. 20:08:48 ais523: you're getting a jfs filesystem, hope you like it 20:08:59 -!- oerjan has quit (Quit: Good night). 20:09:04 why jfs on a VM? 20:09:10 just out of interest 20:09:17 I like jfs :) 20:09:43 had to make an ext2 /boot because arch's installer doesn't do grub2 :( 20:09:47 or lilo, lilo would work too 20:09:59 (seriously, lilo has much better filesystem support than grub1) 20:10:23 -!- derrik has joined. 20:10:58 hmm, lilo doesn't have filesystem support at all, does it? 20:11:18 of course it does; how else would it boot? 20:11:36 by making a list of blocks to load when you install it, of course 20:11:58 hmm, I'm pretty sure it supports reading filesystems nowadays 20:12:09 I could always be wrong, though 20:12:26 it was a long time ago I used lilo, it can have changed a lot since then 20:13:30 elliott: It doesn't. 20:13:49 pikhq_: well, the statement is still true then, lilo supports *every* filesystem! :) 20:14:03 Well, any filesystem that stores the kernel as contiguous raw bytes 20:14:27 It records in the boot sector the location of a block of the disk that contains a list of blocks for each file it cares about. 20:14:35 heh 20:14:44 i.e. it doesn't even require the kernel be a series of contiguous raw bytes. 20:14:59 can't do compression or encryption, though :) 20:15:04 Right. 20:15:15 nothing else did back then either, so that's just fine :) 20:15:32 Slackware still *uses* lilo. 20:15:44 I mean, it doesn't support any other bootloader. 20:15:48 the ideal would be a bootloader that can use linux filesystem modules 20:15:55 silly to duplicate all that effort 20:16:14 i.e. using linux on a /boot partition as the boot loader? 20:16:34 olsner: well, yeah :) 20:16:41 why /can't/ linux boot itself? 20:16:51 It can. kexec. 20:16:51 I suppose the problem is you need the filesystem support to load the filesystem support 20:16:55 but that's only a problem if it's not compiled in 20:16:59 -!- nooga has joined. 20:17:10 The issue is getting *a* Linux running in the first place... 20:17:12 surely it'd not take much code to get linux to be installable outside of the FS 20:17:20 you'd need a suitable boot sector, that's all 20:17:26 Until 2.6 you could. 20:17:26 it can/could/does build with a built-in boot sector 20:17:34 Now I made the function "probNorm" to normalize a probability distribution using MonoidicT. 20:17:34 what did 2.6 do? :( 20:17:42 dd if=/boot/vmlinuz of=/dev/fd0 20:17:47 Removed the boot sector. 20:17:53 lame 20:18:11 I think it only booted from floppy, though. 20:18:26 But it has to be a list, the monoid has to be a Ring and a MonoidPlusNorm and Eq, and the data has to be Ord. 20:18:47 zzo38: you don't need a list 20:18:50 see Data.Foldable 20:19:35 elliott: OK, I will look. 20:19:45 zzo38: I'd go for foldMap -- that lets you map every element of the structure to a monoid, then sums them all 20:19:57 so you just take the function to turn it into a monoid (e.g. Sum) and extract the final value out 20:20:06 but you could do foldr (+) 0 if you're boring :) 20:20:20 actually 20:20:23 Data.Foldable.sum exists, so yeah 20:21:52 The probNorm function does a whole bunch of stuff including sorting and combining entries, and removing zero probabilities (represented by values equal to mpempty) 20:24:10 ais523: this VM is currently taking a really long time to calculate checksums 20:24:13 ais523: I probably should have given it more RAM 20:24:39 Yes there is Data.Foldable.sum but I am using it for any ring, so that won't work. 20:27:03 Yeah, just use the folds directly then 20:35:22 ais523: the installer died at the hands of the OOM killer... 20:35:28 ouch 20:35:32 probably it does need more memory :) 20:35:38 I'll do it again later :P 20:35:40 cba right now 20:46:57 -!- NihilistDandy has joined. 21:10:34 `? welcome 21:10:37 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 21:10:39 `? finland 21:10:42 Finland is a European country. There are two people in Finland, and at least five of them are in this channel. Corun drives the bus. 21:10:44 (turns out those are not the same word) 21:11:00 `? elliott 21:11:02 elliott wrote this learn DB, and wrote or improved many of the other commands in this bot. He probably has done other things? 21:11:09 Gregor wrote that. 21:11:13 `? Gregor 21:11:15 Gregor took forty cakes. He took 40 cakes. That's as many as four tens. And that's terrible. 21:11:25 `? ai 21:11:27 `? ais523 21:11:27 ai? ¯\(°_o)/¯ 21:11:29 ais523 is ais523. This topic may retroactively become more informative if or when Feather is invented. 21:11:33 `? Ph 21:11:35 Ph? ¯\(°_o)/¯ 21:11:36 `? Phantom_Hoover 21:11:38 Phantom_Hoover? ¯\(°_o)/¯ 21:11:45 I keep forgetting to hit tab. 21:11:55 `? EgoBot 21:11:57 EgoBot? ¯\(°_o)/¯ 21:12:02 `? fungot 21:12:02 `? friendship 21:12:03 Phantom_Hoover: is not often that he returns empty-handed. he knows where the old slope holds unchanged the fine estates and bits of walled garden and crystal 21:12:04 fungot? ¯\(°_o)/¯ 21:12:08 `? friendship 21:12:11 friendship wisdom 21:12:19 friendship wisdom 21:12:21 How do I add things 21:12:34 `? CakeProphet 21:12:36 ​:> 21:12:42 `? tiffany 21:12:44 tiffany? ¯\(°_o)/¯ 21:12:52 `? augur 21:12:54 augur took no cakes. 21:12:56 wha? 21:16:40 How do I add things 21:16:43 learn to `learn 21:18:20 HELLO BEAUTIFUL SEXY NEW COMPUTER 21:18:32 $ df -h . 21:18:34 Filesystem Size Used Avail Use% Mounted on 21:18:36 /dev/sda1 2.7T 7.2G 2.6T 1% / 21:18:38 Awwwwwwww yeaaaaaaaaaaah 21:18:54 7.2GB used? omg the bloat 21:19:46 Gregor: mount | grep sda1 21:20:33 `learn you a haskell 21:20:35 I knew that. 21:20:37 `? you 21:20:39 `? you 21:20:39 you a haskell 21:20:41 you a haskell 21:20:44 You so a Haskell. 21:21:03 elliott: ... why? 21:21:19 Gregor: Because I bet you're using a Wrong Filesystem, and I want to insult your computer on that basis. 21:21:43 I'm using ext4. LOLOL IT DON'T SCALE I PREFER MURDERFS 21:21:47 `learn fungot cannot be stopped by that sword alone. 21:21:48 Phantom_Hoover: when age fell upon the world whenever another earthquake shall heave their monstrous stone city again to the pit, all fnord by a white god might prove valuable to the ethnologist. in his lonely farmhouse. he was writhing under the bedclothes, and a sprinkling of crumpled papers. it was inside this circle that the ring of fire. 21:21:49 I knew that. 21:21:53 `? fungot 21:21:55 Phantom_Hoover: that such regions in truth existed, seemed amply clear from many things. faint cries and groans unmistakably came up now and then he shut him in an attic room across the hall. all i could, and watched for the lights to come up early the next day with little old matthew fenner, whose grave was not very likely to be fnord fnord, 21:21:55 fungot cannot be stopped by that sword alone. 21:21:58 he's probably using one of the boring default ones, like ext4 21:22:03 ^style 21:22:03 Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc jargon lovecraft* nethack pa sms speeches ss wp youtube 21:22:21 -!- Patashu has joined. 21:22:25 Gregor: Nah, ext4 probably scales just fine, it's just intended obsolete by design :) 21:22:35 it's as if he'd rather want a working filesystem than a cool one 21:22:48 Gregor: Hope you're happy when its authors decide we're ready for btrfs, which ext4 is meant as a transition to! Enjoy yer Oracle 21:23:15 MurderFS is what is also known as ReiserFS, right? 21:23:26 olsner: I'm so glad serious people like IBM don't use the 12-year-old filesystem I use. 21:23:48 elliott: hmm, which one was that? JFS? 21:23:53 yeah 21:24:00 actually 21 years old, but JFS2 is 12 years old 21:24:25 the filesystem i turn to when i want coolness is nilfs2 :P 21:24:30 hah, OS/2 had JFS support :D 21:24:39 it's where it originated :P 21:25:00 -!- Phantom_Hoover has left ("Leaving"). 21:25:04 -!- Phantom_Hoover has joined. 21:25:18 I always assumed it came from AIX or at least that it never existed at the same time as OS/2 21:26:08 They first shipped it for OS/2 in 1999. 21:26:21 OS/2, of course, lasted a *lot* longer than it had any right to. 21:26:47 The Linux version is a port of the OS/2 version. 21:34:06 * ais523 reads about Eclipse's new language Xtend 21:34:26 as far as I can tell, it's basically Java plus all the syntactic sugar they could think of 21:34:39 although "whitespace inference" is a bit bizarre 21:34:40 haha 21:34:46 wait, what? 21:34:57 when you have a string with a bunch of interpolations in 21:35:01 They first shipped it for OS/2 in 1999. 21:35:06 then you might want to put whitespace around the interpolations 21:35:09 oh, hmm 21:35:12 which doesn't go in the string 21:35:17 elliott: Yes, OS/2 lasted fucking *ages*. 21:35:17 olsner: looks like JFS1 was AIX in 1990, and JFS2 was OS/2 in 1999 21:35:25 ais523: weird 21:35:33 so it figures out whether the whitespace is meant to be part of the string, or is just there for indentation 21:35:46 ais523: oh, I see 21:35:47 and Eclipse syntax-highlights which is which, obviously 21:35:48 Actually, make that "has lasted". 21:35:54 which doesn't go in the resulting string, not which doesn't go in the source string 21:36:01 IBM sold it off, but it's still actively developed. 21:36:03 I thought "x${y}z" would become "x foo z" or something 21:36:05 with y="foo" 21:36:20 ah, I see 21:36:24 you're thinking of Perl 6, there 21:37:01 Hell, it's even vaguely usable still; Firefox, OpenOffice, VLC, et al. have maintained ports. 21:38:13 pikhq_: I think the same applies to AmigaOS 4 :-) 21:39:21 ... The fuck? 21:39:32 eComStation's sound stack is a port of ALSA. 21:39:38 X-D 21:41:20 -!- nooga has quit (Quit: leaving). 21:42:05 [elliott@dinky Temp]$ qemu -m 1024 -hda weboflies.qcow2 -cdrom ~/Downloads/archlinux-2011.08.19-netinstall-i686.iso -boot c 21:42:05 Failed to allocate 1073741824 B: Cannot allocate memory 21:42:05 Aborted 21:42:07 ais523: wait, what? 21:42:24 clearly it was trying to allocate 1GB of memory 21:42:25 -/+ buffers/cache: 3190 613 21:42:32 hmm... why is all my RAM used up? 21:42:36 at least, that looks around 1GiB, I'm not sure if it's exact as I don't have it memorized 21:42:43 * elliott checks how to sort by RAM in topa gain 21:42:46 s/topa /top a/ 21:42:53 (I have to look it up every time I want to do it) 21:42:59 M 21:43:01 ais523: that would be the -m 1024 part 21:43:12 elliott: I just use < and > after loading top 21:43:14 olsner: gah, I think it's counting virtual memory 21:43:19 they changes the sort order 21:43:25 olsner: can I count physical memory? 21:43:27 and it's normally reasonably obvious what they're sorting by right now by inspection 21:43:29 ais523: *change 21:43:33 err, yes 21:44:01 elliott: hmm... I thought it sorted by RSS or something, at least not VSIZE 21:44:13 -!- nooga has joined. 21:45:06 oh, killall chromium actually solved the problem 21:45:57 ais523: I'm surprised qemu's allocation actually /failed/, though 21:46:02 I'm pretty sure I have overcommit on 21:46:17 how would you process ruby source files containing classes? discovering/adding/removing class contents 21:46:22 qemu might be asking to commit that memory 21:46:29 nooga: awk 21:46:38 olsner: hmm, how do you do that? 21:46:44 nooga: or sed, at a pinch 21:47:03 there's a flag to mmap for that, MAP_LOCK or something 21:47:12 elliott: well an alloc that large would be mmaped 21:47:23 mmap overcommits too 21:47:40 hmm 21:47:53 i tried with ruby ParseTree and sexp_processor 21:47:57 and ruby2ruby 21:48:14 nooga: congratulations, you successfully overthought the problem in an insufficiently reflective language 21:48:15 elliott: MAP_POPULATE requests prefaulting 21:48:20 ais523: fair enough 21:48:27 I just went and looked it up 21:48:38 and ofc, if you're overcommitting but prefaulting is requested, then you can tell something's worng 21:48:40 *wrong 21:48:41 elliott: ruby is quite reflective at runtime 21:48:46 I doubt qemu /would/ be prefaulting, though, it has no reason to do so 21:48:52 nooga: no it's not, at least not in the right sense 21:48:58 ruby provides no access to its ast whatsoever 21:49:51 ParseTree takes a method or class and throws it's sexp representation in your face 21:50:07 you can mess with sexp and then translate it to ruby again 21:50:18 its* 21:50:23 i will never learn 21:50:29 Ruby: because we think every AST is a sexp! 21:50:50 isn't parse_tree by zenspider 21:50:55 I can't imagine his software is any more tolerable than himself 21:55:02 ais523: haha, wow, apaprently the Calibre website says "Please do not use your distribution provided calibre package, as those are often buggy/outdated. Instead use the Binary install described below." 21:55:10 *apparently 21:55:23 elliott: beautiful 21:55:26 "As I suspected, you're in this not to contribute something to the community, but as a destructive influence." ;; ooh, this keeps getting better and better 21:55:27 -!- edne has joined. 21:55:35 (after he gives up on writing exploits because the guy keeps patching it) 21:55:36 hi edne 21:55:37 `? welcome 21:55:39 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 21:55:45 elliott: hi 21:57:00 ais523: haha: "Well, if you do not wish to help, that leaves me with no choice but to remove the mount helper." 21:57:33 ais523: (this is /after/ one of them supplies a drop-in replacement patch using the udisk script Ubuntu uses) 21:58:13 "@Dan: You were on my ignore list, which meant I never saw your exploit" ;; lmao 21:58:18 this is definitely the best bug report I've read 21:58:32 can you link it again? 21:58:38 given that I assume you're there atm 21:58:43 https://bugs.launchpad.net/calibre/+bug/885027 21:58:48 good luck trying to find your previous position 22:02:09 I found it pretty easily, actually 22:02:24 by skimming for the comment I remembered being at the end 22:03:26 http://www.ciclops.org/view_media/34501/Catching_Its_Tail%253Fjs%253D1?js=1 22:03:27 Whoa. 22:06:55 Oh, I just realised that the line in the middle is the rings. 22:07:04 I thought it was some weird formatting bug. 22:07:12 ais523: I like the guy who signs every comment with " of the GNAA." like it's a Ph.D. 22:07:16 Please note that I misjudged just how broken this code is 22:07:23 Phantom_Hoover: X-D 22:07:47 Phantom_Hoover: What is it with planets looking so cool. 22:08:07 Phantom_Hoover: (OK this is bias in the form of how cool the Earth looks seeming mundane.) 22:08:13 got to the end and now it says "Displaying first 40 and last 40 comments." 22:08:40 olsner: heh 22:08:42 elliott, have you seen pictures of the Earth from space? 22:08:47 Phantom_Hoover: Phantom_Hoover: (OK this is bias in the form of how cool the Earth looks seeming mundane.) 22:08:54 there went all sense of accomplishment from getting to the end 22:09:14 Ah, I was confused by your insane grammar. 22:09:38 olsner: um it inserts "N comments hidden" inline 22:10:08 (I think the best demonstration of the 60s is that TOS episode where they had a completely cloudless Earth because /nobody had seen a picture of it from space/. 22:10:10 *) 22:10:20 c) Has the full right to be proud of his work and initially doubt and/or question vulnerability reports from an unknown source 22:10:32 I didn't read those "comments hidden" blocks since they weren't formatted as comments :) 22:10:32 An unknown source that gives source-format exploits. 22:10:47 Phantom_Hoover: Oh man, that would be cool to see. 22:11:18 I think IWC had an annotation on the matter. 22:11:32 Phantom_Hoover: It's simultaneously weird at what a relatively high level of tech we were at in the 60s and still not having been to space, and weird that we managed to go to space on the tech level of the 60s. 22:11:46 (You think my grammar is insane, try THAT one out for size.) 22:12:41 "Standby and I'll update the exploit for your latest fix" :> 22:12:43 elliott, I think it's even weirder that navigational computers could be fitted into a spacecraft less than thirty years after someone had the bright idea of building one of these computer things. 22:12:53 ais523: the best part is people claiming it's secure because it's not used if you have udisks installed 22:13:02 ais523: despite it /still being installed/ 22:13:20 Phantom_Hoover: That's... pretty unbelievable when stated like that. 22:13:35 Phantom_Hoover: I think I know the reason we haven't gone back to the moon yet, it's because it worked like flying does in H2G2. 22:13:38 thirty years is a long time, though 22:13:42 We only managed it because we hadn't realised how bloody hard it was. 22:13:59 I'm less than 30 years old; and a lot's happened in technology in my lifetime 22:14:04 Or maybe because the Russians couldn't be allowed to get there first? 22:14:18 ais523: OTOH, the further you go back, the fewer advances technology makes in 30 years... 22:14:22 ais523, oh man, I honestly remember being introduced to the web. 22:14:33 what massive technological advancements happened 1210-1240? 22:14:51 (I bet that date span I just made up contained the invention of something of huge magnitude by sheer coincidence.) 22:14:52 elliott, careful, that way lies mainly Kurzweil. 22:14:59 hmm; I think it's to do with the speed of communication 22:15:10 "Colossus was the world's first electronic programmable computer." 22:15:12 Phantom_Hoover: Oh come on, it's undeniable that the rate of change /has/ increased rapidly in recent history. 22:15:13 without good communication technology, technological advances have to be made again and again and again 22:15:24 elliott, yeah, unquestionably. 22:15:32 Phantom_Hoover: That's not the same as "also, it's going to increase exponentially in the next like ten years and then we'll be friendship computers". 22:15:46 It was a joke. 22:15:55 Phantom_Hoover: YOU COMPARED ME TO KURZWEIL THAT WILL NEVER BE A JOKE 22:15:56 * elliott sobs 22:15:58 "In Song Dynasty China and the classical Islamic world, this century marked the high point for both classical Chinese civilization, science and technology, and classical Islamic science, philosophy, technology and literature." 22:16:16 elliott, your anti-11th-centur— wait 1200s are the 13th. 22:16:20 Phantom_Hoover: FML 22:16:22 Oh good. 22:16:26 That's still nothing compared to the craziness that was the 20th century. 22:16:33 Yeah nothing happened then. 22:16:49 pikhq_, sorry, you're not allowed to comment after that stupid thing you said about the Dark Ages once. 22:16:50 July 17 – Former king Sverker the Younger of Sweden is defeated and killed by present king Erik Knutsson of Sweden in the Battle of Gestilren. 22:17:00 Phantom_Hoover: Wow, Erik Knutsson must be really old if he's the present king. 22:17:04 Phantom_Hoover: I said something about the Dark Ages? 22:17:05 If Swedes died in it, it's all right with me. 22:17:12 Phantom_Hoover: Also the middle ages never happened OK. 22:17:43 http://en.wikipedia.org/wiki/Timeline_of_historic_inventions#13th_century 22:17:46 Aahahahaha 22:17:49 Worst century. 22:17:49 http://upload.wikimedia.org/wikipedia/commons/c/c9/Hommage_of_Edward_I_to_Philippe_le_Bel.jpg ;; wow this is the worst interior design. 22:17:54 We started the century having basically figured out industry, and ended it with flight, computers, networking, nuclear power, and an insane pile of science. 22:17:55 "al-Jazari's automata" 22:18:01 Phantom_Hoover: Paper mill ain't bad! 22:18:05 pikhq_, you forgot the space! 22:18:11 Phantom_Hoover: OTOH that's 100 years, not 30. 22:18:22 Pfft, it's just a normal mill with paper. 22:18:24 Derivative. 22:18:26 Phantom_Hoover: omg "The first confirmed record of a press appeared in a 1439 lawsuit against Gutenberg." 22:18:31 Also, yes, we got spaceflight and satellites. 22:18:32 Superinjunctions! 22:18:32 http://en.wikipedia.org/wiki/Al-Jazari#Automata 22:18:39 Actually this looks pretty cool. 22:18:40 Which system do you prefer: degrees or zodiac or hours? 22:18:50 zzo38: Radians. 22:18:52 Phantom_Hoover: OMG robot band. 22:19:06 pikhq_, which computers totally ruined (note: opinion derived from Project Rho, probably wrong). 22:19:25 Phantom_Hoover: Wow, that timeline of historic inventions' entire list for the 20th century is "the web". 22:19:29 What's up with that. 22:19:30 (There was also probably something about how it would have all been great if Asians had done it which I trimmed out.) 22:19:39 elliott: Because nothing else matters. 22:19:49 pikhq_: Tell me you're not being serious. 22:19:49 elliott, it takes the confused.com attitude towards history. 22:20:03 elliott: That's the most heavily sarcastic thing I have said in memory. 22:20:06 elliott: remove that and replace it with a link to wikipedia, the pinnacle of human achievement 22:20:06 pikhq_: O, OK. However, Astrolog does not support that format. But if I write such a program, possibly I will include that option. 22:20:08 Phantom_Hoover: You fuckwit, I just heard that ad play out in my head. 22:20:09 Man, this article is so terrible. 22:20:14 pikhq_: OK good. 22:20:36 Phantom_Hoover: Maaan, it just reminded me that we STILL haven't replicated greek fire yet. 22:20:39 Somebody get on that??? 22:20:45 elliott, dude, napalm. 22:20:47 I want to the world's best hooligan??? 22:21:01 We mightn't be able to /replicate/ it, but we can do a hell of a lot bette. 22:21:03 *better 22:21:07 Phantom_Hoover: I don't WANT better. 22:21:15 http://upload.wikimedia.org/wikipedia/commons/2/25/Hand-siphon_for_Greek_fire%2C_medieval_illumination.jpg 22:21:17 Look at this guy. 22:21:27 This guy is standing on a seriously structurally unsound battleground. 22:21:30 He does look pretty awesome. 22:21:33 He doesn't even GIVE a shit. 22:21:40 Also wow how tall is that thing. 22:21:42 Particularly how his tower is just like "FUCK YOU GRAVITY". 22:21:58 Phantom_Hoover: I like how the castle looks like it was drawn by a five year old. 22:22:05 Including the two-dimensional bits at the top whose name I don't know. 22:22:13 elliott, do you know nothing about art history? 22:22:27 Phantom_Hoover: Do you know nothing about the history of manuscripts authored by five-year-olds. 22:22:31 JUST SAYING? 22:22:34 (Astrolog is set to zodiac signs by default, but it can use hours and degrees too. I set it to degrees; but astronomers who want to measure right ascension will probably use the hours format. Astrologers probably want to use the default setting for zodiac (which is probably why it is the default).) 22:22:37 It's basically "art was all drawn by five-year-olds until the Renaissance when they finally worked out how to draw actual things". 22:22:58 Also they're crenellations you fool. 22:23:03 Phantom_Hoover: Not actual five-year-olds. 22:23:11 Just people with all the aesthetic sense of five-year-olds. 22:23:17 http://upload.wikimedia.org/wikipedia/commons/2/2f/Hand-siphon_for_Greek_fire%2C_medieval_illumination_%28detail%29.jpg 22:23:20 Also, that's an exclusively European phenomenon. 22:23:20 Phantom_Hoover: OK seriously I want one of those. 22:23:26 pikhq_, clap clap clap, ur decetefivte 22:26:27 -!- quintopia has quit (Ping timeout: 245 seconds). 22:27:31 Although there are many correct arguments against astrology, there are also some wrong ones, such as this one: http://jyte.com/cl/if-you-must-do-astrology-you-should-at-least-get-the-position-of-the-sun-correct Some lists have both correct and wrong ones. They really should learn better before writing such wrong things. 22:27:56 If you say the sun is yellow due to 2+2=3, then you can get a correct conclusion even though you are making the wrong arguments for such things! 22:31:57 http://en.wikipedia.org/wiki/Early_thermal_weapons 22:32:12 'Thermal weapon' is apparently a euphemism for 'setting fire to stuff'. 22:32:54 "War without fire is like sausages without mustard" 22:32:56 I like this man. 22:34:52 Phantom_Hoover: PH how is dynamite so modern. 22:35:03 "A boy without mischief is like a bowling ball without a liquid center." "A gleekzorp without a tornpee is like a quop without a fertsneet (sort of)." "A man without religion is like a fish without a bicycle." "A computer without COBOL and Fortran is like a piece of chocolate cake without ketchup and mustard." 22:35:03 I don't know? 22:35:18 Phantom_Hoover: Like what did we even do for fun before then. 22:35:29 Gunpowder. 22:35:39 Which isn't even a high explosive. 22:36:25 -!- quintopia has joined. 22:36:25 -!- quintopia has quit (Changing host). 22:36:25 -!- quintopia has joined. 22:36:37 Do you prefer cake with ketchup and mustard, or with fire and gunpowder? 22:37:31 Fire and gunpowder. 22:37:35 Gunpowder smells nice. 22:37:48 "People exposed to TNT over a prolonged period tend to experience anemia and abnormal liver functions. Blood and liver effects, spleen enlargement and other harmful effects on the immune system have also been found in animals that ingested or breathed trinitrotoluene. There is evidence that TNT adversely affects male fertility, and TNT is listed as a possible human carcinogen." 22:38:08 I remember when one of the staircases in the school science building smelt of it for days because of What The Sixth Years Did. 22:38:09 Phantom_Hoover: We should start just, like, putting TNT into the water supply of countries we don't like. 22:38:17 Then they will all become infertile and blow up?? 22:38:34 I think it's stable in solution or something? 22:38:48 I think you are not supposed to put TNT into the water supply. 22:39:03 zzo38: oh, OK then. 22:39:09 Also TNT is quite hard to blow up anyway. 22:39:20 TNT contains 4.184 megajoules per kilogram. 22:39:25 Phantom_Hoover: Dammit when did we start using TNT for explosives. 22:39:27 Add " as appropriate. 22:39:32 if not TNT, what *are* you supposed to put in the water supply? 22:39:41 olsner: Hydroxic acid. 22:39:43 Phantom_Hoover: What weren't you allowed to do because of the sixth years again? 22:39:47 Huh, that's almost exactly 1000 times the heat capacity of water. 22:39:58 elliott, get chemicals which we didn't explicitly need. 22:39:59 TNT = explosive water. 22:40:18 You also need to put dihydrogen monoxide. 22:40:31 It was first synthesised in 1863, and was used as a dye. 22:41:45 http://en.wikipedia.org/wiki/File:Sailor_Hat_Shot.jpg 22:41:51 It's... like Minecraft in real life. 22:43:14 Phantom_Hoover: Man, and that was from the days where clicking TNT would blow it up. 22:43:21 They must have been really careful. 22:43:56 -!- MSleep has joined. 22:44:35 -!- sllide has quit (Read error: Connection reset by peer). 22:44:59 zzo38: "hydroxic acid" = water? 22:45:00 -!- sllide has joined. 22:47:10 -!- MDude has quit (Ping timeout: 240 seconds). 22:47:22 ais523: Yes 22:47:30 ais523: what's your favourite locale? 22:48:10 en_GB.UTF8 22:48:13 or however it's spelt 22:48:40 Why not en_US.SJIS? :P 22:48:47 ais523: your wish is my command; what's your favourite hostname 22:48:59 elliott: I normally use biomes as hostnames 22:49:09 But there are only like five of them! 22:49:11 (Bad Minecraft joke.) 22:49:28 ais523: Is there a biome where everything is miniature and also in a VM. 22:50:41 so as this one won't be around long, let's use "glacier", which isn't a biome but would be if more things lived there 22:50:41 and which is also rapidly melting 22:50:41 What about mushroom? 22:50:51 not as far as I know 22:51:46 Mushrooms aren't rapidly melting, Phantom_Hoover. 22:51:59 * elliott usually calls VMs matryoshka because he thought of it once and then never stopped using it. 22:52:04 It's a pain to spell, though. 22:52:50 -!- MSleep has quit (Read error: Connection reset by peer). 22:53:02 -!- MSleep has joined. 22:53:08 -!- MSleep has changed nick to MDude. 22:54:42 -!- NihilistDandy has quit (Quit: http://haskell.org). 22:55:52 elliott: luckily, I think cyrillic transliterations are varied enough that almost any spelling can be correct 22:55:57 "correct" 22:56:11 I'm not sure exactly how to pronounce it, either :) 22:56:32 in russian, obv. 22:56:49 let's see... Матрёшка 22:56:52 mat puker 22:57:33 matpuker, much easier to spell 22:58:11 Huh, nobody told me Chrome does RSS now. 22:58:27 a matpewka in the pectopah 22:58:43 -!- sebbu has quit (Read error: Connection reset by peer). 22:59:04 ais523: weboflies would work in Xen, right? 22:59:05 -!- sebbu has joined. 22:59:06 -!- sebbu has quit (Changing host). 22:59:06 -!- sebbu has joined. 22:59:10 elliott: I don't see why not 22:59:17 unless it triggers entirely different kernel bugs there 22:59:24 I doubt it, it's just drivers 22:59:32 ais523: and oh no, that means I've had another "if I was using Kitten..." moment. 23:02:20 ais523: [elliott@dinky Temp]$ qemu -m 1024 -hda weboflies.qcow2man -net nic -net user,hostfwd=tcp::2222:22 23:02:23 ais523: let's hope this works 23:02:25 oops, s/man// 23:02:48 qemu: -net user,hostfwd=tcp::2222:22: Device 'user' could not be initialized 23:02:50 oh good 23:03:01 aha 23:03:03 needs a - after 2222 23:04:31 ais523: libpng is the only dependency I need, right? 23:05:08 elliott: yes 23:05:17 well, barring the obvious, like glibc 23:05:24 Save the others: Eat yourself! 23:05:29 ok /me eats self 23:05:37 ais523: lol, the arch "emacs" package depends on gtk 23:05:55 Debian has both gtk and non-gtk versions, I think; IIRC both are installed here 23:06:15 seems there's no alternative, sigh 23:06:28 I'll just let it install gtk 23:06:29 to Emacs? 23:06:35 ais523: to the main package 23:06:39 does vim depend on gtk too? that'd be really hilarious 23:06:40 it's only a 70 meg download 23:06:44 Congrats, you're the only Arch user of emacs that doesn't want gtk 23:06:44 one that would go much faster with kitten... 23:06:55 ais523: No, there's a separate gvim package 23:06:59 it really irks me to see it download a bunch of few-hundred-kilobyte packages and pause noticably between them 23:07:02 Deewiant: The only? 23:07:11 Plenty of people use Emacs from the console 23:07:21 even I do sometimes 23:07:25 mostly when I'm termcasting for vim users 23:07:25 Arch has a lot of people who work from the console so I'd be very surprised if nobody would want it 23:07:36 ais523: hahaha 23:07:48 I was just referring to how there doesn't seem to be even an AUR package for non-gtk emacs 23:07:56 Deewiant: heh 23:07:57 I may've missed it though, there's a lot of emacs packages 23:08:19 Deewiant: you think it'd be easy, arch does tons of optional dependencies by just letting things break without them; all it'd take is some logic to make -nw be default if the gtk libs can't be found 23:08:34 I guess it'd have to load them dynamically too 23:08:43 And at that point people start getting queasy because ~OMG PATCHES~ 23:08:44 -!- hagb4rd has quit (Ping timeout: 240 seconds). 23:10:40 Why aren't you checking package integrity in parallel you stupid thing 23:12:37 Oh man, I can use the terminal UI stuff I'm developing now for the installer too 23:12:46 Have you ever wanted your installer to have a BETTER UI THAN DARCS?!?!?!?! TRY KITTEN 23:13:38 Do you think this is OK way to measure the width? objWidth (Box p) = maximum $ 0 : map (\((x, _), z) -> x + objWidth z) p; 23:17:22 Should there be a submodule for Graphics.DVI that is for accessing the system printer driver with it? 23:19:31 huh 23:19:54 i try to record a screencast fot the sixth time 23:20:14 i suck at speaking in english 23:21:22 ais523: yay, it's finally installed emacs and libpng 23:21:35 and libpng-dev? 23:21:46 ais523: that's part of library packages in arch, I think 23:22:03 hmm, source distro? 23:22:06 no 23:22:19 debian is the only one that does stuff like that 23:22:25 it's not even that i don't know what to say or make lame mistakes 23:22:29 i just mumble 23:22:30 why would a binary distro download library headers with libraries? most people want the libraries to run programs using them, not write programs using them 23:22:42 ais523: you can compile programs without writing them 23:22:50 * elliott finds the -doc and -dev splits really annoying, personally 23:23:06 -!- zzo38 has left. 23:23:08 I could buy that the -dev split might be OK for most Linux users (but probably not most Arch users), but -doc is just silly 23:23:14 well, yes, but you're on a binary distro; if you're compiling, it's probably because it's something that the distro doesn't package, or that you're working on personally 23:23:20 -doc is a bit silly, agreed 23:23:41 ais523: or you want a newer version, or you're installing something from the AUR (which is source-based), or it's source-configured like dwm 23:23:46 the second is particularly pertinent 23:23:57 ais523: anyway, I really doubt headers take up a noticable amount of space 23:24:09 keeping them together, at worse, wastes a bit of space 23:24:23 67M/usr/include 23:24:29 I was expecting it to be smaller, but I guess most headers are <4K 23:24:32 anyway, that's still pretty tiny 23:24:39 compared to, say, binaries :P 23:24:39 if headers are small, and they are, I suppose you could just have a package containing /all/ library headers 23:24:46 ha 23:24:50 that would conflict with itself, though 23:24:54 54M/usr/include 23:24:56 (with --apparent-size) 23:25:07 299M /usr/include 23:25:15 234M with --apparent-size 23:25:17 Deewiant: you have a bigger disk than me, so it balances out :) 23:25:22 * elliott considers making ais523's user account have correct name information 23:25:29 as much of it as you know? 23:25:29 otherwise how could I know he's the 523rd such user on the system? 23:25:35 ais523: I believe I know it all 23:25:37 unless you have more middle names 23:25:42 well, OK 23:25:44 elliott: 50G for / 23:25:46 i have all the middle names 23:25:52 things like room number are part of the name info, aren't they? 23:25:57 and I can't quite remember that myself 23:26:00 ais523: I... doubt it? 23:26:27 ais523: looks like room number is a separate field 23:26:33 well, OK 23:26:39 but it's the same block of info, so it's unified in my head 23:26:44 ais523: technically, I should be asking you whaty it is, along with your work phone, home phone, and other 23:26:49 s/whaty/what/ 23:26:52 but who even fills those out? 23:26:54 elliott: but I can't quite remember it 23:27:00 ais523: what's your favourite password :) 23:27:03 nor my work phone number, although I could look it up 23:27:08 elliott: like I'm going to tell you that :) 23:27:27 ais523: what's your second-favourite password :P 23:27:31 isn't it usual for you to set one and tell me, in this situation? 23:27:42 yes 23:27:51 you're so boring! 23:27:59 wait, /me gets the best idea 23:28:12 that distributed RNG thing you wrote for nomics? 23:28:22 that's beautiful too, but my idea was simpler 23:29:20 I suppose we could diffie-hellman a password over IRC, so it'd all be in the open and yet only us would know the passwords 23:29:23 but I can't remember how it works 23:29:54 I love how cryptography does the impossible on a regular basis 23:30:06 ais523: what does the naming scheme that made you ais523 do when people don't have middle names? 23:30:19 elliott: puts an x in there, generally 23:30:32 # adduser exh1 23:30:35 although I've seen other letters, that's only in staff names (which don't have the numbers) 23:31:05 What's it do with people with only a first name? Another x? 23:31:15 ais523: if you look at /etc/shadow, try not to mentally crack my password 23:31:18 pikhq_: I haven't seen that happen 23:31:25 * elliott hasn't yet shaken the habit of using one password for everything... 23:31:29 elliott: is it, umm, using an insecure hash? 23:31:37 it's the default, which is I think MD5(!) 23:31:38 Well, yeah, it's not exactly *common* any more. 23:31:44 but I somewhat doubt you can mentally crack MD5 23:31:55 elliott: I advise you to put the MD5 of your password into Google 23:31:59 if there are any results, change it :) 23:32:02 hmm, good idea 23:32:13 (note: this is the world's best method of reversing hashes) 23:32:18 god, I love the "incident will be reported" message 23:32:33 ais523: no results :) 23:32:49 wow, my old password gets results, though 23:32:58 and it's not a word or anything 23:33:16 the database it returns looks suspiciously like it's from leaked hashes of some kind 23:33:25 I need to try with mine, but I'm trying to work out how to md5 it without it being in my bash history 23:33:41 ais523: echo -n "$(cat)" | md5sum 23:33:43 -n to avoid the newline 23:33:49 you could also just md5sum and use ^D^D 23:33:58 ah right, I was thinking without it appearing on screen eitehr 23:34:00 *either 23:34:24 because I've been known to termcast shell sessions by mistake before now, also as I'm paranoid 23:34:30 ais523: hmm, someone must have packaged the "securely read a password" thing into a program 23:34:33 echo -n "$(cat)", eww 23:34:36 ais523: I know Python has an stdlib for it 23:34:41 Deewiant: :) 23:35:00 perl -MTerm::ReadPassword -e 'print read_password' 23:35:04 that's pretty simple 23:35:18 perl -pe 'chomp if eof' | md5sum 23:35:42 ais523: heh, I just outright googled my old password,a nd it's in SHA1 databases too 23:36:04 s/a nd/ and/ 23:36:06 I keep making that mistake 23:36:14 yay, no results for either of my insecurish passwords 23:36:28 I'm assuming the ones that are meant to be secure, and that are only used in one place, really are secure 23:36:46 phew, my current password has no results 23:36:51 (Google could already know it about a thousand times over) 23:36:57 (so I don't see any harm in searching for it) 23:37:15 wow, host key generation takes ages 23:39:03 ais523: hmm, I'm changing my password to stop you possibly worrying about reading /etc/shadow :) 23:40:09 ais523: OK, ssh -p 2222 ais523@95.149.230.52; your password is your middle name, and you have passwordless sudo access 23:40:17 and so do I :p 23:40:37 what's his middle name again? 23:40:51 olsner: exactly 23:40:55 no longer my password on glacier :p 23:41:11 ais523: hmm, did your wikipedia article have it? 23:41:13 (new password is unique but insecure) 23:41:17 elliott: I think so, but I don't know 23:41:22 good thing it's deleted! 23:41:31 err, it looks like changing my password failed 23:41:46 don't worry, I won't look at /etc/shadw until you fix it 23:42:21 it's shadow, not shadw, these days 23:42:26 ais523: but I /msg'd you my requested new password 23:42:29 as you're the only one with sudo access 23:42:56 -!- pikhq has joined. 23:43:13 -!- pikhq_ has quit (Ping timeout: 252 seconds). 23:44:01 ais523: couldn't resist 23:44:10 what couldn't you resist? 23:44:14 oh right 23:45:37 hmm, a few warnings, but none are relevant 23:46:03 elliott: well, weboflies works just /fine/ inside the VM 23:46:10 on echo, at least 23:46:11 ais523: hahahahaha 23:46:13 let me check on cat 23:46:23 ais523: theory: it's something to do with 64-bit 23:46:26 yep, I just did cat /etc/passwd 23:47:12 ais523: see, if I was running Kitten, I could change the desired architecture in my VM configuration file and rebuild it in minutes... 23:47:32 oh, I was wondering why root's password wasn't shadowed; it was because it wasn't the actual root account, but a repeatablized one 23:47:51 heh 23:48:08 ais523: oh, I forgot to remove root's password; it's "x" 23:48:16 and now it's not 23:48:27 now it's inverse_shadow("!"), which has no result 23:49:02 hmm, I just tried running weboflies on su, to see what would happen 23:49:20 ouch 23:49:25 and it just said incorrect password, without taking input 23:49:30 haha 23:49:35 ais523: it probably tried to get control of the tty 23:49:45 but it can; the tty actually exists 23:49:54 it's just a repeatablized tty 23:50:11 there was also a bunch of "unknown syscall 102" 23:50:13 ais523: maybe you have a bug that stops such input methods working 23:50:17 test with that perl program :) 23:50:18 which is socketcall 23:50:24 so it's trying to use sockets for some reason 23:50:53 I think what I'd expect it to do is to notice it isn't running as root, and exit 23:50:59 ais523: it's emailing your password to rms for the Revolution 23:51:02 (you can't debug suid programs while still having them escalate) 23:51:04 On 64-bit it's getuid 23:51:14 (I wouldn't make cheap rms jokes if he hadn't written literally that about su) 23:51:16 Deewiant: rather than setuid? 23:51:25 Yes, setuid is 105 23:51:26 ineiros_: no, syscall 102, presumably 23:51:40 102 is socketcall 23:51:43 elliott: that was a weird misping 23:51:45 On 64-bit it's getuid 23:51:56 on 64-bit, syscall 102 is socketcall 23:51:58 is what Deewiant is saying 23:52:24 s/is/isn't/ 23:53:15 well, socketcall doesn't exist on 64-bit 23:53:33 and this is running 32-bit su, as weboflies only runs 32-bit programs 23:54:04 I need to go home, anyway 23:54:21 elliott: anyway, if you want to run weboflies, now you have a VM it works in ;) 23:54:53 Linux glacier 3.0-ARCH #1 SMP PREEMPT Wed Oct 19 12:14:48 UTC 2011 i686 QEMU Virtual CPU version 0.15.1 GenuineIntel GNU/Linux 23:55:00 elliott: what version Linux on your own computer? 23:55:56 ais523: haha; and the same but x86-64 and not Virtual CPU 23:56:02 I suspect it's a 64-bit thing 23:56:53 ais523: since this is an up-to-date Arch system and I haven't fiddled about with anything like that at all 23:57:30 I just don't see how the number of bits would matter for file permissions 23:57:43 unless, hmm, perhaps that's just a symptom of the syscall numbers being all wrong 23:57:53 yep; note that I /did/ do -m32 23:57:58 but what if: 23:58:05 try running it on a 32-bit program 23:58:10 ais523: I did (weboflies) 23:58:19 you ran it on /itself/? is that sane? 23:58:26 ais523: it didn't even get to printing the usage error message 23:58:29 (I didn't specify any parameters) 23:58:40 ais523: like, let me tell you what number ioctl is on 64-bit 23:58:46 and you can check what that corresponds to on 32-bit 23:58:58 -!- ais523 has quit (Remote host closed the connection). 23:59:34 /usr/include/asm/unistd_64.h:#define __NR_ioctl16 23:59:38 #define __NR_ioctl 16 23:59:38 #define __NR_lchown 16 23:59:43 Right 23:59:48 I doubt lchown is being called at process startup time...