←2011-09-23 2011-09-24 2011-09-25→ ↑2011 ↑all
00:02:37 -!- MSleep has joined.
00:03:31 <elliott> hi
00:12:47 -!- kmc has joined.
00:16:33 -!- sllide has joined.
00:26:07 <nooga> elliott: I'm not drunk at all
00:26:29 -!- sllide has quit (Read error: Connection reset by peer).
00:26:52 <elliott> Suuuure
00:26:58 <oerjan> i'm not as think as you drunk i am
00:27:47 <tswett> elliott: hey. How old are you now, relative to how old you were five years ago?
00:28:01 <elliott> tswett: Six years older.
00:28:15 <tswett> Wow. That's pretty old, comparatively speaking.
00:28:27 <tswett> Six years. I can barely believe it.
00:28:39 <tswett> So much time has passed in those past five years.
00:29:57 <oerjan> damn right it has
00:29:59 <elliott> Yes.
00:35:44 <elliott> oerjan: what's the thing with (<*>) but no pure again?
00:35:47 <elliott> (,) without Monoid?
00:35:51 <elliott> s/w/W/
00:36:56 <oerjan> i'm not sure that has <*>
00:37:10 <elliott> What was it then?
00:37:12 <elliott> You thought of something :P
00:37:22 <oerjan> it had Functor, but not Applicative
00:37:34 <elliott> What was the thing with ap but not prue
00:37:35 <elliott> pure
00:37:37 <elliott> Map?
00:37:41 <elliott> I think it was Map.
00:37:48 <oerjan> hm maybe
00:38:11 <oerjan> because it's like ziplist except you cannot make repeat
00:40:53 <elliott> I'm so glad #haskell aren't watching, they think all these smarts are me.
00:44:36 <zzo38> What does Maybe correspond to in Curry-Howard? It seem to me, you can have (a -> Maybe b) since the function can be (const Nothing); does that mean anything in intuitionistic logic or other logic?
00:45:12 <zzo38> But you don't have (Maybe a -> a) or (Maybe a -> b)
00:45:39 <copumpkin> in some sense, it represents a partial decision of b
00:45:53 <copumpkin> it can say "yes b" or "I don't know"
00:48:46 <elliott> How many fixed-precision binary digits do you need to represent every double
00:49:57 <Jafet> 1079
00:50:03 -!- evincar has joined.
00:50:08 <elliott> Jafet: Really?
00:50:12 <elliott> That's a lot of binary digits.
00:50:30 <Jafet> People use doubles for a reason
00:50:41 <oerjan> you need to be able to represent the largest double, and the smallest
00:50:54 <oerjan> lots of digits between those
00:50:57 <elliott> Jafet: How many after the... uh, binary point?
00:51:01 <elliott> oerjan: Well yeah.
00:51:22 <Jafet> Probably 565.
00:51:55 <Madoka-Kaname> :t const Nothing
00:51:56 <lambdabot> forall a b. b -> Maybe a
00:52:27 <oerjan> zzo38: it would seem that Maybe a corresponds to a trivially true proposition, then
00:53:01 <copumpkin> not really, it's just not as informative as Dec a
00:53:02 <oerjan> it's basically Either b a with b set to () or True
00:53:18 <Madoka-Kaname> :t (flip Maybe) id
00:53:18 <lambdabot> Not in scope: data constructor `Maybe'
00:53:20 <Madoka-Kaname> :t (flip maybe) id
00:53:21 <lambdabot> forall a. a -> Maybe a -> a
00:53:33 <oerjan> copumpkin: um the function Nothing is a proof of Maybe a for all a
00:53:43 <Madoka-Kaname> @pl (flip (flip maybe) id)
00:53:43 <lambdabot> maybe id
00:53:50 <elliott> oerjan: yes but in a higher-order sense...
00:53:55 <elliott> it's a partial decision procedure
00:53:57 <Madoka-Kaname> @pl (flip $ (flip maybe) id)
00:53:57 <lambdabot> flip (flip maybe id)
00:53:58 <nooga> http://cl.ly/100S3t0i062c3q3Z083O :O
00:54:06 <Madoka-Kaname> @pl (flip maybe) id
00:54:06 <lambdabot> flip maybe id
00:54:07 <elliott> oerjan: you might have
00:54:17 <elliott> oerjan: imperfectPrimalityChecker :: (p :: Integer) -> Maybe (IsPrime p)
00:54:19 <copumpkin> data Dec a = Yes a | No (Not a)
00:54:24 <elliott> if it says it's prime, it's definitely prime, but if not, it might still be prime
00:54:29 <copumpkin> that's the ideal
00:54:55 <copumpkin> but sometimes you can't go that far, so Maybe gives you a definite yes, but not a definite no
00:55:20 <copumpkin> say for example you have a statement in peano arithmetic
00:55:48 <copumpkin> well, with presburger arithmetic
00:56:09 <copumpkin> you'd have (s : PresburgerStatement) -> Dec (reify s)
00:56:20 <oerjan> Madoka-Kaname: you may be looking for fromMaybe
00:56:21 <copumpkin> (s : PeanoStatement) -> Maybe (Dec (reify s))
00:56:24 <copumpkin> that's the best you can do
00:56:28 <copumpkin> according to godel
00:56:30 <copumpkin> :P
00:56:34 <elliott> Jafet: The reason I asked was that I receive some data in a fixed-point format but some in doubles... eurgh
00:56:46 <elliott> And it feels wrong just dividing the fixed-point format, even though it was almost certainly created from a double
00:57:06 <evincar> Wait, what?
00:57:14 <evincar> Where are you getting data from?
00:59:03 -!- ive has quit (Ping timeout: 276 seconds).
01:01:43 <evincar> And for what, I might ask.
01:02:45 <evincar> Are we verifying CERN research data?
01:02:59 <evincar> Is that what my half-assed log-skimming should lead me to believe?
01:05:19 <zzo38> Sometimes my dreams fork and end in two different ways independently of each other
01:05:29 -!- nooga has quit (Ping timeout: 255 seconds).
01:07:13 <evincar> I frequently have lucid dreams.
01:07:18 <evincar> In a recent one I tried to move my body in the real world to get my phone call a friend of mine.
01:07:26 <evincar> I wanted to tell him about the things I was seeing in the dream world.
01:07:35 <evincar> It didn't work though.
01:08:00 <oerjan> it's when you _receive_ such a phone call while awake you should be worried.
01:08:17 <zzo38> Sometimes my dream I try to move my real body (but doesn't work) even though I am not trying to try to do that, it is not what I am wanting to do, etc
01:11:30 <evincar> oerjan: What would be worrying?
01:11:36 <evincar> It probably wouldn't even make sense.
01:11:41 <elliott> Hmm... actually, I think doubles might be able to precisely represent every value in the range I'm dealing with. If I have a 32-bit int n, will n/32 be precisely representable as a double for all n?
01:11:50 <elliott> I bet Jafet knows!
01:12:12 <evincar> Sometime I'd like to see a "floating-point explorer".
01:12:29 <evincar> Something that lets you drag a panel to see ranges of numbers and which ones are precisely representable.
01:12:30 -!- ive has joined.
01:13:44 <oerjan> elliott: if you can represent n accurately as a double, then you can represent n/32. the exponents for both will be far from the boundaries.
01:13:53 <elliott> oerjan: Right.
01:14:03 <elliott> oerjan: I'm just really ridiculously paranoid about floating point :)
01:14:23 <oerjan> > [0.1, 0.2 .. 0.3]
01:14:24 <lambdabot> [0.1,0.2,0.30000000000000004]
01:14:26 <evincar> It's useful for a number of things.
01:14:27 <elliott> ;__;
01:14:46 <evincar> (Sorry, that was awful.)
01:14:50 <oerjan> (from the current haskell-cafe discussion about Enum
01:14:55 <elliott> oerjan: yeah
01:14:56 <oerjan> )
01:15:04 <elliott> im hide in your parens
01:15:07 <elliott> : )
01:17:53 <oerjan> > 0.3
01:17:55 <lambdabot> 0.3
01:18:21 <oerjan> > 0.30000000000000003
01:18:23 <lambdabot> 0.30000000000000004
01:18:26 <oerjan> > 0.30000000000000002
01:18:27 <lambdabot> 0.30000000000000004
01:18:30 <oerjan> > 0.30000000000000001
01:18:31 <lambdabot> 0.3
01:18:38 <elliott> :'(
01:18:45 <elliott> im doth cry
01:19:23 <oerjan> > nub (replicate 5 (0/0))
01:19:24 <lambdabot> [NaN,NaN,NaN,NaN,NaN]
01:19:48 <elliott> im cry
01:20:07 <oerjan> > sort $ [1..5] ++ replicate 5 (0/0)
01:20:09 <lambdabot> [NaN,NaN,NaN,NaN,NaN,1.0,2.0,3.0,4.0,5.0]
01:20:15 <oerjan> hm
01:20:37 <oerjan> > sort $ [1..5] ++ replicate 5 (0/0) ++ {6..10]
01:20:37 <lambdabot> <no location info>: parse error on input `{'
01:20:43 <oerjan> > sort $ [1..5] ++ replicate 5 (0/0) ++ [6..10]
01:20:44 <lambdabot> [6.0,7.0,8.0,9.0,10.0,NaN,NaN,NaN,NaN,NaN,1.0,2.0,3.0,4.0,5.0]
01:20:51 <oerjan> XD
01:21:27 <evincar> Is NaN supposed to be stable in sorts like that?
01:21:35 <zzo38> Is that what NaN is for in sorting?
01:21:53 <zzo38> It seem wrong
01:22:11 <oerjan> ...this is showing how Nan's Eq and Ord instances don't obey haskell's assumed laws
01:22:19 <oerjan> *NaN
01:22:34 <zzo38> Yes; it is not following proper Ord laws when NaN is involved.
01:22:49 <elliott> floats shouldn't be Eq or Ord really
01:22:56 <elliott> well ok maybe Ord but Eq is just wrong... Ord requires Eq though
01:23:12 <elliott> in ML they have a whole type infrastructure just to disallow equality on floats :P (since they have no typeclasses)
01:23:18 <zzo38> > sort [1.0,5.0,1.5,NaN,2.0,NaN,NaN,1.1,1.0]
01:23:19 <lambdabot> Not in scope: data constructor `NaN'Not in scope: data constructor `NaN'Not...
01:23:22 <copumpkin> not even Ord
01:23:36 <zzo38> > sort [1.0,5.0,1.5,0/0,2.0,0/0,0/0,1.1,1.0]
01:23:37 <lambdabot> [1.0,1.1,NaN,NaN,2.0,NaN,1.0,1.5,5.0]
01:23:43 <elliott> copumpkin: kinda awkward to use though then :P
01:24:24 <zzo38> You can make a lot of things without floating point.
01:24:26 <evincar> That's so broken...then again, NaN is sorta broken by definition.
01:24:48 <evincar> It just makes me very uncomfortable that the output of my sorting algorithm depends crucially on the algorithm. :P
01:24:53 <oerjan> all this inspired by the recent haskell-cafe discussion.
01:24:59 <zzo38> Is there datatype to represent algebraic numbers?
01:25:13 <oerjan> zzo38: probably in some package
01:25:23 <oerjan> but not in the standard
01:26:35 <oerjan> i'm not even sure what kind of algorithms would handle them efficiently
01:31:46 -!- elliott has quit (Remote host closed the connection).
01:32:11 -!- elliott has joined.
01:32:32 <elliott> oerjan: which haskell-cafe archive do you use btw, I don't like the ones I've used :P
01:39:38 <elliott> hmph
01:40:50 <oerjan> i use haskell.org's pipermail and i hate it :P
01:41:04 <oerjan> i keep telling myself to change
01:41:40 <oerjan> it breaks on too many messages
01:42:29 <oerjan> (including, i believe, internal "From " lines, as i've mentioned before)
01:44:28 <elliott> oerjan: aha, what about http://groups.google.com/group/haskell-cafe
01:44:37 <elliott> that does the nice conversation view too, so you don't have to muck about with thread navigation
01:44:40 <oerjan> oh and i vaguely recall there may be something wrong with attachments too
01:44:42 <elliott> well http://groups.google.com/group/haskell-cafe/topics
01:44:58 <oerjan> aha
01:45:26 <elliott> yeah this seems nice
01:46:00 <elliott> "Hello fellow Haskellers,
01:46:01 <elliott> this is a proposal to extend the arrow notation (-XArrows)."
01:46:01 -!- cheater has quit (Ping timeout: 248 seconds).
01:46:04 <elliott> not MORE :D
01:46:22 <oerjan> ertugrul's proposal?
01:46:26 <elliott> yes
01:46:34 -!- evincar has quit (Quit: ChatZilla 0.9.87 [Firefox 6.0.2/20110902133214]).
01:46:35 <oerjan> i think he ended up finding those (| |) could do what he wanted
01:46:43 <elliott> idiom brackets
01:46:44 <oerjan> *thing could
01:46:48 <oerjan> *things
01:46:59 <elliott> i do not understand arrow notation in the slightest
01:47:07 <elliott> oh hm not idiom brackets
01:47:10 <elliott> banana brackets apparently
01:47:30 <monqy> banana brackets?
01:47:42 <elliott> arrow shit
01:47:44 <elliott> who knows :P
01:47:48 <monqy> arrows......
01:48:32 -!- evincar has joined.
01:51:00 -!- augur has joined.
01:51:53 -!- augur has quit (Remote host closed the connection).
01:52:08 <elliott> "If typhoon comes, umbrella does not work." --haskell-cafe
01:52:40 <evincar> Sound advice on both typhoons and umbrellas.
01:53:19 <evincar> My blog post got loads of views so now I have to be clever because people pay attention to me now. :(
01:54:30 <CakeProphet> ha.
01:54:31 <monqy> oh no
01:54:43 <CakeProphet> dude my blag is going to be the best of all.
01:54:48 <CakeProphet> people will be "like woah dude portal chess"
01:54:51 <monqy> whoa
01:54:51 <monqy> dude
01:54:54 <monqy> portla chess
01:55:02 <evincar> That is something you say whoa dude about.
01:55:13 <evincar> The things I write about are not the things that people say whoa dude about.
01:55:19 <monqy> :'(
01:55:29 <evincar> They are the things people agree with because they lack conflict.
01:55:36 <evincar> Or disagree with because they have misunderstood them.
01:55:49 <CakeProphet> yes you are infallible.
01:56:25 <evincar> I'm as fallible as anybody.
01:56:41 <evincar> I just don't generally make controversial claims.
01:56:50 <evincar> And when I do, people tend to disagree for the wrong reasons.
01:56:59 <evincar> I want better peer review. :/
01:57:16 <CakeProphet> "perl style can be shown to kill babies"
01:57:31 <evincar> Name a thing that cannot be shown to kill babies.
01:57:46 <evincar> Unless a "kill baby" is a thing.
01:57:51 <evincar> A thing to which you can show perl style.
01:58:03 <CakeProphet> !perl print kill baby
01:58:05 <EgoBot> Unrecognized signal name "baby" at /tmp/input.6812 line 1.
01:58:10 <CakeProphet> !perl print kill $baby
01:58:10 <EgoBot> 0
01:58:15 <monqy> evincar: you may have to work a bit on your clever
01:58:29 <evincar> That is what I said I would have to do.
01:58:42 <evincar> Well, implied.
01:58:54 <CakeProphet> elliott: oh hey did you perhaps check out my new wacro?
01:58:58 <monqy> then consider this positive reenforcement of your said
01:59:00 <monqy> i agrreed with you
01:59:02 <CakeProphet> it probably needs a new name since it's not really generating acronyms anymore...
01:59:05 <zzo38> I don't care if it can kill babies. Just because it can, doesn't mean it does!!
01:59:09 <elliott> it's lacking in the acronym department
01:59:12 <CakeProphet> yes.
01:59:14 <evincar> Yaaay, someone else thinks I'm not as clever as I ought to be.
01:59:21 <evincar> What a stupendous victory for me.
01:59:21 <CakeProphet> `wacro 20
01:59:25 <HackEgo> savidebe sellstrixtrid wdyngivers pendehth tuenwamers ution hypolizatiii sages xxildonneau smairedelsolorwoosi trohe ageeine gue cojous rret reproadsiges pur roi torntitusto herreselavrethjac
01:59:27 <CakeProphet> and it's only mediocre at words..
01:59:30 <elliott> hypolizatiii
01:59:37 <elliott> cojous and gue are good
01:59:38 <elliott> also trohe
01:59:41 <elliott> and pur and roi
01:59:43 <CakeProphet> yeah for some reason iii is really common
01:59:47 <CakeProphet> tuenwamers
01:59:53 <elliott> that sounds like a kind of jumper
01:59:55 <monqy> new wacro is good but not as good as fizzie's word generator from last night was it
01:59:58 <elliott> i'm wearing a wooly tuenwamer
01:59:58 <monqy> I really liked those words
02:00:03 <elliott> monqy: oh what was that
02:00:04 <elliott> i must logread
02:00:07 <monqy> I'll dig bup the linke
02:00:20 * CakeProphet is currently fixing things / adding new features.
02:00:26 <monqy> http://sprunge.us/MNHQ
02:00:32 * oerjan opens a bottle of xxildonneau
02:00:37 <CakeProphet> eventually I'll go back and redo the actual word generating algorithm. Maybe with larger grams.
02:00:41 <monqy> faubblemarcus is maybe my favoirte there
02:00:42 <CakeProphet> how does the "n-gram" approach work?
02:00:47 <elliott> monqy: oh these are good
02:00:59 <elliott> CakeProphet: just build a reverse context tree(tm)
02:01:08 <Jafet> For small n, it doesn't.
02:01:14 <elliott> :D
02:01:25 <monqy> for large n, it doesn't, either
02:01:29 <CakeProphet> uh, maybe I should just stick to a single gram size? or two? or three?
02:01:31 <oerjan> un vin pur pour roi
02:01:33 <zzo38> How do you do internet access in Haskell?
02:01:34 <elliott> monqy: megahal works pretty good
02:01:42 <monqy> elliott: hm
02:01:51 <elliott> monqy: but it's quite special, it uses a backwards thing too
02:01:55 <oerjan> @hoogle socket
02:01:56 <lambdabot> Network.Socket socket :: Family -> SocketType -> ProtocolNumber -> IO Socket
02:01:56 <lambdabot> module Network.Socket
02:01:56 <lambdabot> Network data Socket
02:01:58 <elliott> as in, it has a /reverse/ context tree
02:02:04 <monqy> Iremember megahal beng special
02:02:05 <elliott> and it has n=four which is pretty big
02:02:12 <elliott> monqy: it also has a separate thing for punctuation, iirc
02:02:14 <elliott> http://megahal.alioth.debian.org/Classic.html but it's good
02:02:21 <CakeProphet> elliott: yeah I was thinking 4-grams might produce better results.
02:02:25 <monqy> oh I meant bigger than 4 when i said big. 4 is pretty big if you actually want things to be good.
02:02:26 <elliott> http://megahal.alioth.debian.org/Best.html is good too
02:02:29 <zzo38> Where is module Network.Socket?
02:02:31 <elliott> CakeProphet: n is words in this case
02:02:32 <monqy> I mean
02:02:35 <monqy> 4 is on the big side of good
02:02:35 <CakeProphet> elliott: right.
02:02:37 <elliott> zzo38: http://hackage.haskell.org/package/network
02:02:40 <monqy> 4 is good if you're good
02:02:45 <monqy> 100 is never good.........
02:03:02 <elliott> one hundred generates source text verbati
02:03:03 <elliott> m
02:03:05 <elliott> which i guess is okay?
02:03:09 <monqy> Bad
02:03:11 <elliott> http://megahal.alioth.debian.org/Poetry.html
02:03:34 <elliott> "exquisite dead guy
02:03:35 <elliott> rotating in hell"
02:03:47 <CakeProphet> rotate in peace.
02:04:32 <CakeProphet> I was also considering as a hueristic lowering the frequency of trigrams that contain 3 vowels or 3 consonants.
02:04:39 <CakeProphet> to remove the things like iii
02:04:48 <CakeProphet> or to make them less frequent anyways
02:04:55 <Jafet> If you're even getting those trigrams, you're using the wrong corpus
02:05:07 <CakeProphet> but there's a lot of words with 3 consonants
02:05:09 <CakeProphet> in a row
02:05:15 <CakeProphet> Jafet: hmmm?
02:05:20 <monqy> iiiiiiiiiiiiiiiiiiiiiiiiii
02:05:20 <CakeProphet> these trigrams are characters, btw
02:05:40 <CakeProphet> I am taking a 1-grams-of-words dataset
02:05:45 <Jafet> No english (or most other european) text will give you three i's in a row
02:05:45 <CakeProphet> and breaking each word into trigrams
02:05:58 <Jafet> ...very often
02:06:06 <CakeProphet> presumably the iii is from roman numerals or such
02:06:22 <CakeProphet> maybe I could just remove it as a special case.
02:06:32 <elliott> roman numerals aren't mushed up with other words
02:06:35 <Jafet> Filter on a dictionary
02:06:39 <CakeProphet> elliott: true
02:06:40 <elliott> if you're traversing across word boundaries you are "doin' it rong"
02:06:47 <elliott> each word should be added separately
02:06:48 <monqy> cakeprophet what about the tii
02:06:50 <Jafet> Or make n-grams on syllables, instead of letters
02:06:53 <monqy> and yea hwhat eliotss saying
02:07:01 <elliott> Jafet: that would be good, but syllables are hard to extract from text reliably :P
02:07:05 <CakeProphet> elliott: I am not concating words together I'm adding characters together.
02:07:09 <elliott> but you could heuristic it
02:07:14 <elliott> CakeProphet: i'm talking about when training
02:07:15 <Jafet> When in doubt, branch and add both.
02:07:44 <Jafet> Or index on a dictionary, where the syllables are already split for you.
02:08:13 <CakeProphet> elliott: the algorithm does this: takes the last two characters that were generating, plugs them into the hash table, then randomly selects, based on frequency, the third character from the inner-hash-table, and then adds that to the string
02:08:17 <CakeProphet> repeat
02:08:19 <CakeProphet> until it finds a space
02:08:23 <CakeProphet> which indicates the end of a word
02:08:32 <CakeProphet> I'm replacing the end-of-space thing to use a word length histrogram.
02:08:40 <elliott> "the third"?
02:08:41 <CakeProphet> so that the lengths of words are based on the lengths of words in the dataset.
02:08:45 <elliott> oh i see
02:08:51 <elliott> CakeProphet: i'm talking about when training
02:08:53 <elliott> not when generating.
02:08:55 <elliott> as i already said.
02:08:56 <CakeProphet> yes if you have "aa" it will give you a table of possible third characters with frequencies.
02:08:59 <CakeProphet> and randomly selects one.
02:09:19 <CakeProphet> elliott: right, I was giving you the context to make sure we were talking about the same approach. how would word boundaries be factored in?
02:09:29 <elliott> do you train separately for each word in the corpus
02:09:36 <CakeProphet> I... guess?
02:09:39 <elliott> >_<
02:09:40 <elliott> so that's a no then
02:09:45 <elliott> which means you won't be generating words at all
02:09:46 <CakeProphet> how do you train them "all together" :PO
02:09:51 <elliott> you'll be generating stretches of text without spaces
02:10:21 <CakeProphet> as in like, what is the difference in data representation
02:10:33 <elliott> none in data representation. all in algorithm.
02:10:48 <CakeProphet> the algorithm that generates the data. "training" as you call it.
02:10:53 <CakeProphet> what data does it generate.
02:11:09 <elliott> wow what a hopelessly unanswerable question
02:11:14 <elliott> show your code, i'll tell you if it's wrong :P
02:11:23 <CakeProphet> I already know the answer to that, from you.
02:11:23 -!- elliott has quit (Remote host closed the connection).
02:11:23 <monqy> it's in perl; automatically wrong
02:11:31 <monqy> bye elliott
02:11:46 -!- elliott has joined.
02:11:48 <CakeProphet> elliott: I don't need you to tell me it's wrong. I would just like you to explain a little more about what you're talking about.
02:12:00 <CakeProphet> `ls bin/wacro
02:12:02 <HackEgo> bin/wacro
02:12:03 <CakeProphet> enjoy
02:12:04 <elliott> i can't because your questions are bad
02:12:09 <elliott> and unanswerable
02:12:12 <elliott> and i suspect a deeper confusion
02:12:31 <CakeProphet> basically what is training.
02:12:35 <elliott> it would be much simpler to see your code which would let me determine whether it did what i said or not quickly; if you don't want to do that, then fine, I can't/won't help
02:12:43 <CakeProphet> ^^^^^^^^^^^^^^
02:12:48 <elliott> CakeProphet: going from corpus to data set
02:12:51 <elliott> language model
02:12:52 <elliott> whatever
02:12:57 <CakeProphet> okay.
02:13:30 <evincar> Should I compete at the International Whistlers Convention next year?
02:13:33 <CakeProphet> http://pastebin.com/A16F58CF
02:13:34 <CakeProphet> it's the best code
02:13:36 <CakeProphet> best perl.
02:13:51 <evincar> (I don't care if this is completely off-topic. Someone usually answers. :P)
02:14:00 <monqy> evincar: :P
02:14:04 <CakeProphet> evincar: no dude because if you do I'll join
02:14:07 <elliott> CakeProphet: i like the part where you discard all words after the first in a given n-gram
02:14:07 <CakeProphet> and completely dominante.
02:14:15 <CakeProphet> elliott: where is that?
02:14:20 <elliott> also btw the google n-gram data is completely useless for this
02:14:22 <elliott> all you need is the wordlist
02:14:24 <elliott> or are you using the wordlist
02:14:25 <CakeProphet> elliott: these are 1-grams
02:14:26 <CakeProphet> which is
02:14:27 <elliott> right
02:14:27 <CakeProphet> a wordlist
02:14:47 <elliott> yeah ok you do it right i guess, but with a way too low n
02:15:00 <CakeProphet> n as in n-gram?
02:15:08 <elliott> yes
02:15:08 <evincar> CakeProphet: I'm pretty good. Not a virtuoso by any means, but I've practiced a lot.
02:15:11 <elliott> CakeProphet: what does your generator use to denote start/end
02:15:15 <CakeProphet> I was considering maybe 4 or 5.
02:15:19 <elliott> you should use special tokens for that
02:15:31 <CakeProphet> elliott: currently it doesn't use anything for end, and start is spaces.
02:15:34 <CakeProphet> two spaces for start
02:15:43 <monqy> "doesn't use anything for end" what
02:15:47 <elliott> CakeProphet: well, it doesn't matter what you use, as long as it's in the data set
02:15:51 <elliott> CakeProphet: but you want an end token
02:15:55 <elliott> to be inserted as the "last character"
02:16:02 <elliott> so that you can end at a good place
02:16:06 <CakeProphet> elliott: the end token no longer means anything with the current generation algorithm.
02:16:13 <elliott> it should
02:16:15 <CakeProphet> as it predecides the length.
02:16:20 <elliott> it shouldn't
02:16:21 <CakeProphet> via a word length histrogram.
02:16:28 <elliott> ok well
02:16:32 <tswett> Hey, programming language. Smalltalk, but there's only one message selector, and it takes one argument, and messages don't return anything.
02:16:32 <elliott> it can pick a target length
02:16:33 <CakeProphet> the current algorithm is the one that goes until it finds a space
02:16:36 <CakeProphet> and it ends up generating huge words.
02:16:37 <elliott> and exit if it gets an end token
02:16:39 <elliott> if you're close enough
02:16:42 <elliott> i.e. >=
02:16:45 <tswett> (I've gotten very lazy when it comes to creating esoteric programming languages.)
02:16:52 <elliott> (and use a maximum length to cut it off if it gets stuck in a loop)
02:17:04 <CakeProphet> `wacro 20
02:17:06 <HackEgo> ided proearreninarni nonneonav st thelaroprobatseeemisabla tagerapineronizimory mensit datchoid seteo polj furt lang xhiso suram ik recons jaff irrottd vam ite
02:17:07 <monqy> tswett: at least lazy means you haven't been making lots of bad languages, right?
02:17:08 <CakeProphet> these are all generated until a space is found.
02:17:14 <elliott> CakeProphet: see above
02:17:17 <tswett> monqy: yep.
02:17:23 <CakeProphet> elliott: so you're saying combine both?
02:17:31 <elliott> CakeProphet: sure
02:17:37 <CakeProphet> I like using just the word length histrogram as it would directly reflect the frequency of word lengths in the dataset.
02:17:44 <elliott> yes but this leads to more natural endings
02:17:46 <tswett> And I have G+, which means that everyone will now flock to flesh out my designs.
02:17:48 <elliott> yours will just chop it off arbitrarily
02:18:00 <CakeProphet> elliott: somewhat short-sighted though for small n.
02:18:03 <elliott> no
02:18:11 <monqy> im agree with elliott
02:18:38 <CakeProphet> elliott: another idea: include character position in the frequency data.
02:18:45 <monqy> what
02:18:56 <CakeProphet> so when I go to generate the next character I look up the current character position in the table
02:18:59 <elliott> CakeProphet: pick target word length; subtract a bit (because you're likely to go over), making the new target word length; generate; if you reach an end token, then if the word length is >= the target length, quit, else pick again (instead of the end token); finally have an if >= target length + constant, quit, to stop generating words far over the target length
02:19:10 <CakeProphet> and it gives me "frequencies where this letter occured after the last n-1 characters at char position i"
02:19:12 <tswett> `wacro 20
02:19:14 <HackEgo> de fed xoilicherbrenttounisselageriusiverinefeloparka accreless su soravy but man edenerac fumo aus spramereetialiphouryhtalian rowbeld whing ble tursaxonturg refloatens st wart sky
02:19:19 <tswett> Yes, yes.
02:19:19 <monqy> xoilicherbrenttounisselageriusiverinefeloparka
02:19:27 <elliott> CakeProphet: another thing you can do is, the closer/over the string gets to the target length, scale up the probability of end tokens, so you're more likely to end rather than getting hit by the safety cut-off
02:19:36 <tswett> "Refloatens". That is a good word.
02:19:43 <elliott> xoilicherbrenttounisselageriusiverinefeloparka
02:19:46 <elliott> word
02:19:56 <tswett> Also "whing".
02:20:00 <monqy> at least the ending is natural
02:20:20 <elliott> Whings. Like wyngz, but more English.
02:20:39 <CakeProphet> elliott: hmmmmmm
02:20:52 <CakeProphet> notice all of the really shot words that you get though
02:20:59 <CakeProphet> simply because your last two characters happen to commonly end words.
02:21:06 <elliott> CakeProphet: ...
02:21:07 <CakeProphet> *short
02:21:12 <elliott> CakeProphet: it only quits if the length is >= the target length
02:21:15 <elliott> try actually reading what i wrote
02:21:19 <elliott> before commenting on it
02:21:35 <CakeProphet> oh I missed that.
02:22:13 <CakeProphet> I could probably scale the probability of end tokens based on the frequency histogram.
02:22:16 <CakeProphet> somehow.
02:22:26 <elliott> >_<
02:22:51 <CakeProphet> and just maybe not use a minimum (target) length.
02:24:35 <CakeProphet> elliott: >_<???
02:24:43 <CakeProphet> I read what you said, I understand it. What are you annoyed about?
02:24:47 <elliott> >_<X_<_X<_O-o-qOW_QOwo-
02:26:45 <CakeProphet> hmmmm
02:27:15 <CakeProphet> no your approach is probably safer than ONLY scaling the end tokens.
02:27:57 <elliott> The scaling is a good idea though.
02:28:04 <elliott> It's likely to steer to a more natural ending than the harsh cutoff.
02:28:11 <CakeProphet> yeah I see what you're saying.
02:28:13 <CakeProphet> especially with larger n
02:28:24 <elliott> CakeProphet: btw run it on a finnish dictionary
02:28:30 <elliott> what with all the agglutinativity
02:28:37 <elliott> we'll need the finns to decode what it spits out though :P
02:28:38 <CakeProphet> even with 3-grams you get pretty good word endings.
02:29:00 <CakeProphet> elliott: should I go with 4-grams or 5-grams?
02:29:06 <CakeProphet> I think 5 might be too much?
02:29:41 <elliott> 4
02:29:59 <elliott> note that you'll want to dump the result as binary, gzip it, and include it after __END__
02:30:01 <elliott> because it'll be big
02:30:10 <CakeProphet> might as well go ahead and make the code independent of gram size.
02:30:20 <CakeProphet> how will I do this? in typical perl style: global variables
02:30:39 <elliott> 13:29:45: <ais523> not you too!
02:30:39 <elliott> 13:29:58: <ais523> it's bad enough that elliott was considering buying an expensive ngram database
02:30:51 <elliott> I wasn't joking and it was far more useful than a $787.50 wordlist, plus about ten times less expensive
02:31:03 <CakeProphet> *word list with parts of speech data
02:34:06 <CakeProphet> > 27^3
02:34:07 <lambdabot> 19683
02:34:24 <CakeProphet> that's the number of elements in the outer hash table for 4-grams.
02:34:40 <CakeProphet> each value is a 27-element hash table.
02:35:03 <elliott> use an array instead
02:35:04 <elliott> for the inner
02:35:17 <elliott> it should be twenty-eight elements
02:35:25 <elliott> well
02:35:25 <elliott> times two
02:35:37 <CakeProphet> twenty-eight?
02:35:47 <elliott> alphabet + start + end
02:35:47 <CakeProphet> also yeah I should switch to an array.
02:35:55 <CakeProphet> oh I was using the same token for start and end..
02:35:58 <CakeProphet> because I can.
02:36:01 <elliott> that won't go well.
02:36:03 <elliott> at all.
02:36:15 <CakeProphet> start tokens are always in the outer table, end tokens are always in the inner.
02:36:26 <elliott> grosse
02:37:55 <CakeProphet> whatev
02:39:03 <elliott> oerjan: im robots??
02:39:05 <elliott> yeah
02:40:23 <elliott> http://en.wikipedia.org/wiki/Cat-burning
02:40:24 <elliott> http://en.wikipedia.org/wiki/The_Great_Cat_Massacre
02:40:28 <elliott> the french are bad people :'(
02:40:30 <CakeProphet> wat
02:40:36 <elliott> in
02:40:37 <elliott> 1700s
02:40:41 <elliott> french people burned cats on bonfires
02:40:46 <elliott> and shrieked and laughed
02:40:47 <elliott> and were horrible
02:40:49 <elliott> and beat them
02:40:53 <elliott> and hung them for witchcraft
02:40:53 <CakeProphet> great massacre.
02:40:54 <elliott> they were
02:40:54 <elliott> awful
02:40:55 <elliott> people
02:41:04 <elliott> dear everyone: if you are french we are no longer friends
02:41:15 <quintopia> i agree
02:41:31 <quintopia> as far as i'm concerned, rome is still at war with the gauls
02:41:46 <quintopia> bona fortuna roma!
02:42:05 <CakeProphet> elliott: my last name has etymological roots in the French word for "courteous"
02:42:08 <CakeProphet> what now???
02:42:13 <elliott> CakeProphet: DIEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
02:42:58 <CakeProphet> !perl sleep and die ", never to return"
02:44:03 <pikhq> My last name has confusing spelling. What now?
02:45:43 * oerjan cackles evilly and goes to deduce CakeProphet's full name from this information
02:45:52 <CakeProphet> NOOOOOOOOO
02:46:07 <elliott> Adam Courtois????
02:46:11 <CakeProphet> once you know my true name, you will control me. :P
02:46:13 <CakeProphet> elliott: not quite
02:46:19 <elliott> Adam Curtis??????
02:46:21 <CakeProphet> yep
02:46:23 <elliott> he makes documentaries
02:46:24 <elliott> are you him
02:46:26 <CakeProphet> no
02:46:29 <CakeProphet> but we have the same name.
02:46:31 <elliott> http://upload.wikimedia.org/wikipedia/commons/c/c5/Adam_curtis.jpg cakeprophet
02:46:37 <CakeProphet> lol
02:46:40 <CakeProphet> yep that's me.
02:46:51 <elliott> http://upload.wikimedia.org/wikipedia/en/7/76/The_Way_Of_All_Flesh_titles.jpg title to one of CakeProphet's documentaries
02:47:00 <elliott> cakeprophet is 56 and from the uk
02:47:10 <CakeProphet> elliott: also the Way of All Flesh is an excellent Gojira album
02:47:11 <elliott> "The Observer adds "if there has been a theme in Curtis's work since, it has been to look at how different elites have tried to impose an ideology on their times, and the tragicomic consequences of those attempts."[2]"
02:47:15 <CakeProphet> Gojira of course being a FRENCH METAL BAND.
02:47:15 <elliott> this is what CakeProphet does
02:47:38 <elliott> french poople
02:47:48 <CakeProphet> yes the consequences are very tragicomic
02:47:53 <CakeProphet> tragicomic being a very tragicomic word...
02:48:00 <elliott> I like how I have a forty-one line long export list.
02:48:13 <CakeProphet> Haskell in action.
02:48:23 <elliott> https://github.com/ehird/mchost/blob/master/MC/Protocol/Types.hs#L3
02:48:32 <CakeProphet> Python has the worst export control.
02:48:46 <CakeProphet> __all__ = ["name1", ...]
02:48:49 <elliott> I don't think there's a single thing there I don't export, but best to be explicit about it.
02:48:59 <oerjan> <elliott> Adam Curtis?????? <-- dammit i was going for this http://www.facebook.com/people/Adam-Gallant/511648752
02:49:11 <CakeProphet> oerjan: master of etymology
02:49:23 <elliott> oerjan: google said "courtois" for courteous, so
02:49:51 <CakeProphet> I feel moving to the UK would be a bad move for me
02:49:54 <oerjan> elliott: i thought that was too obvious, so i looked for the alternative galant instead
02:49:58 <CakeProphet> as I would now be associated with this famous guy.
02:50:02 <elliott> oerjan: lol
02:50:20 <CakeProphet> unless he's not actually that famous.
02:50:21 <elliott> CakeProphet: I get the feeling he's somewhat of a, how do you say it, tosser.
02:50:30 <CakeProphet> ...I have no clue what that means.
02:50:33 <elliott> Well, in the world of documentaries he's ecrtainly famous. :p
02:50:44 <CakeProphet> oh
02:50:44 <elliott> s/ecrtainly/certainly/
02:50:46 <CakeProphet> good word.
02:51:08 <CakeProphet> but I don't know what that means in your UK jargon.
02:51:34 <elliott> Well, Wiktionary says http://en.wiktionary.org/wiki/tosser, but that has way too much focus on the not-really-relevant-any-more etymology and misses all the subtle meaning of the word.
02:51:41 <CakeProphet> right
02:51:52 <CakeProphet> I associated it with "wanker"
02:51:57 <elliott> Wanker is much lighter.
02:52:05 <elliott> A tosser has to be more offensive than that.
02:52:05 <CakeProphet> but I don't know what that means other than "some asshole"
02:52:14 <elliott> Well, it literally means "masturbator". :p
02:52:17 <CakeProphet> right.
02:52:24 <CakeProphet> US slang > UK slang
02:52:32 <elliott> No way. You have nothing with the subtlety of tosser.
02:52:36 <CakeProphet> bitch ass ho-slut
02:52:40 <CakeProphet> we're so subtle dude.
02:52:46 <elliott> It's all obscene rubbish.
02:52:53 <elliott> You're charlatans.
02:53:14 <CakeProphet> you're obviously just a big dickface with no nice American things.
02:53:45 <elliott> Yeah, we're burdened with a culture, and a country more than like three hundred years old.
02:53:46 <oerjan> Adam le Ouancour
02:53:56 <elliott> We have benches older than your country.
02:54:27 <CakeProphet> elliott: yeah but you can thank us for YOUR AWESOME GOVERNMENT BAHAHAHAHA.
02:54:33 <CakeProphet> ..
02:54:44 <elliott> CakeProphet: What.
02:54:48 <monqy> what
02:54:49 <CakeProphet> american of course being the place where freedom was invented.
02:54:51 <CakeProphet> *america
02:54:56 <elliott> Well we don't have any of that nonsense.
02:55:01 <elliott> Thankfully neither do you.
02:55:55 <CakeProphet> any what? freedom?
02:56:08 <elliott> Exactly.
02:56:27 <CakeProphet> well fine. democracy.
02:56:28 <CakeProphet> there.
02:56:30 <CakeProphet> we invented that
02:56:31 <CakeProphet> yep
02:56:33 <CakeProphet> the first.
02:56:48 <CakeProphet> and everyone was like "woah that's cool" and copied it.
02:56:49 <CakeProphet> losers.
02:57:56 <elliott> Totally
02:57:58 <elliott> Totally.
02:58:05 <elliott> Good thing you don't have that, either.
02:58:21 <CakeProphet> yep
02:58:31 <CakeProphet> I love capitalism. best system of government.
02:59:32 <elliott> ITYM corporatism.
02:59:50 <CakeProphet> "The bloke who ripped me off was a right tosser"
03:00:00 <CakeProphet> only a really lame country would have slang like that.
03:00:17 <CakeProphet> elliott: yes I mean "people and non-person entities with lots of money rule"
03:00:20 <elliott> Our slang is approximately ten times more gritty.
03:00:40 <monqy> bloke and tosser sounds much better than my native slang
03:00:54 <CakeProphet> shut up you're all babyfuckers.
03:01:29 <CakeProphet> babyfucking twatwaffles.
03:01:49 -!- augur has joined.
03:02:57 <CakeProphet> monqy: from where do you hail?
03:03:11 <monqy> america :(
03:03:22 <CakeProphet> america is a big place.
03:03:39 <elliott> yeah, it's two whole continents.
03:03:43 <monqy> is california small enough for you
03:04:02 <elliott> no you have to go smaller
03:06:41 -!- azaq23 has quit (*.net *.split).
03:06:41 -!- CakeProphet has quit (*.net *.split).
03:06:41 -!- iamcal has quit (*.net *.split).
03:06:42 -!- fizzie has quit (*.net *.split).
03:06:42 -!- atehwa_ has quit (*.net *.split).
03:06:43 -!- chickenzilla has quit (*.net *.split).
03:07:18 <elliott> hi
03:07:25 <evincar> Hi?
03:07:29 <monqy> hi
03:07:46 <Jafet> 'lo
03:08:02 <elliott> hi
03:08:59 -!- chickenzilla has joined.
03:09:04 <oerjan> hay
03:09:26 -!- atehwa has joined.
03:12:33 <elliott> hi
03:12:42 <elliott> pikhq: how do i git stash only one file... hepl
03:14:14 -!- fizzie has joined.
03:15:55 <elliott> pikhq: heelp
03:16:48 -!- sebbu2 has joined.
03:16:48 -!- sebbu2 has quit (Changing host).
03:16:48 -!- sebbu2 has joined.
03:17:13 -!- sebbu has quit (Ping timeout: 248 seconds).
03:19:55 -!- iamcal has joined.
03:21:22 <oerjan> INTERCAL STASH is so much simpler
03:23:03 -!- azaq23 has joined.
03:24:30 <elliott> oerjan: yes
03:25:57 <elliott> http://shop.github.com/ I...
03:26:12 <evincar> elliott: I don't think git-stash can operate on single files.
03:26:25 <evincar> It's specifically for stashing all of your uncommitted changes.
03:26:27 <elliott> This is the whitest store I have eve seen.
03:26:32 <evincar> There's probably another obscurely named command for it.
03:26:54 <evincar> Needs more white.
03:27:07 <oerjan> another neutrino idea: maybe they don't actually move faster than light on average, but instead they jump 60 ns backwards in time when oscillating from mu to tau flavor :P
03:27:10 <elliott> "Let's say you ordered a shirt. And in between the time that you placed your awesome order, you happened upon a Krispy Kreme donut shop. Wanting to do your part to encourage the economy, you stopped in to support local business (while quickly putting out of your mind the fact that Krispy Kreme is in fact not local, but rather nation-wide.) At said establishment, you decide to order a couple dozen donuts as they stream off the assembly line type d
03:27:10 <elliott> eal thing they got going on in there. (Honestly, I wouldn't know what it's called, I'm just a coder, not a donut maker). Thinking of the starving children throughout the world, you decide not to be wasteful but instead consume all 24 donuts."
03:27:19 <elliott> Also: the whitest paragraph.
03:27:28 <elliott> oerjan: :D
03:27:30 <elliott> oerjan: that is awesome omg
03:27:36 <oerjan> this would explain why that supernova didn't show the effect
03:27:40 <elliott> oerjan: they are like "whoops"
03:27:43 <elliott> and
03:27:45 <elliott> fall back in time
03:28:01 <oerjan> (because it's not cumulative over huge distance)
03:28:27 <evincar> elliott: You could also just create a branch called "stash", check your files into it, do what you need to do, then merge.
03:29:46 -!- azaq231 has joined.
03:30:07 <zzo38> Did you try to play any of the addition CGA Collection games I have posted today?
03:31:00 <zzo38> I don't know a lot about neutrinos
03:31:29 -!- azaq23 has quit (Ping timeout: 245 seconds).
03:39:36 <zzo38> Can you win a pachinko game if the manager tries very hard to stop anyone from winning, by manipulating the tilt of the building by telling someone else to put large cans of water on the top floor, and putting a lot of balls at once that get stuck, so that when you load a few more, there is no place to go except falling in the winning hole?
03:40:10 <elliott> oerjan: I wonder if anyone thought of that
03:40:13 <elliott> oerjan: it sounds like a pretty good theory
03:40:44 <oerjan> elliott: i'm thinking of a snag though... 60 ns in which reference frame?
03:41:05 <elliott> oerjan: presumably the reference frame of the measuring equipment :P
03:41:23 <oerjan> or equivalently, what in the neutrino rest frame?
03:41:55 <oerjan> the measuring equipment frame seems a little arbitrary
03:42:20 <elliott> oerjan: Arbitrary, but also the only frame it's practical to measure in :P
03:42:40 <oerjan> er i mean, it would be 60 ns in that frame, of course, but that's not a _fundamental_ frame for the neutrino
03:44:11 <oerjan> food ->
03:46:11 <elliott> oerjan: on a completely unrelated note, I wish there was something like
03:46:23 <elliott> classInstance :: TypeRep -> ClassRep -> Maybe InstanceRep
03:46:25 <elliott> so you could do
03:48:39 <elliott> maybeShow :: (Typeable a) => a -> Maybe String
03:48:39 <elliott> maybeShow x
03:48:39 <elliott> | Just ins <- maybeIns = Just (instanceApply ins show x) -- or something
03:48:39 <elliott> | otherwise = Nothing
03:48:39 <elliott> where maybeIns = classInstance (typeOf x) (...some way to denote the Show class...)
03:50:15 <oerjan> didn't jhc have a representation where you could actually get classes from types from values it runtime
03:50:23 <oerjan> (vague recall)
03:55:47 -!- myndzi has joined.
03:57:45 <elliott> oerjan: dunno
03:57:50 <elliott> oerjan: but this is a pretty easy static thing, I think
03:58:01 <elliott> since it goes through the type
03:58:06 <elliott> so it just has to be the part of the TypeRep
03:58:12 <elliott> oh, hmm
03:58:19 <elliott> the problem is orphan instances and the like
03:58:24 <elliott> you can't really write a manual instance to do that
03:58:48 <elliott> maybe it should be class → list of typerep instances, then
03:59:00 <elliott> it's just a shame to not be able to do generic thing slike this
04:03:33 <elliott> 13:52:41: <CakeProphet> yes the mathematics of large numbers is essentially masturbation. One can keep going until exhaustion.
04:03:39 <elliott> there are slam dunks. like busy beaver
04:04:14 <elliott> 14:03:53: <Phantom_Hoover> "The Humane Society of the United States and other animal welfare groups denounced the cloning, saying that the $50,000 could have been better used to save some of the millions of animals euthanized each year." — http://en.wikipedia.org/wiki/Little_Nicky_(cat)
04:04:14 <elliott> hmph
04:05:53 <zzo38> Perhaps that is correct. However, due to the government, that is impossible (I don't mean illegal; I mean impossible)
04:06:42 <oerjan> http://www.reddit.com/r/science/comments/kol1x/faster_than_light_neutrinos_not_so_fast/c2m0vam seemed to have a similar idea :)
04:06:49 <elliott> 15:09:19: <Deewiant> "Say what you will about D, the compiler is very well implemented." --proggit
04:06:51 <elliott> Deewiant: Which one :P
04:07:55 <zzo38> I noticed some things about my barrier monad implementation: rebind yield = id head . collect = collect . flip continue ()
04:09:58 <zzo38> Oops! I am wrong. tail . collect = collect . flip continue ()
04:12:24 <zzo38> Should the arguments to continue be the other way around?
04:12:36 <elliott> :t continue
04:12:37 <lambdabot> Not in scope: `continue'
04:12:40 <elliott> dunno
04:12:44 <elliott> ?hoogle continue
04:12:45 <lambdabot> Network.HTTP.Base Continue :: ResponseNextStep
04:13:02 <zzo38> I mean the "continue" in my BarrierMonad module.
04:13:09 -!- FireFly has quit (Ping timeout: 245 seconds).
04:13:22 <elliott> I don't know that module :P
04:16:43 <evincar> Okay, if you downloaded a game development environment, what would you expect for distribution capabilities?
04:17:08 <evincar> Like, standalones, or would standalones that automatically download and install a Steam-esque runtime be okay?
04:17:50 <evincar> I think the Digital Mars one would be the default referent in any discussion of "the D compiler".
04:18:02 <evincar> The LLVM frontend is, well, an LLVM frontend.
04:18:11 <zzo38> I think it should be virtual machine (possibly JIT), with a single includable executable to do it
04:18:14 <evincar> And then there's the other one I forget about.
04:18:32 <evincar> zzo38: I was thinking of going for something like that.
04:18:39 -!- FireFly has joined.
04:18:43 <evincar> The user downloads an executable which is really stub+payload.
04:18:53 -!- oerjan has quit (Quit: Good night).
04:18:56 <evincar> And the stub checks for an installed VM and runs the payload if a VM is available.
04:19:05 <evincar> Or downloads and installs the VM otherwise.
04:19:23 <zzo38> I think the executable should be the stub and the payload in a separate file in the same directory.
04:19:43 <evincar> No, a single file is better for user experience.
04:19:55 -!- shachaf has joined.
04:19:56 <evincar> The payload can always be extracted into the installation directory of the VM anyway.
04:20:02 <evincar> Like a Steam game.
04:20:29 <evincar> A game would constitute a (possibly compressed) archive or filesystem image.
04:20:34 <zzo38> Well, OK; if the payload can be extracted then it can work, so that the user can possibly make it running on other operating system or whatever else you want to do with it
04:20:49 <zzo38> I don't know how Steam games are loaded.
04:20:57 <evincar> Yeah, I'd be going for OS-independence...
04:21:14 <evincar> Steam games are stored in what are essentially disk images.
04:21:19 <evincar> Very brief ones. :P
04:21:32 <evincar> They have an internal hierarchical structure with whatever resources the game needs.
04:21:46 <evincar> Plus tons of error-checking and what have you.
04:21:51 <evincar> I don't recall the specifics.
04:22:05 <zzo38> I suppose it can be a Windows executable, but extractable in any operating system, but you would install the VM manually in those cases.
04:22:45 <zzo38> elliott: This is BarrierMonad module in case you interested (or to answer my question): http://sprunge.us/EQPb
04:23:09 <evincar> Right, or just "bundle OS-independent game file requiring preinstalled VM" versus "bundle OS-specific game file that installs VM if needed".
04:23:45 <zzo38> Yes, do whatever works for you.
04:24:06 <elliott> zzo38: fmap = liftM also works
04:24:32 <evincar> I'm considering possible things to sell to make some extra pocket change during my grad studies.
04:24:41 <evincar> And for some reason a game platform seems like a good idea.
04:24:44 <zzo38> elliott: OK, I fixed that
04:24:46 <evincar> Even though rationally I would assume it isn't.
04:25:13 <elliott> although you might need to import Control.Monad... not sure
04:25:45 <zzo38> Works without that.
04:26:08 <elliott> ok
04:26:13 <monqy> Control.Monad.Reader exports Control.Monad yeah
04:26:28 <elliott> it would be cool to see implementations of the other examples you gave, overridable I/O, state, flow control
04:26:38 <Madoka-Kaname> You can have modules implicitly import other modules?
04:26:46 <monqy> zzo38: what do you use from Control.Monad.Reader, anyway?
04:27:03 <zzo38> evincar: Of course you can also make a game as a .nes or .gba file or whatever; this is sometimes (although rarely) done.
04:27:28 <zzo38> monqy: Oops! Nothing. I could put Control.Monad instead.
04:27:34 <zzo38> OK I fixed that, and it works.
04:27:58 <evincar> zzo38: My software wouldn't really be able to do that; it's too high-level to conveniently compile, so I might as well just have a specialised VM.
04:29:21 <zzo38> evincar: There are many cross-platform formats implementable for computer games, such as emulators for older Nintendo systems, and Z-machine, Glulx, Java, or KINT (the license for KINT says public domain once author is dead; otherwise permission is required for anything done with it).
04:31:45 <zzo38> (NES games are still made today; mostly to run on emulators, although they are generally intended to work on actual NES/Famicom hardware, and Famiclones, as well)
04:32:09 <elliott> :')
04:33:55 <elliott> :t truncate
04:33:56 <lambdabot> forall a b. (RealFrac a, Integral b) => a -> b
04:34:36 <elliott> > truncate (-9.9)
04:34:37 <lambdabot> -9
04:34:38 <elliott> good
04:37:32 <zzo38> elliott: Yes, I could implement otherr example; overridable I/O could be done having the front type representing the atoms of actions to perform and back type representing the results. Now you can override it by other functions outside of there, such as implementing your own fake I/O, or using convert and/or rebind to change the actions a given I/O has already been made, to perform differently.
05:24:56 -!- copumpkin has changed nick to Daaan__.
05:25:09 -!- Daaan__ has changed nick to Daaaan_.
05:25:19 -!- Daaaan_ has changed nick to Daaaaan.
05:26:05 -!- Daaaaan has changed nick to daaaaaaaaaaaan.
05:29:19 -!- daaaaaaaaaaaan has changed nick to copumpkin.
05:33:29 -!- cheater has joined.
05:40:10 -!- evincar has quit (Quit: ChatZilla 0.9.87 [Firefox 6.0.2/20110902133214]).
05:45:14 -!- GreaseMonkey has quit (Quit: The Other Game).
05:55:37 -!- cheater has quit (Ping timeout: 248 seconds).
06:00:49 -!- cheater has joined.
06:16:57 -!- copumpkin has quit (Ping timeout: 248 seconds).
06:17:23 -!- copumpkin has joined.
06:55:44 -!- CakeProphet has joined.
07:10:11 -!- ive has quit (Quit: leaving).
07:23:46 -!- FireFly has quit (Ping timeout: 256 seconds).
07:25:55 -!- Ngevd has joined.
07:26:01 <Ngevd> Hello!
07:27:06 <zzo38> I decided to make the examples not exported. So, they will be used only with GHCi. When compiled normally, will they be optimized out?
07:29:52 <zzo38> I also put each example in chapter with "Example" in its title.
07:47:21 <Ngevd> The arrows are going to be fun in Uniquode
07:48:36 <elliott> :t randomR
07:48:36 <lambdabot> forall a g. (Random a, RandomGen g) => (a, a) -> g -> (a, g)
07:50:13 <elliott> monqy: i had...ide...a
07:50:27 <monqy> is it good? I was just abotu to slep
07:51:15 <Ngevd> Mahjong tiles are going to be even more fun
07:52:12 <Ngevd> I think Fraction literals should be dominos
07:52:23 <elliott> monqy: it...good...think
07:53:07 <monqy> Ngevd: dominoes as in they collapse in trains?
07:53:29 <Ngevd> That will be horizontal-oriented dominoes
07:53:38 <Ngevd> Vertical-oriented dominoes will be fractions
07:53:51 <monqy> ah
07:54:01 <monqy> oh I interprted what you saifc backwards
07:54:04 <monqy> it makes sense nwo
07:54:16 <elliott> monqy: it was about... orthogonal effects...
07:54:33 <monqy> orhtoganlo efects ias a god idea!!
07:54:34 <Ngevd> So, 3 7ths will be 🁷
07:55:16 <Ngevd> BECAUSE YOU ADD ONE TO THE TOP AND BOTTOM TO PREVENT DIVIDE BY ZERO ERRORS
07:55:17 <elliott> monqy: basically, lots of monad transformers are composable on top of each other where the order doesn't matter
07:55:31 <elliott> basically everything that offers "imperative program but with <effect>" does this
07:55:32 -!- Ngevd has changed nick to Taneb|Hovercraft.
07:55:52 <elliott> monqy: but the problem is that large transformer stacks suck...
07:55:55 <elliott> so
07:56:08 <monqy> this ia ll true....
07:56:13 <elliott> foo :: String -> Int -> M (Accesses Int, Produces String) Int
07:56:19 <elliott> that's like ReaderT String (WriterT Int Int)
07:56:22 <elliott> erm
07:56:24 <elliott> that's like ReaderT String (Writer Int Int)
07:56:37 <elliott> to run it, you do
07:56:57 <elliott> run . eraseProduces . eraseAccesses initialValue $ foo "" 9
07:57:01 <elliott> :: M () (Int, [String])
07:57:11 <elliott> because
07:57:12 <elliott> eraseAccesses :: (Has (Accesses s) e) => s -> M e a -> M (Erase (Accesses s) e) a
07:57:12 <elliott> eraseProduces :: (Has (Produces s) e) => M e a -> M (Erase (Produces s) e) (a, [s])
07:57:15 <elliott> and
07:57:17 <elliott> run :: M () a -> a
07:57:34 <elliott> now, the nice thing is that you can offer "subsets" of IO and the like through this
07:57:36 <elliott> like an RNG effect
07:57:52 <elliott> and you can either erase RNG to the AnyIO effect (which is runnable with "runAnyIO :: M AnyIO a -> IO a")
07:57:53 <elliott> or do
07:57:55 <elliott> unsafeEraseRNG
07:58:03 <elliott> to erase it completely (unsafely), like unsafePerformIO but more restricted
07:58:11 <elliott> (it can only unsafely run functions on the global RNG)
07:58:23 <elliott> and then.... more things... like this
07:58:30 <monqy> whats an erase
07:58:32 <elliott> it might be good?????
07:58:39 <elliott> monqy: like runFooT
07:58:41 <elliott> it eliminates part of the stack
07:58:44 <monqy> oh
07:58:46 <elliott> <elliott> eraseAccesses :: (Has (Accesses s) e) => s -> M e a -> M (Erase (Accesses s) e) a
07:58:48 <elliott> this basically means
07:58:50 <elliott> given an s
07:58:50 <elliott> and an
07:58:56 <elliott> M (..., Accesses s, ...) a
07:58:58 <elliott> we can turn it into
07:59:01 <elliott> M (..., ...) a
07:59:14 <elliott> and once you get rid of all the effects in the stack you have (M () a)
07:59:19 <elliott> and you just "run" that off into an a
07:59:41 <elliott> it's like a monad transformer stack but much more composable, predictable, orthogonal, componentised, blah bla blah
07:59:43 <elliott> s/bla/blah/
07:59:49 <monqy> good thigns....
08:00:24 <monqy> is it implemenmtatble in haskele
08:00:34 <elliott> i believe so.
08:00:40 <monqy> also good
08:01:07 <elliott> it'd be cleaner as a core language feature type thing, some kind of effect system
08:01:11 <elliott> but I think this is all doable in current Haskell
08:01:42 -!- Taneb|Hovercraft has changed nick to Ngevd.
08:02:08 <elliott> monqy: the main nice thing is that you can split up the IO "sin bin" a bit
08:02:20 <elliott> by offering an interface to various impure things like stablenames through a new effect
08:02:29 <elliott> and then provide standard erasure to the AnyIO effect
08:02:32 <elliott> and an unsafe erasure which just gets rid of it
08:02:33 -!- Ngevd has quit (Remote host closed the connection).
08:02:47 <monqy> splitting up the sin bin like that reminds me a bit of ST
08:03:00 <elliott> (you could just compose unsafe erasure of AnyIO (i.e. unsafePerformIO) with the safe erasure, but that means you're importing the unsafely-erase-AnyIO module)
08:03:09 <elliott> (and with things like SafeHaskell, that's a no-no :P)
08:03:16 <elliott> monqy: yeah, I think you can do ST as an effect, but don't quote me on that
08:03:24 <elliott> ST has the nice advantage that it's pure
08:04:46 <monqy> so how does this effect splieting work,,, is it necesarilye handled as a core langauge thing?
08:05:04 <elliott> monqy: i'm not sure what you mean, how does it work
08:05:05 -!- Ngevd has joined.
08:05:07 <monqy> oh
08:05:08 <elliott> I thought I explained the main aspects
08:05:22 <monqy> i meant specificalyl with the io sin bin
08:05:25 -!- Ngevd has quit (Client Quit).
08:05:36 <elliott> monqy: you just represent it as IO and don't export the constructor
08:05:42 <monqy> oh
08:05:54 <elliott> safe erasure is just unwrapping the constructor (modulo the effect system), unsafe erasure is just unsafePerformIO on top of that
08:06:22 <elliott> and you know that unsafely erasing an (M RNG a) can't have any unsafe side-effects other than using and mutating the global RNG
08:06:30 <elliott> which is a much stronger guarantee than unsafePerformIO gets you :P
08:11:33 <monqy> sounds good i guess
08:11:36 -!- monqy has quit (Quit: hello).
08:28:24 -!- Phantom_Hoover has joined.
08:30:06 -!- CakeProphet has quit (Ping timeout: 255 seconds).
08:34:37 -!- Vorpal has joined.
08:55:35 -!- elliott has quit (Remote host closed the connection).
08:55:39 -!- elliott_ has joined.
09:02:45 -!- cheater has quit (Quit: Ex-Chat).
09:03:38 -!- cheater has joined.
09:05:28 -!- azaq231 has quit (Quit: Leaving.).
09:08:38 <Phantom_Hoover> `addquote elliott i smell of poo
09:08:42 <HackEgo> 682) elliott i smell of poo
09:08:46 <elliott_> <Phantom_Hoover> elliott i smell of poo
09:09:18 <elliott_> Fascism:
09:09:19 <elliott_> `delquote 682
09:09:21 <HackEgo> ​*poof*
09:12:35 <Phantom_Hoover> OMFG
09:12:38 <Phantom_Hoover> Simon's skin
09:12:39 <Phantom_Hoover> has
09:12:52 <Phantom_Hoover> a dorf smiley on the top of the hat
09:13:11 <elliott_> o;h my god
09:16:58 -!- SimonRC has quit (Ping timeout: 260 seconds).
09:18:32 -!- SimonRC has joined.
09:52:40 <Phantom_Hoover> What is this crap you can't even use FTL for straight time travel.
09:52:49 <elliott_> What why not.
09:52:55 <elliott_> That's bad fix that?
09:53:36 <Phantom_Hoover> elliott_, you need to have a reflector and something and something else.
09:53:50 <Phantom_Hoover> And basically you can't just fire a giant neutrino laser into the past.
09:53:59 <elliott_> Fuck
09:53:59 <elliott_> that
09:54:00 <elliott_> shit
09:54:09 -!- nooga has joined.
10:06:22 <hagb4rd> Phantom_Hoover: how fast can we make them go (the netrinos)?
10:06:41 <elliott_> hagb4rd: About sixty ns faster than they should be able to.
10:06:48 <elliott_> ...modulo the fact that it's probably not true.
10:06:56 <elliott_> But the margin of error has been fixed very, very low.
10:07:00 <elliott_> /Something/ is up.
10:07:01 <hagb4rd> i see
10:11:11 <elliott_> Does anyone have a good name for a combination of yaw and pitch?
10:11:13 <elliott_> Literally just a tuple of 'em.
10:11:17 <elliott_> fizzie? :p
10:11:47 <fizzie> I don't know. Something related to "direction"? That's what it's indicating.
10:12:03 <hagb4rd> bpitch
10:12:05 <fizzie> Or, well, that's what it's usually indicating, anyhow.
10:12:12 <elliott_> fizzie: Yes, true. But then what if you add roll? WHAT THEN????
10:12:15 <fizzie> "yatch", "paw".
10:12:22 <elliott_> PH already said those. :p
10:12:22 <fizzie> Then it's "orientation".
10:13:24 <elliott_> Right.
10:13:34 <fizzie> A vague term if there ever was one. :p
10:17:11 -!- zzo38 has quit (Remote host closed the connection).
10:18:43 <hagb4rd> question: if the would explode, would there be any effects mesasurable on earhh during th first 8 minutes (event horizon)
10:18:54 <hagb4rd> if the sun
10:21:18 <elliott_> I think gravity goes FTL because it's spacetime magic.
10:21:26 <elliott_> Think. I might be totally wrong here.
10:21:31 <elliott_> Not lightwise or anything, of course.
10:22:01 <elliott_> Yeah, gravity is instant, it seems.
10:22:29 <hagb4rd> yea, thats the direction my question goes.. so gravity is not dependent on the barriers of lightspeed, rightz?
10:23:06 <elliott_> Hmm, it still propagates with a delay apparently
10:23:07 <hagb4rd> its effects
10:23:12 <elliott_> s/apparently/apparently./
10:23:18 <elliott_> Meh, this is way beyond my knowledge.
10:23:33 <elliott_> But the answer is almost certainly no, you can't use gravity to communicate faster than light :P
10:23:46 <hagb4rd> i guess its beyond the knowledght of humanity.. but there may be theories
10:26:42 <hagb4rd> superposition and EPR is interesting
10:26:43 <hagb4rd> http://en.wikipedia.org/wiki/EPR_paradox
10:27:08 <hagb4rd> though old stuff but still ass kickin
10:31:09 <elliott_> fizzie: Sigh. Some of the protocol is sent as "rotation, pitch, roll"; some of it as "yaw, pitch". Er, wait, that's just the fault of the documenters...
10:31:13 <elliott_> DISREGARD THAT
10:31:36 <fizzie> But do you suck cocks?
10:31:45 <elliott_> Only wrt my disregardation.
10:33:52 <elliott_> fizzie: I don't suppose you happen to know about the two different packed byte formats for yaw and pitch.
10:34:34 <fizzie> There are two?
10:34:54 <elliott_> One in steps of 2pi/256, one as a fraction of 360.
10:35:05 <elliott_> (And maybe the "packed byte" format is a third format altogether? The wiki never says what it is.)
10:35:13 <augur> elliott_: cheater doesnt like you :)
10:36:13 <elliott_> augur: I don't think we need to start drama with him here in the channel; if you're talking about the thing in #haskell then you already know what you'll cause by saying things like that.
10:36:28 <augur> i dont even know! all i know is its funny
10:37:08 <fizzie> elliott_: I know that the pickup_spawn uses (IIRC) angles in units of what I like to call brads (cf. the gradian; 2pi... sorry, tau == 256 brads), I don't know what that other thing is about.
10:37:35 <elliott_> fizzie: Brads. Really now?
10:37:47 <fizzie> It's 'b' for 'byte', you see.
10:37:49 <elliott_> Yaw byte126 The X Axis rotation as a fraction of 360
10:37:49 <elliott_> Pitch byte0 The Y Axis rotation as a fraction of 360
10:38:04 <elliott_> Whereas:
10:38:05 <elliott_> Yaw byte-27 The X Axis rotation in steps of 2π/256
10:38:05 <elliott_> Pitch byte0 The Y Axis rotation in steps of 2π/256
10:38:19 <fizzie> I would not be surprised if that were the same thing.
10:38:39 <elliott_> fizzie: Are you saying that 2π = 360?
10:38:54 <elliott_> Or are you saying that it just only /steps/ in those increments as to what the Notchian server/client sends?
10:39:09 <fizzie> I'm saying that 2pi rad = 360 degrees.
10:39:13 <elliott_> Oh, hmm.
10:39:19 <elliott_> "As a fraction of 360" is so silly.
10:39:25 <fizzie> Yes, it is BAD.
10:39:33 <elliott_> I mean, that should make some of the degrees that are degrees unrepsrespresntable.
10:40:00 <hagb4rd> y 360 anyway?
10:40:09 <elliott_> Degrees.
10:40:13 <hagb4rd> yes
10:40:32 <hagb4rd> is there a reason for 360
10:40:53 <fizzie> "The original motivation for choosing the degree as a unit of rotations and angles is unknown. One theory states that it is related to the fact that 360 is approximately the number of days in a year.[3] Ancient astronomers noticed that the stars in the sky, which circle the celestial pole every day, seem to advance in that circle by approximately one-360th of a circle, i.e., one degree, each day. Some ancient calendars, such as the Persian calendar, used 360 da
10:40:54 <fizzie> ys for a year. The use of a calendar with 360 days may be related to the use of sexagesimal numbers."
10:41:02 <fizzie> There are alternative ideas, too.
10:41:15 <fizzie> It's a very divisible number, that much is true.
10:41:21 <hagb4rd> would make kind of sence
10:42:23 <elliott_> 360 is such a number.
10:42:52 <hagb4rd> at least you it has a few nice factors
10:43:14 <hagb4rd> indeed 12 would make better base than 10
10:46:17 <hagb4rd> divide and conquer
10:47:17 <elliott_> MC/Protocol/Types.hs:209:50: Not in scope: type variable `dreiving'
10:47:23 <elliott_> Whoops. Never drink and dreive.
10:50:29 <elliott_> fizzie: You can represent all those packed values precisely as a float, right? :p
10:50:31 <elliott_> SO MUCH PARANOIA.
10:51:04 <fizzie> Very likely.
10:51:13 <elliott_> NOT GOOD ENOUGH
10:51:23 <elliott_> fizzie: (So they're unsigned bytes, right?)
10:52:13 <fizzie> Possibly, though I don't think it really matters; -1 brad is pretty much the same thing as 255 brad.
10:52:29 <elliott_> "Additionally, yaw is not clamped to between 0 and 360 degrees; any number is valid, including negative numbers and numbers greater than 360." Just why.
10:52:56 <elliott_> where getComponent = (/ 360) . fromIntegral . SE.getWord8
10:52:57 <elliott_> LOOKS GOOD TO ME
10:53:52 <elliott_> Or, hmm.
10:53:56 <elliott_> Is that actually right?
10:54:04 <elliott_> I don't think it is, no.
10:54:22 <elliott_> I want 256/360.
10:54:49 <elliott_> where getComponent = (/ 360) . (* 256) . fromIntegral . SE.getWord8
10:54:52 <elliott_> LOOKS GOOD TO ME???
10:55:06 <fizzie> If the original Word8 is in brads, you want (/ 256) to make it [0, 1], and then eiher (* 360) or (* (2 * pi)) to make it degrees or rads.
10:55:13 <elliott_> Er, right, wrong way around >_<
10:55:19 <fizzie> Well, [0, 1) I guess.
10:55:21 <elliott_> I'm making it degrees, since that's what the float fields in the protocol are.
10:55:48 <elliott_> where getComponent = (/ 256) . (* 360) . fromIntegral . SE.getWord8
10:55:51 <elliott_> FINALLY LOOKS GOOD TO ME
10:56:14 <fizzie> The yaw field is the one that collects all the rotation the object ever goes through.
10:56:25 <elliott_> I thought that was fixed.
10:56:30 <fizzie> Oh, it was?
10:56:34 <fizzie> Could be, I haven't been following.
10:56:34 <elliott_> Well, I thougth so.
10:56:36 <elliott_> thought
11:03:21 -!- BeholdMyGlory has joined.
11:04:54 <Vorpal> elliott_, you might need to turn it into radians to be able to do sane calculations on where the player is looking later on (if you need that sort of stuff).
11:05:08 <elliott_> I'm sticking to just mapping the protocol as best as I can for now.
11:05:41 <Vorpal> elliott_, but are you normalising it to 0-360 at least?
11:07:50 <elliott_> Vorpal: No. I'm not losing any data from the packets.
11:07:54 <elliott_> It is a representation of the network protocol.
11:28:58 -!- hagb4rd has quit (Ping timeout: 248 seconds).
11:32:25 <Phantom_Hoover> What are the haps my friends.
11:34:52 <elliott_> Happity.
11:45:00 -!- augur has quit (Remote host closed the connection).
11:53:18 -!- hagb4rd has joined.
11:53:58 <hagb4rd> hurray! finally i've found some serious footage on the apollo mission
11:54:00 <hagb4rd> http://www.youtube.com/watch?v=_ecBbSIdBKI&NR=1
11:55:01 <elliott_> Is this just a reading of the Onion article.
11:55:28 <hagb4rd> onion article?
11:56:25 <elliott_> http://members.shaw.ca/rlongpre01/moon.html
11:56:45 <hagb4rd> ah thx
12:03:32 -!- augur has joined.
12:16:20 -!- CakeProphet has joined.
12:17:03 <CakeProphet> lolhi
12:17:36 <CakeProphet> elliott_: hi
12:17:42 <elliott_> hi
12:17:51 <CakeProphet> man being drunk is cool
12:17:53 <CakeProphet> weeeeeee
12:17:57 <elliott_> oh no
12:18:00 <CakeProphet> bluh bluhbluhbluh
12:18:04 <elliott_> be in
12:18:07 <elliott_> another place
12:18:12 <CakeProphet> OKAY FINE
12:18:17 <CakeProphet> I won't act drunk like I am.
12:18:38 <CakeProphet> I will maintain my usual demeanor of serene austerity.
12:20:23 <CakeProphet> bluh.
12:21:09 <CakeProphet> oh my I believe I feel the beginniong of what is referred to as a hahgnover
12:21:23 <CakeProphet> time to drink water
12:21:28 <Phantom_Hoover> No
12:21:29 <CakeProphet> gluhgluhgluh
12:21:32 <Phantom_Hoover> drink more alcohol
12:21:38 <Phantom_Hoover> DROWN THE HANGOVER
12:23:15 <CakeProphet> apparently it's not common knowledge that water = hangover cure
12:23:27 <CakeProphet> apparently people can be stupid
12:23:31 <CakeProphet> I'm shocked.
12:28:30 <CakeProphet> elliott_: you, sir. what are you doing.
12:29:09 <elliott_> coding
12:29:56 <CakeProphet> what
12:30:38 <elliott_> coding
12:30:47 <CakeProphet> as in, "coding what?"
12:30:55 <elliott_> stuff
12:31:01 <CakeProphet> oh good
12:31:04 <CakeProphet> stuff is good for codes.
12:31:58 <fizzie> STUFF is the BEST.
12:32:10 <CakeProphet> stuff is the best codes.
12:32:35 <CakeProphet> coding the stuff makes the best codes for the stuff.
12:36:39 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
13:02:04 -!- MSleep has changed nick to MDude.
13:15:15 -!- sllide has joined.
13:16:41 <nooga> goddamn clang on OSX
13:17:34 <elliott_> goddamn os x
13:31:31 -!- ais523 has joined.
13:41:39 <elliott_> hi ais523
13:41:45 <ais523> hi elliott_
14:03:54 <elliott_> Aw, nobody even noticed my haskell question. :/
14:05:17 <elliott_> I choose to blame... ais523.
14:05:46 -!- ais523 has quit (Ping timeout: 248 seconds).
14:05:52 -!- sllide has quit (Read error: Connection reset by peer).
14:05:54 <elliott_> Dammit.
14:08:35 -!- sebbu2 has changed nick to sebbu.
14:09:08 -!- asiekierka has joined.
14:09:10 <asiekierka> i was bored: http://ego.64pixels.org/
14:11:34 -!- Wamanuz has quit (Remote host closed the connection).
14:17:16 -!- asiekierka has quit (Ping timeout: 276 seconds).
14:18:29 -!- asiekierka has joined.
14:48:32 <elliott_> > let foo = map (\x -> map (x:) foo) ['a'..'z']
14:48:33 <lambdabot> not an expression: `let foo = map (\x -> map (x:) foo) ['a'..'z']'
14:48:33 <elliott_> > let foo = map (\x -> map (x:) foo) ['a'..'z'] in foo
14:48:34 <lambdabot> Couldn't match expected type `GHC.Types.Char'
14:48:35 <lambdabot> against inferred type...
14:48:37 <elliott_> > let foo = map (\x -> concatMap (x:) foo) ['a'..'z'] in foo
14:48:38 <lambdabot> ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
14:48:41 <elliott_> heh
14:48:46 <elliott_> > let foo = ['a'..'z'] map (\x -> concatMap (x:) foo) foo in foo
14:48:47 <lambdabot> Couldn't match expected type `t1 -> t2 -> t3 -> t'
14:48:47 <lambdabot> against inferred...
14:48:54 <elliott_> > let foo = map (:[]) ['a'..'z'] ++ map (\x -> concatMap (x:) foo) foo in foo
14:48:55 <lambdabot> Couldn't match expected type `GHC.Types.Char'
14:48:55 <lambdabot> against inferred type...
14:49:00 <elliott_> > let foo = map (:[]) ['a'..'z'] ++ map (\x -> map (x:) foo) foo in foo
14:49:00 <lambdabot> Couldn't match expected type `GHC.Types.Char'
14:49:01 <lambdabot> against inferred type...
14:49:04 <elliott_> > let foo = map (:[]) ['a'..'z'] ++ map (\x -> map (x++) foo) foo in foo
14:49:05 <lambdabot> Couldn't match expected type `GHC.Types.Char'
14:49:05 <lambdabot> against inferred type...
14:49:07 <elliott_> > let foo = map (:[]) ['a'..'z'] ++ map (\x -> concatMap (x++) foo) foo in foo
14:49:09 <lambdabot> ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s...
14:49:14 <elliott_> > let foo = map (:[]) ['a'..'z'] ++ concatMap (\x -> map (x++) foo) foo in foo
14:49:16 <lambdabot> ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s...
14:49:18 <elliott_> > let foo = map (:[]) ['a'..'z'] ++ concatMap (\x -> map (x++) foo) foo in drop 99 foo
14:49:20 <lambdabot> ["aaav","aaaw","aaax","aaay","aaaz","aaaaa","aaaab","aaaac","aaaad","aaaae"...
14:49:25 <elliott_> hm
15:21:26 -!- sebbu2 has joined.
15:21:30 -!- sebbu has quit (Ping timeout: 248 seconds).
15:23:29 -!- sebbu2 has changed nick to sebbu.
15:32:01 <elliott_> Phantom_Hoover: oi, solve my haskell problem.
15:32:57 <Phantom_Hoover> It is fixed.
15:34:09 <elliott_> OK thakns.
15:36:04 -!- ais523 has joined.
15:36:58 <elliott_> hi ais523
15:37:11 <elliott_> I blamed you for my Haskell problem then you left, and it didn't got fixed :'(
15:37:13 <ais523> hi elliott_
15:37:30 <ais523> I didn't leave, the computer crashed (overheating because I forgot to unstick the fan)
15:37:36 <ais523> then I went shopping
15:37:38 <elliott_> it was my curse
15:37:49 <elliott_> I didn't damn you but I evidently cursed you
15:38:13 <ais523> hmm
15:38:18 <ais523> depends on what sort of curse it was, I suppose
15:38:46 <elliott_> a Haskell one, obviously
15:45:29 -!- tiffany has quit (Ping timeout: 260 seconds).
15:51:42 -!- tiffany has joined.
15:56:11 <Gregor> Conclusion:
15:56:17 <Gregor> Haskell kills computer fans.
15:56:35 <elliott_> Clearly.
16:10:10 -!- Ngevd has joined.
16:10:17 <Ngevd> Hello!
16:11:30 <ais523> hi
16:13:28 <Ngevd> I cut my finger this morning
16:14:00 <elliott_> rip
16:14:16 -!- sllide has joined.
16:17:03 <elliott_> ?hoogle (m a, m b) -> m (a,b)
16:17:03 <lambdabot> No results found
16:17:36 -!- derrik has joined.
16:20:36 -!- Ngevd has quit (Quit: Taneb|Walkingdoor).
16:34:00 -!- derrik has quit (Quit: ChatZilla 0.9.87-rdmsoft [XULRunner 1.9.0.17/2009122204]).
16:40:27 <fizzie> :t uncurry $ liftM2 (,)
16:40:28 <lambdabot> forall a1 a2 (m :: * -> *). (Monad m) => (m a1, m a2) -> m (a1, a2)
16:40:57 <fizzie> I need a dislike button for ":t doen't work in query".
16:42:21 <elliott_> fizzie: ?ty
16:42:26 <elliott_> And yeah, I knew that.
16:42:41 <elliott_> (equiv. @ty, @type.)
16:43:42 <elliott_> So does anyone know a better way to do effectively a "git stash" but then only partially re-apply the changes?
16:43:44 <elliott_> git add -p style
16:44:04 <elliott_> I want to incrementally migrate the current branch head to my working copy by making commits of slightly modified versions of parts of my working tree.
16:44:38 <fizzie> Ty for ?ty.
16:45:06 <elliott_> Yw for ?yw.
16:45:07 <elliott_> ?yw x
16:45:07 <lambdabot> Couldn't find fortune file
16:45:10 <elliott_> Ah.
16:45:16 <elliott_> fizzie: Now in return you must git-help me.
16:45:42 <Deewiant> git stash -p?
16:48:23 <elliott_> Deewiant: That's just for stashing.
16:48:28 <elliott_> I want to stash everything then selectively /apply/ it.
16:48:40 -!- derrik has joined.
16:48:47 <Deewiant> Why can't you first selectively stash, then apply everything
16:48:49 <elliott_> Basically I want to shove all my changes out of the way, then iteratively: pick part of stash → tweak it → commit → repeat.
16:48:58 <elliott_> Deewiant: What would that workflow look like?
16:49:04 <elliott_> Determining each chunk ahead of time?
16:49:18 <Deewiant> You're doing it effectively at the same time
16:49:21 <elliott_> That would be awkward, since decisions made at each point during the modification process would affect the decision of which next thing I'd do or how to split it up.
16:49:25 -!- derrik has quit (Client Quit).
16:49:30 <Deewiant> Instead of stash, checkout, repeatedly do stuff
16:49:37 <Deewiant> Well o'kay
16:49:52 <elliott_> Last time I just git diff'd, git reset'd, and then manually re-applied everything
16:49:55 <elliott_> But that's awkward
16:50:12 <Deewiant> Then you can do one stash -p and one stash and then when you've applied that part, do it again
16:50:12 <elliott_> git apply doesn't seem to have anything to do hunk selection.
16:50:24 <elliott_> Deewiant: I want to operate starting on a clean working tree.
16:50:28 <elliott_> So everything must be stashed before I can start.
16:50:44 <elliott_> And like I said, picking the splits ahead of time is inconvenient.
16:50:53 <Deewiant> You're not doing it ahead of time there
16:50:59 <elliott_> Maybe I misunderstand
16:51:10 <elliott_> git stash -p requires me to select chunks, no?
16:51:18 <Deewiant> You're doing a new stash -p every time after you commit the previous one
16:51:33 <elliott_> Hmm
16:51:34 <elliott_> So
16:51:59 <elliott_> Git stash, loop { git stash apply, git stash -p, select everything BUT the things I want to commit, tweak, commit }?
16:52:07 <elliott_> That works, but it's rather intuitive that no means yes and yes means no
16:52:10 <elliott_> s/intuitive/un/
16:52:53 <Deewiant> I was thinking loop { git stash -p, git stash, apply the -p'd one, tweak, commit, go back to where you were and apply the non-p'd one }
16:53:11 <elliott_> Hmm
16:53:13 <elliott_> That could work, yes
16:53:17 <elliott_> Why is git's workflow so ugly
16:53:20 <Deewiant> If I were you I'd just apply the whole stash and then git add -p it
16:53:30 <Deewiant> But that's just me
16:53:32 <elliott_> Deewiant: Doesn't even vaguely work, because I need to tweak it
16:53:38 <elliott_> I want to maintain a consistent state each commit
16:53:46 <elliott_> Not just have a seemingly split up sequence of commits that's actually just nonsense
16:53:47 <Deewiant> You can re-stash prior to every commit
16:53:58 <quintopia> oh
16:54:06 <elliott_> Deewiant: Won't work, my changes involve splitting a file into two new ones
16:54:21 <Deewiant> What does that break
16:54:44 <elliott_> Means that changes will be lost if I stash like that, or rather I won't be able to test my tweaks
16:55:48 <Deewiant> Howso
16:59:52 <elliott_> Deewiant: Maybe I'm misunderstanding
17:00:00 <elliott_> Apply the whole stash
17:00:02 <elliott_> Git add -p
17:00:05 <elliott_> Commit
17:00:06 <elliott_> Re-stash
17:00:06 -!- Ngevd has joined.
17:00:18 <elliott_> Where in this workflow am I able to test the tree about to be committed, sans all these merges and stuff
17:00:26 <elliott_> Or do I re-stash before every commit
17:00:27 <elliott_> OK, you said that
17:00:28 <Deewiant> Swap re-stash and commit
17:00:28 <elliott_> So
17:00:30 <elliott_> Apply the whole stash
17:00:33 <elliott_> Git add -p
17:00:34 <elliott_> Re-stash
17:00:35 <elliott_> Tweak
17:00:36 <elliott_> Commit?
17:00:51 <Deewiant> Yes, essentially
17:00:56 <elliott_> Essentially? :p
17:01:04 <Deewiant> I'd tweak before the stash in case you use something from there
17:01:12 <Deewiant> And then re-tweak afterwards if necessary
17:01:18 <elliott_> I don't understand
17:01:30 <elliott_> I have to tweak after stash because the post-stash-changes landscape is wildly different
17:01:40 <elliott_> So I can't really consult another file to figure out what to do unless I stash first
17:01:55 <Deewiant> Fair enough
17:02:04 <Deewiant> It doesn't really matter, that was just a detail :-P
17:02:16 <elliott_> Yeah OK I guess this will work
17:02:24 <elliott_> I still think git needs a better incremental splitting workflow though
17:02:45 -!- copumpkin has quit (Ping timeout: 245 seconds).
17:02:53 <elliott_> Basically "rip the selected hunks out of the stash and apply them"
17:02:54 <elliott_> Rip as in remove
17:03:07 <Deewiant> Maybe there is something like that, I just don't know about it.
17:03:10 -!- copumpkin has joined.
17:03:35 <elliott_> Maybe I'll write t :P
17:03:36 <elliott_> it
17:03:51 <elliott_> Deewiant: Now here's a question: Won't stash after add -p still stash the added changes?
17:03:59 <elliott_> Or does stash only stash stuff not anywhere gitwise?
17:04:14 <Deewiant> I can't remember, I think there's an option to not stash indexed stuff
17:04:45 <elliott_> Deewiant: Now say I split a file into two, how would I stash the two new files, "git add" would make them not be stashed because of the above :-P
17:04:54 <elliott_> Note: This game is impossible to win.
17:05:18 <Deewiant> Shrug, figure it out
17:05:33 <Deewiant> The solution here is to not end up in this situation ;-)
17:06:02 -!- hagb4rd has quit (Ping timeout: 248 seconds).
17:06:10 <elliott_> Deewiant: A large part of the git advertisement is about being able to detangle overlapping changes because of the wide acceptance of history modification, and separating version-control time from development time
17:06:17 <elliott_> Perhaps I was mislead
17:06:32 <Deewiant> Nobody said you're not able to do it
17:06:40 <elliott_> I wouldn't call this able to do it
17:06:40 <Deewiant> You're just complaining about its difficulty
17:07:14 <elliott_> git is totally great, you can do X. Note: X is an arduous process involving animal sacrifice and death of loved ones.
17:07:26 <elliott_> OK, that stash seemed to work.
17:08:18 <Deewiant> I'd rather do the animal sacrifice in this situation than "hg commit -m 'Pile of crap that I cannot unpile'"
17:09:24 <elliott_> Is hg the new standard for VCSes?
17:09:26 <elliott_> Bummer
17:09:48 <elliott_> Alright, it's time to do this shit
17:09:57 <elliott_> Deewiant: Do you know any way to retain the stash message through this process btw :-P
17:10:35 <Deewiant> Stashes have messages? :-)
17:11:07 <elliott_> git stash save "I'm probably the kind of person who uses Getting Things Done and ritually practices BDD- fuck, I'm out of space. This is violating the standards. Oh god. Oh god."
17:11:19 <elliott_> elliott@katia:~/Code/mchost$ git stash list
17:11:19 <elliott_> stash@{0}: On master: Client/Server module split, records, better test server
17:11:20 <elliott_> So professional
17:12:03 <elliott_> I know
17:12:11 <elliott_> alias restash='git stash save ...'
17:13:06 <elliott_> Oh, hmm
17:13:11 <elliott_> Deewiant: There's quite a major problem with your simpler model
17:13:14 <elliott_> I only want to keep parts of the index
17:13:19 <elliott_> Specifically, I want to keep the parts I add -p'd
17:13:23 <elliott_> But not the new files created by the split
17:13:31 <elliott_> It really feels like git is conflating two things here...
17:13:46 <elliott_> You should be able to let it know a file exists without having it be marked as to-commit.
17:15:26 <elliott_> <Deewiant> I was thinking loop { git stash -p, git stash, apply the -p'd one, tweak, commit, go back to where you were and apply the non-p'd one }
17:15:30 <elliott_> Alright, let's see here now
17:15:37 <elliott_> OK, I think that works
17:19:33 <elliott_> Deewiant: Thanks, this seems workable
17:20:01 <Deewiant> No problem
17:21:33 <elliott_> error: patch failed: MC/Protocol/Fields.hs:10
17:21:33 <elliott_> error: MC/Protocol/Fields.hs: patch does not apply
17:21:33 <elliott_> Cannot remove worktree changes
17:21:34 <elliott_> Sigh
17:21:36 -!- sllide has quit (Ping timeout: 256 seconds).
17:22:12 <elliott_> Oh, there we go
17:23:20 <elliott_> elliott@katia:~/Code/mchost$ selectstash
17:23:20 <elliott_> MC/Protocol/Fields.hs: needs merge
17:23:20 <elliott_> MC/Protocol/Fields.hs: needs merge
17:23:20 <elliott_> MC/Protocol/Fields.hs: unmerged (5627f96b476d7f06ae983b63aad445fcef5ade68)
17:23:20 <elliott_> MC/Protocol/Fields.hs: unmerged (f1ce5a1d97eee533fbaaa16b9b9e2d611c9902ce)
17:23:20 <elliott_> MC/Protocol/Fields.hs: unmerged (859cf129e4554d3253ee71c6497d5794626c7662)
17:23:22 <elliott_> fatal: git-write-tree: error building trees
17:23:24 <elliott_> Cannot save the current index state
17:23:30 <elliott_> Deewiant: What the fuck do you do if you have a fucking merge conflict between a stash and a commit you just made
17:23:55 <elliott_> I fixed the conflict, now what
17:24:01 <elliott_> Obviously I can't commit it
17:24:04 <elliott_> Do I need to... restash it??
17:24:06 <Deewiant> I forget
17:24:07 <elliott_> Make a merge stash????
17:24:09 <elliott_> Augh
17:24:45 <Deewiant> Maybe you should keep a separate branch here instead of a stash :-P
17:25:00 <elliott_> That would be uglier since I'd get explicit merge commits I'd have to discard
17:25:12 <elliott_> I'll hack up a toolchain for this soon, it's not a difficult operation at its core really
17:25:19 <elliott_> Deewiant: What search terms would you use to unforget :P
17:26:08 <Deewiant> git stash "needs merge" unmerged
17:26:55 <elliott_> Yay, I fixed it all
17:26:57 <elliott_> Kind of
17:28:45 <elliott_> stash@{0}: On master: Latest working tree
17:28:45 <elliott_> stash@{1}: On master: To apply
17:28:45 <elliott_> stash@{2}: On master: Latest working tree
17:28:46 <elliott_> Fuck
17:28:49 <elliott_> 0 is latest right?
17:28:52 <Deewiant> Yep
17:30:54 <elliott_> Deewiant: The merge conflicts I'm getting are great
17:31:05 <elliott_> It's because to remove the addition lines right next to other lines I don't want added I have to remove them entirely
17:31:07 <elliott_> Thus fucking up the context
17:31:09 <elliott_> The result:
17:31:12 <elliott_> <<<<<<< Updated upstream
17:31:12 <elliott_> =======
17:31:12 <elliott_> , blockPos
17:31:12 <elliott_> , blockPosShortY
17:31:12 <elliott_> , blockPosIntY
17:31:13 <elliott_> , playerPos
17:31:15 <elliott_> , playerPosXSYZ
17:31:17 <elliott_> >>>>>>> Stashed changes
17:31:19 <elliott_> "I EXPECTED NOTHING HERE BUT THERE WAS NOTHING"
17:31:50 <elliott_> The solution is literally just to remove the merge conflict lines
17:32:41 <elliott_> Ooh, I know
17:32:45 <elliott_> I just need to remove the context below
17:32:49 <ais523> haha, does the Norwegian alphabet really go A-Å?
17:32:51 <ais523> that must be confusing
17:32:53 <elliott_> Darn, that doesn't work
17:33:06 <elliott_> ais523: Hi, I'm dealing with git
17:33:11 <ais523> ouch
17:33:43 <ais523> I'm happy that I managed to convince at least you that it was fundamentally broken
17:33:48 <ais523> normally, I don't manage to convince anyone
17:33:57 <elliott_> ais523: How many people have you tried it on
17:34:06 <ais523> more than you might expect
17:34:15 <ais523> most people don't listen to the whole tihng
17:34:15 <ais523> *thing
17:34:19 <elliott_> This isn't really git's fundamental brokenness showing, it's just lack of a decent UI for this
17:34:26 <ais523> I know
17:34:30 <elliott_> Some merging issues but they'd be there with sg too, you could just avoid some of them with smarts
17:34:38 <elliott_> (Do you have the context of what I'm doing or are you just talking generally)
17:34:44 -!- ive has joined.
17:34:55 <ais523> I almost have the context, but I'm not paying enough attention to see it as anything but a sequence of facts
17:35:57 <elliott_> ais523: Basically: For like a day, I was working hard on long, tedious, boring work on mchost which resulted in some fairly large restructuring of what little there is right now, and couldn't be bothered with version control in the slightest. Now I want to turn this huge working diff into a sensible set of atomic commits where each one in sequence builds and runs properly, etc.
17:36:18 <elliott_> Which means that I can't just select hunks to apply in succession; I'll need to tweak and test it afterwards.
17:36:27 <elliott_> The basic operation git is missing is selecting hunks from a stash which then rips out those hunks from the stash and applies them to the tree.
17:36:37 <elliott_> That would let me select which part to work on next, do my tweaks, commit, repeat.
17:36:39 <ais523> in darcs, you could do that with a second repo and a pull
17:37:09 <elliott_> ais523: Even that's pretty inconvenient, because it'll have undesirable things like merge commits having the potential to get in.
17:37:14 <ais523> yep, indeed
17:37:21 <ais523> and the darcs method is far from certain
17:37:43 <elliott_> I basically want something "automatic" like bisecting is; you start the process, select some hunks, it does the obvious thing, you fix it up, make sure it builds, commits; then you resume, select more hunks, etc., until there aren't any left.
17:37:57 <elliott_> Automatic in that, you don't have to repeat anything, you just start / resume / resume until you're finished.
17:38:16 <elliott_> What's really annoying is that git refuses to split a hunk past a certain point.
17:38:29 <elliott_> Which makes e.g. selecting only one of five adjacent line additions to an import list annoying.
17:38:39 <elliott_> You have to manually edit the hunk, which changes the context, which creates bogus merge conflicts afterwards.
17:40:32 <elliott_> Saved working directory and index state On master: To apply
17:40:32 <elliott_> error: patch failed: MC/Protocol/Fields.hs:12
17:40:32 <elliott_> error: MC/Protocol/Fields.hs: patch does not apply
17:40:33 <elliott_> error: patch failed: MC/Protocol/Types.hs:112
17:40:33 <elliott_> error: MC/Protocol/Types.hs: patch does not apply
17:40:33 <elliott_> Cannot remove worktree changes
17:40:39 <elliott_> ais523: believe it or not, but this is what things look like when they're /working/
17:40:53 <ais523> heh
17:40:53 <elliott_> Congratulations git: my workflow now involves commands erroring out.
17:41:07 <elliott_> It literally exits with status 1 and all.
17:42:46 <elliott_> ais523: Here's what I'm doing, just so you can experience the absurdity: Apply the stash of "all changes not yet committed". Create a new stash interactively; select the hunks I want to work on this commit. Stash all changes (becoming the new "all changes not yet committed" stash); this leaves out the already-stashed selected changes, obviously. Apply the manually-selected stash. Tweak, tweak, commit. Repeat.
17:43:11 <elliott_> There's usually a merge conflict with the stashes at one point in this process because of hunk editing requirements.
17:43:16 <elliott_> Which involves some git reset HEAD stuff.
17:44:11 <Ngevd> There exist at least two fairy chess piece notaqtions
17:49:59 <elliott_> ais523: I fear I may be taking fear of breaking the build a little too far
17:50:05 <ais523> heh
17:50:12 <elliott_> I don't think a single commit to the repository doesn't compile so far
17:50:20 <ais523> really, we need to invent a programming language that merges well
17:50:21 <elliott_> With no warnings
17:51:25 <elliott_> Holy crap, finally no merge conflicts with the stash
17:54:27 -!- derrik has joined.
18:10:00 <Ngevd> ais523, will you continue my INTERCAL tutorial?
18:11:01 <ais523> well, you keep running away from it a lot
18:11:31 <Ngevd> I ran away once
18:11:39 <ais523> twice
18:11:58 <Ngevd> Okay, twice
18:13:39 <Ngevd> Three times
18:13:40 <Ngevd> Bye
18:13:41 -!- Ngevd has quit (Quit: Leaving).
18:14:08 <ais523>
18:16:49 <elliott_> ais523: I think you should: give up.
18:17:20 <ais523> yes, I don't think that tutorial would go too well
18:17:34 <elliott_> So, what's the way to get git to assume I passed --color to everything by default; answering this will save me an ENTIRE WEB SEARCH.
18:17:37 <elliott_> ais523 can do it, so can I.
18:17:43 <ais523> alias git = git --color
18:17:56 * ais523 runs
18:18:03 -!- derrik has left.
18:18:04 <elliott_> elliott@katia:~/Code/mchost$ git --color log --oneline
18:18:04 <elliott_> Unknown option: --color
18:18:04 <elliott_> usage: git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path]
18:18:04 <elliott_> [-p|--paginate|--no-pager] [--no-replace-objects]
18:18:04 <elliott_> [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]
18:18:04 <elliott_> [--help] COMMAND [ARGS]
18:18:10 <elliott_> ais523: You lose twofold
18:18:10 <ais523> bleh, that's really stupid
18:18:26 <elliott_> git still has the legacy of being like a billion shell scripts underneath. :p
18:18:26 <ais523> what happens if you pass --color to something that doesn't support --color?
18:18:40 <elliott_> elliott@katia:~/Code/mchost$ git fetch --color
18:18:40 <elliott_> error: unknown option `color'
18:18:50 * elliott_ just searches for it
18:18:56 <elliott_> I really need a nice verb form of Google that doesn't imply Google.
18:19:37 <elliott_> One thing I really like about git is that its little diagrams of the changed files and how much they were changed is pretty. :p
18:19:41 <ais523> websearch?
18:19:51 <elliott_> Also the way it detects common paths in renames and the like and uses {foo,bar} syntax.
18:19:53 <ais523> the major deficiency of Google is that it only searches the Web by default
18:20:03 <ais523> if only it searched people's minds too, it'd be more useful
18:20:05 <ais523> also a privacy nightmare
18:20:12 <elliott_> git has really rather aesthetically pleasing final output, it's just crappy at producing it.
18:20:12 <elliott_> ais523: heh
18:20:34 <elliott_> ais523: maybe we can get NeutrinoOverflow
18:20:50 <elliott_> ais523: basically, you ask your question, and if anyone ever answers it in the entire rest of the universe's lifespan, you get the answers back immediately
18:20:58 <elliott_> the main problem is that there's always thousands of them and huge flamewars over which is the best
18:21:11 <elliott_> whole threaded forums devoted to arguing the top two answers versus each other
18:21:22 <elliott_> millions of innocents killed in the name of using short options rather than GNU long options
18:21:35 <elliott_> but... I mean, you _do_ get an answer instantly, that's gotta count for something, right?
18:22:00 <elliott_> someone has to write that now, I would read the crap out of that short story
18:22:28 <elliott_> oh, git actually has command autocompletion
18:22:30 <ais523> it'd be great, but I'd be no good at writing it
18:22:36 <ais523> elliott_: *bash has command autocompletion for git
18:23:05 <elliott_> ais523: indeed, but "git st<enter>" is faster than "git status<enter>"
18:23:12 <elliott_> oh, darn, it has multiple options there
18:23:15 <elliott_> so it wouldn't work
18:23:25 <elliott_> (it's just an option to make git automatically run the suggested command if there's only one)
18:23:41 <ais523> its autocompletion for darcs is pretty amazing, it does things like darcs add <tab> only lists files that aren't in the repo already
18:24:02 <ais523> this isn't really a win for darcs over git in theory, only in practice
18:24:36 <elliott_> hmph, git has a bunch of colour options but there doesn't seem to be one way to set them all usefully at onc
18:24:37 <elliott_> e
18:25:25 <elliott_> color.ui
18:25:25 <elliott_> When set to always, always use colors in all git commands which are capable of colored output. When false (or never), never. When set to true or auto, use colors
18:25:25 <elliott_> only when the output is to the terminal. When more specific variables of color.* are set, they always take precedence over this setting. Defaults to false.
18:25:26 <elliott_> o
18:25:30 <elliott_> h
18:26:37 <Gregor> http://16oa3.tk (Yes, I used Tweak.tk :P ) ; this is almost assuredly trollery, but the answer is pretty hilarious.
18:27:21 <ais523> do you think the question or answer was trolling? or both?
18:27:49 <ais523> I'm going for question being trolling, answer calling them on it
18:28:23 <elliott_> "Okay. Wow, you're kind of ignorant. America was formed by the ENGLISH. They didn't copy us, we copied them. David Beckham is English too. Also, there is no such language as 'American'... I take it you're a blonde..."
18:28:43 <elliott_> Do holier-than-thou attitudes ever pay off, ever?
18:28:49 <elliott_> They are like the universal catalysts of irony.
18:28:53 <ais523> probably /sometimes/
18:29:03 <elliott_> ais523: there's absolutely no way at all ever ever ever to tell git I'm splitting a file into two new ones, right? :(
18:29:12 <elliott_> it's showing me as removing the whole file and then adding two ~COMPLETELY NEW FILES~
18:29:19 <elliott_> even though it's almost literally just splitting the thing in two
18:29:21 <ais523> I don't think so, but I don't know
18:29:27 <elliott_> :'(
18:30:43 <elliott_> I can't believe Pugs is still maintained
18:31:33 <ais523> is that a Haskell impl or Perl 6 impl? I get them muddled
18:32:03 <elliott_> latter
18:32:04 <elliott_> in Haskell
18:32:07 <elliott_> # modified: MC/Protocol.hs
18:32:07 <elliott_> # new file: MC/Protocol/Client.hs
18:32:07 <elliott_> # renamed: MC/Protocol.hs -> MC/Protocol/Server.hs
18:32:07 <elliott_> ugh
18:32:11 <elliott_> don't just pick the bigger half, git...
18:32:57 <pikhq> elliott_: This is nothing but a presentation issue.
18:33:02 <elliott_> I don't care :-(
18:33:38 <elliott_> "show [<stash>]
18:33:38 <elliott_> Show the changes recorded in the stash as a diff between the stashed state and its original parent."
18:33:40 <pikhq> git is not actually storing a new file and a rename action in its commit. It's simply storing a whole new filesystem tree in its immutable data store.
18:33:45 <elliott_> Is there any way to show the diff between the stashed state and the current HEAD?
18:33:48 <elliott_> That would be very useful for me.
18:33:59 <pikhq> That git then tries to present things in a confusing way is just a shame...
18:34:46 <pikhq> Should be able to: each stash is either a tree or a commit (I don't remember which)
18:35:06 <pikhq> IIRC git stash show should actually show you the appropriate hash.
18:35:16 <pikhq> Ah, it's a commit.
18:36:14 <pikhq> Oh, hey, even better: each stash gets stuffed in refs/stash. So: git diff HEAD stash@{0}
18:36:19 <elliott_> Oh, great. Thanks.
18:39:11 <elliott_> wow, I think this commit will actually merge better if I squash it with the previous one
18:39:15 <elliott_> is that even possible in git?
18:39:25 <elliott_> for merging to be like that, I mean
18:39:34 <ais523> you can probably do it via interactive rebase somehow
18:39:42 <ais523> merge first, then squash the merge commit backwards
18:39:48 <pikhq> Sounds about right.
18:39:48 <elliott_> yes, I know that :)
18:39:49 <elliott_> I just mean
18:40:00 <elliott_> is it possible for squashing a commit with a previous one to make merging easier
18:40:44 <pikhq> I don't really think so; it's a fairly naive three-way merge, isn't it?
18:40:49 <elliott_> right
18:41:37 <pikhq> With the only thing making git's merging work notably better is that the standard DVCS workflow encouraging branches that don't diverge *widely*.
18:41:54 <pikhq> s/encouraging/encourages/
18:42:20 <elliott_> but seriously... worst diff: http://sprunge.us/CVSb
18:43:01 <pikhq> Yeaaah, diff is moronic.
18:48:22 <elliott_> pikhq: Hmm... given a commit, is there a way to selectively apply its diff using the hunk selection screen?
18:55:08 -!- monqy has joined.
18:56:04 <elliott_> pikhq: I SEE
19:08:39 -!- asiekierka has quit (Remote host closed the connection).
19:10:36 <elliott_> pikhq: Is there a way to refer to the index with "git diff">
19:10:36 <elliott_> ?
19:10:50 <elliott_> As in, "git diff <index> stash@{0}".
19:11:58 -!- zzo38 has joined.
19:12:11 -!- Ngevd has joined.
19:12:18 <Ngevd> Hello!
19:13:07 <zzo38> I think what I will do, is move examples of my program into a separate file and then \input it into the main file. The example file can then be loaded into GHCi to try things with it.
19:13:18 -!- KingOfKarlsruhe has joined.
19:14:22 <elliott_> pikhq: :'(
19:15:10 -!- Ngevd has quit (Client Quit).
19:16:25 <elliott_> Ah, diff-index seems to be it, possibly.
19:17:01 <elliott_> oh, git diff --cached does it
19:40:00 <Vorpal> <elliott_> but seriously... worst diff: http://sprunge.us/CVSb <-- nice paste name...
19:40:13 <elliott_> Heh
19:40:15 <elliott_> Heh.
19:40:21 <elliott_> Tpyoes are the worst.
19:48:55 <Vorpal> elliott_, oh and, I don't really see any alternative way to format it without adding some "copy from file" command to diff
19:49:32 <elliott_> So?
19:49:54 <elliott_> git doesn't exactly spit out stock git output most of the time.
19:50:05 <Vorpal> stock diff you mean
19:50:13 <elliott_> Yes.
19:50:34 <elliott_> Every time I see "diff --git" I imagine that somehow Linus just got the option he needed for diffs added to diff itself because, well, he's Linus.
19:50:42 <elliott_> But no; 'tis a sham.
19:53:07 <Vorpal> yeah, diff doesn't have --git
19:55:47 <ais523> elliott_: like "ls --emacs"?
19:55:56 <ais523> (I'm not sure if I've got the name exactly right there)
19:57:07 <elliott_> ais523: it's --dired
19:57:20 <ais523> yep, I thought I'd got the name wrong
19:57:53 <fizzie> Vorpal: But GNU patch has support for "diff --git" output: http://git.savannah.gnu.org/cgit/patch.git/tree/NEWS second '*'.
19:58:09 <elliott_> Heh.
19:58:45 <elliott_> git is a pretty good immutable object store with support for tree objects that can be diffed and the like, I just wish people didn't mistake that for a VCS :D
20:04:21 <zzo38> In which and how many esolangs does it not matter the order of program lines? Which ones almost matter? Are there any with hex grids?
20:06:40 <fizzie> Two where the order does not matter are Whenever, and Strelnokoff.
20:14:38 <zzo38> I realize now, I think C-LONG also doesn't matter the order but for different reason (old BASIC interpreters also often reordered everything in order of line numbers)
20:17:40 <fizzie> Yes, I suppose with mandatory-unique line numbers the order will likely not matter.
20:17:54 <zzo38> Will anyone implement Ian's VAX Extensions?
20:18:36 <zzo38> Do you like games that scroll one way or both ways?
20:20:54 -!- Phantom_Hoover has changed nick to Notch.
20:24:21 -!- Vonlebio has joined.
20:26:39 -!- Notch has changed nick to Phantom_Hoover.
20:27:34 <olsner> elliott_: maybe your diff would be more readable with git diff -M (rename detection)
20:27:57 <elliott_> olsner: Tried that, but it wasn't really
20:27:58 <elliott_> olsner: Tried that, but it wasn't really.
20:28:06 <olsner> ok
20:31:38 -!- Vonlebio has quit (Quit: Leaving).
20:32:25 <elliott_> olsner: Tried that, but it wasn't really.
20:32:27 <elliott_> olsner: Tried that, but it wasn't really.
20:32:28 <elliott_> hi
20:33:26 <monqy> hi
20:34:41 <Vorpal> <fizzie> Vorpal: But GNU patch has support for "diff --git" output: http://git.savannah.gnu.org/cgit/patch.git/tree/NEWS second '*'. <-- huh, old version here then
20:35:23 <Vorpal> diff --help | grep git turns up nothing here
20:37:12 <olsner> since it's not prefixed by "Changes in version ..." in the changelog I think that list is for the next (i.e. unreleased) release
20:37:24 <Vorpal> <zzo38> Do you like games that scroll one way or both ways? <-- I prefer games that scroll in all three dimensions, and in all directions there.
20:37:25 <olsner> also, it's for patch, not diff
20:39:01 -!- pikhq_ has joined.
20:39:29 -!- pikhq has quit (Ping timeout: 260 seconds).
20:40:47 -!- copumpkin has quit (Remote host closed the connection).
20:41:41 -!- copumpkin has joined.
20:48:44 <Phantom_Hoover> CakeProphet, are you still in that relationship with @vixen?
20:59:42 -!- pikhq has joined.
20:59:50 -!- pikhq_ has quit (Ping timeout: 245 seconds).
21:04:58 -!- elliott_ has quit (Ping timeout: 248 seconds).
21:07:06 -!- ive has quit (Ping timeout: 248 seconds).
21:19:48 -!- oerjan has joined.
21:22:59 <oerjan> <Madoka-Kaname> You can have modules implicitly import other modules?
21:23:35 <oerjan> you can have a module explicitly export another module's definitions as its own, in which case it looks like that
21:25:09 <oerjan> makes it easy to make an api which doesn't depend on how you organize your modules internally
21:26:38 <oerjan> and then there are class instances, which _are_ imported implicitly, which sometimes creates trouble
21:27:35 <oerjan> (there's no way to hide them from a module which knows about both the types and the class
21:27:38 <oerjan> )
21:29:40 <oerjan> ah elliott deficiency, i thought it was silent
21:35:18 <oerjan> <Phantom_Hoover> What is this crap you can't even use FTL for straight time travel.
21:35:51 <oerjan> ftl only implies time travel if it is still independent of reference frame
21:35:59 <Phantom_Hoover> oerjan, that too.
21:36:21 <Phantom_Hoover> But what I meant was that you can't use it to shoot Hitler without shenanigans.
21:36:27 <oerjan> and if it is true that the speedup is 60 ns independent of the neutrino energy, then it probably is _not_
21:37:09 <oerjan> i had another idea though - variant of my last 60 ns backwards in time thing. well, really just taking that to its conclusion.
21:38:03 <oerjan> if there is a jump which happens either at production or detection, then all we need for time travel is to get the accelerator and detector < ~ 20 m apart
21:38:52 <oerjan> hm i guess we'd want half that, to get an ordinary signal back in time
21:40:02 <oerjan> > 60e-9 * 300000000
21:40:03 <lambdabot> 18.0
21:40:30 <oerjan> < ~ 9 m, then
21:41:27 <oerjan> hm i guess at that distance it would be tricky to avoid all the _other_ particles generated by the accelerator :(
21:43:39 <oerjan> <elliott_> I think gravity goes FTL because it's spacetime magic.
21:44:03 <oerjan> dammit you realize this is a frequent question at any public physics forum?
21:45:14 <oerjan> (the answer, as you seem to have found, is that changes in gravitation propagate at light speed)
21:47:09 <oerjan> whether this means that gravity _itself_ propagates at light speed is hard to test because you cannot make a change that would note the difference without violating conservation laws or have something else move faster than light
21:47:35 <oerjan> *notice
21:47:59 <oerjan> well that's my impression of the discussions, anyway
21:48:32 <zzo38> O, nobody has beat me at "Month Name" and "Double quote" yet. Maybe later it will be.
21:49:26 <oerjan> "September"
21:49:37 <oerjan> yw
21:50:23 <zzo38> What about September?
21:50:44 -!- Patashu has joined.
21:51:04 <oerjan> it's the current month name. also i put it in double quotes.
21:51:38 <zzo38> I mean anagol. But it should not be too difficult to match me at those problems, I think.
21:52:08 <zzo38> (I noticed for "Month Name" that November is omitted)
21:52:22 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 6.0.2/20110902133214]).
21:55:53 <zzo38> Maybe I even missed something you can shorten it more.
22:03:33 <oerjan> 17:32:49: <ais523> haha, does the Norwegian alphabet really go A-Å?
22:03:33 <oerjan> 17:32:51: <ais523> that must be confusing
22:03:36 <oerjan> yes, and no.
22:04:17 <zzo38> Is there such a thing as Windows CE emulator that can run on Linux?
22:04:29 <olsner> oerjan: hmm, how does your alphabet end? øæå?
22:04:39 <fizzie> Ours goes A..ZÅÄÖ.
22:04:40 <oerjan> æøå
22:04:46 <ais523> oerjan: I'm thinking, when people leave off accents
22:04:56 <oerjan> ais523: well don't do that
22:04:59 <ais523> how is å pronounced anyway?
22:05:10 <oerjan> approx. like aw in saw
22:05:21 <ais523> ah, that's close enough for me to imagine it
22:05:47 <fizzie> The Finnish name for å is "swedish o".
22:06:08 <oerjan> although distinguishing all the back vowels in english is a little tricky for a norwegian. well this one, anyway.
22:06:33 <oerjan> i will assume we get it back with the front ones :P
22:07:01 <fizzie> "In Swedish, the long version represents IPA /oː/. In Danish and Norwegian, the long version is pronounced IPA /ɔː/."
22:08:17 <oerjan> see, i can barely think of that as a real difference :P
22:08:40 <zzo38> I read somewhere, someone invented a new letter of the English alphabet called "key" and which is always silent.
22:08:47 <oerjan> as an accent yes, but not as a different phoneme
22:09:48 <fizzie> We don't even officially have a ɔ at all; there's no "Finnish" listed on the occurrence list of that IPA sound in WP.
22:13:40 <fizzie> "The mid vowels are phonetically "true" mid, i.e. intermediate between close-mid ([e], [ø], [o]) and open-mid ([ɛ], [œ], [ɔ]).[3] However, since no language is known to phonemically distinguish all three of these levels of mouth opening, the International Phonetic Association (IPA) provides no separate symbols for mid vowel phones."
22:14:33 <oerjan> what language is this
22:15:08 <fizzie> Ours.
22:15:47 <oerjan> which reminds me, how is finnish ä pronounced
22:16:03 <olsner> it's pronounced ä, silly
22:16:26 <fizzie> Front, unrounded, open; æ in other words.
22:17:48 <oerjan> it's the one sound in finnish where i keep looking at words and think, no, that cannot possibly be how it is pronounced.
22:18:05 <fizzie> (Where æ was the IPA æ.)
22:18:17 <fizzie> Which words are these?
22:19:13 <oerjan> whichever words :P
22:19:17 <olsner> hmm, swedish ä is apparently pronounced ɛ
22:19:45 <fizzie> It's that sometimes, I believe.
22:20:49 <oerjan> and that's how my mind wants to pronounce the finnish ones too, i think. or something in between.
22:21:03 <fizzie> WP says it's æ in e.g. "päron", due to the r.
22:21:51 <fizzie> "/ɛː/, /ɛ/, /øː/, and /œ/ are lowered to [æ] and [œ̞], respectively, when preceding /r/.[5] In most Standard Swedish varieties, especially those spoken by younger speakers, [œ̞] is used in other contexts as well." (In Swedish.)
22:23:02 <fizzie> "The doctor orders" in Finnish: "lääkäri määrää".
22:24:27 <Vorpal> <olsner> hmm, swedish ä is apparently pronounced ɛ <-- is it?
22:24:33 <Vorpal> such as in?
22:24:36 <olsner> Vorpal: wikipedia said so
22:24:49 <Vorpal> olsner, got any example words?
22:24:59 <olsner> Vorpal: http://en.wikipedia.org/wiki/Swedish_phonology#Vowels
22:25:49 <olsner> but I skipped the paragraph about sounds lowered to æ, that fizzie quoted, and just read the table first
22:26:29 <Vorpal> I'm somewhat doubtful, I can't hear a difference between cases that it claims are pronounced ɛ and those it claims are pronounced æ
22:27:34 <Vorpal> the case for ö is more obvious
22:31:31 -!- hagb4rd has joined.
22:33:52 -!- ive has joined.
22:37:04 <fizzie> ɛ should be rather different from æ; I mean, it could easily be closer to e. (Also: "In many central and eastern areas (including Stockholm), the contrast between /ɛ/ and /e/ is lost, especially the short variants[8] except before /r/[9] so that hetta ('heat') and hätta ('cap') and possibly even veta ('know') and väta ('moisten') are pronounced the same.")
22:38:11 <Vorpal> fizzie, well veta and väta are spelled quite differently. The first two are pronounced only slightly differently
22:38:21 <Vorpal> but I thought you meant when it is spelled with ä
22:39:06 <fizzie> I don't know what that means. I mean, ä is always spelled with ä; it's ä.
22:39:39 <Vorpal> fizzie, I thought you meant above that ä was sometimes pronounced æ and sometimes ɛ
22:39:44 <fizzie> Yes.
22:40:05 <hagb4rd> we have a lot of scandinavian folks here
22:40:07 <fizzie> But a letter is by definition always spelled the same way.
22:40:40 <Vorpal> fizzie, but all the examples above were using ä as one sound and e in the other case. So I haven't seen any examples of spelled ä pronounced ɛ yet?
22:40:53 <hagb4rd> is there any affinity between esolangs and scandinavia
22:41:08 <Vorpal> hagb4rd, we have several people from UK too. And many from US.
22:41:16 <hagb4rd> yea
22:41:27 <Vorpal> so?
22:41:41 <nooga> väta min hätta
22:41:46 <hagb4rd> just breeding random thoughts
22:41:49 <Vorpal> nooga, wtf
22:41:52 <hagb4rd> humpa!
22:41:57 <nooga> Vorpal: what?
22:42:11 <Vorpal> nooga, oh wait, you are washing your cap?
22:42:14 -!- augur has quit (Remote host closed the connection).
22:42:19 <zzo38> We also have at least two Canadians.
22:42:34 <nooga> Vorpal: yep
22:42:35 <Vorpal> how many from Australia?
22:42:49 <Vorpal> or NZ
22:43:22 <hagb4rd> no one
22:43:28 <fizzie> Vorpal: What. It's (theoretically) pronounced as /ɛ/ in both hätta and väta; except according to that it can happen that what should be /ɛ/ and /e/ in 'hätta' and 'hetta', respectively, gets pronounced the same way.
22:43:31 <hagb4rd> they have no time for char
22:43:34 <hagb4rd> chat
22:43:55 <fizzie> And it's pronounced as /æ/ only before /r/, or some-such.
22:44:10 <Vorpal> fizzie, hm, but issue is, it sounds the same in cases like ärt and väta to me.
22:44:17 <Vorpal> So now I'm utterly confused
22:44:36 <hagb4rd> is this swedish?
22:44:42 -!- derdon has joined.
22:45:00 <fizzie> Technically those are supposed to be /æ/ and /ɛ/. But they are sort-of neighbouring sounds, so...
22:45:40 <Vorpal> hagb4rd, yes
22:45:48 <hagb4rd> k, thx
22:46:14 <hagb4rd> but everything but finish sounds familiar in a way
22:47:36 <hagb4rd> dunno how this could happen, but finish is kind of extraterristic nature
22:48:04 <hagb4rd> its different
22:48:23 <hagb4rd> not wanting to bother anyone
22:49:38 <oerjan> <hagb4rd> no one <-- oh they do happen
22:50:06 <hagb4rd> my ex has gone to nz
22:50:28 <hagb4rd> see seems to be busy bunjeejumping and stuff
22:50:39 <hagb4rd> they're all happy in nz
22:50:52 <hagb4rd> keeping an eye on their sheep and stuff
22:51:13 <fizzie> Vorpal: Finnish only has /æ/ and /e̞/ (which is somewhere between /e/ and /ɛ/), so it's not very easy for a Finnish speaker to distinguish between all three of /e/, /ɛ/ and /æ/ either; it's just that I have a feeling often when they teach Swedish to Finnish-speaking folks, they just tell us to pronounce your ä as /e/ except when in front of /r/.
22:51:15 <oerjan> incidentally in norwegian, æ is mostly spelled e in front of r, but not always
22:51:35 <fizzie> Vorpal: Of course finlandssvenska is pretty far from real Swedish. :p
22:52:22 <oerjan> and is much rarer in front of other consonants
22:53:26 <fizzie> But for example 'nät' is something I'd pronounce rather /e/-ishly if for some reason someone would point a gun at me and tell me to start speaking Swedish. And I'd want to use that word. In that situation. Which sounds somewhat unlikely.
22:53:38 <oerjan> hm it may be short ær which is spelled er
22:54:07 <oerjan> (the word "er" would be an exception)
22:54:23 <hagb4rd> i know tolkien was inspired by finnish or at least some of its unique forms of pronouncing stuff
22:55:20 <hagb4rd> sindarin & quenya are related to finnish and greek
22:55:52 <fizzie> So they say.
22:55:55 <oerjan> erm i thought sindarin was related to welsh
22:55:56 <hagb4rd> yes
22:56:08 <fizzie> "Finnish, which I came across when I had first begun to construct a 'mythology' was a dominant influence, but that has been much reduced [now in late Quenya]. It survives in some features: such as the absence of any consonant combinations initially, the absence of the voiced stops b, d, g (except in mb, nd, ng, ld, rd, which are favoured) and the fondness for the ending -inen, -ainen, -oinen, also in some points of grammar, such as the inflexional endings -sse
22:56:09 <fizzie> (rest at or in), -nna (movement to, towards), and -llo (movement from); the personal possessives are also expressed by suffixes; there is no gender."
22:56:49 <hagb4rd> thx fizzie
22:57:53 <fizzie> Our inflection-suffixes for those are -lla, -lle and -lta (for external-locative; -ssa, -an/-en, -sta for internal), so it's not quite directly copied, just some styles.
22:58:18 <hagb4rd> lets call it influenced
22:59:00 -!- calamari has joined.
22:59:07 <fizzie> I wonder if our percentage of Quenya speakers is above the global mean, though.
22:59:14 <fizzie> Better ask Wolfram Alpha.
22:59:18 <hagb4rd> im sure
22:59:20 <hagb4rd> :D
23:00:00 <fizzie> "Fictional Things: Development of this topic is under investigation..."
23:00:04 <fizzie> Oh W|A, why must you fail me so.
23:01:48 <fizzie> "Petri Tikka comes from Finland or "Quenya-land". As a native Finnish speaker he is very well prepared to speak Quenya which is phonologically based on Finnish. Petri has translated a fragment of Kalevala into Quenya."
23:01:54 <fizzie> Uh-huh.
23:05:51 <Phantom_Hoover> <oerjan> erm i thought sindarin was related to welsh
23:06:22 <Phantom_Hoover> I was always suspicious of the whole elf/nature thing.
23:06:58 -!- hagb4rd2 has joined.
23:10:19 -!- hagb4rd has quit (Ping timeout: 248 seconds).
23:16:00 <oerjan> wikipedia agrees, anyway
23:19:06 <fizzie> "But then he discovered Finnish, and was filled with joy. Tolkien wrote, many years later: 'It was like discovering a complete wine-cellar filled with bottles of an amazing wine of a kind and flavour never tasted before. It quite intoxicated me.'"
23:19:10 <fizzie> Weird guy, Tolkien.
23:19:31 <fizzie> I speak Finnish almost every day and never get intoxicated.
23:19:38 <fizzie> At least not because of that.
23:20:21 <fizzie> It would, in fact, be rather difficult if. "Sorry, can't speak, need to be sober to drive home later."
23:20:29 <Phantom_Hoover> He's like a Finland weeaboo.
23:25:51 -!- azaq23 has joined.
23:35:06 * Phantom_Hoover → sleep
23:35:08 -!- Phantom_Hoover has quit (Quit: Leaving).
23:36:42 -!- augur has joined.
23:41:05 -!- ais523 has quit (Remote host closed the connection).
23:45:01 -!- calamari_ has joined.
23:46:22 -!- nooga has quit (Ping timeout: 256 seconds).
23:46:48 -!- calamari has quit (Quit: Bye).
23:47:11 -!- calamari_ has changed nick to calamari.
23:51:33 <Vorpal> <fizzie> It would, in fact, be rather difficult if. "Sorry, can't speak, need to be sober to drive home later." <-- written down on a paper I presume?
23:51:59 <Vorpal> (because you would only get drunk while writing it presumably)
23:52:28 <fizzie> Well, I don't know if writing would help. Maybe just speaking in English only.
23:52:53 <Vorpal> fizzie, but you would write it down once and then reuse the card that said that
23:53:41 <fizzie> Oh, of course. How practical.
23:55:57 <Vorpal> fizzie, well apart from that the ailment is not very practical to begin with
23:56:02 <Vorpal> well,*
23:56:27 <Vorpal> (why do I *always* miss the comma after a line starting with "well,"?)
23:57:31 -!- DH____ has joined.
←2011-09-23 2011-09-24 2011-09-25→ ↑2011 ↑all