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