←2011-12-13 2011-12-14 2011-12-15→ ↑2011 ↑all
00:02:13 -!- pikhq has joined.
00:02:14 -!- pikhq_ has quit (Ping timeout: 252 seconds).
00:04:32 <kallisti> oerjan: does applicative have any category theoretic definition?
00:11:40 <oerjan> "technically, a strong lax monoidal functor"
00:12:31 <kallisti> ..
00:12:39 <oerjan> also i rethought my definition of a free applicative
00:13:17 <oerjan> data FreeA where Pure :: a -> FreeA t a; (:<*>) :: FreeA t (a -> b) -> t a -> FreeA t b
00:13:51 <oerjan> you then have some data constructor t providing you with your fundamental actions
00:14:50 <kallisti> help how do I define a function that constructs a value with type FreeA t a
00:15:40 <oerjan> well, Pure :: a -> FreeA t a would be one...
00:16:20 <oerjan> another would be (Pure id :<*>) :: t a -> FreeA t a
00:16:55 <oerjan> the latter is how you would normally convert a value of type t a
00:17:35 <kallisti> ah right I was confusing something with something else.
00:18:15 <oerjan> oops
00:18:19 -!- oerjan has quit (Quit: Needs reboot).
00:18:25 -!- MDude has joined.
00:22:02 -!- Nisstyre has quit (Quit: Leaving).
00:25:00 -!- Nisstyre has joined.
00:27:53 * kallisti steals oerjan's soul and casts Lightning Lvl 1,000,000 oerjan's body explodes into a fine bloody mist, because oerjan is only a Lvl 2 Druid.
00:31:11 -!- cheater has joined.
00:33:57 -!- elliott has quit (Ping timeout: 240 seconds).
00:36:34 -!- oerjan has joined.
00:38:50 <oerjan> * kallisti steals oerjan's soul and casts Lightning Lvl 1,000,000 oerjan's body explodes into a fine bloody mist, because oerjan is only a Lvl 2 Druid.
00:39:10 <oerjan> please don't do that.
00:40:01 <oerjan> i feel freaked out like ais523 when people say "damn you" to him
00:43:29 <oerjan> i don't think you could have possibly timed it worse, either.
00:44:54 <oerjan> dammit you're even afk, aren't you.
00:50:45 -!- oerjan has quit (Quit: Damn you.).
00:52:05 -!- PiRSquared17|afk has joined.
00:53:43 <PiRSquared17|afk> revert http://esoteric.voxelperfect.net/w/index.php?title=Language_list&curid=960&diff=26056&oldid=26045 plz
00:57:46 <PiRSquared17|afk> ...please undo/rollback?
00:59:16 -!- oerjan has joined.
00:59:59 <PiRSquared17|afk> oerjan: http://esoteric.voxelperfect.net/w/index.php?title=Language_list&curid=960&diff=26056&oldid=26045
01:00:17 <PiRSquared17|afk> rollback/undo it
01:00:38 <oerjan> PiRSquared17|afk: i'm not an admin so i cannot rollback, anyone can undo it though...
01:00:47 <PiRSquared17|afk> OK
01:01:11 <PiRSquared17|afk> I know what undo is BTW
01:01:19 <PiRSquared17|afk> I thought you were an admin
01:03:08 <oerjan> elliott certainly keeps joking about it
01:03:15 <oerjan> well, maybe not lately
01:04:00 <PiRSquared17|afk> How is http://esoteric.voxelperfect.net/wiki/Special:Listgrouprights an error?
01:04:29 -!- MDude has quit (Read error: Connection reset by peer).
01:04:54 <oerjan> well it says no such special page exists...
01:05:53 <PiRSquared17|afk> Like http://www.mediawiki.org/wiki/Special:ListGroupRights ...
01:06:04 <PiRSquared17|afk> It must be really old MediaWiki then
01:06:08 <oerjan> yes it is
01:06:51 -!- Jafet has quit (Quit: Leaving.).
01:07:30 -!- Jafet has joined.
01:10:59 -!- nys has quit (Quit: quit).
01:13:37 -!- MDude has joined.
01:14:34 -!- PiRSquared17|afk has changed nick to PiQuad.
01:19:17 <oerjan> instance Applicative FreeA t where pure = Pure; Pure f <*> Pure x = Pure (f x); fa <*> (ga :<*> xa) = Pure (.) <*> fa :<*> ga :<*> xa; fa <*> Pure y = Pure ($ y) <*> fa;
01:20:04 <oerjan> oh wait
01:20:46 <oerjan> *instance Applicative FreeA t where pure = Pure; Pure f <*> Pure x = Pure (f x); fa <*> (ga :<*> xa) = Pure (.) <*> fa <*> ga :<*> xa; fa <*> Pure y = Pure ($ y) <*> fa;
01:21:08 <Vorpal> Who came up with the idea of a bulky transformer right in the plug? Those things block more than one slot...
01:22:18 -!- Jafet has quit (Ping timeout: 240 seconds).
01:24:46 <oerjan> :t ($ ($ ($ ?x)))
01:24:47 <lambdabot> forall b b1 a b2. (?x::a) => (((((a -> b2) -> b2) -> b1) -> b1) -> b) -> b
01:30:48 -!- PiQuad has changed nick to PiRSquared17.
01:38:08 -!- derdon has quit (Remote host closed the connection).
01:44:17 -!- Jafet has joined.
01:58:50 -!- Jafet has quit (Ping timeout: 252 seconds).
02:02:43 -!- Jafet has joined.
02:17:24 <oerjan> `? mad
02:17:27 <HackEgo> ​"But I don't want to go among mad people," Alice remarked. "Oh, you can't help that," said the Cat: "we're all mad here. I'm mad. You're mad." "How do you know I'm mad?" said Alice. "You must be," said the Cat, "or you wouldn't have come here."
02:27:01 -!- MDude has quit (Quit: later chat).
02:27:15 -!- MSleep has joined.
02:43:52 <Sgeo> kallisti, update
02:50:36 -!- itidus20 has joined.
02:53:39 -!- itidus21 has quit (Ping timeout: 252 seconds).
02:55:19 <zzo38> oerjan: Do you know if there is such thing as continuation semiring?
02:56:19 <oerjan> no idea
02:56:58 <oerjan> i cannot say i recall ever seeing those two concepts in the same context
03:07:32 <zzo38> Well, I was thinking of the semiring of multimanas in Icosahedral RPG and see maybe it is like ((Five -> Natural) -> Natural) because you have a function that, for each prime mana, tells how many copies of that multiplied together, and then how many of each mana is added together.
03:07:34 -!- itidus20 has left ("Leaving").
03:08:55 -!- itidus20 has joined.
03:09:18 -!- itidus20 has left.
03:11:16 -!- itidus20 has joined.
03:11:57 <zzo38> Does this seem anything to you?
03:12:08 -!- itidus20 has quit (Client Quit).
03:12:42 -!- itidus20 has joined.
03:14:40 <oerjan> isn't that just summing a map over the list of all Five's?
03:15:00 <zzo38> In ((a -> r) -> r) like what I have above, I notice that the (r) I have is semiring and the (a) is a bounded type (so you can check all of them).
03:15:07 -!- itidus22 has joined.
03:15:34 <zzo38> oerjan: Yes, I suppose so. But I noticed the similarity to type of continuation monads
03:17:17 -!- itidus20 has quit (Ping timeout: 248 seconds).
03:19:17 <oerjan> > sum $ map (ord * ord + ord) ['a'..'e']
03:19:18 <lambdabot> 49510
03:19:33 <oerjan> something like that?
03:20:04 <zzo38> oerjan: I don't think so?
03:20:09 <oerjan> that's just using lambdabot's Num n => a -> n instances
03:20:17 <zzo38> I know that
03:20:48 <zzo38> But that isn't what I was trying to say
03:20:52 <oerjan> i don't see how else you'd want to treat it as a semiring
03:21:37 -!- itidus22 has changed nick to itidus21.
03:22:12 -!- itidus21 has quit (Quit: Leaving).
03:22:14 <zzo38> I can try to explain better. Manas make a monoid, you multiply manas together and it is commutative. There are five prime manas (named 'w', 'u', 'b', 'r', and 'g'). For example, (w), (1), (wwwb), (wubrg) are manas.
03:23:00 <zzo38> And then the sum of zero or more manas is called multimana. For example, (2w+1), (3ggr+5b+uu), etc
03:23:07 <zzo38> Now do you understand?
03:24:26 <oerjan> well ok i don't really think ((Five -> Natural) -> Natural) is the type of multimana
03:24:30 <zzo38> (These are the manas in Icosahedral RPG; they are different from manas in Magic: the Gathering.)
03:25:00 <oerjan> hm or...
03:25:35 <zzo38> oerjan: OK. I understand how that type cannot be used to check how much mana you have and stuff, but it still seems mathematically valid to me. Explain what you think it is?
03:25:51 <oerjan> is the Five -> Natural type supposed to be some number assignment to each prime mana, which you then substitute into the expression? that could work i guess.
03:26:44 <oerjan> it would be a semiring homomorphism from your expressions to such functions
03:27:05 <zzo38> oerjan: Yes, that is what I mean; (Five -> Natural) tell you how many of each prime mana you have multiplied together. And it is commutative multiplication.
03:27:17 <oerjan> ...no that is not what i mean...
03:27:41 <zzo38> oerjan: Well, it is what I mean, though.
03:28:10 <oerjan> so, Five -> Natural represents a mana then.
03:28:18 <zzo38> oerjan: Yes.
03:29:36 <oerjan> hm ok, i guess that sort of works... except that there are an infinite number of manas, so you cannot really calculate anything useful that involves more than finitely many of them.
03:30:00 -!- DCliche has joined.
03:30:05 <zzo38> oerjan: Yes, that is what I was saying too
03:30:27 <oerjan> basically ((Five -> Natural) -> Natural) doesn't tell you which arguments you need to check
03:33:26 -!- Klisz has quit (Ping timeout: 252 seconds).
03:36:06 -!- itidus21 has joined.
03:36:25 <zzo38> Yes; you cannot actually figure out the manas you have with that. But it should still be mathematically valid to have, I think? You could still have infinite sums, but supernatural numbers do too (except that supernatural numbers can have a prime number to the power of infinity)
03:37:11 <oerjan> sure, it would be as mathematically valid as set theory functions
03:39:57 -!- itidus21 has left ("Leaving").
03:40:50 <zzo38> And continuations are also using a type like that, I think?
03:41:40 <oerjan> well yes. it's Cont Natural Five
03:43:13 -!- itidus21 has joined.
03:44:05 <zzo38> oerjan: Yes. Like that. I think, for (Cont r a) in general it will be (Bounded a, Eq r, Semiring r) and in this case the types have that? I don't really know though, about other cases with these constraints, or without, or whatever, but something seem to me
03:44:10 <oerjan> i'm not sure that there is any interesting connection in semantics, though
03:45:12 -!- itidus20 has joined.
03:45:19 <oerjan> i'm not convinced you can actually compute the product of two ((Five -> Natural) -> Natural) elements
03:45:31 <oerjan> and have it halt
03:45:41 <oerjan> oh hm well
03:45:50 <oerjan> actually i guess you can
03:46:38 <oerjan> since given a Five -> Natural function, there are only finitely many pairs that sum to it
03:47:46 -!- itidus21 has quit (Ping timeout: 255 seconds).
03:48:50 -!- copumpkin has quit (Ping timeout: 252 seconds).
03:49:12 <oerjan> it's a kind of convolution
03:49:15 -!- copumpkin has joined.
03:49:34 -!- itidus20 has quit (Ping timeout: 255 seconds).
03:54:02 -!- MSleep has quit (Read error: Connection reset by peer).
03:55:08 -!- MSleep has joined.
03:57:08 <zzo38> Yes, I think so
04:01:36 -!- Vorpal has quit (Ping timeout: 248 seconds).
04:02:01 -!- itidus22 has joined.
04:02:24 -!- itidus22 has changed nick to itidus21.
04:03:45 -!- MDude has joined.
04:06:06 -!- MSleep has quit (Ping timeout: 240 seconds).
04:10:15 -!- MDude has quit (Read error: Connection reset by peer).
04:10:30 -!- MSleep has joined.
04:11:04 -!- MSleep has quit (Read error: Connection reset by peer).
04:11:40 -!- MSleep has joined.
04:12:57 -!- MDude has joined.
04:15:03 -!- MDude has quit (Read error: Connection reset by peer).
04:15:22 -!- MDude has joined.
04:16:26 -!- MSleep has quit (Ping timeout: 240 seconds).
04:19:44 <kallisti> bouncy
04:20:03 <oerjan> he's alive!
04:21:05 <kallisti> did I miss something?
04:21:26 <oerjan> no, absolutely nothing. don't you dare to read backscroll.
04:21:46 -!- copumpkin has quit (Ping timeout: 240 seconds).
04:22:10 -!- copumpkin has joined.
04:23:10 <oerjan> ok, there was this: instance Applicative FreeA t where pure = Pure; Pure f <*> Pure x = Pure (f x); fa <*> (ga :<*> xa) = Pure (.) <*> fa <*> ga :<*> xa; fa <*> Pure y = Pure ($ y) <*> fa;
04:24:16 <oerjan> and someone said something about an update.
04:25:54 * kallisti squints his eyes to read all the funny symbols.
04:26:08 <kallisti> seriously need to get VISION AIDING THINGS.
04:26:26 <oerjan> with x-rays!
04:26:42 <kallisti> okay yes... all of these things make sense.
04:26:44 <kallisti> >_>
04:27:51 <oerjan> as a reminder, data FreeA where Pure :: a -> FreeA t a; (:<*>) :: FreeA t (a -> b) -> t a -> FreeA t b
04:28:31 <kallisti> yes
04:28:43 <oerjan> oh and some infixl 4 :<*> to get the syntax to fit
04:28:56 <kallisti> I don't really understand the purpose of the t though
04:29:20 <oerjan> the t is the data type providing your primitive actions
04:29:26 <oerjan> other than Pure
04:30:18 <oerjan> basically every element looks like Pure f :<*> ta :<*> tb :<*> ... :<*> tz
04:30:39 <kallisti> ah okay it just makes it... type correctly.
04:31:05 -!- elliott has joined.
04:31:07 -!- Jafet1 has joined.
04:31:23 <elliott> oerjan: hi
04:31:26 <oerjan> hello
04:31:27 <kallisti> Jafet1: hi
04:31:43 <elliott> i must say i have never tried this 17:00-04:31 sleep pattern before.
04:32:09 <oerjan> i may have.
04:32:15 <kallisti> psh, that's 7 months ago for me.
04:32:19 <kallisti> *that's so
04:32:20 <oerjan> not very often, though.
04:32:44 <elliott> it could be worse; i've woken up well-rested not all that long before dawn
04:33:08 <kallisti> elliott: you couldn't possibly match my insane-sleep-patterns hipster cred.
04:33:19 -!- Jafet has quit (Disconnected by services).
04:33:22 -!- Jafet1 has changed nick to Jafet.
04:33:31 <elliott> kallisti: dude, "sleeping every other day" is my /standard/ pattern
04:33:44 <Jafet> Hi, I'm totally not impersonating Jafet.
04:33:56 <oerjan> Jafet: good, good
04:33:58 <elliott> hi not Jafet
04:33:58 <kallisti> Jafet: WHY SO UNAFFILIATED
04:34:12 <elliott> kallisti: there is no way you have had crazier sleep patterns than me
04:34:40 <elliott> 17:24:10: <itidus21> i think station v3 has a sort of gilligan's isle sort of plot except it does seem they are always endeavouring to get from A to B
04:34:41 <elliott> 17:24:40: <itidus21> as for the characters they would all look perfectly at home in commander keen
04:34:41 <elliott> 17:28:12: <itidus21> ... oh i think i see now.. im just in complete confusion over all the events since im just reading from a random position
04:34:41 <elliott> 17:28:36: <itidus21> thus giving the illusion that lots of stuff was all miraculously invented at once
04:34:41 <elliott> 17:30:00: <itidus21> kind of like how video games seemed amazing all at once, despite requiring the discovery of electricity, the invention of computers, the invention of television, the invention of the microchip,
04:34:44 <elliott> 17:35:40: <kallisti> the invention of people.
04:34:46 <elliott> 17:35:56: <kallisti> the invention of money
04:34:48 <elliott> 17:36:14: <itidus21> life too
04:34:50 <elliott> 17:36:22: <itidus21> eyes
04:34:52 <elliott> 17:36:23: <itidus21> hands
04:34:54 <elliott> 17:36:33: <itidus21> light
04:34:56 <elliott> 17:36:59: <itidus21> hmm
04:34:58 <elliott> this is beautiful
04:35:04 <elliott> oh, it was even better when i read those two kallisti lines as itidus21
04:35:29 <kallisti> I apparently have the most chameleon name.
04:35:37 <kallisti> blending in with everyones nicks.
04:35:42 <oerjan> kamellisti
04:35:47 <elliott> 18:37:13: <Gregor> When did freshmeat.net change to freecode.com???
04:35:50 <elliott> Gregor: Woooooow.
04:36:10 <elliott> kallisti: well it's the same length :P
04:36:15 <elliott> and has i and t
04:36:52 <elliott> Oh great, another Humble Bundle.
04:36:52 <kallisti> elliott: well I certainly don't skip days when I have no reason to, but often it happens that I need to be awake at a certain hour and not sleeping is the way to do it. But as I've said I've more or less maintaining any kind of daily interval of sleep you could imagine.
04:37:01 <kallisti> elliott: dunno I think it's happened a few times with other nicks as well.
04:37:02 <elliott> I'm starting to DREAD them.
04:37:26 <itidus21> its the dragon ball z effect... when dragonball z starts all the dragon ball characters and backstories have been established
04:37:30 <oerjan> creepy bundles
04:37:39 <elliott> kallisti: What I mean is: When I don't do anything to control my sleep schedule, I either sleep an hour or two later every early morning, or sleep once every other day.
04:37:46 <itidus21> leaving everyone just to beat the proverbial snot out of each other
04:37:58 <elliott> itidus21: :D
04:38:30 <elliott> NightSky is an atmospheric, 2D physics puzzle platformer. The player uses acceleration, gravity, and motion to navigate a glowing sphere through over 130 unique and picturesque levels.
04:38:30 <elliott> hmm, this looks nice, and Idon't have Super Meat Boy
04:38:33 * oerjan flings some proverbial snot at itidus21
04:38:37 <kallisti> itidus21: nah man dbz is all about humor and nuanced character development and plot twists.
04:38:38 <elliott> or Cave Story+
04:38:43 -!- PiRSquared17 has changed nick to Guest1234.
04:38:46 <elliott> even though I doubt I could bring myself to play it over the original translation
04:38:47 -!- Guest1234 has changed nick to Guest12345.
04:38:56 -!- Guest12345 has left.
04:39:02 <elliott> so i... guess i'll buy it sometime
04:39:07 <shachaf> What's Cave Story?
04:39:19 <itidus21> cave story is made by pixel
04:39:31 <kallisti> cave story is made by pixels
04:39:37 <elliott> shachaf: An indie platforming game released in 2004 made by a single Japanese guy.
04:39:39 <itidus21> which, in the wrong context, really doesn't add much
04:40:53 <shachaf> elliott: According to an interview, he's married.
04:41:03 <itidus21> lol.
04:41:08 <elliott> shachaf: i see wut u did ther!!!!!!!!!!!11111111124
04:41:14 * shachaf wonders whether he will ever tire of the "purposely misinterpret people" game.
04:42:25 <itidus21> its a base form of humor, but it is humor
04:42:35 <shachaf> It's the highest form of humour.
04:42:59 <itidus21> technically being in australia i should spell it with a u
04:43:07 <elliott> shachaf: Drugs are bad.
04:43:12 <elliott> (See, I deliberately misinterpreted you!)
04:43:14 <elliott> (HAHAHAHAA;]
04:43:16 <elliott> ;
04:44:59 <elliott> oerjan: an Agora quote, from the thread "On dummy player records in the CotC DB": <Goethe> These are the known unknowns, how are you labeling the unknown unknowns? <Murphy> "ehird", mostly.
04:45:17 <oerjan> elliott: good show
04:45:19 <shachaf> AGORA NOM!
04:45:23 <kallisti> Tommy is a programmer, probably the best programmer ever. He is the one and only programmer for Super Meat Boy. He travels the world searching for other programmers to kill and absorb their powers
04:45:24 <shachaf> MY FAVOURITE GAME!
04:45:26 <elliott> (*G., technically.)
04:45:33 <kallisti> this is a good bio entry.
04:45:37 <elliott> (But oerjan is too OLD for that.)
04:45:43 <itidus21> kallisti: yes.... that's good
04:45:49 <oerjan> shachaf is converted already?
04:45:51 <elliott> (He remembers the philosopher post-redesign.)
04:45:52 <elliott> *pre-
04:46:23 <elliott> oerjan: did the lists prepend "DIS:"/"BUS:"/"OFF:" prefixes in your days???
04:46:49 <elliott> ehhh, the eff have been replaced by red cross in the humble bundle?
04:46:51 <shachaf> oerjan: TOTALLY. AGORA NOM NOM NOM.
04:47:01 <kallisti> elliott: http://www.youtube.com/watch?v=W-NG4f7O1vQ
04:47:03 <kallisti> listen to this guys voice.
04:47:18 <kallisti> I don't know how I feel about it. Sometimes it's annoying, other times it's funny.
04:47:27 <kallisti> other times it sounds normal.
04:47:42 <oerjan> elliott: yes they did
04:47:54 <oerjan> well, possibly not DIS:
04:48:03 <elliott> hmph, now I have to try and remember whether or not Red Cross are worth giving money to or not
04:48:25 <elliott> oerjan: hmm, but every forum was public back In The Day, right? I guess I don't actually know when tue came along
04:49:13 <oerjan> elliott: depends how far back, discussion was explicitly made non-public so people didn't have to read it
04:49:39 <elliott> oerjan: haha, well, you'd have a hard time playing without reading a-d these days
04:49:51 <oerjan> eek
04:50:00 <elliott> oerjan: well, not really
04:50:15 <elliott> oerjan: but you'd force everyone to cfj to let you know something you did failed :P
04:50:21 <elliott> rather than just pointing it out, for one
04:50:36 <oerjan> heh
04:51:37 <elliott> WHY IST HAT MEGAUPLOD SONG STUCK IN MY HEAD
04:54:39 <shachaf> Punishment for reading the Internet.
04:55:00 <shachaf> So doun't read the Internet. That'll soulve everything.
04:55:08 * elliott logs on to the @ternet.
04:55:24 <shachaf> elliott: Enjoy your time in fantasy-land.
04:55:44 <shachaf> Also, I'm told by an unreliable source that drugs are bad.
04:56:01 -!- elliott has quit (Quit: SURFIN' THE @TERNET WAAAVES, MAAAN).
04:57:21 <oerjan> the afternet
04:58:01 -!- elliott has joined.
04:58:06 <kallisti> "In 1954, Olds and Milner found that rats with metal electrodes implanted into their nucleus accumbens as well as their septal nuclei repeatedly pressed a lever activating this region, and did so in preference to eating and drinking, eventually dying of exhaustion."
04:58:12 <kallisti> levers: the ultimate high
04:58:36 <elliott> 20:58:41: <kallisti> fizzie: man I really wish Perl 6 were a branched language and perl 6 were just some basic improvements to perl 5.
04:59:01 <elliott> kallisti: You sure do complain about Perl 6 a lot without actually providing any complaints other than a lack of some kind of "Perl essence".
04:59:16 <kallisti> elliott: dude, you don't know about the Perl essence?
04:59:19 -!- oerjan has quit (Quit: Good night).
04:59:29 <elliott> RIGHT AS I WAS ABOUT TO RESPOND TO OERJAN
05:00:03 <elliott> 21:04:57: <oerjan> @tell ais523 <ais523> elliott: the most obvious case is if there's only possibly one reference to the input array [...] <-- congratulations on reinventing the Clean language
05:00:03 <elliott> well if you /enforce/ it with uniqueness typing it works just fine of courser, but the most comfortable notation to use that is something like do notation... so you might as well just use the equivalent ST :P
05:00:07 <elliott> *course,
05:00:27 <elliott> 21:13:34: <oerjan> <elliott> ais523: I was going for data EvenList a = Nil | Cons a a (EvenList a) <-- type EvenList a = [(a,a)] kthxbye
05:00:28 <elliott> Yes, yes.
05:00:37 <elliott> I thought of that but decided to be more explicit.
05:00:57 <kallisti> elliott: my main complaint is that it doesn't feel very coherent.
05:01:24 <elliott> kallisti: I'm going to go out on a limb here and suggest that you've spent about 1% of the effort you have learning Perl 5 on learning Perl 6.
05:01:33 -!- Jafet has quit (Quit: Leaving.).
05:01:55 <kallisti> elliott: I'm offended that you would say such a thing.
05:02:24 <elliott> As someone who's spend 200% of the effort I have learning Perl 5 on learning Perl 6, I can say that Perl 6 definitely seems coherent to me.
05:03:04 <shachaf> I'm technically a committer to Perl 6!
05:03:12 <shachaf> I had the commit bit forced onto me.
05:04:04 <elliott> shachaf: Perl 6 has a repository?
05:04:15 <shachaf> github.com/perl6
05:04:36 <elliott> That's, like, 50 repositories.
05:04:55 <shachaf> FVO 50 ET 24
05:05:10 <shachaf> And apparently I have commit access to all of them?
05:05:57 <elliott> shachaf: Quick, destroy Perl 6!
05:06:25 <elliott> 23:51:24: <oerjan> data FreeA where Pure :: a -> FreeA a; (:<*>) :: (FreeA (a -> b)) -> FreeA a -> FreeA b
05:06:25 <elliott> 23:52:28: <oerjan> um i'm not sure if that's quite right, but something like that; anyhow the point is to construct something which obviously allows _just_ the Applicative operations
05:06:26 <elliott> 23:53:17: <oerjan> that thing above is probably too simple
05:06:28 <elliott> I think that's fine.
05:06:35 <shachaf> elliott: Better: I will sneak in insidious commits that will slow their development pace to a crawl, forever keeping Perl 6 in the realm of vapourware.
05:06:38 <shachaf> ...Wait.
05:06:54 <elliott> eval p _ (Pure a) = a; eval p a (f :<*> x) = a (eval p a f) (eval p a x)
05:07:01 <elliott> shachaf: Dun dun DUNNNNNN
05:07:58 <elliott> 00:38:50: <oerjan> * kallisti steals oerjan's soul and casts Lightning Lvl 1,000,000 oerjan's body explodes into a fine bloody mist, because oerjan is only a Lvl 2 Druid.
05:07:58 <elliott> 00:39:10: <oerjan> please don't do that.
05:07:58 <elliott> 00:40:01: <oerjan> i feel freaked out like ais523 when people say "damn you" to him
05:07:59 <elliott> 00:43:29: <oerjan> i don't think you could have possibly timed it worse, either.
05:08:00 <elliott> 00:44:54: <oerjan> dammit you're even afk, aren't you.00:50:45: -!- oerjan has quit (Quit: Damn you.).
05:08:16 <elliott> @tell oerjan You realise you just guaranteed that PH will say something like that to you sometime.
05:08:16 <lambdabot> Consider it noted.
05:10:17 <elliott> 04:21:05: <kallisti> did I miss something?
05:10:17 <elliott> 04:21:26: <oerjan> no, absolutely nothing. don't you dare to read backscroll.
05:10:18 <elliott> whoops
05:10:21 <elliott> kallisti: don't look a few lines up
05:11:16 <kallisti> elliott: I have no clue what I did.
05:11:31 <elliott> Hey, I told you not to look a few lines up.
05:12:12 <kallisti> but I did! Damn you.
05:12:32 <elliott> I'm not sure what you mean by "I have no clue what I did", anyway.
05:13:13 <kallisti> elliott: you're correct that I haven't spent as much time learning perl 6, however, I /have/ actually read the spec.
05:13:38 <kallisti> I certainly can't fault it for some interesting language design ideas.
05:14:03 <kallisti> but I feel it suffers from... syntactic overload.
05:15:02 <elliott> unlike Perl 5.
05:15:49 <kallisti> indeed.
05:16:04 <elliott> it was sarcasm.
05:16:04 <kallisti> perl 5 is well-balanced compared to perl 6.
05:16:08 <kallisti> yes I know.
05:16:17 * elliott disagrees.
05:16:23 <kallisti> I did that thing where I counter your sarcasm by taking it seriously.
05:16:26 <kallisti> you know that thing.
05:16:30 <elliott> Perl 5 has a ton of syntactic space devoted to useless things.
05:16:41 <elliott> Perl 6 has a ton of syntactic space devoted to useful things like higher-order operations.
05:16:56 <kallisti> perl 6 has a ton of syntactic space devoted to fixing weird issues.
05:17:16 <kallisti> the whitespace significance in particular.
05:17:37 * elliott shrugs; this is not goign to be productive.
05:17:39 <elliott> *going
05:17:41 <shachaf> Let's split the difference and all use Perl 5.5.
05:19:37 <kallisti> The spec basically reads: "in Perl 6 whitespace is more or less optional... (next section) now here is how perl 6 is highly dependent on whitespace when parsing."
05:20:50 <elliott> "In general, whitespace is optional in Perl 6 except where it is needed to separate constructs that would be misconstrued as a single token or other syntactic unit. (In other words, Perl 6 follows the standard longest-token principle, or in the cases of large constructs, a prefer shifting to reducing principle. See "Grammatical Categories" below for more on how a Perl program is analyzed into tokens.)"
05:20:52 <elliott> Not quite the same thing.
05:21:28 <shachaf> WHITESPACE IS STUPID LOL
05:21:57 <kallisti> elliott: by "next section" I was referring to the next section and not the same paragraph.
05:22:08 <kallisti> where it goes into the gory details of operator parsing and whitespace
05:22:15 <elliott> kallisti: I was saying that it does not say "in Perl 6 whitespace is more or less optional".
05:22:29 <elliott> It says "it's optional except where it is needed to separate constructs", which is exactly what the next section explains.
05:23:23 <kallisti> mmk. I'll remember the exact wording next time to avoid English-lawyering.
05:23:53 <elliott> It's awesome when you can dismiss proving your statements unreasonable as lawyering.
05:23:56 <elliott> It's so convenient!
05:24:45 <kallisti> except they weren't unreasonable I just used a wording which is slightly different but more or less (uh oh) means the same thing.
05:25:17 <elliott> *sigh*
05:25:44 <elliott> You seem to dismiss all disagreements of meaning as syntactic lawyering.
05:26:22 <kallisti> okay.
05:28:19 <kallisti> I'm not even going to attempt to refute what I seem to do.
05:31:31 <shachaf> elliott: Stop arguing about semantics. We're talking about the important stuff here.
05:31:45 <elliott> shachaf: Yes, the lexical syntax of comments.
05:32:02 <kallisti> comments?
05:32:10 <elliott> http://www.haskell.org/haskellwiki/Wadlers_Law
05:32:15 <elliott> *http://www.haskell.org/haskellwiki/Wadler%27s_Law
05:32:17 <kallisti> oh right that.
05:44:09 <kallisti> obviously syntax isn't important at all.
05:45:07 <kallisti> I'm sure if Haskell were exactly the same semantically except every lexeme were a ROT13'd counterpart, it would be just as expressive and intuitive.
05:45:23 <kallisti> er not rot13
05:45:31 <kallisti> the other one, with the bigger number.
05:45:33 <kallisti> :P
05:48:10 <zzo38> Well, Haskell does support layout and non-layout mode, and literate programs can use > or \begin{code} and in both of these cases you can mix them in a single program. (I prefer non-layout mode with > for literate programs, but they are good that they support the other way too)
05:50:17 <zzo38> Unattributed quotation is: "A good programmer can write FORTRAN in any language; a great one could write Haskell."
05:50:29 <Sgeo> elliott, kallisti update
05:51:32 <kallisti> writing X in Y is usually a bad idea.
05:54:13 <elliott> Can 3*t ever be negative where t is a positive two's-complement 32-bit integer? Can 3*t ever be positive where t is a negative two's-complement 32-bit integer?
05:55:29 <elliott> (And where 3*t is treated as a positive two's-complement 32-bit integer, of course.)
06:00:28 -!- augur has quit (Remote host closed the connection).
06:12:34 -!- hagb4rd has quit (Ping timeout: 252 seconds).
06:16:40 -!- hagb4rd has joined.
06:23:09 <olsner> elliott: I think so
06:23:21 <olsner> but I won't bother figuring it out properly
06:23:30 <elliott> Woot
06:25:24 <Sgeo> elliott, tumblrupdate
06:25:37 <olsner> hmm, positive->negative is trivial, just choose a positive number larger than 0x80000000/3
06:30:38 * elliott has restored to Stack Overflow to answer a question :-(
06:32:08 <Deewiant> !c int main(){for(char t=-128;;++t)if(t<0&&(char)(3*t)>=0)return printf("%d\n",t);}
06:32:13 <EgoBot> ​-85
06:32:41 <elliott> Deewiant: THAT'S JUST CHARS, YOU CAN'T PROVE ANYTHING
06:33:07 <Deewiant> !c int main(){for(int t=INT_MIN;;++t)if(t<0&&(char)(3*t)>=0)return printf("%d\n",t);}
06:33:08 <EgoBot> Does not compile.
06:33:30 <olsner> Deewiant: haha, does not even compile!
06:33:30 <Deewiant> !c int main(){for(int t=-2147483648;;++t)if(t<0&&(char)(3*t)>=0)return printf("%d\n",t);}
06:33:33 <EgoBot> ​-2147483648
06:33:40 <Deewiant> !c int main(){for(int t=-2147483648;;++t)if(t<0&&3*t>=0)return printf("%d\n",t);}
06:34:06 <EgoBot> ​-1431655765
06:34:16 <elliott> Deewiant: ;__;
06:34:21 <elliott> im cry
06:35:21 -!- augur has joined.
07:01:57 -!- DCliche has quit (Quit: You are now graced with my absence.).
07:04:09 <quintopia> i could have answered that question without the program. it is VERY OBVIOUS
07:04:34 <zzo38> I made a "ReadthisT" monad transformer
07:10:30 <elliott> Hmm, Stack Overflow was... surprisingly helpful.
07:11:29 <quintopia> what is sgeo talking about every time he says update? homestuck?
07:12:08 <zzo38> quintopia: I wondered about that too
07:12:28 <elliott> quintopia: He's talking about the updates...
07:12:32 <elliott> of life.
07:12:37 <elliott> auuuuuuuuuum
07:12:40 <elliott> kallisti: Right?
07:19:14 -!- const has quit (Ping timeout: 245 seconds).
07:24:52 -!- variable has joined.
07:31:09 <elliott> map_surface.c:17:2: error: missing sentinel in function call [-Werror=format]
07:31:16 <elliott> 2011 :')
07:31:39 -!- MDude has quit (Read error: Connection reset by peer).
07:33:02 <elliott> WTF
07:33:12 <elliott> Deewiant: WHY IS "int *foo = foo;" LEGAL
07:33:22 <elliott> AND NON-WARNING-PRODUCING
07:37:48 <fizzie> $ echo 'void f(void) { int *foo = foo; }' | gcc -xc - -o test.o -c -Wuninitialized -Winit-self
07:37:48 <fizzie> <stdin>: In function ‘f’:
07:37:48 <fizzie> <stdin>:1: warning: ‘foo’ is used uninitialized in this function
07:38:03 <fizzie> Rather weird that -Winit-self isn't enabled by -Wall/-Wextra like plain -Wuninitialized is.
07:38:33 <elliott> fizzie: Guess what's going into the mcmap Makefile
07:38:39 <fizzie> Can't immediately invent any real use cases for self-initialization.
07:38:50 <elliott> It's always UB, isn't it
07:38:53 <elliott> Oh
07:38:55 <elliott> Not for static variables
07:38:59 <elliott> But for locals
07:39:18 <elliott> I suppose int *foo = bar(&foo) might SOMETIMES by useful?
07:40:01 <zzo38> Yes it might sometimes be useful like that.
07:40:02 <fizzie> I... guess, but that wouldn't cause a warning anyway, since the &foo expression is not using the uninitialized value.
07:40:24 <elliott> Welp
07:40:44 <elliott> By the by, is it legal to cast a pointer to a struct to a pointer to a prefix of it?
07:40:46 <elliott> And then use that.
07:40:57 <elliott> Where prefix = prefix of the members, same type and all
07:41:08 <elliott> e.g. {int a,b,c;unsigned d;} vs. {int a,b,c;unsigned d;char *foo;}
07:41:37 <fizzie> Only if the structs are part of a single union declaration somewhere (anywhere) in the code. :p
07:41:51 <elliott> fizzie: Seriously?
07:41:54 <zzo38> Should that kind of prefixing be allowed in LLVM?
07:41:55 <fizzie> At least ISTR that the "initial common subsequence" rule was only valid for structs in a union.
07:42:07 <elliott> fizzie: OK, but surely it has to be a union value for that to be OK...
07:42:15 <fizzie> No, I don't think it has to be.
07:42:21 <elliott> fizzie: What. What.
07:42:22 <fizzie> The structures just need to be in an union somewhere.
07:42:24 <elliott> fizzie: But...
07:42:26 <elliott> But why.
07:42:30 <elliott> fizzie: OK, better question:
07:42:35 <fizzie> That's the impression I've gotten, anyway; I'd have to check if it's actually like that.
07:42:38 <elliott> struct bar {struct foo foo; ...}
07:42:46 <elliott> Can I cast (struct bar *) to (struct foo *) and do the obvious?
07:42:52 <fizzie> Yes, that you can do.
07:42:59 <elliott> OK, good :P
07:43:05 <fizzie> Because casting to the first member is legal.
07:43:40 <fizzie> (And back.)
07:43:54 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
07:44:00 <elliott> (The context is that 5 out of 8 functions in struct map_mode are shared between all flat maps, but flat_mode is duplicating the other 3, and it's ugly, so I'm going to invert me some controls.)
07:45:06 <fizzie> See, if we were writing C++, you'd just inherit it.
07:45:30 <elliott> fizzie: And this is composition instead, so ha
07:45:34 <elliott> C: More OO than C++
07:51:49 <fizzie> Okay, the "common initial sequence" rule in C99 in fact does mention "the union object". And even if the wording is a bit unclear (it has some fluff about "common initial part of any of them anywhere that a declaration of the completed type of the union is visible"), the intent is clearly just to allow the usual union event { struct { int type; } anyevent; struct { int type; int blurb; } blarbevent; ... }; ... switch(u.anyevent.type) { case BLARB: frob(
07:51:49 <fizzie> u.blarbevent.blurb); } sort of thing.
07:53:26 <elliott> Right.
07:56:05 <fizzie> I suppose some people have just then reasoned from that that since the compiler can't layout 'struct blarbevent' differently within the union object than it does elsewhere, it's still legal for any 'struct blarbevent' to access 'type' via a struct anyevent * as long as the union declaration exists somewhere.
07:56:14 <fizzie> But that's called LOGIC, and there's no place for THAT in C.
07:56:39 <elliott> fizzie: It can't?
07:56:44 <elliott> Why can't it lay it out specially there.
07:58:10 <fizzie> Because void foo(struct blarbevent *p) { ... } can't know whether it should use the special union layout or not, for the calls in struct blarbevent justblarb; union event eww; foo(&justblarb); foo(&eww.blarbevent);
07:58:21 <pikhq> Because there's two conceptions of what "C" is: what ISO C permits, and what you can get away with on common compilers.
07:58:26 <elliott> fizzie: It could pass a flag! But okay :P
07:59:55 <fizzie> Also obviously on non-DS9K the initial sequence rule works everywhere. But I guess it's generally speaking better if you just cast to the first member, since that's kosher.
08:00:04 <pikhq> I'm of the opinion that the ISO C spec is written by madmen, incidentally.
08:02:49 <fizzie> Also weirdly, the ISO webstore was made up to look like C1x was out already, even though from what I've managed to gather it's not, at least the WG14 page doesn't say anything in the 'news' section, nor the wikipedia article.
08:03:18 <fizzie> It's just that http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=57853 "ISO/IEC 9899:2011 .. Stage: 60.60 (2011-12-08) .. 60.60: International Standard published"
08:03:25 <fizzie> I guess it might be out?
08:03:31 <fizzie> 2011-12-08 is kinda recent.
08:03:59 <elliott> fizzie: Weird.
08:04:09 <elliott> fizzie: It's not been on proggit or anything.
08:04:20 <elliott> (The DISPENSERS OF SUPREME TRUTH.)
08:06:05 <fizzie> Yes, or ~anywhere else that I could find, which is what is confusing me.
08:07:53 <elliott> fizzie: Maybe they just finalised it but haven't actually super-duper-officially ratified it yet, and it's /published/ but not finalised?
08:08:05 <elliott> i.e. They're publishing it in preparation for saying "it's finalised, everyone buy it now!".
08:10:19 <fizzie> I suppose it might be something like that, though the stage codes don't go any further than 60.60 (except for periodical-review and withdrawal paths). And it passed some sort of a national-body "final review" in October. But I guess they'd want it available before and not after the official "okay, here it is" announcement.
08:11:57 <elliott> fizzie: Well, I'm not saying it's anything "official", I'm just saying that getting things into the system, division of work, etc. etc. means that their online store could perfectly well think it's Done(tm) before they actually ratify it.
08:17:04 <fizzie> All in all, it's also an indicator that it's probably going to be out soon. Maybe we'll even get a C11 instead of a C12, depending on how they date these things.
08:17:13 <fizzie> "ACTION
08:17:14 <fizzie>
08:17:14 <fizzie> Convener
08:17:14 <fizzie> forward
08:17:14 <fizzie> the
08:17:14 <fizzie> WP
08:17:16 <fizzie> as
08:17:18 <fizzie> revised
08:17:20 <fizzie> in
08:17:22 -!- fizzie has left ("Leaving").
08:17:36 <fizziew> Best paste ever.
08:17:43 <fizziew> Every word on one line.
08:18:08 <elliott> :D
08:18:10 <elliott> fizziew: Haven't you heard of /flushq, NOOB???
08:18:26 <fizziew> Thank you; I was just about to ask about that.
08:18:32 -!- fizzie has joined.
08:18:38 <elliott> :D
08:20:46 -!- zzo38 has quit (Remote host closed the connection).
08:20:48 <fizzie> Anyway, "DONE: ISO/IEC DIS 9899 was submitted to ITTF, and approved with no comments. The DIS will be forwarded to ITTF for final publication per ISO/IEC rules." -- from the WG14 Dec 7th meeting minutes. So I suppose it's coming.
08:21:31 <elliott> No comments?
08:21:33 <elliott> How boring.
08:21:56 <fizzie> Everyone wants a C11 and not a C12, mayhaps.
08:22:12 <elliott> So what's the standard amoutn of time you have to wait before complaining that your bug is being ignored?
08:22:22 <elliott> I commented 5 days ago and the guy went silent. :(
08:22:31 <fizzie> The silence of shame.
08:25:01 <fizzie> I submitted a libpurple patch two months ago, and someone promptly actioned on the item by setting the milestone of the trac ticket to "Patches Needing Review" the very next day. (After that, nothing has happened, but I guess it still counts as a response.)
08:27:58 <elliott> fizzie: They're still trying to figure out how to apply it with Monotone.
09:10:30 -!- Jafet has joined.
09:16:11 -!- Jafet1 has joined.
09:18:39 -!- Jafet has quit (Ping timeout: 252 seconds).
09:20:17 -!- Jafet1 has changed nick to Jafet.
09:20:24 <Jafet> I'm still Jafet.
09:20:40 <elliott> Jafet: I'm not.
09:20:58 <Jafet> That's a shame. The world needs more Jafets.
09:21:58 * elliott becomes Jafet.
09:34:19 <elliott> fizzie: And just to check: *(struct foo *)ptr_to_bar = foostruct; is OK, right?
09:34:26 <elliott> Er, hmm, it's actually
09:34:32 <elliott> *(*struct foo**)ptr_to_bar = ptr_to_foo;
09:34:34 <elliott> Argh
09:34:36 <elliott> *(struct foo**)ptr_to_bar = ptr_to_foo;
09:34:38 <elliott> where bar is like
09:34:45 <elliott> struct bar { struct foo *etc; ... }
09:39:51 <fizzie> I... think there was something about all structure pointers having to have the same size and representation. But I think to be on the safe side that should be *ptr_to_bar = (struct bar *)ptr_to_foo;
09:42:43 <fizzie> (Assuming a struct foo *ptr_to_foo which actually points to a struct foo inside a struct bar.)
09:42:53 -!- Vorpal has joined.
09:46:03 <fizzie> Incidentally, earlier when you had "struct bar { struct foo foo; ... }", even though "struct bar *pb; ... struct foo *pf = (struct foo *)pb;" is legal, it might be slightly more self-documenting to just "struct foo *pf = &pb->foo;" instead. It'd also have the "doesn't need to be first member benefit", except that it doesn't if you're then later casting that struct foo * back to the struct bar *.
09:49:45 <elliott> fizzie: I can't do that, though, because there's no one "struct bar".
09:49:49 <elliott> It's ~generic~. :p
09:49:56 -!- Vorpal_ has joined.
09:50:00 -!- Vorpal has quit (Ping timeout: 268 seconds).
09:51:33 <elliott> "But I think to be on the safe side that should be *ptr_to_bar = (struct bar *)ptr_to_foo;:
09:51:45 <elliott> <fizzie> (Assuming a struct foo *ptr_to_foo which actually points to a struct foo inside a struct bar.)
09:51:53 <elliott> fizzie: Um, I think you've misread what I asked./
09:52:02 <elliott> struct quux { struct argh *etc; ... more members ... }
09:52:08 <elliott> I have a struct quux *eh.
09:52:14 <elliott> And a struct argh qqq.
09:52:15 <elliott> erm
09:52:17 <elliott> And a struct argh *qqq.
09:52:19 <elliott> I want to do
09:52:29 <elliott> *(struct argh **)eh = qqq;
09:52:31 <elliott> Is that allowed?
09:53:17 <fizzie> I don't think that makes any sense. *(struct argh **)&eh = qqq; might.
09:53:56 <fizzie> But it's not really any different that eh = (struct quux *)qqq; except it's a "reinterpret the pointer" thing instead of a "cast the pointer" thing.
09:54:21 <elliott> fizzie: Uh, what?
09:54:39 <fizzie> Ohhh, there's a *pointer* at the start.
09:54:42 <fizzie> Not a member.
09:54:51 <elliott> fizzie: I'm just asking whether I can assign to the first member of a struct (which is a pointer) by casting it to the type pointer-to-[member].
09:55:11 <fizzie> Right, right, right; I kept reading that as struct quux { struct argh etc; ... more members ... } instead.
09:56:16 <fizzie> Yes, given struct quux { struct argh *etc; ... }, you can cast a struct quux * into a struct argh **; it's still a pointer to the first member.
09:56:45 <fizzie> Though with just this little context it's not entirely clear why not just eh->etc = qqq then.
09:56:59 <elliott> <elliott> fizzie: I can't do that, though, because there's no one "struct bar".
09:56:59 <elliott> <elliott> It's ~generic~. :p
09:57:13 <elliott> It's actually a void *eh, that just points to a struct with a (struct argh *)-typed first member.
09:57:20 <elliott> Any struct, rather.
10:10:20 <fizzie> Hrm. At least it will work. I'm trying to figure out if DS9K can make it not work, due to involving a void * in there. The standard's wording for the conversion rule is: "A pointer to a structure object, suitably converted, points to its initial member, and vice versa." So it's mostly about whether "struct foo { anytype x; ... }; struct foo f; void *pg = &g; anytype *x = pg;" is "suitably converted".
10:11:28 <fizzie> Or whether you actually only legally can "struct foo f; anytype *x = (anytype *)&f;" where the compiler knows it's converting from the structure-pointer to the first-member pointer.
10:11:57 <elliott> fizzie: Ugh.
10:12:17 <fizzie> There can't be any padding at a beginning of a struct, so it's somewhat hard to figure out a way to make it not work. Except maybe by having a really weird 'void *'.
10:12:20 <elliott> Aaaa I am mere hours into my Stack Overflow experience and already have 48 reputation and an accepted answer.
10:12:29 <elliott> Must... escape...
10:13:15 <fizzie> E.g. a "void *" format which is a concatenation of two parts, first half used for structure pointers and the second one used for any other object pointers. With that sort of thing it'd go wrong.
10:13:36 <elliott> fizzie: Surely that's not legal.
10:14:29 <fizzie> Well, it fulfills the main rule for void *, which is "A pointer to any object type may be converted to a pointer to void and back again; the result shall compare equal to the original pointer."
10:15:35 <elliott> fizzie: :(
10:17:44 -!- hagb4rd has joined.
10:17:54 -!- Ngevd has joined.
10:18:34 <fizzie> If all structure pointers are alike, you could "struct foo { anytype x; ... }; struct foo f; void *pg = &f; anytype *px = (anytype *)(struct { anytype x; }*)pg;", but that's the most ridiculous thing ever.
10:19:25 <elliott> fizzie: Weeeell, yes, but surely there's some sort of in-between condition you can rely on?
10:20:08 <elliott> <fizzie> E.g. a "void *" format which is a concatenation of two parts, first half used for structure pointers and the second one used for any other object pointers. With that sort of thing it'd go wrong.
10:20:17 <elliott> fizzie: I should probably note that both pointers involved here are to structs.
10:21:17 <fizzie> Well, no, if the first member is a pointer to struct, then pointer-to-the-first-member is a pointer to pointer to struct, which might have a completely different representation than pointer to struct.
10:21:53 <elliott> Fair enough.
10:22:05 <elliott> I'm changing it to be just an included struct so that everything will work out fine. :p
10:22:10 <elliott> Also less indirection overhead!!
10:25:37 <fizzie> I'm still not entirely sure a messed-up void * like that is legal; there's one rule that says "pointer to an object type may be converted to a pointer to a different object type [, and if resulting pointer is "correctly aligned" for the referenced type,] when converted back again, the result shall compare equal to the original pointer."
10:26:03 <fizzie> And void * is a pointer to an (incomplete) object type, and must have no alignment restrictions.
10:26:10 <elliott> fizzie: Weeell, it works. :p
10:26:33 <elliott> I'll care more about fixing it if someone comes up with a way to avoid it, or machines that break it actually start existing.
10:26:52 <elliott> (struct foo *) -> (void *) -> (firstmember *) is notw hat I would call a terribly controversial conversion.
10:28:37 <fizzie> Well, no. And anyway (struct foo *) -> (char *) -> (firstmember *) is required to work, so it'd take a really perverse (if even legal) implementation to make the version with void * not work. (There may not be padding at start of a structure, and converted char * always points "to the lowest addressed byte of the object".)
10:29:04 <fizzie> I don't think you should turn it into a char * though. :p
10:29:23 <elliott> *not what
10:29:30 <elliott> fizzie: I should just remove all the data structure and use (char *) instead.
10:29:35 <elliott> It'll be like Tcl, but it's C, so it'll be FAST.
10:30:00 <fizzie> You could then implement "types" with some sort of macros that operate on char *s.
10:31:09 <fizzie> #define PLAYER_Y(p) (((p)[2] << 8) | (p)[5])
10:31:27 <fizzie> (That was supposed to be bytes 2 and 3, but it's even better like that.)
10:33:18 <hagb4rd> mozart indeed sounds like bubblegum.. dunno one of my favourite comp. is musorgsky: powerful. epic drama spending some creeps from time to time.. |ve heard this one before (one of few nice classic themes used as bgmusic in froniert elite II :P i love it --> http://www.youtube.com/watch?v=eILjzkiTSbE&fmt=18 ..gregor knowing that you|re into classic..may i ask which is your favourite one, if there is?
10:33:48 <elliott> fizzie: Macros???
10:33:53 <elliott> fizzie: Uh, THOSE AREN'T STRINGS.
10:34:05 <elliott> char *PLAYER_Y = "(p) -> (((p)[2] << 8) | (p)[5])";
10:35:10 <hagb4rd> gregor: chopin_
10:37:03 <elliott> hagb4rd: Pachelbel is Gregor's favourite composer.
10:37:35 <elliott> RIGHT GREGOR?
10:40:18 <hagb4rd> elliott:ok thx .. but i|ve made plans to somehow start a conversation with gregor :P all my plans lyin on the ground now
10:40:32 <elliott> hagb4rd: But I was lying.
10:40:34 <elliott> You still can!!!
10:40:39 <elliott> Gregor actually hates Pachelbel.
10:41:02 <hagb4rd> hehe..im joking..half joking
10:47:54 * elliott buys Yet Another Humble Bundle
11:00:07 -!- monqy has quit (Quit: hello).
11:29:52 <hagb4rd> Vindum, vindum vef darraðar, þars er vé vaða vígra manna!
11:29:52 <hagb4rd> Látum eigi líf hans farask; eigu valkyrjur vals of kosti.
11:32:22 <hagb4rd> Wind we, wind swiftly
11:32:22 <hagb4rd> Our warwinning woof.
11:32:22 <hagb4rd> sword-bearing rovers
11:32:22 <hagb4rd> To banners rush on,
11:32:22 <hagb4rd> Mind, maidens, we spare not
11:32:22 <hagb4rd> One life in the fray!
11:32:22 <hagb4rd> We corse-choosing sisters
11:34:33 <hagb4rd> its from the islandic njal saga.. (used also by wagner in his ride of the valkz
11:36:15 <hagb4rd> which i definitivly have not read yet.. do you know it? http://omacl.org/Njal/1part.html
11:39:46 <hagb4rd> ynuff spam for today..the resonance is outragious <>
11:45:46 -!- GreaseMonkey has quit (Quit: The Other Game).
12:07:13 <hagb4rd> http://www.youtube.com/watch?v=LudzD5EAOlo&fmt=18 //cu!
12:07:16 -!- hagb4rd has left.
12:09:14 -!- Taneb has joined.
12:09:20 <elliott> hagb4rd: Brabenite!
12:13:00 -!- Ngevd has quit (Ping timeout: 276 seconds).
13:43:33 <Taneb> I like today's Gunnerkrigg Court
14:07:02 <Sgeo> Completely random, but elliott, have you seen Puella Magi Madoka Magica?
14:07:25 <Sgeo> I vaguely wonder if I asked this before
14:08:40 <elliott> No.
14:09:18 <Sgeo> Unrelatedly, tumblr update
14:10:38 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
14:40:35 -!- boily has joined.
15:10:59 -!- Klisz has joined.
15:21:11 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:24:38 -!- Klisz has quit (Read error: Operation timed out).
15:30:09 -!- Klisz has joined.
15:43:56 -!- pikhq_ has joined.
15:44:38 -!- copumpkin has joined.
15:44:54 -!- pikhq has quit (Ping timeout: 276 seconds).
15:52:23 -!- Phantom_Hoover has joined.
15:53:19 <Phantom_Hoover> Oh dear lambdabot/
15:53:19 <lambdabot> Phantom_Hoover: You have 3 new messages. '/msg lambdabot @messages' to read them.
15:53:30 -!- pumpkin has joined.
15:53:37 <elliott> lambdabot is frend
15:55:18 -!- copumpkin has quit (Ping timeout: 240 seconds).
15:56:09 <Phantom_Hoover> Friendship bot.
15:56:56 <elliott> yes.
15:57:13 <Phantom_Hoover> news-ham :(
15:57:42 <Taneb> Oh my god what has happened?
15:57:55 <Phantom_Hoover> Poor news-ham
16:22:27 -!- pumpkin has changed nick to copumpkin.
16:45:31 -!- kmc has quit (Quit: Leaving).
16:51:18 -!- DCliche has joined.
16:51:37 -!- Klisz has quit (Ping timeout: 248 seconds).
16:53:41 <Gregor> hagb4rd: You're not here now.
16:54:00 <Gregor> @tell hagb4rd My favorite composer is anyone who's asleep at 5:30AM in my timezone.
16:54:00 <lambdabot> Consider it noted.
16:54:45 <elliott> Gregor: So... Pachelbel?
16:56:16 <Gregor> @tell elliott DAAA DADADAAA DADA DADADADADADADADA DAAA DADADAAA DADA DADADADADADADADA
16:56:16 <lambdabot> Consider it noted.
16:56:34 <elliott> Katamari Damacyyyyyy
16:56:34 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
16:56:59 <Gregor> ... damn, I can't remember the Katamari Damacy song well enough to know if it matches that :P
16:57:03 <elliott> My running gag is that I pretend every piece of word-music is Katamari Damacy :P
16:57:13 <Gregor> Ah :P
16:57:16 <elliott> Thankfully word-music is so fucking hopelessly vague that it can never be disproven.
16:57:35 <Gregor> Yup
16:58:25 -!- zzo38 has joined.
16:58:45 <elliott> Alternatively,
16:58:54 <elliott> Pachelbel: Katamari Damacy's composer?
16:58:59 <elliott> Sources say YES.
17:00:44 <elliott> Gregor: Aww man, we missed Pachelbel's 358th birthday
17:09:34 <Gregor> NOOOOOO
17:11:35 <elliott> Gregor: (He'll only stop having birthdays when people stop liking his music.)
17:11:43 <elliott> (Now there's a challenge for you!!!)
17:30:21 <Phantom_Hoover> Gregor, have you watched the Pachalbel rant.
17:30:32 <Gregor> Phantom_Hoover: ... ... ... probably?
17:30:46 <elliott> Phantom_Hoover: It's "Pachelbel" you uncultured fuck.
17:31:27 -!- Taneb has quit (Quit: Goodbye).
17:42:03 <Gregor> Also, to be fair, I don't hate Pachelbel, I hate Pachelbel's Canon. But since that's the only piece people know him by, WHOOPS.
17:45:32 <elliott> Gregor: In the future people will complain about that goddamn Gregor's op. 47 that's in every fucking song.
17:45:37 <elliott> *Richards'
17:45:44 <elliott> Actually we should use first names.
17:45:55 <Gregor> 8-D
17:46:01 <elliott> We could just talk about classical composer Johann and lose no precision of value.
17:46:12 <elliott> (That is, no precision which is to be valued.)
17:48:34 <elliott> Why does -Wall -Wextra miss a ton of shit :(
17:48:38 <Gregor> Hm, there's J.S. Bach and a few other J.x. Bachs for some value of 'x' name Johann, and there's Johann Strauss Jr (HACK), and ... I can't off the top of my head think of any other Johanns. Johanneses, sure.
17:48:47 <Gregor> *named Johann
17:48:53 <elliott> Gregor: Pachelbel
17:48:58 <elliott> Pachelbel = Bach!
17:49:04 <elliott> Pachelbach.
17:49:09 <Gregor> PACHELBEL DOES NOT COUNT
17:53:34 <Phantom_Hoover> Gregor, remind me why you hate Pachelbel's Canon, I recall it being entertaining.
17:54:25 <coppro> http://www.youtube.com/watch?v=JdxkVQy7QLM
17:55:10 <Gregor> Phantom_Hoover: Because I used to play the viola.
17:57:53 <Phantom_Hoover> Gregor, hahahaha
17:57:58 <Phantom_Hoover> (The joke is the viola.)
17:58:14 <Phantom_Hoover> I, um
17:58:26 <Phantom_Hoover> Why is the Pachelbel rant playing at 4x.
17:58:29 <elliott> NOBODY TOLD ME STACK OVERFLOW WAS THIS ADDICTIVE
17:58:37 <elliott> Phantom_Hoover: Wait that thing's sped up?
17:58:40 <Gregor> elliott, Phantom_Hoover: You guys, I can't have two simultaneous different conversations on two channels >_<
17:58:44 <Phantom_Hoover> No?
17:58:55 <elliott> Phantom_Hoover: Oh, you meant the player is literally speeding it up.
17:58:58 <elliott> Gregor: Um, so you're inferior?
17:59:08 <Phantom_Hoover> elliott, what how
17:59:12 <elliott> Gregor: We could interleave them in this channel if that would be more convenient for you.
17:59:15 <elliott> Phantom_Hoover: WHAT ARE YOU TALKING ABOUT
17:59:16 <Phantom_Hoover> make it, stop
17:59:17 <elliott> <Phantom_Hoover> Why is the Pachelbel rant playing at 4x.
17:59:29 <Gregor> elliott: PLEASE DO
17:59:31 <Phantom_Hoover> I don't know, but when I watch it it's sped up a lot.
17:59:32 <elliott> HOW DO I HAVE 193 REPUTATION ALREADY!! WHY!! I AM NOT REPUTABLE!
17:59:49 <Phantom_Hoover> And it's _just_ that video
18:00:32 <Phantom_Hoover> And _just_ on that page.
18:00:33 <elliott> AAAAAAAAAAAH NO 208 REPUTATION WHY
18:00:38 <elliott> Phantom_Hoover: Maybe the video is just fast, dude.
18:00:42 <Phantom_Hoover> No, it's not.
18:00:50 <Phantom_Hoover> If I watch it through paravonian's channel it's fine.
18:02:39 <kallisti> elliott: yes
18:02:45 <elliott> kallisti: waht
18:03:53 <kallisti> auuuuuum
18:26:08 -!- TaneblWii has joined.
18:26:18 <elliott> taneblwii
18:26:27 <kallisti> Phantom_Hoover: bieberpunk is way better than clockpunk, btw.
18:26:48 <Phantom_Hoover> What about rockpunk?
18:26:55 <Phantom_Hoover> (This is set on Cardassia, obviously.)
18:27:19 <TaneblWii> Hello
18:27:35 <elliott> Phantom_Hoover: Quick! What's faster than a ninja?
18:27:46 <Phantom_Hoover> A ninja on speed!
18:27:55 <elliott> Phantom_Hoover: Quick! What's faster than a ninja that isn't a ninja?
18:28:11 <Phantom_Hoover> An ex-ninja on speed!
18:28:42 <elliott> Phantom_Hoover: Quick! What's faster than a ninja that never was a ninja?
18:29:09 <Phantom_Hoover> Superman.
18:29:44 <TaneblWii> This is awful; I will play table tennis instead
18:29:48 <Gregor> Welp, I've just seen the word "bieberpunk"
18:29:50 <Gregor> Time to kill myself.
18:30:09 <elliott> I didn't realise the context was pseudohistorical genres, so I just imagined Justin Bieber doing punk.
18:30:17 <kallisti> elliott: because your premise is a logical contradiction it means that all responses are true. Therefore: I fucked your mom, yo.
18:30:20 * kallisti logic
18:30:24 <elliott> Phantom_Hoover:
18:30:33 <elliott> I'd go with photon but I'd have to abbreviate it as ph and I hate you.
18:30:41 <Phantom_Hoover> Yes do that.
18:30:50 <Phantom_Hoover> (I'm way faster than a ninja anyway.)
18:30:53 <elliott> Nooo "ph" sucks to type on QWERTY.
18:31:01 <elliott> Maybe I'll call it hoover.
18:31:18 <Phantom_Hoover> Yes.
18:31:22 <Phantom_Hoover> What are you even naming.
18:31:27 <elliott> God.
18:31:41 <kallisti> elliott: you know what's cool about my awesome typing style?
18:31:42 <Gregor> Love of Jesus Photons
18:31:45 <kallisti> ph is not awkward to type at all
18:31:55 <Phantom_Hoover> Phantom_Hoover is truly the name of God.
18:31:58 <Gregor> They travel through space, spreading the Love of Jesus at just OVER the speed of light ('cuz fuck science, that's why)
18:34:23 -!- TaneblWii has quit (Ping timeout: 258 seconds).
18:35:58 <kallisti> > 2 ++ 2
18:35:59 <lambdabot> Ambiguous type variable `a' in the constraints:
18:35:59 <lambdabot> `Data.Monoid.Monoid a'
18:36:00 <lambdabot> ...
18:36:02 <kallisti> WHAT I AM SHOCK
18:36:32 <zzo38> Did they make ++ to mappend?
18:36:42 <elliott> Cale did.
18:37:09 <kallisti> > Product 2 ++ Product 3
18:37:10 <lambdabot> Product {getProduct = 6}
18:37:26 <kallisti> most useful instance in Haskell.
18:37:32 <elliott> :t (endo succ ++ endo pred) (++)
18:37:33 <lambdabot> Not in scope: `endo'
18:37:33 <lambdabot> Not in scope: `endo'
18:37:37 <elliott> :t (Endo succ ++ Endo pred) (++)
18:37:38 <lambdabot> Couldn't match expected type `t1 -> t'
18:37:38 <lambdabot> against inferred type `Endo a'
18:37:38 <lambdabot> In the expression: (Endo succ ++ Endo pred) (++)
18:37:44 <elliott> :t runEndo (Endo succ ++ Endo pred) (++)
18:37:44 <lambdabot> Not in scope: `runEndo'
18:37:46 <elliott> :t unEndo (Endo succ ++ Endo pred) (++)
18:37:46 <lambdabot> Not in scope: `unEndo'
18:37:50 <elliott> :t appEndo (Endo succ ++ Endo pred) (++)
18:37:51 <lambdabot> forall m. (Enum (m -> m -> m), Monoid m) => m -> m -> m
18:38:04 <elliott> :t appEndo (Endo (+) ++ Endo (-))
18:38:04 <lambdabot> Occurs check: cannot construct the infinite type: a = a -> a
18:38:05 <lambdabot> Probable cause: `+' is applied to too few arguments
18:38:05 <lambdabot> In the first argument of `Endo', namely `(+)'
18:38:07 <elliott> :-(
18:38:13 * kallisti had a dream that he went to an awesome party and then his car got towed in the morning and so he was homeless in a parking deck with homeless people for a day.
18:38:18 <elliott> :t appEndo (Endo (1+) ++ Endo (1-))
18:38:19 <lambdabot> forall t. (Num t) => t -> t
18:38:28 <elliott> :t appEndo (Endo (+1) ++ Endo (subtract 1)) succ
18:38:29 <lambdabot> forall a. (Num a, Enum a) => a -> a
18:38:31 <elliott> The best.
18:38:59 <kallisti> helo what does endod o
18:39:26 <zzo38> I think it makes the monoid of endomorphisms?
18:40:07 <kallisti> :t Endo
18:40:07 <lambdabot> forall a. (a -> a) -> Endo a
18:40:15 <kallisti> oh
18:40:17 <kallisti> okay.
18:40:50 <kallisti> > Endo (+)
18:40:51 <lambdabot> Occurs check: cannot construct the infinite type: a = a -> a
18:41:02 <kallisti> > Endo (+1)
18:41:03 <lambdabot> No instance for (GHC.Show.Show (Data.Monoid.Endo a))
18:41:03 <lambdabot> arising from a use ...
18:41:14 <kallisti> @hoogle Endo a -> a
18:41:14 <lambdabot> Data.Monoid appEndo :: Endo a -> a -> a
18:41:15 <lambdabot> Prelude id :: a -> a
18:41:15 <lambdabot> Data.Function id :: a -> a
18:41:19 <kallisti> ah okay.
18:43:14 <kallisti> so ++ is like . then?
18:43:24 <kallisti> but with restricted type
18:44:19 <elliott> What's a fast hash for comparing files
18:44:26 <elliott> I guess the answer is probably just SHA1
18:45:31 <kallisti> elliott: i-number :P
18:45:41 <elliott> What
18:45:45 <kallisti> inode number
18:46:06 <elliott> Hmm
18:46:11 <elliott> That won't work
18:46:14 <elliott> inodes aren't immutable
18:46:14 <kallisti> (that wouldn't -- yes)
18:46:15 -!- GreaseMonkey has joined.
18:46:15 -!- GreaseMonkey has quit (Changing host).
18:46:15 -!- GreaseMonkey has joined.
18:46:22 <kallisti> elliott: HA HA GOOD ONE RIGHT?
18:46:26 <elliott> Yes, hilarious.
18:46:27 -!- kmc has joined.
18:47:39 <kallisti> elliott: I hate people on IRC with those scripts that tell everyone every single detail about the song they're listening to
18:47:50 <kallisti> including like... the song progress and bitrate.
18:47:57 <kallisti> as though anyone cared.
18:48:13 <Gregor> I hate people on IRC with those scripts that tell everyone /any/ detail about the song they're listening to.
18:48:58 <kallisti> NP: Shakira -- Hips Don't Lie
18:49:08 * elliott is listening to: Pachelbel - Canon in D Major [04:14 / 160 Kbps]
18:49:13 -!- calamari has joined.
18:49:46 * elliott is still listening to: Pachelbel - Canon in D Major [04:14 / 160 Kbps]
18:50:52 * kallisti googled for: Pachelbel Canon D Minor by Toucans
18:51:08 <calamari> I'm putting together the source tree for a new project (git) and I'm wondering if you guys know of some projects with a good layout that I could base mine on?
18:51:24 <kallisti> linux kernel.
18:51:32 <kallisti> >:)
18:51:44 <elliott> calamari: If you don't want to put everything in the root, then src/ and include/ directories?
18:51:48 <elliott> It really depends on the language.
18:52:01 <calamari> c
18:52:35 * elliott usually doesn't separate header files and C files, since they're both source files.
18:52:53 <zzo38> Listening to: C:\MZX\HONOR1\ZIN.MOD "zine 8 music" 02:35/10:42 MOD (Protracker), 4 channels; 119956 bytes; Reverb; Surround; Graphics Equalizer; Loop Song; High quality resampling
18:52:59 <elliott> mcmap just has everything in the root directory which... works.
18:53:15 <zzo38> That is how you write a large number of details.
18:53:16 <elliott> zzo38: Thank god, now I know it's 119956 bytes!
18:53:27 <elliott> My quality of life is enhanced immeasurably.
18:53:30 <calamari> alright thanks
18:53:53 <kallisti> elliott: words has everything in one file. best layout
18:53:59 <kallisti> also my IRC bot currently does the same.
18:54:16 <Deewiant> "zine8.mod" in the mod archive
18:54:20 <elliott> kallisti: mcmap would be a very long 4442-line C file.
18:54:35 <kallisti> yeah rolebot is only 490-ish lines.
18:54:44 * Gregor is listening to: The sound of air vents and graduate students breathing.
18:54:45 <elliott> kallisti: Also some of that is generated code.
18:55:06 <kallisti> `run wc -l bin/words
18:55:13 <HackEgo> wc: bin/words: No such file or directory
18:55:24 <kallisti> ah
18:55:26 <kallisti> always forget
18:55:28 <kallisti> `run wc -l bin/word
18:55:30 <HackEgo> 19353 bin/word
18:55:40 <kallisti> that's pretty much all generated code. :P
18:56:23 <Gregor> `url bin/word
18:56:25 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/word
18:56:32 <kallisti> if you measure productivity in linecount I am an absolute god. :P
18:56:38 <kallisti> linecount / hour
18:56:39 <Gregor> `word
18:56:42 <HackEgo> botumbindins
18:56:46 <Gregor> Seems legit.
18:57:25 <kallisti> `word 10
18:57:27 <HackEgo> lum sucte cats das croclacroceess dae athcris fughtni bara zie
18:57:34 <kallisti> cats...
18:57:47 <Gregor> Cats das croclacroceess!
18:59:04 <kallisti> the best word to date is schth
19:00:24 <kallisti> it's an onomatopoeia
19:00:37 <kallisti> for the sound schth.
19:01:05 <Gregor> I seem to recall elliott complaining about a thousand-or-so line C function I had.
19:01:18 <Gregor> `log elliott.*1000.*c.*function
19:01:30 <HackEgo> 2011-01-20.txt:19:01:26: <elliott> any language but my own";) and used the CAL-1000 to develop the more robust CAL-1001, entirely in English. The CAL-1001, in turn, was used to produce the more capable CAL-1002, again in English, and so forth, all the way up to the fully functional CAL-3037, which we released as a commercial product. It's successor, the CAL-3040, is currently in testing.]]]
19:01:37 <Gregor> Piff
19:01:40 <Gregor> `pastelogs elliott.*1000.*c.*function
19:01:47 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.12772
19:02:02 <Gregor> Oh well
19:02:12 <Gregor> Oh, he was probably ehird then anyway ...
19:02:36 <kallisti> `log .*1000 lines
19:02:44 <elliott> Gregor: Not if it was cfythe.
19:02:46 <kallisti> the .* is necessary
19:02:47 <HackEgo> 2008-03-17.txt:20:24:09: <AnMaster> ais523, so your program must be shorter than 1000 lines?
19:03:15 * kallisti gives up.
19:03:18 * kallisti quitter
19:03:21 <Gregor> elliott: cfythe has no such functions, it was Plof 3.
19:04:11 <elliott> Gregor: Fair enough :P
19:06:15 -!- kallisti has changed nick to BigIndian.
19:06:33 -!- BigIndian has changed nick to xxBigIndianxx.
19:07:13 * xxBigIndianxx is experimenting with new names
19:07:22 -!- xxBigIndianxx has changed nick to kallisti.
19:07:25 <kallisti> not hardcore enough.
19:08:01 <elliott> 2011-12-14 19:07:49 (841 MB/s)
19:08:02 <elliott> Yessss
19:08:19 <kallisti> ..
19:08:23 -!- monqy has joined.
19:08:29 <kallisti> monqy: bye
19:09:14 <kallisti> Okay! See you later!
19:09:41 <Gregor> elliott: ...?
19:10:51 <monqy> hi
19:11:07 <kallisti> monqy: NOOOO
19:11:15 <kallisti> you ruined my reversed conversation
19:11:18 <Vorpal_> <Gregor> I seem to recall elliott complaining about a thousand-or-so line C function I had. <-- generated or hand written?
19:11:28 <monqy> kallisti: hi
19:11:48 <quintopia> kallisti: i'm on a boat
19:11:50 <Gregor> Vorpal_: Errr, somewhere in between? Very macro-y, but hand-written.
19:12:01 -!- Vorpal_ has changed nick to Vorpal.
19:12:17 <Vorpal> Gregor, hm, was that 1000 lines before or after cpp then?
19:12:24 <Gregor> Before.
19:12:34 <Vorpal> hm, sounds a bit on the large side yes.
19:12:41 <Vorpal> Gregor, what did it do?
19:12:52 <Gregor> It was the main interpreter loop.
19:12:54 <kallisti> quintopia: and, it's going fast and, you've got a nautical themed Pashmina Afghan?
19:13:04 <Vorpal> Gregor, well, that is excusable then.
19:13:14 <Gregor> Of course it is, elliott was just being a jerk :P
19:14:37 -!- kmc has quit (Quit: Leaving).
19:15:03 <quintopia> kallisti: ah, not yet. later.
19:15:44 <Gregor> Hahah, "1000 or so"
19:15:49 <Gregor> Make that 2,151
19:16:12 <Vorpal> heh
19:16:49 <kallisti> wow I'm kind of amazed at how much code is in Bot::BasicBot
19:17:02 <kallisti> it'll take a while to remove that dependency I think.
19:17:28 <Vorpal> Gregor, I would definitely consider splitting the case statements/blocks-after-label/whatever out into separate files then and generating a file with lots of #includes there
19:17:38 <Gregor> Vorpal: That's what I did.
19:17:54 <Vorpal> ah, good
19:18:09 <Gregor> August 2009, "Split up the obscenely-long interpPSL function into separate (#include'd) implementation files.", woooh :P
19:18:14 <Gregor> Then, later, I abandoned that codebase!
19:18:16 <Gregor> Wooooh!
19:22:42 <Vorpal> Gregor, why?
19:23:00 <kallisti> hmmm
19:23:11 <kallisti> I /could/ talk to the current maintainer and see if they would accept some patches.
19:23:19 <pikhq_> Vorpal: Gregor does rewrites periodically.
19:23:21 <pikhq_> :)
19:23:27 <kallisti> instead of basically copypasting most of the code and rewriting parts of it.
19:25:42 <Vorpal> heh
19:26:45 <kallisti> huh, so ACTION requires ctcp?
19:26:52 <kallisti> that's what it looks like, based on this code.
19:27:55 <Vorpal> kallisti, /me (ACTION) is a ctcp
19:27:58 <Vorpal> didn't you know?
19:28:22 <kallisti> not at all.
19:28:27 <elliott> "In C++0x the term "sequence point" is being replaced by the term "an operation A being sequenced before an operation B, or being un-sequenced""
19:28:30 * kallisti thinks that's stupid. :P
19:28:40 <fizzie> ^bf +.,[.,]+.!ACTION thinks that's what ACTION is.
19:28:40 * fungot thinks that's what ACTION is.
19:28:52 <elliott> kallisti: yeah, [1 byte]ACTION ... [1 byte] is such a complex format
19:28:55 <elliott> down with ctcp requiremenst
19:28:59 <elliott> requirements
19:29:02 <Vorpal> fizzie, what? Seriously?
19:29:16 <fizzie> Vorpal: Seriously what?
19:29:27 <Vorpal> fizzie, the sequence point thingy
19:29:28 <kallisti> elliott: well, no, it's not complex. but now it makes me do extra work within this high-level library. :P
19:29:36 <fizzie> Vorpal: That wasn't me.
19:29:43 <elliott> fizzie: Don't let ... whatever the P staffer guy was ... see you do that.
19:29:45 <Vorpal> fizzie, well, is it true?
19:30:01 <fizzie> I think I recall something like that being mentioned.
19:30:04 <elliott> I like how I've caused Vorpal to bother fizzie for no reason.
19:30:15 <Vorpal> elliott, I misread somehow
19:30:23 <Vorpal> elliott, I blame that I'm on a phone
19:30:50 <elliott> And it's going fast and you've got a telephony-themed pashmina afghan?
19:30:51 <Vorpal> elliott, so is it true?
19:30:51 <kallisti> sub pocoirc { my $self = shift; return $self->{IRCOBJ};
19:30:56 <kallisti> }
19:30:58 <kallisti> what the hell
19:30:59 <kallisti> is this.
19:31:01 <elliott> Vorpal: http://blogs.msdn.com/b/vcblog/archive/2007/06/04/update-on-the-c-0x-language-standard.aspx
19:31:20 <monqy> kallisti: pocoirc
19:31:27 <kallisti> Takes no arguments. Returns the underlying
19:31:27 <kallisti> L<POE::Component::IRC::State|POE::Component::IRC::State> object used by
19:31:28 <kallisti> Bot::BasicBot.
19:31:29 <elliott> "One unintentional side-effect of this feature is that it makes the following well formed:
19:31:29 <elliott>
19:31:30 <elliott> class<typename… Types>
19:31:30 <elliott> struct X {
19:31:30 <elliott> void f(Types......);
19:31:30 <elliott> };
19:31:31 <kallisti> ah yes, of course.
19:31:32 <elliott>
19:31:34 <elliott> Yes – that is six ‘.’ in a row J."
19:31:43 <elliott> Types.....
19:31:47 <elliott> .
19:32:17 <kallisti> this POE thing seems awfully crufty.
19:32:21 <kallisti> I wonder what benefits I'm getting.
19:32:27 <Vorpal> elliott, well that is stupid. Sequence point is a perfectly sensible terminology in the context of an unsafe imperative language standard.
19:32:39 <elliott> What relevant does unsafeness have
19:33:00 <Vorpal> hm, actually it doesn't, never mind
19:34:14 <kallisti> POE is a big wad of potential waiting for your kinetic. It's a mirror reflecting your ideas in code. It's the dingdong in shamalamadingdong. It's the hoho in hohoho, and at least one Po in PoCo. It's the freak in fries. It's a floor topping and a dessert wax. It's all these things and more, even Europa, and you may attempt a landing there.
19:34:19 <kallisti> wow I'm impressed.
19:36:30 -!- Lisa_ has joined.
19:36:39 <elliott> `welcome Lisa_
19:36:41 <HackEgo> Lisa_: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
19:37:08 <Lisa_> hey
19:37:33 <elliott> hi
19:39:06 <Vorpal> varadic templates seem kind of useless to me, at least unless there is some way to make a for loop generate code for each one or such inside the template definition.
19:39:16 <Vorpal> well, foreach rather
19:39:57 <elliott> Vorpal: tuples
19:39:59 <elliott> for one thing
19:40:01 <Vorpal> hm the examples seem to use MI
19:40:18 <elliott> also generalised Either (i.e. tagged type-safe union)
19:40:27 <Vorpal> elliott, sure, but I'm not sure how you would add in the n members for the n types.
19:40:55 <elliott> Vorpal: simple
19:40:57 <elliott> Vorpal: recursion
19:41:02 <elliott> you have a 0-argument base-case
19:41:07 <Vorpal> sure
19:41:10 <Vorpal> hm
19:41:14 <elliott> and the 1+ argument case either inherits from the smaller case
19:41:17 <elliott> or includes it as an element
19:41:34 <elliott> unfortunately I think my fun code for this is lost
19:41:36 <Vorpal> elliott, would you access all the members in the top level when accessing from the outside still?
19:41:46 <elliott> Vorpal: well you'd wrap it with methods...
19:41:51 <Vorpal> well okay
19:41:59 <Vorpal> still this seems kind of awkward
19:42:08 <elliott> it's C++
19:42:52 <kallisti> oh wait this is object oriented.
19:42:54 <Vorpal> elliott, also they forgot that a classical C struct basically does the job of a tuple just fine
19:42:57 <kallisti> I can just override a bunch of methods.
19:43:23 <elliott> Vorpal: uh
19:43:45 <elliott> Vorpal: if you think declaring a struct for each damn function that just happens to have more than one return value is practical
19:43:47 <elliott> then you're an idiot
19:43:59 <Vorpal> elliott, sure: struct intCharTuple { int firstmember; chat secondmember; } ;)
19:44:04 <Vorpal> char*
19:44:18 <elliott> much better than tuple<int, char*>
19:44:19 <Vorpal> elliott, (of course I'm joking)
19:44:47 <Vorpal> elliott, anyway you can do an unnamed struct in C. Not sure if that works for return values though
19:44:51 <Vorpal> probably doesn't
19:45:20 <elliott> i think it does.
19:45:42 <Vorpal> how would you actually store the return value in a local variable then?
19:46:06 <Vorpal> I guess you could access one by doing foo().bar
19:46:12 <Vorpal> but if you want both bar and quux?
19:46:59 <Vorpal> elliott, anyway there is also the traditional C solution: foo(int *retval1, char *retval2)
19:47:13 <elliott> the traditional terrible solution
19:47:19 <Vorpal> well yes
19:48:11 <elliott> C would be about 0.75x better if it just had tuples
19:48:34 <elliott> i think (T,T',...) is unambiguous for more than one T in every situation a type can occur in
19:48:36 <pikhq_> *(compatible_struct_pointer*)&foo()?
19:48:37 <elliott> although casting that is a bit ugly
19:48:46 <elliott> (int, char *) foo(void);
19:48:51 <elliott> hmm wait
19:48:59 <Vorpal> pikhq_, :P
19:49:00 <elliott> that gives no obvious syntax for the literals
19:49:06 <elliott> hmm, would [foo, bar] be ambiguous as a type or literal?
19:49:34 <Gregor> <Vorpal> Gregor, why? <pikhq_> Vorpal: Gregor does rewrites periodically. // It's more like I redesign the language from scratch periodically, which requires a rewrite of the whole engine too :P
19:49:43 <Gregor> Plof 3 lasted me a long while, I'm hoping Fythe will too.
19:49:56 <Vorpal> Gregor, no plof 4?
19:49:56 <pikhq_> Well, it *would* look something like an entirely valid array index.
19:50:14 <pikhq_> But I doubt that it would be ambiguous in contexts where you're doing a type or literal.
19:50:29 <pikhq_> Vorpal: Plof 4 will be written using Fythe, hopefully.
19:50:37 <Vorpal> heh
19:50:43 <pikhq_> Fythe is just the low-ish level VM.
19:50:59 <Gregor> Plof 4 is already partially implemented (in Fythe)
19:51:00 <Vorpal> heh
19:51:02 <Gregor> But very, very partially :P
19:51:04 <Gregor> Haven't found the time.
19:51:42 <pikhq_> I seem to recall the main reason for scrapping Plof 3 was that it was hellishly slow.
19:52:08 <Vorpal> hm
19:52:27 <Vorpal> pikhq_, the language or the implementation?
19:52:30 <pikhq_> Yes.
19:52:36 <Vorpal> both? okay
19:52:51 <pikhq_> It was a hellishly slow implementation of a language that had a design nearly mandating pretty damned slow implementation.
19:53:03 <pikhq_> Also, Boehm GC.
19:53:17 <Vorpal> well, surely boehm gc could have been replaced
19:53:23 <pikhq_> Indeed.
19:53:37 <pikhq_> And Fythe now uses G^5C
19:53:43 <pikhq_> (is it ^5?)
19:54:31 <Vorpal> right
19:56:33 <Vorpal> hm, someone should make a piece of software with the version number in the middle of the name and then get it popular enough to make debian include it. I wonder how they would solve that
19:56:56 <pikhq_> Debian is not above using its own versioning scheme.
19:57:02 <elliott> Vorpal: the same way they do interacl
19:57:04 <elliott> intercal
19:57:49 <Vorpal> elliott, well, lets say that the version number made up most of the name. Like G^5C (not exactly version number, more like complete redesign, I know). You couldn't really call it just GC-5
19:58:07 <Vorpal> that would be too generic
19:58:19 <elliott> Vorpal: Debian append their own versions to packages.
19:58:20 <pikhq_> They'd probably go with GGC-5
19:58:26 <Vorpal> heh
19:58:32 <elliott> Vorpal: They'll just not have an upstream version.
19:58:35 <elliott> Or they'll reject your package.
19:58:43 <pikhq_> Also, yeah, Debian also has their own package versioning.
19:58:47 <Vorpal> oh well
19:59:02 <pikhq_> Debian handles a lot of weird policies.
19:59:13 <pikhq_> Erm, packages.
19:59:23 <Vorpal> hm I wonder how they deal with erlang. I have version R14B03 here.
20:00:09 <Vorpal> 1:14.b.3
20:00:11 <Vorpal> hm okay
20:01:32 * Gregor reappears.
20:01:43 <Gregor> <pikhq_> It was a hellishly slow implementation of a language that had a design nearly mandating pretty damned slow implementation. <--- yup
20:01:48 <Gregor> <pikhq_> And Fythe now uses G^5C <-- GGGGC
20:03:00 <Gregor> GGGGGC would be the followup to GGGGC if I need one :P
20:03:10 <Vorpal> Gregor, not enough G
20:03:17 <Vorpal> Gregor, but what does GGGGC stand for?
20:03:33 <pikhq_> Gregor's G G Garbage Collector
20:03:36 <pikhq_> :P
20:04:43 <Gregor> Gregor's Generalpurpose Generational Garbage Collector
20:07:53 <elliott> Gregor: *Great
20:09:21 <elliott> OK, I think I'm going to Actually Switch to xmonad in the coming days...
20:09:49 <Vorpal> elliott, why?
20:10:04 <elliott> Vorpal: Why "why?"?
20:10:30 <Vorpal> elliott, why xmonad?
20:11:19 <elliott> Vorpal: wmii doesn't gel with me, dwm is too inflexible, awesome involves writing Lua.
20:11:26 <Vorpal> elliott, xfce?
20:11:36 <elliott> That is what I am currently using.
20:11:42 <Vorpal> what is wrong with it?
20:12:56 <elliott> Most everything. Window management is even klunkier than GNOME 2 (and that's saying something), window switching with the task bar is awkward because drag-to-rearrange just fails to register most of the time, the menu is even more useless for launching programs than GNOME 2...
20:16:02 <pikhq_> Jeeze. Firefox has stopped being able to build on 32-bit systems. The linker needs more address space.
20:18:24 <elliott> :D
20:19:58 <pikhq_> Apparently Chrome hit the same thing previously on Windows.
20:21:30 <elliott> Gregor: Tell us about building Chrome!
20:22:42 <elliott> Vorpal: Does that answer your qusetion?
20:22:44 <elliott> *question
20:28:14 <Vorpal> back
20:28:24 <Vorpal> elliott, yeah
20:28:45 <elliott> Especially the one thing that makes the window management almost unusable for me is the fact that scrolling a background window focuses and raises it.
20:28:59 <elliott> Which is a feature so stupid, only xfwm4 has it.
20:30:21 <kallisti> elliott: that's very stupid
20:38:10 <kallisti> !perl package Test; @T = keys %Test::; my ($a,$b,$c); print @T;
20:38:12 <EgoBot> T
20:38:43 -!- oerjan has joined.
20:38:55 <kallisti> !perl package Test; @T = keys %Test::; our ($a,$b,$c); print @T;
20:38:56 <EgoBot> caTb
20:39:27 <kallisti> !perl package Test; use base 'Exporter'; @EXPORT = keys %Test::; our ($a,$b,$c); print @T;
20:39:35 <kallisti> !perl package Test; use base 'Exporter'; @EXPORT = keys %Test::; our ($a,$b,$c); print @EXPORT;
20:39:36 <EgoBot> cabISAisaBEGINEXPORT
20:39:47 <kallisti> !perl package Test; use base 'Exporter'; @EXPORT = keys %Test::; our ($a,$b,$c); $,=' '; print @EXPORT;
20:39:48 <EgoBot> c a b ISA isa BEGIN EXPORT
20:40:15 <kallisti> huh, BEGIN is in the symbol table. that's interesting.
20:40:30 <oerjan> 05:06:26: <elliott> 23:53:17: <oerjan> that thing above is probably too simple
20:40:30 <oerjan> 05:06:28: <elliott> I think that's fine.
20:40:30 <lambdabot> oerjan: You have 1 new message. '/msg lambdabot @messages' to read it.
20:40:53 <oerjan> no, it wouldn't fulfil the Applicative laws. i guess you saw my later adjustment.
20:42:36 <oerjan> @tell elliott AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
20:42:37 <lambdabot> Consider it noted.
20:42:43 <elliott> hi
20:42:43 <lambdabot> elliott: You have 2 new messages. '/msg lambdabot @messages' to read them.
20:44:31 <kallisti> !perl $x = 2; $y = *x; print $y
20:44:31 <EgoBot> ​*main::x
20:44:40 <kallisti> !perl $x = 2; $y = $*x; print $y
20:44:40 <EgoBot> ​$* is no longer supported at /tmp/input.3450 line 1.
20:44:44 <kallisti> NOOOOOOOO
20:44:49 <kallisti> !perl $x = 2; $y = *x->{SCALAR}; print $y
20:44:58 <kallisti> oh right
20:45:02 <kallisti> !perl $x = 2; $y = *x{SCALAR}; print $y
20:45:03 <EgoBot> SCALAR(0x7f7cb8f56a70)
20:49:30 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
20:49:53 -!- azaq23 has joined.
20:54:38 -!- copumpkin has changed nick to dynamicfish.
20:55:56 <Gregor> <elliott> Gregor: Tell us about building Chrome! // I've never built Chrome, but I can tell you that WebKit has at least ten build systems (fewer than the last time I reported it)
20:57:56 <elliott> Gregor: They have a meta-build-system! I know that much.
20:58:17 <Gregor> Sounds about right.
20:58:27 <elliott> And I just submitted a patch to a build system that exists solely because of Chrome, that that meta-build-system (GYP) can generate!
20:58:32 <elliott> CIRCLE OF LIFE
20:58:59 -!- dynamicfish has changed nick to copumpkin.
21:12:24 <kallisti> !perl package Test; sub A { print caller;}; A
21:12:24 <EgoBot> Test/tmp/input.64541
21:12:37 <elliott> wat
21:12:44 <elliott> oh it'll be a list
21:12:58 -!- copumpkin has changed nick to classtype-typeda.
21:13:16 <kallisti> !perl package Test; sub A { print scalar caller;}; A
21:13:17 <EgoBot> Test
21:13:39 <kallisti> !perl package Test; sub A { local $, = ' '; print caller;}; A
21:13:39 <EgoBot> Test /tmp/input.6631 1
21:14:08 -!- classtype-typeda has changed nick to copumpkin.
21:19:06 -!- boily has quit (Read error: Operation timed out).
21:24:33 <kallisti> !perl print $0
21:24:34 <EgoBot> ​/tmp/input.7617
21:27:46 <oerjan> <elliott> We could just talk about classical composer Johann and lose no precision of value. <-- yeah, after all Bach and Strauss are indistinguishable
21:28:15 <elliott> Who gives a fucking shit about goddamn GERMANS
21:28:23 <elliott> --Albert Einstein
21:28:27 <Gregor> More to the point, Johann Strauss is a hack.
21:28:30 <Gregor> He deserves neither of those names.
21:28:31 <oerjan> if jew say so
21:28:47 <elliott> Gregor: Counterpoint: YOU'RE a hack.
21:29:08 <Gregor> elliott: Counter-counterpoint: HACK HACK COUGH SPUTTER
21:29:10 <elliott> Oh, he's the guy responsible for Blue Danube.
21:29:11 <oerjan> while Bach hacked at counterpoint
21:29:24 <elliott> Gregor: I can join you in whole-hearted agreement of hackery.
21:30:21 <Gregor> elliott: Also Bach is a better Johann and Richard Strauss is a better Strauss, so he deserves neither name.
21:34:10 <pikhq_> Gregor: And Johann Strauss goes out and changes his name to Johann Sebastian Bach just to be more pitiful.
21:35:10 <oerjan> <elliott> I didn't realise the context was pseudohistorical genres, so I just imagined Justin Bieber doing punk. <-- logically it designates a world which lacks our modern technology but has an equally powerful substitute fueled by justin bieber. hth.
21:35:30 <elliott> oerjan: Not gonna lie, I would read that novel.
21:36:13 <oerjan> *at least equally powerful
21:36:14 <elliott> I'm just imagining a highway with like a thousand cars all constantly going "BABY, BABY, BABY OOH".
21:36:18 <elliott> SO BEAUTIFUL.
21:36:31 <oerjan> that girl genius steampunk is obviously far beyond us
21:36:44 <oerjan> sorry, gaslamp fantasy
21:38:49 -!- pikhq has joined.
21:40:16 -!- pikhq_ has quit (Ping timeout: 244 seconds).
21:43:31 -!- oerjan has quit (Remote host closed the connection).
21:48:31 <kallisti> !perl print -d
21:48:35 <kallisti> !perl print -d "lol"
21:48:41 <kallisti> !perl print defined(-d "lol")
21:49:00 <kallisti> !perl print undef . "lol"
21:49:01 <EgoBot> Warning: Use of "undef" without parentheses is ambiguous at /tmp/input.10215 line 1.
21:49:10 <kallisti> !perl print (undef) . "lol"
21:51:41 <fizzie> !perl print undef() . "lol"
21:51:41 <EgoBot> lol
21:58:07 -!- Jafet has quit (Read error: Connection reset by peer).
21:58:38 <zzo38> How do I copy a PAL VHS to NTSC DVD?
22:11:38 <kallisti> fizzie: I prefer to make operators look like haskell functions wherever possible. :P
22:22:33 -!- oerjan has joined.
22:28:25 <elliott> heloerjan
22:28:30 <elliott> fizzie: Busy being BUSY, are we?
22:28:35 <oerjan> helliott
22:35:31 -!- Lisa_ has changed nick to KingOfKarlsruhe.
22:35:39 <calamari> zzo38: capture as PAL, encode to 720x480?
22:35:52 * kallisti found a use for local in perl.
22:37:04 <kallisti> the module File::chdir creates a special tied scalar called $CWD which works well with local.
22:37:48 <zzo38> I don't have a PAL VCR.
22:37:51 <kallisti> push @CWD and pop @CWD can be used similarly for pushdir and popdir-like behavior.
22:42:09 <pikhq> calamari: Framerate conversion is hellish.
22:44:02 -!- oerjan has quit (Remote host closed the connection).
22:47:18 -!- Patashu has joined.
22:49:31 <calamari> pikhq: mencoder should be able to handle it
22:50:05 <pikhq> calamari: Not really. The mplayer stack's handling of framerates is bloody well moronic.
22:50:39 <calamari> seems like it doesn't matter anyways since he can't play the tape
22:50:44 <pikhq> It's pushing the thing just to do inverse telecine on clean 24p-in-30i content.
22:50:45 <olsner> kallisti: looks like you've been doing perl. why?
22:51:39 <calamari> pikhq: there are like 5 different options for doing that
22:51:52 <kallisti> olsner: IRC bot
22:52:25 <pikhq> calamari: Yes. And?
22:52:55 <calamari> pikhq: and I'm not sure why you're complaining.. usually one or more of them works out fine
22:53:10 <pikhq> Yes, and that's the *limit* of its handling of framerates.
22:53:15 <pikhq> Try doing inverse telecine on something that's only partly telecined sometime. Watch it break hardcore. :)
22:53:44 <pikhq> And framerate conversion otherwise? Its only conception of that is dropping or doubling frames.
22:54:05 <calamari> is ffmpeg better?
22:54:21 <pikhq> Not particularly.
22:54:29 <pikhq> Video software sucks.
22:54:51 <calamari> I've had some luck putting inpal dvds and playing them on my ntsc player
22:55:02 <calamari> I assume the player is not doing anything very fancy
22:55:05 <pikhq> Variable framerate video is essentially not handled...
22:56:10 <pikhq> They make the *strange* assumption that 720x480 video is meant to be displayed at 4:3, when it's supposed to be displayed at a pixel aspect ratio of 10:11...
22:56:23 <calamari> ?
22:56:32 <calamari> on mine it stretches it to 853x480
22:57:07 -!- elliott has quit (Quit: Leaving).
22:57:14 <Phantom_Hoover> ???
22:57:20 <Phantom_Hoover> @tell elliott ???
22:57:21 <lambdabot> Consider it noted.
22:57:22 <calamari> unless it was full screen
22:57:45 <pikhq> That would be 16:9, and 720x480 video shouldn't be displayed at 16:9, either, it should have pixel aspect ratio of 40:33 for wide-screen.
22:58:06 <calamari> pikhq: maybe your tv is different but mine are either 4x3 or 16x9
22:58:23 <pikhq> The issue is that 720x480 is including the horizontal blanking interval.
22:59:00 <pikhq> The portion of the signal that is active should be displayed at ~4:3 or ~16:9.
22:59:11 <calamari> well you could do a -vf crop
22:59:31 <pikhq> Because 480i signals are generally coming from analog sources.
23:00:17 <calamari> when I play these star trek dvd's, I'm pretty sure the entire window is filled with picture info
23:00:41 <pikhq> I'm seeing the HBI.
23:01:11 <calamari> well let me grab one nd verify.. I know they're interlaced tho
23:01:21 <pikhq> Yes, and they're partially telecined.
23:01:24 <calamari> and fullscreen
23:01:44 <pikhq> Which mplayer and ffmpeg do the wrong thing on.
23:02:37 <calamari> I usually use vlc but it's not too great at deinterlacing
23:02:59 <pikhq> Anyways: for digitised 480i video, it is *never* the right thing to go "aspect ratio 4:3" or "aspect ratio 16:9". If it's 704x480, this will do the right thing.
23:03:04 <pikhq> If it's 720x480, this will be Wrong.
23:03:17 <pikhq> Subtly so, but nevertheless Wrong.
23:03:53 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 8.0/20111104165243]).
23:04:24 <calamari> so you'd recommend cropping to 704x480?
23:04:43 <pikhq> No. It's impossible to get the crop right in the general case.
23:05:32 <pikhq> From analog sources, the active picture will be in something *near* 704x480, and the black bars on the side will vary in size...
23:05:56 <calamari> how about going the other direction? 16x9 to dvd
23:06:32 <pikhq> So, you have pristine 16:9 video, and want to encode to DVD?
23:06:36 <calamari> like something I recorded on my phone in 720p
23:06:47 <pikhq> Scale to 704x480.
23:06:54 <calamari> I see
23:07:13 <pikhq> The DVD player will, if outputting NTSC, add the HBI as needed.
23:07:14 <calamari> oh well, guess I did some movies wrong in the past :)
23:07:37 <pikhq> You're not alone in that... Some official transfers are broken in that way.
23:08:22 <pikhq> The algorithm that video software (unfortunately) needs to do anymore is if 720x480, check for HBI, if it exists then use the correct pixel aspect ratio, otherwise display as 4:3 or 16:9.
23:08:43 <pikhq> I have yet to find a program that does this.
23:09:15 <pikhq> Or even acknowledges that 720x480 video isn't intended to be displayed at 4:3 or 16:9.
23:10:00 <calamari> it is intended to be displayed at 4x3 or 16x9
23:10:08 <pikhq> The active portion of the picture is.
23:11:23 <pikhq> 720x480 contains non-active portions.
23:12:42 <calamari> well I see a couple black pixels on the edges of this ds9 dvd but no 8 for sure
23:14:05 <pikhq> It will likely vary throughout the video.
23:14:22 <calamari> pikhq: I know what you're talking about btw.. I've used that when programming on the atari 5200.. and 2600 especially :)
23:14:26 <pikhq> Particularly seeing as some scenes are telecine, some are video, and some are a composite of the two.
23:15:07 <kallisti> OH GOD SO MANY NEW THINGS.
23:15:40 <pikhq> TNG makes a good stress test of deinterlacing/inverse telecine software, BTW.
23:16:01 <calamari> pikhq: yeah I noticed .. they seem to have broken interlacing
23:16:27 <pikhq> If it works right you get variable framerate video, with only a bit of oddity from some special effects shots which *should* end up getting just normally deinterlaced.
23:16:43 <pikhq> If it works poorly, you get 30p juddering or 24p strangeness.
23:16:51 <Phantom_Hoover> http://en.wikipedia.org/wiki/Wolf_359
23:16:51 <pikhq> (yay, frame drop!)
23:16:56 <Phantom_Hoover> Wow, a star with water in it.
23:17:26 -!- oerjan has joined.
23:17:34 <kallisti> Phantom_Hoover: is it water plasma?
23:17:39 <kallisti> is water plasma a thing?
23:18:28 <Phantom_Hoover> No; plasmas don't have actual atoms.
23:18:52 <oerjan> hm, plasma means ionization, which would fuck up what keeps molecules together, i think
23:18:59 <Phantom_Hoover> Yeah.
23:19:16 <kallisti> ah okay.
23:20:01 <Phantom_Hoover> Wait, its photosphere is only 2800K.
23:20:11 <Phantom_Hoover> There are plenty of metals that are *solid* at that temperaute.
23:20:14 <Phantom_Hoover> *temperature
23:21:00 <oerjan> `? welcome
23:21:03 <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
23:21:07 <oerjan> `? esoteric
23:21:10 <HackEgo> This channel is about programming -- for the other kind of esoterica, try #esoteric on irc.dalnet.net.
23:21:37 <Phantom_Hoover> So disappointed that dalnet isn't a real network.
23:21:37 <oerjan> i think it would be more efficient to include the latter in the former - although maybe we don't want that efficiency.
23:21:55 <oerjan> Phantom_Hoover: wat
23:22:15 <Phantom_Hoover> * Looking up irc.dalnet.net
23:22:16 <Phantom_Hoover> * Unknown host. Maybe you misspelled it?
23:22:26 <pikhq> Video is hard.
23:22:45 <monqy> dal.net isn't it
23:22:56 <oerjan> Phantom_Hoover: irssi server list claims it's irc.dal.net
23:23:44 <oerjan> `run sed -i wisdom/esoteric s/dalnet/dal/
23:23:46 <HackEgo> sed: couldn't open file isdom/esoteric: No such file or directory
23:23:51 <oerjan> oops
23:23:59 <oerjan> `run sed -iwisdom/esoteric s/dalnet/dal/
23:24:02 <HackEgo> sed: no input files
23:24:14 <oerjan> wtf now
23:24:18 <oerjan> oh
23:24:30 <oerjan> `run sed -i s/dalnet/dal/ wisdom/esoteric
23:24:32 <HackEgo> No output.
23:24:36 <oerjan> `? esoteric
23:24:38 <HackEgo> This channel is about programming -- for the other kind of esoterica, try #esoteric on irc.dal.net.
23:25:46 -!- PiRSquared17 has joined.
23:26:06 <oerjan> PiRSquared17: LIAR, PI R ROUND
23:28:32 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
23:35:36 <pikhq> `run echo No output.
23:35:38 <HackEgo> No output.
23:37:10 <oerjan> `run echo "#!/bin/sh" >bin/No; chmod +x bin/No
23:37:13 <HackEgo> No output.
23:37:17 <oerjan> um
23:37:25 <oerjan> `No output.
23:37:27 <HackEgo> No output.
23:37:31 <oerjan> yay
23:38:17 <Gregor> `No soup for you!
23:38:19 <HackEgo> No output.
23:38:41 <oerjan> `wtf soup
23:38:43 <HackEgo> why soup is like wtf
23:40:36 <pikhq> `run cat bin/wtf
23:40:38 <HackEgo> ​#!/bin/sh \ echo "why $1 is like wtf"
23:40:55 * Phantom_Hoover → sleep
23:40:57 -!- Phantom_Hoover has quit (Quit: Leaving).
23:52:00 -!- copumpkin has joined.
23:53:05 <kallisti> !perl $x = "hi" *x = undef; print $x;
23:53:06 <EgoBot> Operator or semicolon missing before *x at /tmp/input.25244 line 1.
23:53:12 <kallisti> !perl $x = "hi"; *x = undef; print $x;
23:53:12 <EgoBot> hi
23:55:27 <kallisti> !perl $x = "hi"; undef *x; print $x;
23:55:57 <kallisti> !perl $x = "hi"; $y = \*x; undef *$y; print $x;
←2011-12-13 2011-12-14 2011-12-15→ ↑2011 ↑all