00:01:54 <elliott> well yes but I'm saying no pure
00:03:03 <oerjan> <elliott> so the question is, what can you implement (<$>) for but not (<*>)?
00:03:34 <oerjan> i think Map k has a perfectly fine <*>
00:04:01 <itidus21> A block of granite is flexible in that it can be carved in a myriad of ways. Using carving tools it can become a sculpture of anything. This is a non-reversible operation. One is forced to choose between the virginity of the granite block, or the actualization of a sculpture.
00:05:03 <monqy> I'm guessing Set doesn't count, since you don't exactly have <$> for it either
00:05:08 <Gregor> itidus21: FUCK THE STONE
00:05:10 <itidus21> I guess another thing you can do is divide the block up into different rearrangeable sections.
00:05:33 <monqy> for similar reasons as to why you wouldn;t have <*>
00:05:43 <oerjan> a stone raped Gregor when he was little
00:05:51 <itidus21> i have worshipped hte stone too much
00:05:59 <Gregor> I was using "fuck" in the classical sense of "fornicate at"
00:06:34 <oerjan> it was all the rage among the classical greek.
00:06:49 <Gregor> oerjan: Fornicating at stuff?
00:06:54 <itidus21> sorry guys.. thats my hijacking the conversation. but you probably all needed a small break.
00:07:06 <oerjan> Gregor: why else do you think they made all those nude statues.
00:07:34 <monqy> uughhhh all these applicative laws involve pure
00:08:22 <elliott> monqy: I guess that's a problem
00:08:41 <CakeProphet> http://en.wikipedia.org/wiki/History_of_erotic_depictions
00:08:45 <oerjan> monqy: you might be able to use <$> instead some places?
00:08:57 <elliott> oerjan: why would this be taking up eighty percent of my time in a profiling:
00:08:57 <elliott> printDump :: ByteString -> IO ()
00:08:57 <elliott> case SE.runGetState (SE.get :: Get ClientPacket) dump 0 of
00:08:59 <elliott> Left err -> hPutStr stderr err >> exitFailure
00:09:01 <elliott> Right (p, dump') -> print p >> printDump dump'
00:09:09 <itidus21> im a _pseudo_-chinese philosopher
00:09:16 <elliott> not the runGetState itself
00:09:52 <oerjan> famous chinese philosopher Su Do
00:10:09 <monqy> (.) <$> u <*> v = u <*> (v <*> w)
00:10:19 <oerjan> which somehow gets corrupted into Itidus in latin.
00:10:22 <elliott> oerjan: whyyyyyyyyyyyyyyyyyyyyyy
00:10:48 <monqy> maybe I can squeeze some more laws out of this if I stare hard enough
00:11:09 <monqy> maybe it doesn't need any more laws
00:11:37 <monqy> (.) <$> u <*> v <*> w = u <*> (v <*> w)
00:12:26 <oerjan> elliott: this doesn't look like my area of expertise
00:13:03 <monqy> trying to squeeze another law:
00:13:05 <Jafet> elliott: so spend eighty percent of your time optimizing it
00:13:24 <CakeProphet> `addquote <oerjan> famous chinese philosopher Su Do
00:13:26 <HackEgo> 671) <oerjan> famous chinese philosopher Su Do
00:13:50 <CakeProphet> elliott: you are an evil archival dictator
00:13:58 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C; main = print (unsafeCoerce (2 :: Int) :: Test)
00:14:24 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (2 :: Int) :: Test)
00:14:35 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (0 :: Int) :: Test)
00:14:36 <CakeProphet> oerjan: ban elliott for gross lack of quoting you
00:14:41 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (99 :: Int) :: Test)
00:14:49 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (999 :: Int) :: Test)
00:14:55 <monqy> im bad at law squezeing :(
00:14:59 <itidus21> i spent a lot of time scouring walk-in-bookstores for chinese philosophy books.. in hindsihgt i kinda wish i had amazon access instead
00:15:03 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (B :: Test) :: Int)
00:15:05 <oerjan> monqy: basically i think you can reshape everything into f <$> x1 <*> x2 <*> ... <*> xn form
00:15:16 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (C :: Test) :: Int)
00:15:31 <monqy> oerjan: what's everything
00:15:31 <elliott> > gcd 4828174336 35757122814038016
00:15:38 <elliott> > map (div 2048) [4828174336, 35757122814038016]
00:15:45 <elliott> > map (`div` 2048) [4828174336, 35757122814038016]
00:15:47 <itidus21> philosophy texts don't show up as pirated ebooks often enouhg
00:16:05 <oerjan> monqy: any applicative expression using <$> and <*>.
00:16:15 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (A :: Test) :: Int)
00:16:31 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((99*2048) :: Test) :: Int)
00:16:42 <oerjan> monqy: flattening it, so to speak
00:16:44 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((99*2048) :: Int) :: Test)
00:16:54 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((999*2048) :: Int) :: Test)
00:16:58 <itidus21> 4828174336 = 0001 0001 1111 1100 1000 0001 1000 0000 0000
00:17:00 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((9999*2048) :: Int) :: Test)
00:17:07 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((99999*2048) :: Int) :: Test)
00:17:17 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((999999*2048) :: Int) :: Test)
00:17:47 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((2^9) :: Int) :: Test)
00:17:48 <CakeProphet> I guess GHC just assigns some weird integer value for enum-like constructors?
00:17:56 <Jafet> http://uncyclopedia.org/wiki/AAAAAAAAA!
00:17:56 <elliott> CakeProphet: i suspect they /are/ pointers, but tagged
00:17:57 <elliott> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((2^(9+9)) :: Int) :: Test)
00:18:13 <elliott> Jafet: hi how do i coerce a small integer to a data type thnx
00:18:40 <oerjan> elliott: didn't someone say this stuff only worked with data types of at most 4 constructors, which Int obviously isn't
00:18:52 <Jafet> !haskell data Test = A | B | C deriving (Show, Enum); main = mapM_ (print.toEnum) [0..2]
00:19:16 <elliott> oerjan: well that's why I'm doing arithmetic
00:19:18 <Jafet> Int has one constructor, namely I#
00:19:20 <elliott> Jafet: NOT EFFICIENT ENOUGH
00:19:56 <CakeProphet> elliott: I bet a GADT can be used to solve this issue.
00:19:57 <Jafet> !haskell data Test = A | B | C deriving (Show, Enum); main = mapM_ (putStr.show.(toEnum::Int->Test)) [0..2]
00:20:18 <elliott> Jafet: NOT EFFICIETNT ENOUGHGH
00:20:38 <Jafet> MOAR NITROGLYCERIN
00:21:41 <elliott> CakeProphet: Network protocol.
00:22:19 <CakeProphet> convert them into strings of integers. best plan.
00:22:45 <elliott> I don't think you know what I'm talking about.
00:22:50 <oerjan> CakeProphet: sounds like the reflection package
00:23:15 <CakeProphet> elliott: I'm going entirely off of "network protocol" as the explanation for what you're doing.
00:23:27 <oerjan> CakeProphet: also when quoting me, you might want to include enough context to make it actually funny
00:23:39 <elliott> oerjan: what sounds like that?
00:23:44 <elliott> CakeProphet: No, you know the exact function I was trying to write.
00:23:52 <oerjan> elliott: <CakeProphet> convert them into strings of integers. best plan.
00:24:15 <CakeProphet> Ancient Roman oil lamp (circa 1st Century AD) depicting woman having sexual intercourse with two men simultaneously
00:25:19 <Jafet> They didn't have man pages.
00:26:57 <CakeProphet> oerjan: I'm too lazy to do that. also I had just joined in and thus didn't have any context and still found it funny.
00:27:33 <oerjan> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (A :: Test) :: Either Int ())
00:28:20 <oerjan> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (Left (A :: Test)) :: Int)
00:29:11 <CakeProphet> data Test p = Test Int deriving blah blah blah
00:29:48 <oerjan> !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (Right (A :: Test)) :: Int)
00:30:41 <oerjan> it would appear there's no compatible structure to exploit...
00:31:28 <oerjan> given Int = I# Int# , an unboxed field, that may not be too surprising
00:32:14 <monqy> http://esoteric.voxelperfect.net/wiki/User:OArnoldoWhiteheada
00:32:23 <CakeProphet> I'm assuming the idea is to efficiently convert zero-argument type constructors to integers...
00:32:35 <CakeProphet> so why not just represent them as integers and name each one via functions?
00:32:52 <oerjan> CakeProphet: no pattern matching for one thing...
00:33:34 <CakeProphet> well you can pattern match them just not in a fun way.
00:34:54 <CakeProphet> but yeah you probably just want to use toEnum and be happy.
00:35:53 <CakeProphet> elliott and I were talking about pattern synonyms a few days ago.
00:36:21 <monqy> http://personal.cis.strath.ac.uk/~conor/pub/she/patsy.html these ones or pattern synonyms in general
00:36:25 <CakeProphet> and now we have an example of where they would be useful.
00:36:30 <elliott> i was telling you they were great and you were being lame
00:37:31 <CakeProphet> elliott: also you should definitely logread the 4 or 6 hours of last night where I basically hijack the channel for the purposes of portal chess.
00:40:13 <CakeProphet> so then it is clearly a perfect game, yes?
00:40:28 <CakeProphet> otherwise you would have something to say. :)
00:41:02 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
00:41:56 <oerjan> it's not a hole, it's a portal!
00:44:20 <CakeProphet> ...surely elliott is not passing up this great opportunity.
00:46:00 <oerjan> monqy: (.) <$> u <*> v <*> w = u <*> (v <*> w) + some variations with <$> on the right side should suffice to flatten everything
00:47:19 <elliott> I wonder if I shouldn't use String for strings guaranteed to be 120 characters or less.
00:47:57 <oerjan> u <$> (v <*> w) = (u .) <$> v <*> w
00:48:05 <elliott> Though I guess it's no big deal.
00:48:34 <oerjan> u <$> (v <$> w) = (u . v) <$> w (Functor law)
00:49:16 <CakeProphet> oerjan: where are these laws documented I never see them.
00:50:00 <oerjan> CakeProphet: these ones i'm just reconstructing, but the ones with pure in them i think i've seen...
00:50:39 <oerjan> u <*> (v <$> w) = (. v) <$> u <*> w
00:50:49 <oerjan> monqy: i think those four are all needed
00:52:08 <CakeProphet> so it stores the link as an Integer I'd hope?
00:52:38 <CakeProphet> otherwise there's a fixed maximum array size.
00:52:57 <oerjan> CakeProphet: well i think it's Int, really.
00:53:08 <oerjan> they're supposed to fit in memory.
00:53:45 <oerjan> CakeProphet: also that's just underneath. there's an entire Ix class for types that may be used for array indices.
00:54:33 <CakeProphet> it won't be long before we have thousands of terabytes of memory.
00:54:56 <monqy> int may be bigger by then
00:56:42 <elliott> CakeProphet: You're not far off; existing computers have a hundred terabytes of RAM.
00:56:50 <elliott> I can't find RAM information for Jaguar or Fujitsu K.
00:56:59 <elliott> But Roadrunner has 103.6 Tio of RAM.
00:57:10 <oerjan> http://www.haskell.org/ghc/docs/latest/html/libraries/haskell98-2.0.0.0/Ix.html
00:57:15 <elliott> Admittedly it's not all on the one motherboard.
00:57:31 <elliott> And accessing RAM at the opposite end of the complex is probably _not_ as fast as you expect RAM to be.
00:57:58 <oerjan> CakeProphet: http://www.haskell.org/ghc/docs/latest/html/libraries/base-4.4.0.0/Control-Applicative.html lists the laws
00:58:06 <elliott> CakeProphet: Well, not really.
00:58:14 <elliott> The request and response have to go over Infiniband.
00:58:30 <elliott> It's faster than Ethernet, but...
00:58:43 <elliott> It might even be faster than reading from disk; Inifiniband is pretty good.
00:58:45 <monqy> i misread as infinibad
00:58:50 <CakeProphet> is the speed of light not good enough for you?
00:58:50 <elliott> But it'll be orders of magnitude off local RAM.
00:58:55 <Jafet> The same thing already happens on a single motherboard
00:59:02 <elliott> CakeProphet: Light is pretty slow.
00:59:08 <elliott> Jafet: That's a rather lower distance.
00:59:10 <Jafet> See the multi-socket Xeon or Opteron boards
00:59:19 <elliott> Wikipedia says Roadrunner's complex is 6,000 sq ft.
00:59:30 <CakeProphet> elliott: you have high expectations for "fast" :P
00:59:32 <elliott> I'd like to see a motherboard _that_ big.
00:59:39 <elliott> CakeProphet: So do computers.
01:00:00 <Jafet> Latency isn't really that important for memory.
01:00:10 <Jafet> It just means you have to pipeline moar.
01:00:20 <Jafet> And not share cache lines.
01:00:56 <CakeProphet> also what do you mean faster than reading from disk? isn't that slow?
01:01:03 <CakeProphet> oh you're saying accessing memory from across the complex
01:01:39 <Jafet> It might be nearly as fast if every node had a flash disk
01:03:17 <CakeProphet> I don't think Adobe flash is a good persistent storage device. :3
01:03:54 <elliott> Jafet: You mean completely in place of RAM?
01:03:58 <elliott> Not over SATA, that's for sure.
01:04:11 <oerjan> shiver me timbers, it's that day again
01:04:38 <Jafet> Also, 100T of flash isn't cheap neither
01:05:12 <CakeProphet> oerjan: well, not in these waters it ain't. But soon!
01:06:07 <monqy> CakeProphet: please refrain as well
01:06:07 <oerjan> elliott: arrright! errr, i mean...
01:06:11 <CakeProphet> they could just replace everything with registers.
01:06:31 <elliott> Well, compilers tend to already assume machines have infinite registers.
01:06:43 <elliott> (They just pretend they have infinite registers, then do register allocation and spill over to the stack to match these to real registers.)
01:06:46 <elliott> Well, a finite but arbitrary amount.
01:07:32 <CakeProphet> itidus21: also, registers are fast because they are pretty much part of the CPU.
01:07:59 <CakeProphet> and so don't have to travel, or deal with other physical nuisances.
01:08:40 <itidus21> if you queue up a stream of data is it fast?
01:09:03 <itidus21> i guess you can't just "queue up a stream of data"
01:09:08 <itidus21> my head has the wrong conception
01:09:13 <CakeProphet> "queue up a stream of data" is abstract-speak. latency is considered with physical implementation.
01:11:05 <itidus21> perhaps quantum computers are fast
01:14:33 <CakeProphet> monqy: ya can't tell me when to avast ya scurvy rat-nosed scalawag.
01:15:13 -!- Jafet1 has joined.
01:15:49 -!- Jafet has quit (Ping timeout: 260 seconds).
01:16:17 <elliott> If this system is equivalent to 25000 PS3, then where is the cost justification? 25000 PS3s = $10 million (at $400/PS3), while this machine cost a 100 million... that's 1000% more expensive... Which gives two possible explainations: 25000 PS3 estimate is wrong, or people who made this machine are idiots 99.240.71.232 (talk) 01:00, 17 September 2008 (UTC)
01:16:32 <elliott> Behold the intelligence of Wikipedia talk page commentors.
01:17:07 -!- Jafet1 has changed nick to Jafet.
01:17:52 <Jafet> But can it run Crysis.
01:18:22 -!- copumpkin has joined.
01:20:14 <itidus21> if thats the case im guessing ps3 cost reduction is from selling a lot
01:20:19 <CakeProphet> can it run the entire generated world of dwarf fortress all at once? (is that even a thing you can do with DF?)
01:21:29 <itidus21> 51.8 million ps3's have been sold
01:21:37 <itidus21> that probably helps keep costs down
01:23:57 <oerjan> CakeProphet: well we could only be marginally worse...
01:24:58 <itidus21> "Move along, these are not the gaming rigs you are looking for."
01:26:03 <CakeProphet> oerjan: argh, hold fast and quit ye optimism.
01:26:29 <elliott> http://www.minecraftwiki.net/images/8/8c/Items_slot_number.JPG
01:26:33 <elliott> What an incredibly rational numbering system.
01:26:35 <oerjan> CakeProphet: how is that optimism
01:27:15 <CakeProphet> so... I guess you weren't being sarcastic?
01:27:43 <elliott> CakeProphet: Note how it randomly skips from thirty-five to eighty.
01:27:46 <elliott> Then from eighty-three to a hundred.
01:27:53 <elliott> And then starts going upwards rather than left-downwards.
01:28:07 <CakeProphet> well yes there's that. that's to disinguish different slot locations. I suppose the choose of 80 and 100 are somewhat arbitrary however.
01:28:30 <elliott> Why doesn't it distinguish the immediately-accessible inventory from the rest of it, then?
01:28:36 <elliott> There's no corresponding jump; it just goes from eight to nine.
01:28:51 <itidus21> so what does 80 81 82 83 produce
01:29:30 <itidus21> they need to take out 83 and replace it with Add
01:31:07 <CakeProphet> it's minecraft. not a programming language (well... elliott shhhh).
01:32:01 <CakeProphet> elliott: I do find it odd that 100-103 goes from bottom to top instead of top to bottom like eveything else.
01:33:18 <CakeProphet> I wonder what happens when you try to store something in 36-79
01:35:14 <itidus21> 5*10= 50 + 1 = 51; 5+1=6*10 = 60
01:35:28 <CakeProphet> oerjan: what rules did you use because it could also be 55 or 60.
01:36:18 * itidus21 is just thinking of practical uses
01:36:51 <CakeProphet> oerjan: so basically it's not anything so the rules are ambiguous is what I meant.
01:36:54 <oerjan> CakeProphet: clearly this is a case for gamma calculus.
01:37:09 <monqy> itidus21: what are you doing
01:37:48 <CakeProphet> Some fundamental requirements of workflow enactment are autonomous, distributed, decentralized control that can cope with partial lack of information and can adapt to a dynamically changing environment.
01:38:41 <CakeProphet> The lambda-gamma calculus: A language adequate for defining recursive functions
01:38:54 <CakeProphet> I wonder if this author realizes that the lambda calculus is adequate for defining recursive functions
01:39:32 -!- SgeoN1 has quit (Read error: Connection reset by peer).
01:39:34 <itidus21> crafting of a '5' and 'stick' and 'stick'
01:39:35 <oerjan> CakeProphet: i'm not sure all the google links are relevant. or any. but it should be a chemistry analogue.
01:39:59 <CakeProphet> http://www.gridworkflow.org/snips/gridworkflow/space/Gamma-calculus
01:41:57 <itidus21> well minecraft follows arbitrary rules as far as i know
01:43:05 -!- oerjan has quit (Quit: Good night).
01:43:57 <itidus21> i havent actually got minecraft, but it is a nice quality that crafting is a finite system
01:44:41 <itidus21> crafting table.. taking a number of elements. creating a single element
01:45:06 <CakeProphet> explain how an infinite system would work.
01:45:36 <sebbu> autogenerated & autoexpand
01:45:48 <sebbu> or realtime processing
01:46:28 <itidus21> well suppose that there were infinite possible results of crafting
01:46:44 <sebbu> any element mixed with any other would make a element
01:46:57 <sebbu> eventually you should by able to transmut them in circle
01:47:54 <sebbu> if it create new element
01:48:01 <itidus21> if you allowed the element/object descriptor size to be unbounded
01:48:03 <sebbu> and the transmutation can add AND remove element
01:48:41 <itidus21> i dunno.. what does minecraft terminology call those objects?
01:48:42 <sebbu> (but i doubt it'ld be a good apport to the game)
01:48:47 <itidus21> im not actually a minecraft player
01:49:06 <itidus21> i guess it doesn't need a precise name. object works
01:49:44 -!- Jafet has quit (Ping timeout: 260 seconds).
01:50:16 <itidus21> wiki says, among other definitions, Item is: entry in a list, or one object in a collection of objects
01:50:48 <itidus21> Item (gaming), the objects in a video game collected by the player character to increase the score or progress through the story
01:51:01 <elliott> "The item the player is currently holding. Note that this should be 0 for "no item", unlike -1 used in other packets. A negative value crashes clients."
01:51:02 <sebbu> (this channel is the only one where people are speaking right now among all the channel i'm on)
01:51:06 <elliott> I HATE YOUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
01:51:30 <monqy> notch..................................................
01:51:41 <monqy> speaking of elliottcraft
01:51:44 <HackEgo> 2011-09-19.txt:01:51:03: <elliott> I HATE YOU NOTCH
01:51:52 <HackEgo> 2011-01-07.txt:18:51:39: <Phantom_Hoover> Wait, is Notch actually against *redstone circuits*
01:52:01 <HackEgo> 2010-12-21.txt:22:34:52: <elliott> Goosey: Because god dammit Notch.
01:52:03 -!- Jafet has joined.
01:52:10 <HackEgo> 2010-11-18.txt:23:16:35: <fizzie> Though based on Notch's tweets, he has it sort-of working and it will be in next patch.
01:54:17 <itidus21> talk page "The article talks about items in RPGs, but then does not link to either an article about them nor go into any depth." -- pissed off wikipedian
01:55:14 <sebbu> try other wiki, like wikia, or some rpg dev communities :p
01:55:24 <monqy> why is item (video game) even a thing
01:55:54 <monqy> "Item (gaming), the objects in a video game collected by the player character to increase the score or progress through the story"
01:55:59 <monqy> sounds like a thing itidus21 would say
01:56:02 -!- sebbu has quit (Read error: Connection reset by peer).
01:56:14 -!- variable has quit (Quit: I found 1 in /dev/zero).
01:56:24 -!- sebbu has joined.
01:56:24 -!- sebbu has quit (Changing host).
01:56:24 -!- sebbu has joined.
01:56:38 -!- invariable has joined.
01:57:11 -!- invariable has changed nick to variable.
02:00:01 <elliott> elliottcable news: elliottcable has a channel named after himself. I will now land-grab #elliott.
02:01:42 <elliott> shachaf: Accept that invite so I can kick you.
02:02:07 <elliott> Oops, I should have used the message "u mad".
02:02:25 <shachaf> Whoops, you can't kick me.
02:03:07 <shachaf> @@ (@admin + elliott) (@admin - elliott)
02:03:08 <lambdabot> Plugin `compose' failed with: Privledged commands cannot be composed
02:03:27 <elliott> Maybe if it didn't block that, I could get in in the millisecond between the two commands.
02:03:46 <elliott> IM GOING TO RIP YOUR SKULL OUT
02:04:01 <elliott> Sorry, Haskell is slow, isn't it? Second.
02:04:01 <shachaf> MOAR LYK MEGASECOND AMIRITE?
02:04:10 <elliott> Oh, that was your joke. :/
02:04:20 <shachaf> elliott: My joke was about *something* being slow.
02:04:26 <CakeProphet> I thought he was confused about why it would take an entire millisecond...
02:04:47 <elliott> That... is the slowest face.
02:05:44 <elliott> "Damage" field This field is also used to store item metadata. E.g. you mined birch wood(its id is the same as normal wood) so you must set damage to the metadata of birch wood(2). The same case is wool. Id is the same but data is different.For example: you mined blue wool so your damage field should send value 0xB.
02:07:01 <elliott> What, I am below the dons.
02:07:24 <lambdabot> http://code.haskell.org/lambdabot/COMMANDS
02:07:35 <lambdabot> uptime: 5d 10h 33m 21s, longest uptime: 1m 10d 23h 44m 29s
02:07:40 <lambdabot> ##freebsd ##logic ##proggit ##villagegreen #agda #arch-haskell #darcs #dtp2010 #esoteric #fedora-haskell #friendly-coders #functionaljava #gentoo-haskell #gentoo-uy #ghc #gp2010 #happs #haskell #
02:07:41 <lambdabot> haskell-blah #haskell-books #haskell-fr #haskell-freebsd #haskell-in-depth #haskell-overflow #haskell.au #haskell.cz #haskell.de #haskell.dut #haskell.fr #haskell.hr #haskell.se #hscraft-srv #
02:07:41 <lambdabot> learnanycomputerlanguage #lesswrong #macosx #macosxdev #rosettacode #scala #scalaz #scannedinavian #teamunix #unicycling #uscs2010 #xmonad #yi weird#
02:08:21 <monqy> #learnanycomputerlanguage what
02:08:40 <elliott> shachaf: It's a channel where all the people inside have their guts spewed out directly into the user list.
02:11:58 <CakeProphet> it appears to be some sort of elitist IRC club.
02:13:02 <elliott> I can't tell whether CakeProphet is making a joke wrt Less Wrongers' holier-than-thouness or is just dim.
02:13:13 <elliott> Actually I can never understand whether CakeProphet is joking or just dim.
02:13:27 <CakeProphet> ...my humor often relies on playing stupid.
02:13:38 <shachaf> DIM CakeProphet AS INTEGER
02:14:13 <elliott> CakeProphet: That's hard to pull off when you're stupid.
02:14:27 <elliott> (My humour often relies on being an asshole without any emoticons.)
02:15:04 <Gregor> I'm probably about to be kicked.
02:15:23 <Gregor> WHY WOULD THAT LIST EVERY CHANNEL
02:15:25 <Gregor> WHYYYYYYYYYYYYYYYYYYYY
02:15:29 <CakeProphet> elliott: are you perhaps suggesting that I am too stupid to pull off playing stupid?
02:16:20 <monqy> are you playing dumb now too
02:16:26 <Gregor> Hey ... I'm still alive.
02:17:22 <elliott> Gregor: I /list occasionally for the hell of it
02:17:33 <CakeProphet> I'm even in his channel about elliottcable
02:17:35 <elliott> It's perfectly fine, freenode is not gigantic and the internet is fast :P
02:17:48 <elliott> Many clients expose a fancy GUI /list, even
02:18:06 <elliott> See Server → List of Channels... in X-Chat
02:18:43 <tswett> elliott: say. What was that one VM or programming language project where the idea is to expose everything about everything to the program?
02:18:54 <tswett> Like Smalltalk, except you can access those things Smalltalk doesn't let you access?
02:19:42 <elliott> tswett: Do you mean VPRI's cola work?
02:19:53 <tswett> elliott: yes, that sounds right.
02:19:58 <elliott> http://piumarta.com/software/cola/
02:20:21 <elliott> The VPRI is where Alan Kay's at these days, FWIW.
02:20:29 <tswett> Yes, yes. Everything is late-bound. That's it.
02:20:48 <tswett> You're the man now, dog. Thank you.
02:21:15 <tswett> Come to think of it, I've praised you a little too effusively. I'm not *that* pleased. If you'll permit me to compensate slightly...
02:21:26 <tswett> There. Perfect. Carry on.
02:22:11 <CakeProphet> elliott is a pretty cool guy. eh links websites and doesn't afraid of anything.
02:22:14 <elliott> `addquote <tswett> Come to think of it, I've praised you a little too effusively. I'm not *that* pleased. If you'll permit me to compensate slightly... <tswett> elliott: fuck you. <tswett> There. Perfect. Carry on.
02:22:16 <HackEgo> 671) <tswett> Come to think of it, I've praised you a little too effusively. I'm not *that* pleased. If you'll permit me to compensate slightly... <tswett> elliott: fuck you. <tswett> There. Perfect. Carry on.
02:22:24 <Gregor> elliott: I thought it would SendQ me to hell :P
02:22:36 <elliott> Gregor: Isn't that SENDING too much :P
02:22:51 <tswett> No, I think SendQ is when you're receiving too much.
02:22:52 <Gregor> elliott: Faaaaaaaaaaaaaair point.
02:22:59 <tswett> I.e. the server is sending you too much.
02:23:00 <elliott> CakeProphet: I omitted nothing.
02:23:01 <Gregor> elliott: "Kicked for flooding" is sending too much
02:23:05 <Gregor> SendQ is the server's send queue
02:23:26 <tswett> You're both wrong. About *everything*.
02:23:42 -!- kmc has quit (Quit: Leaving).
02:24:21 <tswett> A quinquagintillion is a queuein queueuagintillion, I suppose.
02:24:23 <HackEgo> 2005-09-30.txt:18:01:28: <Keymaker> but the main thing is ready
02:24:46 <HackEgo> 2010-02-12.txt:20:43:01: <alise> Oh, hi, scarf.
02:25:41 <HackEgo> 2007-08-15.txt:23:17:35: <jix> so people think it's a real person... at least for some time
02:25:57 <tswett> Well... a piece of him is.
02:26:15 <HackEgo> 2010-10-05.txt:16:13:52: <alise> ais523: changing "< end" to "<= end-1" fixed it.
02:26:34 <HackEgo> 2011-01-08.txt:18:57:40: <elliott> |^(0) => #2 <= {(0,0): inc(#0); (0,1): inc(inc(#1))}
02:26:44 <tswett> Actually, I don't know anything about this shuf person. Who is he?
02:27:16 <CakeProphet> Gregor's slave. his memory is exhausted so he's not really sure who he is.
02:27:40 <elliott> `log 2010-10-05.txt:16:13:52:
02:27:43 <HackEgo> 2011-09-19.txt:02:27:40: <elliott> `log 2010-10-05.txt:16:13:52:
02:27:46 <elliott> `logurl 2010-10-05.txt:16:13:52:
02:27:48 <HackEgo> http://codu.org/logs/log/_esoteric/2010-10-05
02:28:06 <tswett> Now, I wonder, why the 'L' is an integer represented by a pointer whose *lowest* bit is 1, in Smalltalk?
02:28:33 <elliott> Systems only allocate even pointers, usually.
02:28:45 <tswett> If you do that, then integer-pointers have to be converted before they can be treated as integers.
02:28:52 <elliott> So having the pointer tag be 0 avoids de-masking a pointer before dereferencing it.
02:29:02 <elliott> That's better than pointer-pointers needing conversion.
02:29:06 <elliott> This is the standard system.
02:29:58 <tswett> Yeah, the worst integers are the ones that intege to pointers.
02:31:07 <tswett> (As everyone knows, "to intege" means "to be whole".)
02:31:32 <monqy> speaking of the worst things
02:32:25 <tswett> Yes, PMERSGFM is also definitely one of the worst things.
02:32:40 <monqy> baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad
02:32:54 <CakeProphet> these are all perfectly acceptable acronyms.
02:33:21 <EgoBot> BTSDFSDBCDTHAEUCCIRCMOEBT
02:33:31 <EgoBot> NKUSPBLMBFAFASVKICIVCCUFS
02:33:37 -!- SgeoN1 has joined.
02:33:48 <EgoBot> perl (sending via DCC)
02:34:21 <Lymee> CBCN < Chinese Bakery Cake Network
02:34:44 <CakeProphet> and does not realize that most acronyms are actually not pronouncable or clever in any way.
02:35:01 <monqy> most acronyms suck
02:35:18 <CakeProphet> monqy: then you can admit that this is a faithful acronym generator.
02:35:22 <monqy> scuba? good. laser? good. pmersgfm? bad.
02:36:00 <tswett> Casualty Actuary Society, Bitch.
02:36:29 <tswett> We Calculate Pensions. Go With Casualty Actuary.
02:36:41 -!- Patashu has quit (Ping timeout: 258 seconds).
02:37:20 <monqy> Grant Wacro Complete Annihilation
02:37:56 <tswett> Royal Lagoon Transformation Dance.
02:38:09 <tswett> The most important dance.
02:39:26 <tswett> Transfer Protocol Protocol Protocol.
02:40:46 <monqy> turquoise paper party palace
02:41:16 <tswett> The most important palace.
02:41:59 <Lymee> CCS means one and only one thing to me. >>
02:42:28 <monqy> how can it mean only one thing!!
02:43:06 -!- rottytooth has left.
02:44:16 <monqy> hurriedly, zealous leprachauns make jam always
02:44:21 <tswett> Hey Zappa Lame Michael Jackson Authority.
02:44:29 <tswett> Kill Languising Daemons.
02:44:41 <tswett> It's a cross between languishing and disguising.
02:45:49 <monqy> Please Understand Queen Elizabeth
02:46:09 <tswett> The most important kind of elizabeth.
02:46:22 <tswett> Be Back; Dumping Raccoons
02:47:38 <tswett> Unless Pedro Has Escaped, Smoke Gum.
02:47:53 <tswett> Cancel My Latest Appointment. How plausible.
02:48:08 <tswett> Then again, why would you ever cancel a past appointment?
02:48:24 <tswett> Lost time is never found again. Ben Franklin discovered this.
02:49:38 <CakeProphet> monqy is just never satisfied with anything.
02:50:56 <elliott> This is the most tedious thing ever.
02:52:12 <monqy> Cakeprophet Desires Salvation, Destroys Acronym Generator
02:52:17 <CakeProphet> put some kind of --autogenerated code goes here comment
02:52:27 <CakeProphet> and then write a Perl script to auto-generate code.
02:52:39 <tswett> What does "wacro" stand for, anyway?
02:52:51 <monqy> wreallybad acronym
02:53:27 <CakeProphet> the letters are given weighted probabilities based on frequency as a starting letter of entries in /usr/share/dict/words
02:53:33 <elliott> CakeProphet: I'm already using TH.
02:53:43 <CakeProphet> oh... yes that's probably a better choice.
02:53:54 <monqy> perl to generate th
02:53:54 <CakeProphet> I should learn me some TH for great good sometime.
02:55:40 <CakeProphet> tswett: the first incarnation was called !simpleacro but is now !acro
02:56:17 <EgoBot> haskell let pick a = System.Random.randomRIO (0, length a - 1) >>= return . (a !!) in do {len <- pick [2..10]; putStrLn =<< (Control.Monad.replicateM len $ pick ['A'..'Z'])}
02:56:58 <lambdabot> forall a g. (Random a, RandomGen g) => (a, a) -> g -> (a, g)
02:57:10 <CakeProphet> > randomR ('a', 'z') (mkStdGen 123981294812412415123)
02:57:18 <CakeProphet> ...oh, well that would simplify things greatly.
03:00:46 <CakeProphet> now I wonder if that's an inclusive range.
03:01:08 <elliott> > randomR (0,0) (mkStdGen 0)
03:01:13 <elliott> > randomR (0,1) (mkStdGen 0)
03:01:19 <CakeProphet> otherwise what the hell would randomR (True, False) even mean.
03:02:45 <elliott> You just need an instance Num (... -> ...)
03:02:51 <Lymee> > randomR (False,True) (mkStdGen 0)
03:02:53 <Lymee> > randomR (False,True) (mkStdGen 0)
03:02:57 <Lymee> > randomR (False,True) (mkStdGen 0)
03:03:02 <elliott> Lymee: Haskell is a pure language.
03:03:02 <Lymee> > randomR (False,True) (mkStdGen 1)
03:03:12 <Lymee> elliott, I missed the "0" part
03:03:13 -!- Jafet1 has joined.
03:03:14 <Lymee> > randomR (False,True) (mkStdGen 2)
03:03:19 <Lymee> > randomR (False,True) (mkStdGen 3)
03:03:22 <elliott> Lymee: That wouldn't stop it being pure.
03:03:34 <Lymee> > map (randomR (False,True) . mkStdGen) [1..]
03:03:35 <CakeProphet> Lymee: yeah you'll have to change the seed a lot.
03:03:36 <lambdabot> [(True,80028 40692),(True,120042 40692),(True,160056 40692),(True,200070 40...
03:03:37 <elliott> > map randomR (False,True) . mkStdGen $ [0..99]
03:03:38 <lambdabot> Couldn't match expected type `[(a, a)]'
03:03:43 <elliott> Dammit, Lymee beat me to it.
03:03:47 <elliott> > map (fst . randomR (False,True) . mkStdGen) $ [0..99]
03:03:47 <Lymee> > map (fst . randomR (False,True) . mkStdGen) [1..]
03:03:48 <lambdabot> [True,True,True,True,True,True,True,True,True,True,True,True,True,True,True...
03:03:49 <lambdabot> [True,True,True,True,True,True,True,True,True,True,True,True,True,True,True...
03:04:03 <Lymee> > map (fst . randomR (True, False) . mkStdGen) [1..]
03:04:05 <lambdabot> [True,True,True,True,True,True,True,True,True,True,True,True,True,True,True...
03:04:13 <elliott> That'll be the same as (True,True).
03:04:38 <elliott> @check \i -> let gen = mkStdGen i in randomR (True,True) gen == randomR (True,False) gen
03:04:39 <lambdabot> No instance for (GHC.Classes.Eq System.Random.StdGen)
03:04:45 <elliott> @check \i -> let gen = mkStdGen i in fst (randomR (True,True) gen) == fst (randomR (True,False) gen)
03:05:36 <CakeProphet> !addinterp haskell import System.Random; import Control.Monad; main = (replicateM =<< randomRIO (2, 10)) `ap` (putChar =<< randomRIO ('A', 'Z'))
03:05:37 <EgoBot> There is already an interpreter for haskell!
03:05:45 <EgoBot> Interpreter acro deleted.
03:05:49 <CakeProphet> !addinterp acro haskell import System.Random; import Control.Monad; main = (replicateM =<< randomRIO (2, 10)) `ap` (putChar =<< randomRIO ('A', 'Z'))
03:05:49 <EgoBot> Interpreter acro installed.
03:06:48 <elliott> !haskell import System.Random; import Control.Monad; main = (replicateM =<< randomRIO (2, 10)) `ap` (putChar =<< randomRIO ('A', 'Z'))
03:07:08 <CakeProphet> yes I know I'm looking at the error right now.
03:07:44 <lambdabot> forall a. (Random a) => (a, a) -> IO a
03:07:49 -!- Jafet has quit (Ping timeout: 260 seconds).
03:08:35 <lambdabot> Couldn't match expected type `m a -> Int'
03:08:35 <lambdabot> In the second argument of `(=<<)', namely `randomRIO (2, 10)'
03:09:14 <lambdabot> Couldn't match expected type `(m a -> m [a]) -> Int -> b'
03:09:14 <lambdabot> In the second argument of `(>>=)', namely `randomRIO (2, 10)'
03:09:45 <lambdabot> forall (m :: * -> *) a. (Monad m) => Int -> m a -> m [a]
03:09:56 <lambdabot> forall a (m :: * -> *) b. (Monad m) => (a -> m b) -> m a -> m b
03:12:30 <EgoBot> Interpreter acro deleted.
03:12:33 <CakeProphet> !addinterp acro haskell import System.Random; import Control.Monad; main = (`replicateM` (putChar =<< randomRIO('A','Z'))) =<< randomRIO (2, 10)
03:12:33 <EgoBot> Interpreter acro installed.
03:17:59 <CakeProphet> @undo do {n <- randomRIO (2,10); replicateM n (putChar =<< randomRIO ('A','Z')}
03:18:05 <CakeProphet> @undo do {n <- randomRIO (2,10); replicateM n (putChar =<< randomRIO ('A','Z'))}
03:18:06 <lambdabot> randomRIO (2, 10) >>= \ n -> replicateM n (putChar =<< randomRIO ('A', 'Z'))
03:18:12 <elliott> ?pl randomRIO (2, 10) >>= \ n -> replicateM n (putChar =<< randomRIO ('A', 'Z'))
03:18:12 <lambdabot> flip replicateM (putChar =<< randomRIO ('A', 'Z')) =<< randomRIO (2, 10)
03:18:20 <elliott> ?pl randomRIO (2, 10) >>= \ n -> replicateM n (randomRIO ('A', 'Z') >>= putChar)
03:18:20 <lambdabot> flip replicateM (putChar =<< randomRIO ('A', 'Z')) =<< randomRIO (2, 10)
03:18:53 <monqy> why is ?pl obsessed with =<<
03:19:30 <monqy> because it's in the same order as all the other stuff that is usually in the wrong ordeR??
03:19:41 <CakeProphet> while =<< looks more like a function application
03:22:48 <monqy> it's okay if it's small like that
03:23:03 <monqy> but when writing out a big,, it's really backwards annoying
03:23:12 <CakeProphet> it depends on which side of the expression is big.
03:23:20 <SgeoN1> I'm wondering what distro to put on USB for the time being. I'll be stuck with it for a while.
03:23:28 <CakeProphet> I think it's easier to read when the left-hand side is the smaller expression.
03:23:34 <elliott> monqy: (.) is backwards in the same way
03:23:39 <SgeoN1> I do want to try Ubuntu's new thing.
03:23:50 <monqy> elliott: 20:20:44 < monqy> because it's in the same order as all the other stuff that is usually in the wrong ordeR??
03:23:59 <monqy> i was SECRETLY REFERENCING (.)
03:24:04 <SgeoN1> Would Linux Mint be that bad?
03:24:34 <CakeProphet> SgeoN1: I use what is now called the "classic interface" in Ubuntu 10.10 (aka GNOME)
03:24:37 <monqy> CakeProphet: when you have long chains it's easier to read >>=wise than =<<wise
03:24:53 <elliott> SgeoN1: linux mint is stupid
03:25:01 <CakeProphet> again, depends on which expressions are large.
03:25:04 <monqy> what's the point of linux mint anyway
03:25:21 <monqy> this is what confused me. I couldn't figure out the point.
03:25:23 <elliott> other than "lol we ship slightly more non-free drivers by default except actually ubuntu ships all them anyway"
03:25:24 <SgeoN1> I think I like having just one bar
03:25:33 <elliott> SgeoN1: yeah you can do that with gnome in hmm
03:25:44 <elliott> and xfce comes lik ethat by default
03:25:47 <elliott> soOOOOOoooooooOOOOoooOOOoooOOooooooooo
03:26:38 <CakeProphet> also has good realtime scheduling support.
03:26:53 <CakeProphet> which is kind of silly for a distro that's intended to be used on a CD / USB
03:27:03 <SgeoN1> Can I easily switch between classic and new?
03:27:34 <CakeProphet> it's like "lolololol let's emulate Apple poorly because that's the new trend"
03:27:49 <monqy> I've never tried it? what's so bad about it? I'd probably hate both?
03:28:11 <elliott> in every way but not the ways CakeProphet says
03:28:53 <CakeProphet> it's just... obviously it's not a mature piece of software.
03:29:58 <CakeProphet> though I think Unity is on top of gnome... whatever.
03:30:18 <SgeoN1> Should I use Ubuntu 11.04, is there cool stuff besides the new thing or stick with 10.04 LTS which I don't need to download something
03:31:00 <CakeProphet> oh wait... I'm not using 10.10 I'm using 11.04
03:31:20 <elliott> SgeoN1: I use 10.10. I wouldn't use 10.04, it's rather outdated by now.
03:31:44 <elliott> 11.04 with GNOME is probably fine; I downgraded because I didn't like the change to the default terminal scrollbar colour, and because the pointer seemed to be moving annoyingly faster.
03:31:51 <elliott> Note that I was already incredibly aggravated at that point.
03:32:20 * CakeProphet hasn't much of a difference besides minor cosmetic changes to gnome in 11.04
03:33:27 <elliott> The 10.10 packages are pretty out of date. I'll probably move to Debian when I finally send this thing off and get it back.
03:33:41 <elliott> CakeProphet: Yeah, but the terminal scrollbars are black.
03:33:44 <elliott> I don't think any other scrollbar is black.
03:34:23 <elliott> They're useful for jumping, too.
03:34:43 <CakeProphet> I use page up / page down for that... which annoyingly doesn't work in terminal
03:36:36 <CakeProphet> ...uh, rsync does not appear to be paying attention to my exclude file.
03:39:09 -!- azaq23 has quit (Ping timeout: 276 seconds).
03:39:39 <SgeoN1> I assume that I'll notice Unity's badness quickly, or is it more subtle and will grate on me later?
03:39:50 <CakeProphet> elliott: to exclude all subdirectories of a directory do I need to specify dir/*?
03:40:13 -!- sebbu2 has joined.
03:40:13 -!- sebbu2 has quit (Changing host).
03:40:13 -!- sebbu2 has joined.
03:40:45 <elliott> SgeoN1: You have no taste, so who knows.
03:40:57 <elliott> Maybe it will be so new and shiny that you are seduced and you will spend the rest of your life using it.
03:42:30 <CakeProphet> a lot of this crap I don't really want to backup but I'm too lazy to add like 20 exclude entries.
03:42:56 -!- sebbu has quit (Ping timeout: 260 seconds).
03:44:41 <elliott> CakeProphet: dude, just use an existing rsync-based backup solution
03:44:52 <elliott> one that does hardlink snapshotting for you
03:45:04 <elliott> I hear good things about rdiff-backup: http://www.nongnu.org/rdiff-backup/
03:46:38 <Gregor> "rsync-based backup solution"???
03:46:39 <CakeProphet> I pretty much already have this set up though...
03:46:43 <Gregor> rsync already is a backup solution.
03:47:14 <elliott> It doesn't do snapshotting, for one.
03:47:48 <Gregor> elliott: My backup of Codu is rsync -> git.
03:47:54 <SgeoN1> MonoDevelop doesn't support C# 4.0 ? Bleh
03:48:13 <Gregor> elliott: Because neither hg nor git can store themselves in themselves, and I never use git :P
03:48:25 <elliott> Why can hg not store itself inside itself
03:48:34 <Gregor> I honestly have no friggin' clue.
03:48:36 <elliott> And why are you under the impression that git is a decent deduplicative storage system
03:48:56 <Gregor> Both of them just arbitrarily say "lol no" if you try to store their dot directory.
03:49:07 <CakeProphet> elliott: it's not necessary and I already have rsync set up.
03:49:26 <Gregor> elliott: Mainly because I've been doing this for over a year and it hasn't gone crazy.
03:49:33 <elliott> CakeProphet: Let me know when you run out of disk space and/or lose an important backup because you delete them way too frequently
03:49:44 <elliott> Gregor: That doesn't mean it isn't using a billion times more disk than necessary :P
03:49:55 <elliott> (Billion may be exaggerated, but c'mon, git is based around storing entire trees.)
03:50:05 <elliott> Do you at least git-gc it?
03:50:42 <CakeProphet> I don't have my external plugged in most of the time so the cron script rarely runs.
03:50:42 <elliott> Fair enough then, though it's still awful. :
03:51:22 <CakeProphet> and I'm not going to run out of disk space because I only keep one backup.
03:51:42 <CakeProphet> though with my external I could easily keep about 3 or 4 rotating backups.
03:52:15 <CakeProphet> more if I used diffs... which is probably what rdiff-backup does.
03:52:53 <elliott> Do you actually know what snapshotting is?
03:53:18 <elliott> I mean, yes, it does diffs, but you can get snapshotting just with hardlinks.
03:53:34 <CakeProphet> yes it copies a read-only version of the directory..
03:54:06 <CakeProphet> it takes a "snapshot" of the directory before it copies it, to prevent writes from fucking up the transfer.
03:54:26 <Gregor> elliott: At present, my .git directory is a bit over 2x the size of my current snapshot, and it's been doing nightly snapshots for 2 years 5 months. I think it's doin' just fine :P
03:54:30 <elliott> CakeProphet: Yes, but you expect a snapshot-based backup system to not re-backup unchanged files.
03:54:39 <elliott> i.e. almost every file on your system.
03:54:42 <elliott> i.e. backups are much smaller.
03:55:42 <CakeProphet> I just ran a backup that took about a minute.
03:55:52 <elliott> Yes, but you're overwriting your previous backup.
03:55:57 <elliott> So it's not a snapshot at all.
03:57:01 -!- Jafet1 has quit (Quit: Leaving.).
03:57:03 <CakeProphet> okay if I ever have a huge system with lots of important data that is frequently deleted then I will use rdiff-backup, okay?
04:04:04 <SgeoN1> Ugh, arty, not enough space. Going to put TinyCore onto USB then deal with things from there
04:06:12 <SgeoN1> Was warty or something
04:07:47 <SgeoN1> Would it really be a bad idea to use TinyCore as a primary OS?
04:08:02 <elliott> I nominate Gregor to babysit SgeoN1, I'm busy.
04:08:47 <SgeoN1> I forgot why I hated puppy
04:11:40 <CakeProphet> SgeoN1: whenever you finish all of thatI recommend nautilus-open-terminal
04:14:50 <SgeoN1> NO UNETBOOTIN I DO NOT WANT MICROCORE
04:16:20 <elliott> monqy: id really needs renaming :'(
04:16:29 <elliott> SgeoN1: i think unetbootin's copy of tiny core is ancient, give it the iso
04:17:09 <elliott> monqy: mconfcointliscts :(
04:17:34 <SgeoN1> I don't remember the differences between tcblah
04:21:06 -!- MDude has changed nick to MSleep.
04:21:26 <SgeoN1> I chose tca. Command line thing for that mentions MultiCore
04:23:28 <SgeoN1> I'm going to do what I should have done before
04:23:38 <SgeoN1> Wait, that may or may not work
04:24:09 <SgeoN1> Can I have unetbootin's target ISO stored on the USB drive?
04:25:25 <elliott> It copies the ISO's contents to the drive.
04:25:55 <SgeoN1> OK, tinycore's working
04:27:05 <elliott> wow, 2-3 finger trees were only invented in 2006?
04:31:13 -!- sebbu3 has joined.
04:31:13 -!- sebbu3 has quit (Changing host).
04:31:13 -!- sebbu3 has joined.
04:34:14 -!- sebbu2 has quit (Ping timeout: 260 seconds).
04:41:01 <CakeProphet> elliott: if I made some sort of portal chess program would you play it?
04:45:12 <CakeProphet> I have no idea how to write an AI for it though so it would have to be multiplayer for sure.
04:50:23 -!- zzo38 has joined.
04:51:00 <zzo38> You can define a monad treating unit and join and fmap as basic, or return and (>>=) as basic, but can you define a moand treating (return .) and (<=<) as basic?
04:51:30 -!- augur has quit (Remote host closed the connection).
04:53:46 <lambdabot> forall a (m :: * -> *) (f :: * -> *). (Monad m, Functor f) => f a -> f (m a)
04:53:54 <lambdabot> forall b (m :: * -> *) a. (Monad m) => (a -> b) -> a -> m b
04:54:11 <elliott> because that doesn't give you return
04:55:04 <zzo38> I don't think that is the type of fmap
04:55:43 <zzo38> fmap is (a -> b) -> f a -> f b
04:56:02 <zzo38> (return .) is you remove the first f
04:57:02 <SgeoN1> Going to download Ubuntu to USB and use Unetbootin on that. I think it unpacked stuff to temporary, so...
04:57:10 <CakeProphet> elliott: also do you know of any libraries that would be useful for a web-based chess-like game?
04:57:18 <CakeProphet> I was probably just going to JS tomfoolery.
04:58:42 <zzo38> Why are you trying to make a web-based chess-like game? You could use other programs too such as local file (or remote file).
04:58:53 <elliott> zzo38: sorry, I was wrong, that isn't fmap, yeah
04:59:09 <CakeProphet> well the idea is to make it accessible to people who might say, not care very much.
04:59:34 <elliott> to go from f -> (f .) = (f .)
04:59:44 <elliott> where g is (f .) in the first one
04:59:58 <CakeProphet> also being web-based makes it simpler to set up online multiplayer such that someone could just create a game with anyone else who were on the site.
05:00:39 <zzo38> CakeProphet: O, I think using MUD service or something like that work better; I believe FICS does something like that (although it does have a Java client too; you could do that, I suppose).
05:01:11 <zzo38> It has a Java client, so if you have Java you do not need a MUD client.
05:01:37 <zzo38> And if you have a MUD client you do not need Java or a web browser program.
05:01:49 <zzo38> You could use Flash if you want, but I suggest using Java.
05:02:12 * CakeProphet is completely new to web interfaces so he'll likely do it the wrong way at first.
05:03:03 <zzo38> That is why it should be done as a MUD service. And then write the Java or whatever on top of that (you can easily have webpages that automatically run the Java program properly)
05:03:59 <CakeProphet> you mean like... barebones telnet right? am I interpreting MUD correctly?
05:04:29 <zzo38> CakeProphet: FICS is linemode, so if you have a linemode telnet client that will work.
05:04:59 <zzo38> (You could support charmode as well if you wanted to, I suppose)
05:05:14 <elliott> OK, this trackpad is almost broken.
05:05:27 <elliott> This laptop: I am sick of it.
05:05:42 <zzo38> Then fix it or get a new one.
05:06:01 <CakeProphet> zzo38: how do you create games with other people using FICS?
05:06:22 <elliott> zzo38: I am, I've just been busy using it.
05:06:36 <zzo38> CakeProphet: I have not used it in a long time and forget what the command is, but you can use help command to access the help it tell you what it is.
05:07:43 <elliott> Metadata has a massively quirky packing format, the details of which are not quite all understood. However, successful parsing of metadata is possible, according to the following rules.
05:07:43 <elliott> A metadata field is a byte. The top three bits of the byte, when masked off and interpreted as a three-bit number from 0 to 7, indicate the type of the field. The lower five bits are some sort of unknown identifier. The type of the byte indicates the size and type of a payload which follows the initial byte of the field.
05:07:43 <elliott> The metadata format consists of at least one field, followed by either another field or the magic number 0x7F. 0x7F terminates a metadata stream.
05:07:45 <elliott> Thus, the example metadata stream 0x00 0x01 0x7f is decoded as a field of type 0, id 0, with a payload of byte 0x00.
05:07:50 <CakeProphet> also Java could easily be converted to an android app. my portal chess empire will soon kick off.
05:08:09 <elliott> Except that the entire Android API is wildly different from standard Java stuff.
05:08:25 <zzo38> I can understand if you have f = (return .) then you have return = f id but can you convert (<=<) (or (>=>)) to other forms?
05:08:26 * CakeProphet has made Android apps so actually knows this.
05:08:50 <CakeProphet> elliott: with enough boilerplate code anything is possible in Java. :P
05:09:34 <zzo38> CakeProphet: Yes, you could use Android as well; anyone with a keyboard Android device could use MUD client or the other one whichever you prefer, and if you have no keyboard you can just use the Java program.
05:10:18 -!- kmc has joined.
05:10:19 <CakeProphet> the average person would not use a MUD client. also, the average person is important to the success of the CakeProphet Portal Chess Empire(tm).
05:10:32 <zzo38> Using (return .) and (<=<) seem like a category where you have morphism conversion and morphism composition.
05:10:36 <CakeProphet> which will no doubt blossom in a few months.
05:10:38 <zzo38> CakeProphet: That is why you need a Java client!!
05:11:23 <zzo38> You can have menus and whatever to access commands, graphics interface, sound effect, etc. But still make the underlying protocol a MUD service (this is what FICS does too).
05:11:37 <CakeProphet> yes I will need a good explosion sound effect for when portals explode.
05:11:57 <CakeProphet> zzo38: I am understanding what you said. no need to clarify.
05:12:59 <fizzie> elliott: Also known as ENTITY_DATA in protocol.c; it's not *that* hard to skip, but I presume you want to de/serialize it to some Haskell type representation. More fun for you.
05:13:07 <CakeProphet> I like how the FICS website has some woman playing chess on it.
05:13:25 <CakeProphet> probably to persuade socially inept chess nerds that they will find their soulmate through FICS.
05:14:23 <elliott> fizzie: It's... what is even this format?
05:14:40 <elliott> CakeProphet: I'm pretty sure there are, in fact, women who play chess.
05:14:42 <fizzie> CakeProphet: Our CS department website photos tend to do that too.
05:14:53 <elliott> fizzie: What is this. Website.
05:15:06 <zzo38> elliott: You don't know answer to my question?
05:15:22 <elliott> fizzie: Seriously. This is the screwiest format... ever.
05:15:23 <pikhq> CakeProphet: I can confirm that there are, in fact, women who play chess.
05:15:24 <fizzie> elliott: It's just this thing, you know.
05:15:38 <CakeProphet> I am completely unconvinced at the unpossible.
05:15:56 <elliott> Ironic sexism: bringing funny to your IRC since 1990.
05:16:02 <zzo38> Since you already have return from that, can it be converted to a statement in intuitionistic logic by Curry-Howard?
05:16:03 <elliott> fizzie: It's not a thing I like.
05:16:06 <elliott> fizzie: I don't like the thing.
05:16:11 <HackEgo> 2007-08-03.txt:21:51:44: <ehird`> bsmntbombdood, but this is clearly in an alternate universe where the impossible is possible
05:16:21 <zzo38> Actually I don't know if Curry-Howard is sufficient.
05:16:26 <HackEgo> 2011-09-19.txt:05:16:23: <itidus21> `log impossible is
05:16:34 <HackEgo> 2011-09-19.txt:05:16:06: <itidus21> `log impossible is
05:16:49 <HackEgo> 2011-09-15.txt:22:12:10: <itidus21> maybe impossible is a limit
05:16:54 <pikhq> No, it's just as utterly implausible as the move 0-0-0-0-0-0.
05:16:59 <HackEgo> 2011-09-19.txt:05:16:26: <HackEgo> 2011-09-19.txt:05:16:23: <itidus21> `log impossible is
05:17:09 <CakeProphet> elliott: just pretending to be incredulous as usual.
05:17:22 <itidus21> dewuihdeu (\iewjiwejdiwjijdiwdjwidjiewjdiwdi.x) huiehuie dehhu
05:17:23 <zzo38> pikhq: I think someone once played that move, although the modern rules clarify that such move is not permitted.
05:17:38 <elliott> A metadata field is a byte. The top three bits of the byte, when masked off and interpreted as a three-bit number from 0 to 7, indicate the type of the field. The lower five bits are some sort of unknown identifier. The type of the byte indicates the size and type of a payload which follows the initial byte of the field.
05:17:38 <elliott> The metadata format consists of at least one field, followed by either another field or the magic number 0x7F. 0x7F terminates a metadata stream.
05:17:42 <elliott> Thus, the example metadata stream 0x00 0x01 0x7f is decoded as a field of type 0, id 0, with a payload of byte 0x00.
05:17:49 <elliott> fizzie: Can you explain this?
05:17:52 <zzo38> (In fact that move resulted in checkmate; I think it was the only move in that position that resulted immediately in checkmate)
05:17:56 <elliott> I don't get how the payload comes before the type.
05:17:57 <pikhq> zzo38: It was part of a solution to a chess problem, and no longer permitted.
05:17:59 <elliott> fizzie: Is the example just wrong?
05:18:08 <CakeProphet> pikhq: if I create portal chess software will you play it?
05:18:13 <zzo38> pikhq: I know that
05:18:15 <CakeProphet> also if I write rules so that you know how to play it?
05:18:28 <zzo38> CakeProphet: I would like to see the complete rules.
05:18:40 <fizzie> elliott: The example is wrong; the payload is 0x01.
05:19:03 <CakeProphet> zzo38: they'll be a bit tricky to describe technically.
05:19:13 <CakeProphet> the loop breaking rules are somewhat messy.
05:19:25 <elliott> fizzie: I'm... I hate this format.
05:19:29 <elliott> fizzie: Of all the formats: this is the worst.
05:19:40 <fizzie> elliott: Note that it's funnily impossible to have a 'float'-type field in there with the five-bit ID of 0x1f, because that would happen to match the 0x7F.
05:19:41 <CakeProphet> basically the bidirectional loops have a number of variant rules you could adopt.
05:19:52 <elliott> fizzie: The IDs are just ignored by the client, right?
05:20:03 <CakeProphet> because it's ambiguous what happens in that situation when you place a portal in a loop that is travel back and forth instead of in a single direction.
05:20:11 <fizzie> elliott: No clue, since I make no attempts to decode it.
05:20:25 <CakeProphet> so you just have to say "okay this is what happens"
05:20:36 <CakeProphet> and there's so far 4 ways to do that. I picked one for the standard rules.
05:20:51 <fizzie> elliott: http://mc.kev009.com/Protocol#Metadata says the ID is "either an index or bitmask".
05:21:04 <elliott> fizzie: And the strings are encoded in the usual Minecraft way, right?
05:22:12 <zzo38> I don't completely understand the rule but I can think one way might be the way to program it: you figure out what number is needed and hardcode that value. After that many steps, save the current direction and position. Now you recognize infinite loop if you reach that point a second time.
05:22:18 <itidus21> the good thing about minecraft is that since it's not free, you won't get advertising bots
05:22:42 <lambdabot> Ambiguous type variable `a' in the constraint:
05:22:46 <elliott> > 9 `shiftL` 99 :: Integer
05:22:48 <CakeProphet> zzo38: oh the infinite loop itself is not a problem and is part of the rules/strategy.
05:22:48 <elliott> > 9 `shiftR` 99 :: Integer
05:22:49 <fizzie> elliott: http://mc.kev009.com/Mob_Types seems to indicate that wolves come with 3 fields of IDs 16, 17 and 18; it could be it's checked.
05:23:04 <CakeProphet> zzo38: the problem is there are certain ways to break a loop via portal that are ambiguous.
05:23:16 <CakeProphet> specifically if you have, on any file/row/diagonal the following setup
05:23:30 <CakeProphet> where > and < are arrows and the ---- is the projectile path (the loop)
05:23:36 <fizzie> elliott: If I read the protocol.c right, string fields actually are prefixed by the length in bytes (not in UCS-2 elements) in the metadata format.
05:23:41 <CakeProphet> if you place a portal inside the loop. what happens?
05:23:50 <fizzie> But of course protocol.c might easily be wrong.
05:24:01 <CakeProphet> does the portal redirect the projectile? does it get captured? both? or should you flip a coin?
05:24:06 <CakeProphet> these are the 4 rule variations I've come up with.
05:24:19 <elliott> fizzie: It's probably not wrong since mcmap actually works.
05:24:24 <fizzie> "case 4: t = buf_get_jshort(state); if (!buf_skip(state, t)) return 0; break;"
05:24:54 <elliott> What's the mask for five bits again?
05:25:58 <fizzie> elliott: The only non-empty string field is for a tamed wolf; has anyone tried to see a tamed wolf through mcmap yet?
05:26:43 <fizzie> Could be stealthily wrong, then.
05:26:44 <elliott> fizzie: case 4: read string (UCS-2) from stream
05:26:50 <elliott> Nothing _seems_ to stay it's any different from the usual strings.
05:26:53 <elliott> I'd expect that point to come up.
05:30:44 <fizzie> elliott: Could be. Sadly DataOutputStream's writeChars doesn't prefix the length, so there's no "standard" way. (Unlike the writeUTF method, which prefixes a two-byte length in bytes.)
05:31:30 <fizzie> I'm mildly surprised mc UTF-8 strings aren't prefixed by the length in characters; that woud have been so typical.
05:31:31 <monqy> the consonatnt cluster at the beginning though? two plosives? really?
05:31:59 <monqy> unless the first c isn't but that's dumb too
05:32:13 <elliott> fizzie: http://sprunge.us/OiGK
05:32:16 <elliott> fizzie: Behold the ugliest.
05:32:21 <monqy> c is a pretty useless letter
05:32:24 <elliott> Also, MC UTF-8 strings don't exist any more.
05:33:13 <monqy> does it not already have them? shameful
05:34:04 <elliott> As a separate thing to doors.
05:34:11 <elliott> They're called Nether portals.
05:35:04 <fizzie> Some of them moddifications do tele-portals.
05:35:53 <elliott> MC/Protocol.hs:361:7: Not in scope: `PF.byteArray'
05:35:53 <elliott> MC/Protocol.hs:367:7: Not in scope: `PF.multiBlockChangeData'
05:35:53 <elliott> MC/Protocol.hs:391:7: Not in scope: `PF.explosionData'
05:35:53 <elliott> MC/Protocol.hs:427:7: Not in scope: `PF.windowItemData'
05:35:53 <elliott> MC/Protocol.hs:456:7: Not in scope: `PF.mapData'
05:36:03 <elliott> fizzie: Would you be willing to sell alcohol to a minor? I kind of need it.
05:36:22 <elliott> CakeProphet: How can Perl help here?
05:36:34 <fizzie> elliott: NO it's the PRETTY. The only thing it needs is a third mini-format inside. Maybe "type 7" fields could be gzipped XML fragments?
05:36:36 <CakeProphet> elliott: while I assume you need to change something about the exports or rename a bunch of identifiers.
05:37:07 <elliott> CakeProphet: No, I need to implement a shitload of horrible packet field types.
05:37:23 <zzo38> Just select which way the ambiguity on the game is resolved by a variant before the game starts, I suppose. Or, make it the player making the move selects only one rule as they are making a move.
05:37:52 <CakeProphet> zzo38: the first suggestion is basically what I already do
05:38:03 <CakeProphet> I have the standard rule and then optional varints that should be decided upon beforehand
05:38:57 <CakeProphet> elliott: you could just do the packet stuff as a perl script. :D
05:39:09 <elliott> CakeProphet: Shut up, I'm ratty.
05:39:41 <fizzie> elliott: Ooh, map data is also pretty funny if you want to properly decode it.
05:40:08 <CakeProphet> regex is the best way to decode everything.
05:40:29 <fizzie> "If the first byte of the text is 0, the next two bytes are X start and Y start and the rest of the bytes are the colors in that column.
05:40:33 <fizzie> If the first byte of the text is 1, the rest of the bytes are in groups of three: (data, x, y). The lower half of the data is the type (always 0 under vanilla) and the upper half is the direction."
05:40:53 <elliott> fizzie: I'm seriously going to commit suicide.
05:41:03 <elliott> Find me a worser protocol. I dare you.
05:41:35 <elliott> "getLengthPrefixedByteString" -- ah yes, the good names.
05:42:12 <itidus21> they hacked it up years ago much like whats being done for minecraft :D
05:42:22 <itidus21> this led to the creation of many third party clients
05:42:48 <elliott> itidus21: I'm talking about worse as in the technical details of the protocol.
05:42:49 <itidus21> i dont actually know what its like
05:43:00 <itidus21> it might not be that bad... probably got worse with time
05:43:29 <itidus21> ... i failed to find a worse one,.
05:44:15 * itidus21 checks google for relent meaning.
05:44:51 <elliott> MC/Protocol.hs:367:7: Not in scope: `PF.multiBlockChangeData'
05:44:52 <elliott> MC/Protocol.hs:391:7: Not in scope: `PF.explosionData'
05:44:52 <elliott> MC/Protocol.hs:427:7: Not in scope: `PF.windowItemData'
05:44:52 <elliott> MC/Protocol.hs:456:7: Not in scope: `PF.mapData'
05:45:08 <elliott> OK, explosion looks pretty easy.
05:46:22 <elliott> fizzie: So is the explosion data composed of signed or unsigned bytes? :p
05:47:26 <fizzie> I've been assuming all bytes signed, pretty much. Even though some might not be.
05:47:51 <fizzie> windowItemData is not too bad either, if it's that inventory contents thing; there's a count, and then a list of that many of those "one short, followed by a byte+short" item things.
05:47:56 <CakeProphet> itidus21: though it usually connotates something mean that you're giving up. as in relentless which is when it's commonly used.
05:48:15 <fizzie> s/followed/optionally followed/
05:48:52 <itidus21> i withdraw, yield, submit, concede, relent
05:49:11 <elliott> I've been working on this thing like two, three days, it's almost a thousand lines, and still no world of grass. :/
05:49:45 <elliott> CakeProphet: That would not get me closer to the world of grass.
05:49:50 <itidus21> elliott: go swaggering with your posse
05:49:59 <CakeProphet> but it would perhaps prevent you from going insane.
05:50:53 <fizzie> elliott: I don't suppose you considered stealing these from the other Haskell mc projects? Oh, right, of course not; they'd have done it wrong. (Admittedly the one I've seen wasn't that pretty either, and could well be dead now.)
05:52:06 <elliott> fizzie: Consider that the conception of this was "I am totally out of fucks; let's hack up my own cheap thing".
05:52:18 <elliott> Then perhaps it will yield fucks to give.
05:54:29 <fizzie> If you want a "cheap thing", why are you bothering with all the field types you could just keep as opaque blobs?-)
05:54:43 <SgeoN1> Maybe I'll go eat while this thing takes eternity to shrink a 29.98 gb partition to 5.37
05:54:50 <HackEgo> 2009-04-21.txt:23:18:37: <ehird> ais523: the really cheap thing misses the point, since they just pirated it instead.
05:55:31 <HackEgo> 2011-09-19.txt:05:54:47: <itidus21> `log cheap thing
05:55:52 <SgeoN1> Time to make casper-rw
05:55:59 <HackEgo> 2010-12-18.txt:16:42:10: <elliott> oh MINECRAFT okay
05:56:09 <SgeoN1> Anything horribly wrong with ext4?
05:56:13 <HackEgo> 2011-08-28.txt:22:24:41: <Phantom_Hoover> elliott, isn't that basically elliottcraft in a nutshell?
05:56:18 <fizzie> Cheap thing -> https://github.com/mpolney/mcproxy/blob/master/Protocol/SMP.hs
05:56:27 <HackEgo> 2011-08-19.txt:20:00:21: <elliott__> I could have the thing blocking Elliottcraft (the GPipe patch) probably done within a few hours, but it hasn't popped up as something that sounds like fun for a while, so it hasn't been done yet, oops
05:56:51 <elliott> SgeoN1: Because it's the best Linux filesystem.
05:57:02 <elliott> fizzie: For some definition of cheap.
05:57:17 <elliott> fizzie: That doesn't even do client packets, I think.
05:57:31 <fizzie> It's a proxy, it should.
05:57:32 <elliott> Hmm, it does. But only one of them.
05:57:49 <fizzie> Yeah, I was expecting it could be dead.
05:58:07 <fizzie> I took some initial mcmap protocol info from there.
05:58:23 <elliott> Huh, it can do keyboard examples.
05:58:29 <elliott> fizzie: Heh, it predates mcmap?
05:58:31 <SgeoN1> Should I leave a gb free for swap?
05:58:46 <elliott> And did you use JFS, because it is the best.
05:58:53 <elliott> Also ext4 is designed for obsoletion.
05:59:12 <elliott> (It's meant to be the "stopgap" towards btrfs, which is unstable and Oracle-controlled. JFS = good.)
05:59:21 <elliott> fizzie: That certainly doesn't predate mcmap.
05:59:27 <fizzie> elliott: Oh, it was https://gist.github.com/727175 instead.
05:59:29 -!- GreaseMonkey has joined.
05:59:30 -!- GreaseMonkey has quit (Changing host).
05:59:30 -!- GreaseMonkey has joined.
06:00:11 <fizzie> I was blinded by all the "Int32 String Int32 Int32 Int32 Int8 Int8 Int16".
06:00:28 <elliott> There's a reason I decided to auto-generate the parser. :p
06:00:44 <elliott> let blks = zipWith3 (\ (a, b, c) d e -> (a, b, c, d, e) `asTypeOf` (a, a, a, a, a)) pos t md
06:03:39 -!- augur has joined.
06:03:57 <elliott> Maps If the first byte of the text is 0, the next two bytes are X start and Y start and the rest of the bytes are the colors in that column.
06:03:57 <elliott> If the first byte of the text is 1, the rest of the bytes are in groups of three: (data, x, y). The lower half of the data is the type (always 0 under vanilla) and the upper half is the direction.
06:04:14 <CakeProphet> @pl (\ (a, b, c) d e -> (a, b, c, d, e) `asTypeOf` (a, a, a, a, a))
06:04:14 <lambdabot> expecting letter or digit, operator or ")"
06:04:14 <lambdabot> ambiguous use of a non associative operator
06:04:37 <SgeoN1> Is it a bad idea to have a swap partition on a flash drive?
06:05:08 <CakeProphet> swap on a flash drive would be faster than disk writes I believe. (...?)
06:05:21 <zzo38> "Can I have a glass of water?" "Do you want a plate or a fork?"
06:05:33 <SgeoN1> Faster isn't the issue, wear on the drive is
06:06:39 <pikhq> Honestly, swap is basically irrelevant anymore.
06:07:01 <SgeoN1> Even with just 1gb ram w
06:07:10 <elliott> 1gb ram? Allocate two gigs swap.
06:07:21 <elliott> That's an anaemic amount of RAM.
06:07:42 <elliott> Aenaemic. Does that mean what I think it means?
06:07:47 <pikhq> Yeah, at that point GCC might OOM...
06:07:53 <SgeoN1> For some reason I was under the impression that swap should = physical
06:08:50 <elliott> Did you use jfs. It is the best.
06:09:10 <SgeoN1> I can disable swap if I need to right?
06:09:50 <SgeoN1> This flash drive is expensove
06:10:19 <elliott> There's no way you're going to break the SSD.
06:10:20 <SgeoN1> Pikhq, how do I determine
06:10:30 <CakeProphet> SgeoN1: but yes "swapoff -a" will disable swap.
06:10:37 <elliott> Wait, how do you have an expensive SSD on a shitty computer?
06:10:59 <SgeoN1> It's just a thumb drive
06:11:01 <CakeProphet> elliott: he's using a USB port I'd imagine.
06:11:19 <elliott> CakeProphet: He said it was expensive.
06:11:21 <SgeoN1> Costs less than aa brand new computer I'm only going to be using for a month
06:11:21 <CakeProphet> I use one to attach a 1.5 TB hard drive to my laptop.
06:11:31 <pikhq> SgeoN1: Oh. Um. Swap will rape it.
06:11:57 <elliott> CakeProphet: What's the most expensive pen drive though, really?
06:12:47 <SgeoN1> I'm going to leave 2gb unused but no swap partition. I can add one later, right?
06:13:07 <CakeProphet> with 1gb I highly recommend some form of swap.
06:13:18 <pikhq> CakeProphet: Depends on the distro, actually.
06:13:20 <elliott> SgeoN1: Dude, put some swap on the actual hard drive.
06:13:30 <SgeoN1> There is no hard drive.
06:13:38 <elliott> SgeoN1: What the fuck is this machine?
06:13:40 <SgeoN1> See if you can remember why.
06:13:52 <elliott> Have you considered putting a new hard drive in.
06:14:15 <CakeProphet> I'm going on the assumption that Sgeo is poor.
06:14:37 <SgeoN1> Not poor, it's just painful to ask my dad for stuff
06:14:55 <CakeProphet> most adults have more money than they put on...
06:15:15 <CakeProphet> I don't even work full time and buying a 1.5 TB external was almost negligible.
06:16:47 <elliott> SgeoN1: I thought you got your own card finally.
06:16:53 -!- ive has quit (Ping timeout: 260 seconds).
06:17:02 <elliott> CakeProphet: Selection bias.
06:17:07 <SgeoN1> Unknown keyword in configuration file
06:17:14 <elliott> Hey, what's eight plus four. I'm in tedium mode, can't do thinking.
06:19:03 <elliott> CakeProphet: "That's a fancy word so your observation of my fallacy is irrelevant"?
06:19:04 <lambdabot> Prelude zip3 :: [a] -> [b] -> [c] -> [(a, b, c)]
06:19:04 <lambdabot> Data.List zip3 :: [a] -> [b] -> [c] -> [(a, b, c)]
06:19:04 <lambdabot> Prelude unzip3 :: [(a, b, c)] -> ([a], [b], [c])
06:19:16 <CakeProphet> I, in no way, use anecdotal evidence to help myself understand the world.
06:20:11 <lambdabot> forall (m :: * -> *) a. (Monad m) => [m a] -> m [a]
06:20:14 <elliott> Obviously this is what I was criticising.
06:21:58 <CakeProphet> elliott: I just find it silly to treat something like this scientifically. I'm not trying to say you're wrong.
06:22:02 -!- kmc has quit (Quit: Leaving).
06:22:03 <SgeoN1> return kind of reminds me of Just (note: this should not be used to imply I think cps thing is similar)
06:22:35 <elliott> CakeProphet: It is absolutely nothing to do with science, I was attempting to convey in a simple manner that "most adults have more money than they put on..." is so ridiculously reliant on various social factors relating to you that it means almost nothing.
06:22:53 <zzo38> In the Maybe monad, return = Just
06:23:33 <CakeProphet> elliott: I'm sorry but all of those sentences are so reliant on social factors that I'm having trouble understanding them.
06:23:56 <elliott> CakeProphet: Yeah, I don't have time for this.
06:24:34 <zzo38> Apparently to do classical logic in Curry-Howard you use call/cc; how exactly does that work?
06:26:30 <CakeProphet> elliott: in the future I will try not to rely too much on my experience.
06:27:02 <CakeProphet> which is, of course, applicable to every human being on the planet.
06:27:14 <elliott> $ MultiBlockChangeData (zipWith3 makeItem coords types metadata)
06:27:14 <elliott> where -- FIXME: might be Word16
06:27:14 <elliott> unpackCoords :: Int16 -> (Word8,Word8,Word8)
06:27:14 <elliott> unpackCoords sh = (fromIntegral (sh `shiftL` 12), fromIntegral ((sh `shiftL` 8) .&. 0xF), fromIntegral (sh .&. 0xF))
06:27:14 <elliott> makeItem :: (Word8,Word8,Word8) -> Int8 -> Int8 -> MultiBlockChangeItem
06:27:16 <elliott> makeItem (x,y,z) blockType metadata = MultiBlockChangeItem x y z (Block (BlockID blockType) metadata)
06:27:21 <elliott> instance Serialize MultiBlockChangeData where
06:27:25 <elliott> count <- fromIntegral <$> (SE.get :: Get Int16)
06:27:27 <elliott> coords <- replicateM count (unpackCoords <$> SE.get)
06:27:29 <elliott> types <- replicateM count SE.get
06:27:31 <elliott> metadata <- replicateM count SE.get
06:27:34 <elliott> return $ MultiBlockChangeData (zipWith3 makeItem coords types metadata)
06:27:35 <elliott> where -- FIXME: might be Word16
06:27:37 <elliott> unpackCoords :: Int16 -> (Word8,Word8,Word8)
06:27:41 <elliott> unpackCoords sh = (fromIntegral (sh `shiftL` 12), fromIntegral ((sh `shiftL` 8) .&. 0xF), fromIntegral (sh .&. 0xF))
06:27:44 <elliott> makeItem :: (Word8,Word8,Word8) -> Int8 -> Int8 -> MultiBlockChangeItem
06:27:46 <elliott> makeItem (x,y,z) blockType metadata = MultiBlockChangeItem x y z (Block (BlockID blockType) metadata)
06:27:51 <elliott> Sorry, fell asleep at the wheel.
06:28:26 <CakeProphet> are you sure there's not some clever way to reuse a bunch of code for all of this?
06:29:03 <zzo38> If Haskell had better macros you might be able to do so.
06:29:53 <elliott> CakeProphet: All of these data types are pretty much wildly different for no reason, so no.
06:30:11 <itidus21> just occured to me if i ever get really bored i could do war and peace the graphic novel
06:30:13 <elliott> Right, to hell with map data; I'm parsing it into a raw bytestring for now and fixing it later.
06:30:32 <itidus21> i would read it through once.. and then a second time as i developed the graphic novel
06:31:13 <CakeProphet> elliott: wildly? at least it's exciting then.
06:31:22 <elliott> CakeProphet: Not that wildly.
06:31:56 <itidus21> writing entertainment software in haskell is akin to alchemy.
06:32:11 <monqy> itidus21 you don';t even know haskselle
06:32:15 <CakeProphet> so perhaps 5 coals on this hookah was overkill.
06:32:35 <CakeProphet> monqy: you can't argue with itidus21's reason.
06:32:38 <elliott> how do you know it's alchemy, you know almost nothing about haskell
06:33:02 <itidus21> cos knowing shit is too much work.
06:33:35 <CakeProphet> it's like alchemy in that itidus21 doesn't understand either.
06:34:02 <itidus21> in other words, it's much easier for me to say float sqrt(int x) { return 6874.236; }than to write an actual float sqrt(int x);
06:34:12 <elliott> is that a metaphor for what you do on IRC
06:34:41 <itidus21> i used to believe my own lies IRL once
06:34:46 <CakeProphet> it's metonymy for itidus21 is a sqrt function.
06:35:26 <pikhq> itidus21: alchemy :: a -> b
06:35:51 <itidus21> it's as if i am on the precipice of doing actual work, but i am frozen in my tracks
06:36:24 <fungot> CakeProphet: i am aware, commissioner, ladies and gentlemen, the problem of peripherality. technological advance particularly in the world' s largest trading power is to be included. following on from transparency, we are seeing today in most of our countries must co-ordinate their research, development, environmental protection, the regulation which we all seem to be blowing in this chamber who would be affected, and continues
06:37:38 <CakeProphet> I am blowing a lot of regulations right now.
06:37:57 <SgeoN1> Maybe I should be using Lubuntu?
06:38:43 <SgeoN1> This is so ducking slow
06:38:50 <itidus21> my working definition of alchemy is, in striving for the impossible countless wonderful discoveries are made
06:38:56 <CakeProphet> SgeoN1: are you perhaps using a duck typed language?
06:39:43 <itidus21> except that writing entertainment software in haskell isn't impossible so the metaphor breaks at that point
06:39:54 <CakeProphet> what entertainment software are you talking about.
06:40:06 <fungot> CakeProphet: mr president, i have told this house: it is to be deleted from the motion for a resolution that this house will take note of the question to the council.
06:40:19 <fungot> CakeProphet: mr president, commissioner, ladies and gentlemen, you have today before you for the 66 votes. those who sometimes worry that in seeking such guarantees parliament is trying to make a few comments. how can we help to provide an insight into how brussels manages to take over public sectors which are highly dependent on transatlantic travel. other eu airlines also make a success of the programme.
06:40:24 <fungot> Selected style: homestuck (Homestuck pages 1901-4673)
06:40:25 <fungot> CakeProphet: have a look.... :) ham, potatoes, and squash. jade's radioactive, omnipotent, space-warping dog named...
06:40:26 <itidus21> in this, i am suggesting chemistry and traditional chinese medicine to be fruits of various forms of alchemy
06:40:38 <fizzie> CakeProphet: "^europarl homestuck"?
06:40:49 <CakeProphet> fizzie: sometimes my fingers move faster than I think.
06:43:20 <itidus21> i gather haskell is subservient to LC
06:44:16 <itidus21> if i discuss this topic.. there will be agony all around
06:44:44 <lambdabot> System.Environment getArgs :: IO [String]
06:44:54 <CakeProphet> itidus21: that doesn't really mean anything so no.
06:44:56 <itidus21> wiki tells me backus's function-level programming is not the same thing as functional programming languages
06:45:12 <elliott> fizzie: The best europarl.
06:45:50 <itidus21> haskell can be broken down into a set of assembly language instructions
06:45:55 <elliott> -- TODO FIXME: Parse this properly rather than this ridiculously lazy hack
06:45:55 <elliott> data MapData = MapData !ByteString deriving (Eq, Show)
06:45:55 <elliott> instance Serialize MapData where
06:45:55 <elliott> get = MapData <$> getLengthPrefixedByteString
06:45:55 <elliott> put (MapData s) = putLengthPrefixedByteString s
06:45:58 <elliott> fizzie: Behold my map data parser.
06:46:20 <itidus21> human readable layer translated into machine code
06:47:58 <itidus21> therefore, an assembly language programmer could perform the same computations as a haskell programmer.. but he is unlikely to because of the obvious reasons which led to haskell language existing
06:49:06 <itidus21> interpreters still ultimately are machine code
06:49:45 <elliott> SHandshake (LoggedIn "\1536\NUL\NUL\NUL\16384\NUL\EOT\NUL\NUL\288\8086\768\2048\42752\13568\42752\13824\42752\13312\42752\13571\DC4\167cWelcome, ehird\167c! \768\10496\42752\26112\21504\30976\28672\25856\8192\42752\25344\12032\26624\25856\27648\28672\42752\26112\8192\26112\28416\29184\8192\24832\8192\27648\26880\29440\29696\8192\28416\26112\8192\25344\28416\27904\27904\24832\28160\25600\29440\11776\8195\&0Visit nerd.nu for information on other se
06:49:45 <elliott> rvers. \768\5888\42752\14080\22784\28416\29952\8192\26624\24832\30208\25856\8192\28160\28416\8192\28160\25856\30464\8192\27904\24832\26880\27648\11800\NUL<\13055\65519\57600\EOT\33023\65515\38645\DC1\NUL\DLE\65407\7168\NUL\15360\54781\36096\CAN\NULM\23807\65520\63232\b\NUL\ACK\34376\NUL\DEL\7168\NUL\19712\253\36096\CAN\NULX\23807\65522\11776\a\63488\EOT\48513\NUL\DEL\7168\NUL\22528\1799\49662\35864\NULg\23807\65524\26112\a\57344\STX\3613\NUL\DEL\
06:49:46 <elliott> 7168\NUL\26368\253\36096\CAN\NULe\13567\65525\38400\b\255\65529\16546\NUL\DEL\7168\NUL\25858\3325\3
06:49:48 <elliott> fizzie: 'Hokay, that is definitely not right.
06:50:16 <CakeProphet> itidus21: you can program right? these aren't new ideas to you are they?
06:50:29 <elliott> elliott@katia:~/Code/mchost$ mkfifo fifo; nc p.nerd.nu 25565 <fifo | tee serverlogtwo | nc -l 9999 >fifo
06:50:32 <elliott> fizzie: Does that look right to you? :p
06:51:26 <itidus21> well, driving a car (something i can't do).. all you have to physically do is turn a wheel, change gears, and press pedals, and i suppose percieving the universe too while driving.. ie being concious
06:52:26 <itidus21> however... haskell coders are better at driving the PC in some computations than asm coders
06:52:52 <SgeoN1> I go to install Chromium. I decide to view the info for Dooble. I see reviews that are clearly for Chromium.
06:52:53 <CakeProphet> language and programming skill are independent of each other.
06:53:15 <elliott> CakeProphet: Not entirely.
06:55:09 <elliott> Hmph, what _is_ it with handshakes these days?
06:55:21 <CakeProphet> elliott: black people added all sorts of crazy shit is what happened.
06:55:26 <elliott> I guess my handshake thing is broken
06:55:46 <elliott> "-" -> return NoAuthentication
06:55:46 <elliott> "+" -> return Authenticate
06:55:46 <elliott> _ -> return (LoggedIn str)
06:56:06 <CakeProphet> would be nice to have some kind of case-bind
06:56:22 <itidus21> well should i consider a lambda expression as an infinite tree?
06:57:02 <itidus21> but to use the tree you keep growing it?
06:57:32 <CakeProphet> no you would expand and reduce it as necessary.
06:58:07 <CakeProphet> well... I suppose it /could/ be a lazily evaluated tree...
06:58:08 <itidus21> well, an expression is surely of no use on its own
06:58:17 <CakeProphet> itidus21: here read this: http://mitpress.mit.edu/sicp/full-text/book/book.html
06:58:51 <itidus21> second person to refer me to that book. it must be good :D
06:58:53 <elliott> i think sicp might be at a slightly higher level than itidus21 is at.
06:59:18 <itidus21> tidus was one day complaining that no book walks you through completely creating a compiler
06:59:46 <itidus21> oh wait.. thats a lambda on the front
07:01:19 <itidus21> i'll yield on my alchemy comment just to play fair
07:02:24 <CakeProphet> elliott: I think SICP starts off simply enough to allow itidus21 to catch on.
07:02:38 <CakeProphet> and then it gradually builds on previous concepts.
07:03:06 <fizzie> elliott: That "Welcome, ehird" thing in your SHandshake is part of the server-to-client chattery; it shouldn't be in your 'str'.
07:03:30 <elliott> fizzie: Yes, but more importantly, it shouldn't start with \1536.
07:03:35 <elliott> It should be -, +, or a hash. Probably -.
07:03:41 <elliott> So I am ``not knowing of what is happening''.
07:05:13 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: `'': not found
07:05:31 <fizzie> What's your getTextUTF16be like? (Also altenratively: hexdump -C serverlogtwo | head -n 20 or so.)
07:05:35 <itidus21> CakeProphet: i have this concept in the backlog of programming where errors are acceptable
07:05:47 <itidus21> sorry rewording now to make more sense
07:05:48 -!- ive has joined.
07:05:49 <elliott> getTextUTF16be :: Get Text
07:05:49 <elliott> len <- SE.get :: Get Word16
07:05:49 <elliott> TE.decodeUtf16BEWith TEE.ignore <$> SE.getBytes (fromIntegral len * 2)
07:06:00 <CakeProphet> itidus21: can you please what that sentence even means.
07:06:03 <elliott> (That TEE.ignore thing just replaces erroneous UTF with the empty string.)
07:06:14 <itidus21> CakeProphet: i have this concept on the drawing board, of making a programming system where errors are acceptable
07:06:20 <elliott> 00000000 02 00 10 00 39 00 35 00 34 00 34 00 61 00 32 00 |....9.5.4.4.a.2.|
07:06:20 <elliott> 00000010 39 00 39 00 65 00 36 00 31 00 35 00 66 00 31 00 |9.9.e.6.1.5.f.1.|
07:06:20 <elliott> 00000020 36 00 38 01 00 0e b8 b0 00 00 00 00 00 00 00 84 |6.8.............|
07:06:20 <elliott> 00000030 5f ed 00 00 00 00 00 02 80 3c 06 00 00 00 00 00 |_........<......|
07:06:20 <elliott> 00000040 00 00 40 00 00 00 00 04 00 00 00 00 01 20 1b 87 |..@.......... ..|
07:06:20 <elliott> 00000050 03 00 08 00 a7 00 35 00 a7 00 36 00 a7 00 34 00 |......5...6...4.|
07:06:22 <elliott> 00000060 a7 00 35 03 00 14 00 a7 00 63 00 57 00 65 00 6c |..5......c.W.e.l|
07:06:24 <elliott> 00000070 00 63 00 6f 00 6d 00 65 00 2c 00 20 00 65 00 68 |.c.o.m.e.,. .e.h|
07:06:26 <elliott> 00000080 00 69 00 72 00 64 00 a7 00 63 00 21 00 20 03 00 |.i.r.d...c.!. ..|
07:06:28 <elliott> 00000090 29 00 a7 00 66 00 54 00 79 00 70 00 65 00 20 00 |)...f.T.y.p.e. .|
07:06:50 <elliott> fizzie: It does seem like it's started logging "too late". But all I did was: ... well, I quoted the command earlier; can't find it now.
07:07:04 <fizzie> elliott: Well, the handshake looks fine: 02, 0x0010 = 16 characters, then "00 39 00 35 00 34 00 34 00 61 00 32 ...".
07:07:23 <itidus21> CakeProphet: the idea is simple. program in problem domains where errors don't matter
07:07:23 <elliott> fizzie: But it should start with"+".
07:07:25 <elliott> "This is the first packet sent when the client connects and is used for Authentication. If the hash is '-', then the client continues without doing name authentication. If the hash is a '+', the client sends the server password in the login request. (Note that this hash, as of the latest version of the Beta server, is a randomly generated long in hexadecimal form, and has nothing to do with the client or the server he is connected to)"
07:07:38 <elliott> itidus21: any such domain is trivially implemented by this program: main = return ()
07:07:46 <elliott> it does nothing; if this is an error, it does not matter, because errors are acceptable
07:07:55 <fizzie> elliott: No, it should be a hash. '+' is only used for password-without-minecraft.net-name-verification.
07:08:08 <fizzie> "A unique, per-connection hash, or '-', or '+'"
07:08:32 <itidus21> rendering a frame in a video game doesn't really matter if it is wrong..
07:09:01 <itidus21> player might get a bit emotionally upset.. or may experience upset eyes from trying to watch poorly rendered frames
07:09:18 <CakeProphet> poorly rendered is not wrongly rendered though
07:09:20 <itidus21> but overall, it doesn't matter if it's right
07:09:32 <CakeProphet> I can't play a game if it renders a black screen.
07:10:24 <itidus21> a few aspects are.. errors should be restricted.. like it shouldn't bring down the whole system
07:10:45 <itidus21> and shouldn't be anything which needs security
07:11:12 <itidus21> well.. some things don't really need to be handled
07:11:20 <itidus21> its more or less ok ifthey're wrong
07:11:30 <elliott> <fizzie> elliott: No, it should be a hash. '+' is only used for password-without-minecraft.net-name-verification.
07:12:12 -!- ive has quit (Quit: leaving).
07:12:19 <itidus21> CakeProphet: the model for my idea is a person playing music.. its basically ok if they make a mistake, depending on the audience
07:12:20 <fizzie> I believe it's the old thing, but I'm no expert. In any case, the hash is supposed to be either only "-", only "+" or that random hex-string you've got there.
07:12:54 <zzo38> Can you do comma categories in Haskell?
07:12:58 <fizzie> elliott: Not that I can immediately explain where that "\1536\NUL\NUL\NUL\16384..." comes from. In bytes it's that "06 00 00 00 00 00 00 00 40 00 ..." thing which starts a bit after halfway of the fourth line of your hexdump.
07:13:18 <elliott> Hmm. Why on _earth_ is the handshake being read wrong?
07:13:52 <itidus21> CakeProphet: so as if to say.. the next note played can be ok even if the last note was not ok... and the next frame rendered can be ok even if the last one wasn't
07:14:36 <CakeProphet> that's just an emergent property of a specific system, or proper error handling. not something you can design to work always for any program ever, as it would work in a programming language.
07:14:44 <fizzie> I would understand if it started with the correct hash (that'd be just broken length field), but starting the string 54 bytes too late is rather strange.
07:15:35 <elliott> get = LoggedIn `fmap`getTextUTF16be
07:15:42 <CakeProphet> itidus21: basically you want erroneous operations to return some kind of null or identity/zero value. In that case you want Perl.
07:15:50 * elliott tries making the field a string field.
07:16:20 <elliott> That doesn't help either. :/
07:16:34 <itidus21> my ideas are almost always really bad. im cool with knowing this.
07:16:38 <elliott> fizzie: Are you _sure_ that string looks right? :p
07:16:45 <fizzie> Well, it looks right to me.
07:16:52 <elliott> My client dump strings all parse perfectly:
07:17:03 <elliott> 00000000 02 00 05 00 65 00 68 00 69 00 72 00 64 01 00 00 |....e.h.i.r.d...|
07:17:03 <elliott> 00000010 00 11 00 05 00 65 00 68 00 69 00 72 00 64 00 00 |.....e.h.i.r.d..|
07:17:04 <elliott> 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0d 40 |...............@|
07:17:04 <elliott> 00000030 72 b6 00 00 00 00 00 40 44 80 00 00 00 00 00 40 |r......@D......@|
07:17:04 <elliott> 00000040 45 4f 5c 29 00 00 00 40 44 ec 00 00 00 00 00 43 |EO\)...@D......C|
07:17:07 <elliott> And that starts with a handshake too.
07:17:55 <fizzie> I mean, "02 00 10 00 39 00 35 00 34 00 34 00 61 00 32 00 39 00 39 00 65 00 36 00 31 00 35 00 66 00 31 00 36 00 38" -- you're supposed to read the byte 02, go all "ah, a handshake", then read a bigendian Word16 0x0010 = 16, then read 32 bytes ("00 39 .. 00 38") and decode those as UTF-16.
07:18:11 <CakeProphet> I need some kind of lock that prevents me from using irc for a while that also isn't /quit
07:18:32 <fizzie> The handshake in that, "02 00 05 00 65 00 68 00 69 00 72 00 64", is very similar.
07:18:43 <fizzie> (And after both there's a login packet starting with 01.)
07:18:55 <elliott> , packet 0x02 "SHandshake"
07:18:55 <elliott> [ PF.handshake "handshake" -- FIXME: handshake is a rubbish name
07:19:04 -!- CakeProphet has left ("fungot").
07:19:07 -!- CakeProphet has joined.
07:19:22 <elliott> fizzie: I guess I'll debugtrace the byte count it thinks it gets.
07:19:23 <zzo38> CakeProphet: What exactly do you intend to make?
07:19:55 <zzo38> No, I think it read only PRIVMSG lines as far as I can tell.
07:20:00 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
07:20:13 <CakeProphet> fizzie: I'm not even going to begin to read that. :P
07:20:28 <fizzie> 15G0"GSMVIRP"Q| and so on.
07:20:43 <fizzie> If not, it just goes back to read the next message.
07:20:48 <elliott> SHandshake (LoggedIn "9544a299e615f168")
07:20:48 <elliott> SLogin (EntityID 964784) "" 8675309 False (WorldID 0) 0 0 0
07:20:49 <elliott> SHandshake (LoggedIn "\1536\NUL\NUL\NUL\16384\NUL\EOT\NUL\NUL\288\7047\768\2048\42752\13568\42752\13824\42752\13312\42752\13571\DC4\167cWelcome, ehird\167c! \768\10496\42752\26112\21504\30976\28672\25856\8192\42752\25344\12032\26624\25856\27648\28672\42752\26112\8192\26112\28416\29184\8192\24832\8192\27648\26880\29440\29696\8192\28416\26112\8192\25344\28416\27904\27904\24832\28160\25600\29440\11776\8195\&0Visit nerd.nu for information on other se
07:20:54 <elliott> rvers. \768\5888\42752\14080\22784\28416\29952\8192\26624\24832\30208\25856\8192\28160\28416\8192\28160\25856\30464\8192\27904\24832\26880\27648\11800\SO\16373\14079\65530\46592\ENQ\768\r\43526\NUL\DEL\7168\3647\62975\60155\9984\34328\SO\16374\13311\65532\52736\ETX\9472\f\46950\NUL\DEL\7168\3647\62976\28415\54272\6424\SO\16371\14079\65529\NUL\1152\NUL\3766\17664\NUL\32540\SO\16371\65383\64909\65521\6144\3766\9522\65535\64629\NUL\736\NUL\4517\5324
07:21:01 <elliott> I changed nothing. Why did the parse change?
07:21:21 * elliott does a clean rebuild out of superstition.
07:21:31 -!- CakeProphet has quit (Quit: aiwriavniuqenehweer).
07:21:34 <elliott> OK, now it reliably parses the above.
07:21:40 <elliott> SHandshake (LoggedIn "9544a299e615f168")
07:21:40 <elliott> SLogin (EntityID 964784) "" 8675309 False (WorldID 0) 0 0 0
07:21:40 <elliott> SHandshake (LoggedIn "\1536\NUL\NUL\NUL\16384\NUL\EOT\NUL\NUL\288\7047\768\2048\42752\13568\42752\13824\42752\13312\42752\13571\DC4\167cWelcome, ehird\167c! \768\10496\42752\26112\21504\30976\28672\25856\8192\42752\25344\12032\26624\25856\27648\28672\42752\26112\8192\26112\28416\29184\8192\24832\8192\27648\26880\29440\29696\8192\28416\26112\8192\25344\28416\27904\27904\24832\28160\25600\29440\11776\8195\&0Visit nerd.nu for information on other se
07:21:44 <elliott> rvers. \768\5888\42752\14080\22784\28416\29952\8192\26624\24832\30208\25856\8192\28160\28416\8192\28160\25856\30464\8192\27904\24832\26880\27648\11800\SO\16373\14079\65530\46592\ENQ\768\r\43526\NUL\DEL\7168\3647\62975\60155\9984\34328\SO\16374\13311\65532\52736\ETX\9472\f\46950\NUL\DEL\716
07:21:48 <elliott> So that's a slightly less ridiculous parsing.
07:21:53 <fizzie> At least SHandshake, SLogin, broken SHandshake makes more sense, since that explains why it starts "\1536\NUL\NUL\NUL\16384..."
07:22:10 <elliott> Ye-ees, but it still doesn't explain why the broken.
07:25:00 <fizzie> The login packet is: 01, 00 0e b8 b0 (played id), 00 00 (unused), 00 00 00 00 00 84 5f ed (seed), 00 00 00 00 (server mode: survival), 00 (dim: normal), 02 (unknown byte), 80 (world height: 128), 3c (max players: 60)
07:25:24 <fizzie> For some reason, your thing starts to read a new packet from that 02 byte on.
07:25:50 <elliott> , PF.long "mapSeed" -- as above
07:25:50 <elliott> , PF.bool "isCreative" -- as above
07:26:01 <elliott> It... shouldn't be doing anything tricksy there.
07:26:19 <elliott> How come the world height isn't in
07:26:21 <elliott> <elliott> SLogin (EntityID 964784) "" 8675309 False (WorldID 0) 0 0 0
07:27:11 <fizzie> I suppose it parses your client-side login just fine, and that has the same fields?
07:27:28 <fizzie> Same data types, anyhow.
07:27:48 <elliott> CLogin 17 "ehird" 0 0 0 0 0 0
07:27:58 <elliott> Unless they're meant to be 0.
07:28:37 -!- CakeProphet has joined.
07:28:38 -!- CakeProphet has quit (Changing host).
07:28:38 -!- CakeProphet has joined.
07:28:53 <elliott> So something is rotten in the state of... uh, I can't bring myself to say Minecraftia.
07:29:30 <elliott> newtype WorldID = WorldID Int8 deriving (Eq, Show, Serialize)
07:29:47 <fizzie> Lunchtime, have fun with it. :p
07:29:51 -!- sebbu2 has joined.
07:29:51 -!- sebbu2 has quit (Changing host).
07:29:51 -!- sebbu2 has joined.
07:30:23 -!- itidus21 has left ("Leaving").
07:30:40 <elliott> I shall never: forgive fizzie.
07:30:42 <fizzie> Anyhow, based on those bytes I think you should end up with "SLogin (EntityID 964784) "" 8675309 False (WorldID 0) 0 128 60".
07:31:25 <elliott> fizzie: "02 (unknown byte)"
07:31:46 <fizzie> Well, 2, 128, 60 then.
07:31:50 <elliott> SLogin (EntityID 964784) "" 8675309 False (WorldID 0) 2 128 60
07:32:13 <elliott> That's just what I'm aiming for.
07:32:22 <fizzie> I was hoping you had some nondeterminism there.
07:32:35 <elliott> It's the only thing that could improve this, uh, experience.
07:32:44 -!- sebbu3 has quit (Ping timeout: 260 seconds).
07:32:49 <fizzie> Anyway, the seed is right; 0x0000000000845fed == 8675309.
07:33:24 <fizzie> It's as if it has stopped reading after the WorldID and padded the rest with zeros.
07:33:36 <elliott> Yes, but... that shouldn't be happening.
07:33:40 <elliott> That's not... a thing that happens.
07:33:43 <fizzie> (And then continued from after the WorldID as if it was a new packet from there.)
07:33:47 <elliott> There is no code to suddenly stop reading and keep 0ing.
07:33:53 <elliott> It is a feature I neglected to write.
07:34:03 <fizzie> I shall lurch anyhow. ->
07:34:04 -!- Vorpal has joined.
07:34:28 <olsner> elliott: are you sure you read all the bytes from the socket? :)
07:34:43 <Vorpal> wtf, windows 8 looks like a disaster from the screenshots.
07:35:12 <Vorpal> it /seems/ like it is basically running something like android or iOS on a desktop... Which is stupid.
07:35:31 <olsner> maybe that's not a relevant failure in the haskell socket libs, but in C it's easy to accidentally only fill in part of a buffer
07:35:38 <elliott> I'm reading from a dumped file.
07:35:43 <elliott> (reverse-i-search)`| tee': mkfifo fifo; nc p.nerd.nu 25565 <fifo | tee serverlogtwo | nc -l 9999 >fifo
07:35:48 <elliott> Please feel free to point out errors.
07:36:19 <Vorpal> elliott, eh, are you trying to reply minecraft server data?
07:36:24 <elliott> I've successfully dumped a client log with:
07:36:26 <elliott> (reverse-i-search)`anotherlog': mkfifo fifo; nc p.nerd.nu 25565 <fifo | nc -l 9999 | tee fifo >anotherlog
07:36:29 <elliott> so I think this should be fine.
07:36:49 <Vorpal> elliott, I would just use tcpdump to do it. Seems easier
07:36:57 <olsner> Vorpal: yes - the UI is inspired by, if not based on, windows phone 7
07:37:11 <elliott> Vorpal: Show me the tcpdump line.
07:37:19 <elliott> I know how to use nc, pipes, and tee; I don't know how to use tcpdump.
07:37:22 <Vorpal> elliott, I would launch wireshark and use that for it
07:37:41 <Vorpal> since wireshark uses tcpdump as a backend iirc, or something compatible at least
07:37:53 <Vorpal> olsner, yeah, that model doesn't really fit a desktop with a mouse though
07:38:01 <elliott> Vorpal: How is this simpler than tee?
07:38:03 <Vorpal> olsner, you don't need huge buttons unless you have a touchscreen.
07:38:13 <Vorpal> elliott, not simpler, but it would definitely work
07:38:30 <Vorpal> elliott, oh okay, sounded like it didn't in one direction
07:38:33 <elliott> $ dist/build/mchost/mchost client < anotherlog | head
07:38:33 <elliott> CLogin 17 "ehird" 0 0 0 0 0 0
07:38:33 <elliott> CPlayerPositionLook 299.375 41.0 42.62000000476837 41.84375 351.4492 13.349988 False
07:38:33 <elliott> CPlayerPositionLook 299.375 41.0 42.62000000476837 41.84375 351.4492 13.349988 False
07:38:34 <elliott> CPlayerPosition 299.375 40.92159999847412 42.54160000324249 41.84375 False
07:38:36 <elliott> CPlayerPosition 299.375 40.76636799395752 42.386367998725895 41.84375 False
07:38:38 <elliott> CPlayerPosition 299.375 40.53584062504456 42.15584062981293 41.84375 False
07:38:42 <elliott> CPlayerPosition 299.375 40.231523797587016 41.85152380235539 41.84375 False
07:38:44 <elliott> CPlayerPosition 299.375 39.85489329934836 41.47489330411673 41.84375 False
07:38:46 <elliott> CPlayerPosition 299.375 39.40739540236494 41.02739540713331 41.84375 False
07:38:48 <elliott> What is broken is my code.
07:38:52 <elliott> But only for certain server packets.
07:40:10 <Vorpal> olsner, oh and the modal program thingy that windows 8 seems to have, that is even more wtf for a desktop or laptop.
07:40:25 <elliott> Vorpal: you're really late for the windows 8 discussion.
07:40:41 <elliott> come back like two weeks ago
07:40:47 <Vorpal> elliott, I have been busy, only just now caught up with things.
07:41:11 <Vorpal> elliott, anyway, what is your opinion on it?
07:41:43 <HackEgo> 2011-03-30.txt:17:34:50: <HackEgo> 339) * Received a CTCP VERSION from nyuszika7h * VERSION Microsoft IRC# 2011 64-bit (Windows 8 Beta, x64, 2GB RAM) <nyuszika7h> Gregor: Windows 8 Beta? o_O <Gregor> A small benefit of my brief time as an intern at MS.
07:41:44 <HackEgo> 2011-09-19.txt:07:40:25: <elliott> Vorpal: you're really late for the windows 8 discussion.
07:41:59 <HackEgo> 2010-11-18.txt:19:48:21: <elliott> Gregor: Only 2 gigs of RAM for Windows 8?
07:42:05 <HackEgo> 2010-06-14.txt:20:46:29: <fizzie> It will be somewhat interesting to see what Windows 8 will be "in reality".
07:42:14 <HackEgo> 2011-09-19.txt:07:40:25: <elliott> Vorpal: you're really late for the windows 8 discussion.
07:42:14 <HackEgo> 2011-03-30.txt:17:34:47: <Gregor> `addquote * Received a CTCP VERSION from nyuszika7h * VERSION Microsoft IRC# 2011 64-bit (Windows 8 Beta, x64, 2GB RAM) <nyuszika7h> Gregor: Windows 8 Beta? o_O <Gregor> A small benefit of my brief time as an intern at MS.
07:42:15 <HackEgo> 2011-09-19.txt:07:41:40: <elliott> `log windows 8
07:42:16 <HackEgo> 2011-09-13.txt:19:31:55: <ais523> hmm, according to discussion in Slashdot, Windows 8 has no Start menu, even if you put it into old-fashioned desktop mode
07:42:16 <HackEgo> 2011-03-13.txt:13:33:46: <elliott> Phantom_Hoover: i just want Windows 8 Cloud
07:42:55 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
07:43:23 -!- Vorpal has joined.
07:43:42 <Vorpal> last line I saw was <Vorpal> elliott, anyway, what is your opinion on it?
07:43:55 <elliott> http://codu.org/logs/_esoteric/
07:44:26 <Vorpal> 07:42:14: <HackEgo> 2011-03-30.txt:17:34:47: <Gregor> `addquote * Received a CTCP VERSION from nyuszika7h * VERSION Microsoft IRC# 2011 64-bit (Windows 8 Beta, x64, 2GB RAM) <nyuszika7h> Gregor: Windows 8 Beta? o_O <Gregor> A small benefit of my brief time as an intern at MS. <-- IRC#?
07:45:03 <elliott> a smell benefit of Gregor's brief time as an intern at MS
07:45:08 <elliott> Gregor has no smell benefits.
07:45:39 <monqy> ms comic chat revival?
07:45:48 -!- Vorpal has quit (Read error: Connection reset by peer).
07:46:27 <elliott> the joke is that vorpal is dumb
07:49:38 <zzo38> It seems that the Q monad for Template Haskell is really a wrapper for a class. I didn't know such a thing exists.
07:50:02 <olsner> Sweden is supposed to have good internet, I wonder how vorpal failed to get it and got bad internet instead
07:50:55 <elliott> he lives in a rural nowhere motto "for dumb vorpals"
07:51:05 <olsner> well, maybe he just forgot to scroll down and thought he got disconnected, then restarted IRC because of it
07:51:39 <monqy> but forgot the restart part
07:51:51 <monqy> or was that the other one
07:53:25 <zzo38> It is the wrapper for the Quasi class. So is there some hidden Quasi instance for working with Haskell programs?
07:53:26 <olsner> also, smell benefits :D
07:55:20 <elliott> zzo38: it is probably instantiated to IO in practice
07:55:24 <elliott> or at least that is my hunch
07:55:52 <zzo38> IO cannot do reify or some of its other commands
07:56:02 <elliott> probably some horrific internal ghc thing then :)
07:57:37 <zzo38> Is this correct and can there be any implementation of the ones I did not implement? instance Quasi (State QuasiState) where { qNewName n = modify (\x -> x {qs_nextName = qs_nextName x + 1}) >> fmap (mkNameU n) (fmap qs_nextName get); qReport b s = modify (\x -> x {qs_report = qs_report x ++ [(b, s)]});
07:57:56 <zzo38> qRecover _ = error "Cannot recover in QuasiState"; qReify _ = error "Cannot reify in QuasiState"; qClassInstances _ = error "Cannot get class instances in QuasiState"; qLocation = fmap qs_location get; qRunIO _ = error "Cannot run I/O in QuasiState"; };
07:58:40 <monqy> uggh how is Q not an instance of MonadIO
07:59:43 <zzo38> monqy: I don't know. It does have a runIO command, is that sufficient to make MonadIO?
08:00:24 <monqy> class Monad m => MonadIO m where liftIO :: IO a -> m a
08:00:32 <monqy> runIO :: IO a -> Q a
08:01:17 <zzo38> So, liftIO = runIO is that correct? In which library/module is MonadIO?
08:02:00 <monqy> Control.Monad.IO.Class looks like
08:02:05 <zzo38> But note that runIO is not always defined when runQ is used; sometimes it will be error.
08:02:53 <zzo38> Such as, I defined Maybe and (State QuasiState) as instances of Quasi, neither of which can perform I/O.
08:03:02 <monqy> your instances are incomplete
08:03:24 <monqy> and I don't see how this has any bearing on making a MonadIO instance
08:03:31 <zzo38> But even the IO instance of Quasi is incomplete.
08:03:42 <monqy> do you mean by that
08:03:48 <zzo38> monqy: But, yes, I do suppose it can in fact be made a MonadIO instance anyways.
08:04:05 <monqy> the only case in which it wouldn't work is when it wouldn't work anyway
08:04:06 <zzo38> The IO instance of Quasi cannot perform everything either.
08:04:08 <monqy> because of incomplete
08:04:20 <monqy> what do you mean by "IO instance"
08:04:38 <zzo38> I mean the instance Quasi IO
08:06:37 <zzo38> What uses does the MonadIO class currently have?
08:08:04 <zzo38> OK, I made Q to be an instance of MonadIO in my ExtraTH program now.
08:08:07 <monqy> instances of MonadIO can perform with liftIO, so you can make functions such that anything which can perform IO can run IO actions. also I think there are instances such that it liftIO will work deep into monad stacks?
08:08:39 <monqy> same deal with MonadWhatever classes
08:13:36 <zzo38> With something like (\x -> x {qs_nextName = qs_nextName x + 1}) is there something that allows you do specify only qs_nextName once and (+ 1) and it will act like same thing?
08:19:19 <monqy> data-lens and friends
08:19:32 <zzo38> Yes I know about lenses, but is there something for record syntax
08:19:54 <monqy> not that I know of
08:20:03 <monqy> why do you need record syntax?
08:20:18 <zzo38> I will try to write one with Template Haskell to see if it can do so.
08:25:49 -!- elliott has quit (Ping timeout: 260 seconds).
08:37:03 -!- ais523 has joined.
08:39:34 -!- SgeoN1 has quit (Quit: Bye).
08:40:07 -!- monqy has quit (Quit: hello).
08:44:24 <zzo38> recUpd :: Name -> Q Exp; -- :: (f -> f) -> r -> r;
08:45:17 <zzo38> recUpd n = do { f <- newVar; r <- newVar; let { a = AppE (VarE f) $ AppE (VarE n) (VarE r) } in lamE [varP f, varP r] $ recUpdE (varE r) [return (n, a)]; };
08:46:05 -!- ais523 has quit (Read error: Connection reset by peer).
08:46:42 -!- ais523 has joined.
08:53:06 <zzo38> I made improvement to Metamind and Illithid Savant class, of D&D game, beyond what I had before.
08:54:27 -!- copumpkin has quit (Ping timeout: 252 seconds).
08:54:51 -!- copumpkin has joined.
08:55:08 <zzo38> I looked at Wikipedia article about comma category. Now I know what commutative diagrams do (by looking at the other article too).
09:17:45 -!- augur has quit (Remote host closed the connection).
09:43:32 -!- augur has joined.
10:24:30 -!- zzo38 has quit (Remote host closed the connection).
10:34:09 -!- sebbu2 has quit (Ping timeout: 260 seconds).
10:35:48 -!- sebbu2 has joined.
10:35:48 -!- sebbu2 has quit (Changing host).
10:35:48 -!- sebbu2 has joined.
10:39:56 <fizzie> Heh, a poll where the question says "choose two best options", and the list of options is a single-select radiobutton group.
10:59:51 -!- zanzarel has joined.
11:01:18 <cheater> linking to lenin, molotov and stalin from my article on opensource software
11:13:11 -!- hagb4rd has joined.
11:15:57 -!- Jafet has joined.
11:21:55 -!- ais523 has quit (Read error: Connection reset by peer).
11:24:49 -!- Patashu has joined.
11:25:07 -!- ais523 has joined.
11:27:47 -!- GreaseMonkey has quit (Quit: The Other Game).
11:28:00 -!- ais523_ has joined.
11:28:01 -!- ais523 has quit (Disconnected by services).
11:28:03 -!- ais523_ has changed nick to ais523.
11:28:41 <ais523> note to my University: it is not useful to change the configuration required to access my email, then send an email to my email address telling me what I need to change
11:29:06 <ais523> better would be to do it the other way round, and have both systems working in parallel for a couple of weeks
11:33:29 <Jafet> Probably a race condition somewhere
11:34:07 -!- variable has quit (*.net *.split).
11:36:08 <ais523> nah, I think they just expected people to actually use Outlook Web Access rather than IMAP
11:45:45 -!- sebbu2 has changed nick to sebbu.
11:50:14 -!- zanzarel has quit (Quit: Leaving).
11:56:03 -!- oerjan has joined.
12:01:47 <oerjan> <monqy> uggh how is Q not an instance of MonadIO
12:02:30 <oerjan> @tell monqy <monqy> uggh how is Q not an instance of MonadIO <-- it might be because ghc no longer includes by default the package where MonadIO is defined
12:03:58 <lambdabot> Control.Monad.Trans liftIO :: MonadIO m => IO a -> m a
12:11:20 -!- boily has joined.
12:16:08 -!- hagb4rd has quit (Ping timeout: 260 seconds).
12:20:43 -!- NihilistDandy has quit (Quit: leaving).
12:20:56 -!- sllide has joined.
12:41:25 -!- copumpkin has quit (Ping timeout: 252 seconds).
12:41:49 -!- copumpkin has joined.
12:44:32 <lambdabot> forall a b (m :: * -> *). (Monad m) => (a -> b -> m a) -> a -> [b] -> m a
12:45:25 <ais523> <http://www.catb.org/~esr/faqs/smart-questions.html> If you're sending e-mail from a Windows machine, turn off Microsoft's problematic “Smart Quotes†feature (From Tools > AutoCorrect Options, clear the smart quotes checkbox under AutoFormat As You Type.). This is so you'll avoid sprinkling garbage characters through your mail.
12:45:34 <ais523> there is something so beautiful about the misencoding there
12:45:54 <ais523> (there are misencoded quotes all over that document, but seeing them in that context is hilarious)
12:47:37 <ais523> that page also obnoxiously puts title= attributes on every paragraph with the section header
12:47:48 <ais523> meaning that it's kind-of hard to find anywhere safe to put the mouse
12:48:17 <fizzie> Well, the document itself does have <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> and the quotes are proper UTF-8; unfortunately the server headers seem to specify ISO-8859-1.
12:48:44 <Jafet> <?xml version="1.0" encoding="UTF-8"?>
12:48:58 <Jafet> Nothing like reassuring the parser that, yes, this is utf-8
12:49:13 <Jafet> Despite a deranged httpd's assertions to the contrary
12:50:11 <ais523> shouldn't the meta override the server headers?
12:50:24 <oerjan> ais523: IT WAS YOUR BROWSER ALL ALONG
12:50:50 <ais523> my browser normally obeys the normal rules for detecting encodings
12:51:50 <fizzie> "HTTP/1.1 recipients MUST respect the charset label provided by the sender; and those user agents that have a provision to "guess" a charset MUST use the charset from the content-type field if they support that charset, rather than the recipient's preference, when initially displaying a document. See section 3.7.1. "
12:54:40 <fizzie> As for overriding: "The http-equiv attribute can be used in place of the name attribute and has a special significance when documents are retrieved via the Hypertext Transfer Protocol (HTTP). HTTP servers may use the property name specified by the http-equiv attribute to create an [RFC822]-style header in the HTTP response."
12:55:36 <fizzie> So it's entirely the server's prerogative.
12:55:40 <Jafet> Love standards... so many... choice...
13:03:18 -!- hagb4rd has joined.
13:35:19 -!- DH____ has joined.
13:57:13 <CakeProphet> https://github.com/rfw/metafun/blob/master/metafun/list.hxx
14:02:09 -!- variable has joined.
14:05:27 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
14:07:42 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:15:41 <oerjan> comment from reddit.com/r/physics: 'Given my experience with simulations I imagine the outcome would be something like: "The latest simulations suggest our universe is heading towards a segfault.."'
14:29:42 -!- copumpkin has joined.
14:32:41 -!- oerjan has quit (Quit: leaving).
14:39:20 -!- sebbu2 has joined.
14:39:20 -!- sebbu has quit (Ping timeout: 240 seconds).
14:39:31 -!- sebbu2 has quit (Changing host).
14:39:31 -!- sebbu2 has joined.
14:40:03 -!- sebbu2 has changed nick to sebbu.
15:19:16 -!- Ngevd has joined.
15:23:06 -!- MSleep has changed nick to MDude.
15:24:34 <Ngevd> ais523, I think there's some spam on the wiki
15:25:06 <ais523> could well be; I check every edit, but there's a delay for them to be loaded into my RSS feed reader
15:25:25 <Ngevd> I know, I admin the Mezzawiki
15:25:28 <ais523> right, indeed, deleted it
15:25:40 <Ngevd> Which has had very few edits recently...
15:30:30 <Ngevd> So, what's happening in THE WORLD OF ESOTERIC PROGRAMMING, then?
15:31:35 <ais523> less than probably should
15:41:33 <Ngevd> What ever happed to the Essies?
15:42:59 <ais523> people lost interest, I think
15:46:45 -!- CakeProphet has quit (Ping timeout: 260 seconds).
15:48:18 -!- CakeProphet has joined.
15:48:18 -!- CakeProphet has quit (Changing host).
15:48:18 -!- CakeProphet has joined.
15:50:49 -!- azaq23 has joined.
15:52:03 -!- azaq23 has quit (Client Quit).
15:52:11 -!- azaq23 has joined.
16:13:30 <Gregor> Recipe for fun: Get a Zune HD foisted on you. Install Windows 7 in a VM so you can try it. Discover just how abysmally bad it is, put it in a box, forget about it for >1yr. Remove from box, boot VM for first time in a year, try to use it again.
16:13:41 <Gregor> <Microsoft> lol, you can't do SHIT. Hahaha
16:20:45 -!- FireFly has joined.
16:36:31 -!- ive has joined.
16:42:29 -!- Wamanuz2 has joined.
16:42:30 -!- Wamanuz has quit (Read error: Connection reset by peer).
16:58:33 -!- calamari has joined.
17:01:33 -!- ais523 has quit (Remote host closed the connection).
17:14:30 -!- Ngevd has quit (Ping timeout: 252 seconds).
17:29:27 -!- pean has joined.
17:32:36 -!- pean has left.
17:37:01 -!- sebbu2 has joined.
17:37:01 -!- sebbu2 has quit (Changing host).
17:37:01 -!- sebbu2 has joined.
17:37:36 -!- sebbu has quit (Ping timeout: 252 seconds).
17:46:52 -!- ais523 has joined.
17:52:05 -!- Ngevd has joined.
17:53:59 -!- calamari has quit (Quit: Leaving).
17:56:20 -!- impomatic has joined.
17:56:23 -!- impomatic has left.
18:10:37 -!- Ngevd has quit (Ping timeout: 259 seconds).
18:25:09 <lambdabot> [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,...
18:25:50 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E...
18:32:05 <CakeProphet> I'm actually a little mystified as to how that works..
18:34:58 -!- augur has quit (Remote host closed the connection).
18:40:28 <fizzie> In DWIMskell, "fix error" just rewrites your source file and corrects your mistakes.
18:44:26 -!- Ngevd has joined.
18:50:13 -!- sebbu3 has joined.
18:50:13 -!- sebbu3 has quit (Changing host).
18:50:13 -!- sebbu3 has joined.
18:51:27 -!- sebbu2 has quit (Ping timeout: 260 seconds).
18:55:47 -!- DH____ has quit (Read error: Connection reset by peer).
18:55:51 -!- AndChat| has joined.
18:56:30 <ais523> Ngevd: I was going to recommend NetHack, when I saw this was #esoteric
18:56:33 <ais523> but I may as well recommend it anyway
18:56:43 <Ngevd> I could never get the hang of it
18:57:56 <Ngevd> I will try, though
18:58:37 <ais523> I actually develop a NetHack variant, AceHack, which can be played online at telnet://acehack.rawrnix.com
18:58:45 -!- variable has quit (Quit: I found 1 in /dev/zero).
18:59:06 -!- variable has joined.
18:59:17 <Ngevd> Can you reccomend a character's race, role, gender and alignment for me?
18:59:33 <ais523> female lawful dwarven valkyrie
18:59:35 <ais523> 'tis the easiest combo
19:00:49 <Ngevd> Hold on, University Challenge
19:00:59 -!- Ngevd has changed nick to Taneb|Hovercraft.
19:02:16 -!- yorick has quit (Quit: Poef!).
19:08:15 -!- augur has joined.
19:15:10 -!- lifthrasiir has quit (Ping timeout: 276 seconds).
19:16:08 -!- lifthrasiir has joined.
19:17:37 -!- SimonRC has quit (Ping timeout: 260 seconds).
19:19:22 -!- Taneb|Hovercraft has quit (Ping timeout: 260 seconds).
19:24:56 <myndzi\> Item lists are now sorted into alphabetical order
19:25:09 <myndzi\> wouldn't random make more sense if you're trying to prevent people from gleaning information?
19:25:11 -!- myndzi\ has changed nick to myndzi.
19:25:29 <myndzi> i suppose the problem is randomizing it only once, perhaps
19:25:40 <myndzi> but that could be done when you make the bones file(?)
19:25:53 <ais523> alpha prevents information just as well
19:26:09 -!- zzo38 has joined.
19:26:21 <myndzi> how so? it g ives you information about what the item is by its name
19:26:25 <myndzi> assuming you knew what you had
19:26:33 <myndzi> which is the problem it was designed to avoid
19:26:52 <myndzi> i suppose you mean by its "unknown" name
19:26:58 <myndzi> not its actual or original name
19:27:05 <ais523> in fact, by the name the character sees it as
19:27:15 <ais523> which is the description if unknown, and actual if known
19:28:00 <myndzi> is nethack not in development anymore? lots of these seem like they would be sensible patches for the game itself rather than some fork
19:28:18 <CakeProphet> @pl (\x y -> (compare `on` snd) x y `mappend` (compare `on` fst) x y)
19:28:18 <lambdabot> ap (ap . (mappend .) . (compare `on` snd)) (compare `on` fst)
19:28:23 <ais523> it's in development, as far as anyone can tell, but there's no releases, and no public repo
19:28:30 <ais523> so the development is entirely useless from anyone else'se point of view
19:28:40 <ais523> and it's been like that for something like eight years now
19:29:12 <ais523> `addquote <myndzi> lol :(
19:29:18 <ais523> this is everything that's wrong with modern Internet language
19:29:36 <fizzie> There are quite a lot of bug reports that are known to be fixed in the version no-one gets to see.
19:29:39 <myndzi> <devolves into unintelligible trollspeak>
19:29:55 <olsner> fizzie: the fixed version of the modern internet language?
19:30:19 <fizzie> olsner: Right. It's a shame you'll never see it, it's beautiful.
19:30:24 <myndzi> it's actually interesting if you think about it
19:31:28 <myndzi> what purpose did that text serve? it confirmed that i'd read your response, had nothing further to say, and adds that it was both humorous and unfortunate to me
19:31:32 <myndzi> in six characters, that's not bad
19:31:49 <myndzi> so i'm not so sure i can agree that it's "wrong"
19:31:57 <myndzi> though by all means, like everything it can be abused
19:32:15 <fizzie> It's an old philosophical question: If a bug gets fixed in a revision that no-one will ever see, is the commit message still stupid and misleading?
19:32:20 <myndzi> and to be honest i haven't been able to break the smileys habit on irc, though i don't type like that in e-mail or pretty much anywhere else where i would capitalize a sentence
19:34:10 -!- SimonRC has joined.
19:34:24 -!- Ngevd has joined.
19:35:23 <myndzi> Wielded silver arrows now deal silver damage the same way wielded silver nonweapons do. (Even though bashing with arrows isn't particularly affective, the silver is enough to hurt certain monsters no matter how clumsily it makes contact.)
19:35:26 <myndzi> didn't you watch LOTR? ;)
19:35:34 <myndzi> wielding arrows are piercing weapons
19:35:42 <myndzi> also: effective, if you care
19:35:51 <Ngevd> Oh, this is annoying
19:37:03 <Ngevd> Nethack: in a room with the exit staircase, a dead goblin, some money, a fountain, and a creaky floorboard
19:37:33 <myndzi> take money, drink fountain, exit ... profit?
19:37:52 <ais523> and then search the walls for secret doors
19:37:58 <ais523> (assuming the goblin died recently)
19:38:09 <ais523> vertical walls are more likely to have secret doors than horizontal walls
19:38:19 <myndzi> ^ more useful advice than i can offer
19:38:31 <myndzi> i've always been fascinated by nethack, but never played it much
19:38:39 <Ngevd> Hang on, how do I check for hidden walls?
19:39:00 <myndzi> i'm more interested in the distinction between vertical walls and horizontal walls
19:39:13 <myndzi> oh, from overhead view
19:39:15 <Ngevd> North-south, east-west
19:39:23 -!- oerjan has joined.
19:39:23 <ais523> myndzi: it's not deliberate, AFAIK, just a side-effect of the map generation algo
19:39:32 <Ngevd> Found a locked door
19:39:34 <myndzi> nah, i thought you meant vertical as in floor-to-ceiling
19:39:40 <myndzi> like, how would you tell?
19:39:45 <myndzi> also wouldn't it be the same thing?
19:40:02 <fizzie> Horizontal walls, also called floors.
19:40:02 <myndzi> and yeah, text screens are wider than tall, so it makes sense to have a horizontal preference
19:40:20 <myndzi> fizzie: well, walls take up two axes so horizontal could be a wall as well
19:40:27 <myndzi> horizontal AND vertical = wall!
19:40:29 <ais523> Ngevd: you can kick it down
19:40:30 <CakeProphet> > sortBy (\x y -> fst $ randomR (LT, GT) (mkStdGen x^y)) [1,4,5,2,5,2,5,6,21,5,2,5,6,2,5,6]
19:40:31 <lambdabot> No instance for (GHC.Num.Num System.Random.StdGen)
19:41:42 <CakeProphet> > sortBy (\x y -> toEnum . fst $ randomR (0, 2) (mkStdGen x^y)) [1,4,5,2,5,2,5,6,21,5,2,5,6,2,5,6]
19:41:42 <oerjan> CakeProphet: that's ((mkStdGen x)^y)
19:41:43 <lambdabot> No instance for (GHC.Num.Num System.Random.StdGen)
19:42:13 <CakeProphet> > sortBy (\x y -> toEnum . fst $ randomR (0, 2) ((mkStdGen x)^y)) [1,4,5,2,5,2,5,6,21,5,2,5,6,2,5,6]
19:42:14 <lambdabot> No instance for (GHC.Num.Num System.Random.StdGen)
19:42:35 <oerjan> CakeProphet: no, i mean, that's what it parses as, and it's not sensible
19:42:52 <CakeProphet> > sortBy (\x y -> toEnum . fst $ randomR (0, 2) (mkStdGen (x^y))) [1,4,5,2,5,2,5,6,21,5,2,5,6,2,5,6]
19:42:53 <lambdabot> [6,5,21,6,5,2,6,5,2,5,2,5,2,5,4,1]
19:42:55 <CakeProphet> > sortBy (\x y -> toEnum . fst $ randomR (0, 2) (mkStdGen (x^y))) [1,4,5,2,5,2,5,6,21,5,2,5,6,2,5,6]
19:42:56 <lambdabot> [6,5,21,6,5,2,6,5,2,5,2,5,2,5,4,1]
19:43:16 <oerjan> CakeProphet: not that i see how (mkStdGen (x^y) is any better
19:43:44 <CakeProphet> > sortBy (\x y -> toEnum . fst $ randomR (0, 2) (mkStdGen (x*y))) [1,4,5,2,5,2,5,6,21,5,2,5,6,2,5,6]
19:43:45 <lambdabot> [6,5,2,6,5,2,5,21,6,5,2,5,2,5,4,1]
19:44:21 <Ngevd> What#s a rust trap?
19:45:04 <oerjan> CakeProphet: i mean, i see no reason why that should be an order relation
19:45:44 -!- Zuu has quit (Ping timeout: 244 seconds).
19:46:04 <myndzi> i had to look up the vibrating square
19:46:11 <myndzi> and i am left to wonder how anyone would figure this crap out on their own
19:46:23 <oerjan> CakeProphet: oh i've experimented with sortBy crazy relations myself, just to find out what it compared.
19:47:43 <Ngevd> Don't know what to do next
19:48:39 -!- ineiros_ has joined.
19:49:13 <oerjan> <CakeProphet> @hoogle (%%)
19:49:21 <oerjan> what would that be supposed to do
19:51:55 <oerjan> <CakeProphet> @pl (\x y -> (compare `on` snd) x y `mappend` (compare `on` fst) x y)
19:54:32 <oerjan> :t (mappend `on` ($ ?y).($ ?x).(compare `on`)) snd fst
19:54:33 <lambdabot> forall a. (?y::(a, a), ?x::(a, a), Ord a) => Ordering
19:55:20 <Ngevd> What do I do, ais523?
19:55:27 <zzo38> join = id <=< id is that correct?
19:56:02 <lambdabot> forall (m :: * -> *) c. (Monad m) => m (m c) -> m c
19:56:38 <ais523> unless it's peaceful, in which case ignore it
19:56:52 <lambdabot> forall (m :: * -> *) b. (Monad m) => m (m b) -> m b
19:56:54 <Ngevd> Can't I recruit it to my cause?
19:57:02 <Ngevd> To find the Amulet of Yendor?
19:57:09 <ais523> not without appropriate magic
19:57:14 <ais523> and even so, it wouldn't live long
19:57:35 <zzo38> Don't waste your magic on such thing
19:59:24 <fizzie> "If it moves, kill it." (Well, maybe not quite.)
20:00:06 <zzo38> "It it move, kill you."
20:00:25 <Ngevd> Okay, floor three seems annoyingly empty
20:01:08 <Ngevd> No wait, I died from food poisoning
20:01:37 <fizzie> I recently managed to have a terminal (no pun intended) issue that sneakily went and pretty much randomized my options; in particular it went and turned 'confirm' off, and then I bumped into the minetown priest, and (while blind) managed to also kill one of the minetown guards. Now they're... not happy with me.
20:05:15 <ais523> Ngevd: don't eat undead that you've made dead again, don't eat things unless you killed them yourself recently
20:05:34 <ais523> fizzie: if you can steal from a shopkeeper then pay them off again, that makes them peaceful again, but it can be hard to pull off
20:05:46 <Ngevd> ais523: Thanks for the advice
20:05:58 <myndzi> the funny thing about nethack is
20:06:02 <ais523> AceHack warns you against mistakes like that
20:06:11 <myndzi> it does a pretty good job in many cases of emulating things that would be common sense in real life
20:06:18 <myndzi> but you don't expect them of a video g ame
20:06:23 <myndzi> so you do stupid things
20:06:38 <myndzi> "you mean my actions have consequences?!"
20:07:40 <ais523> well, you can destroy the entire Yendorian financial system, and kill pretty much every monster in the dungeon, and the consequences generally aren't noticeable
20:08:46 <myndzi> ha, well, i was thinking on a bit smaller of a scale
20:08:58 <fizzie> ais523: Well, I did run (walk) away, and I think that game (haven't touched it in a while) is in the castle now and doing fine, but I don't happen to have any candles.
20:09:21 <myndzi> just waiting for someone to merge nethack with dwarf fortress, haha
20:09:59 <ais523> actually, it's possible to extinct a species of monster eventually if you keep killing things
20:10:13 <myndzi> i did know that at least
20:10:22 <myndzi> i remember a friend who was trying to extinct everything once
20:10:29 <myndzi> he kept summoning and one-shotting them
20:10:47 <ais523> extinctionist is a well known stupid ascension trick
20:10:49 <myndzi> his stash room was full of boulders from killing giants etc.
20:10:52 <ais523> someone even did pacifist extinctionist once
20:10:53 <fizzie> mooz has played at least on extinctionist.
20:11:09 <ais523> which is a beautifully ridiculous combination
20:11:13 <oerjan> <ais523> someone even did pacifist extinctionist once <-- O_o
20:11:19 <myndzi> how... you make everything kill each other?
20:11:26 <myndzi> how does the last one die
20:11:32 <myndzi> throw him a poisoned water flask? lol
20:11:34 <fizzie> Since it takes a while, there was quite a lot of other stupid things he did. I think he completely dug out + lit every diggable level of Gehennom.
20:12:04 <ais523> probably get a nonextinctable monster like Rodney to make the kill
20:12:09 <myndzi> lead it down a trap or hole maybe
20:13:13 <fizzie> Random log-quote: [2006-12-12 13:47:01] <fizzie> I wonder why the Wikipedia category "Species extinct in the wild" has the page "User talk:TrogdorPolitiks".
20:13:21 <fizzie> (The statement is no longer true.)
20:15:49 <HackEgo> 2010-02-09.txt:20:54:46: <cpressey> Turing complete = Turing degree 0'
20:28:16 -!- elliott has joined.
20:28:32 <elliott> That PH sure is a long time Ireland.
20:30:15 <oerjan> an irish wake is not something to be rushed.
20:31:16 <elliott> 12:02:30: <oerjan> @tell monqy <monqy> uggh how is Q not an instance of MonadIO <-- it might be because ghc no longer includes by default the package where MonadIO is defined
20:31:21 <elliott> oerjan: um template-haskell is a hackage package now too
20:31:37 <elliott> but yeah, it doesn't depend on transformers
20:32:22 -!- Zuu has joined.
20:32:33 <oerjan> elliott: the ghc documentation has TH modules but not transformer ones listed
20:33:31 <elliott> 13:57:13: <CakeProphet> https://github.com/rfw/metafun/blob/master/metafun/list.hxx
20:33:31 <elliott> boring, done tons of times before :P
20:34:48 <elliott> 16:13:30: <Gregor> Recipe for fun: Get a Zune HD foisted on you. Install Windows 7 in a VM so you can try it. Discover just how abysmally bad it is, put it in a box, forget about it for >1yr. Remove from box, boot VM for first time in a year, try to use it again.
20:34:48 <elliott> 16:13:41: <Gregor> <Microsoft> lol, you can't do SHIT. Hahaha
20:35:00 <elliott> Gregor: What's the relevance of the Zune here -- oh, you installed Windows in the VM so you can use the Zune.
20:35:30 <elliott> 19:00:49: <Ngevd> Hold on, University Challenge
20:35:30 <elliott> 19:00:59: -!- Ngevd is now known as Taneb|Hovercraft.
20:35:30 <elliott> 19:01:38: <ais523> heh, it's on here too
20:35:35 <elliott> ais523: you realise you live in the same country
20:35:46 <ais523> elliott: I know, I mean physically in this room there's a TV
20:35:54 <ais523> and it was showing University Challenge at the time
20:36:11 <elliott> 19:29:12: <ais523> `addquote <myndzi> lol :(
20:36:12 <elliott> 19:29:14: <HackEgo> 672) <myndzi> lol :(
20:36:12 <elliott> 19:29:18: <ais523> this is everything that's wrong with modern Internet language
20:36:15 <elliott> ais523: by wrong, you mean right
20:36:28 <oerjan> NO UNIVERSITY CHALLENGE HERE
20:36:30 <elliott> (I have embraced the demon.)
20:36:33 <ais523> I just can't figure out what the line means at all
20:36:49 <oerjan> wrong country, no tv in my room and several hours later might explain it. possibly.
20:36:50 <elliott> ais523: I can, but it's hard to describe without the incredibly useful "lol" and ":("
20:37:01 <elliott> it's like ":(", but it's been modified slightly
20:37:08 <elliott> there's an inkling of a :/ type situation
20:37:27 <elliott> and it sort of has a deamplified sarcastic laughter in the background, but softened rather than harsh, at the badness of the situation
20:37:33 <elliott> something hinting at cosmic irony
20:37:48 <ais523> thanks for the description
20:37:55 -!- ais523 has quit (Remote host closed the connection).
20:38:09 <elliott> 19:31:28: <myndzi> what purpose did that text serve? it confirmed that i'd read your response, had nothing further to say, and adds that it was both humorous and unfortunate to me
20:38:15 <elliott> also I scared ais away with my psychobabble
20:38:49 -!- Ngevd has quit (Ping timeout: 252 seconds).
20:39:05 <oerjan> hey it's topical, he should be able to stand it if he voluntarily joins the channel
20:39:07 <zzo38> If you defined join in that way would fmap be fmap x = id >=> return . x
20:39:28 <lambdabot> forall (m :: * -> *) b a. (Monad m, ?x::b -> a) => m b -> m a
20:41:20 <zzo38> Why doesn't that ?x stuff working in my computer? I just used \ to display the type instead
20:41:33 <oerjan> ImplicitParameters extension
20:42:23 <zzo38> Then I suppose you can define a monad in terms of (return .) and (<=<)
20:42:44 <lambdabot> forall a (m :: * -> *) (f :: * -> *). (Monad m, Functor f) => f a -> f (m a)
20:42:58 <lambdabot> forall b (m :: * -> *) a. (Monad m) => (a -> b) -> a -> m b
20:43:36 -!- Phantom_Hoover has joined.
20:43:37 <lambdabot> forall a (m :: * -> *). (Monad m) => a -> m a
20:43:43 <zzo38> You can get return from (return .) by, if you have f = (return .) then you have return = f id
20:43:50 <zzo38> Because that is the identity laws of categories
20:44:14 <elliott> oh Phantom_Hoover came back
20:44:55 <oerjan> :t (const ?x >=> ?f) undefined
20:44:56 <lambdabot> forall (m :: * -> *) b c. (?x::m b, ?f::b -> m c, Monad m) => m c
20:45:11 <Phantom_Hoover> Is this like the last time you spoke of the devil by insulting me.
20:45:17 <oerjan> and that's one way to get >>=
20:46:16 <oerjan> the key is such a fickle beast
20:51:30 <zzo38> Defining monad in terms of (return .) and (<=<) seems a way to directly convert morphisms??
20:52:42 <oerjan> zzo38: ah yes, (return .) is a mathematical functor from the category with . as composition to the one with <=< as composition
20:53:30 <oerjan> (the latter is the kleisli category, if you haven't seen it, although it's mentioned in the Control.Arrow module)
20:53:47 <oerjan> (with a newtype wrapper)
20:53:53 <lambdabot> forall a (m :: * -> *) b. (a -> m b) -> Kleisli m a b
20:55:48 <oerjan> http://www.haskell.org/ghc/docs/latest/html/libraries/base-4.4.0.0/Control-Arrow.html#t:Kleisli
20:56:21 <oerjan> but then i expect you have, since you're investigating <=< in the first place
21:00:48 <zzo38> Yes I know that <=< and >=> is the Kleisli composition.
21:01:26 <zzo38> Now I can understand better.
21:01:51 <zzo38> And I have seen the Kleisli type
21:02:37 -!- zzo38 has quit (Remote host closed the connection).
21:04:24 -!- monqy has joined.
21:16:22 -!- oerjan has set topic: Freudian armchair psycho-babble | It is the 90s and there is time for an international hub for esoteric programming language design and deployment @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | god bless haskell america | 12345678!&^ | http://codu.org/logs/_esoteric/.
21:16:29 <Deewiant> elliott: git add -p instead of git commit --interactive
21:17:54 <elliott> Deewiant: Hmm, that looks nicer
21:18:02 <elliott> Deewiant: Is there any way to amend a previous commit by splitting it into patches? :-P
21:27:06 -!- sllide has quit (Read error: Connection reset by peer).
21:32:50 <Gregor> <elliott> Gregor: What's the relevance of the Zune here -- oh, you installed Windows in the VM so you can use the Zune. // the "it" in that sentence was the Zune, not the VM, although as it turns out the former naturally implied the latter.
21:33:50 <elliott> Deewiant: I don't support an interactive rebase will do it :P
21:35:01 <Deewiant> Just "edit" the commit you want to split
21:36:48 <elliott> Deewiant: But that involves git commit --amending it... am I supposed to just copy the files out, revert some changes, and then manually copy the changes I want in another commit back in?
21:37:42 <Deewiant> I suppose you can git reset --soft there
21:38:11 <elliott> Hmm, I've never used reset --soft before
21:38:16 <elliott> Manpage isn't very helpful
21:38:53 <Deewiant> "Sets the current head to the specified commit" "Does not touch the index file nor the working tree at all" :-P
21:39:41 -!- kmc has joined.
21:39:59 <pikhq> elliott: git reset --soft changes the head pointer to point at the commit you hand it. And nothing else.
21:40:10 <elliott> Deewiant: Right, okay, but if I then, say, remove twenty lines I want to be in a different commit, that would then obliterate them
21:40:20 <elliott> I must instead copy those lines elsewhere, outside of the repo, so that I can later restore them
21:40:36 <Deewiant> "Does not touch the ... working tree at all"
21:40:47 <elliott> Deewiant: Right, okay, but if I then, say, remove twenty lines I want to be in a different commit, that would then obliterate them
21:40:49 <elliott> I must instead copy those lines elsewhere, outside of the repo, so that I can later restore them
21:40:56 <elliott> The whole point is to reduce the size of the commit
21:41:02 <elliott> Which involves editing the files
21:41:11 <elliott> In order so that I may be able to later restorethem
21:41:14 <pikhq> elliott: What part of changing the head pointer obliterates changes?
21:41:15 <Deewiant> elliott: "that owuld then obliterate"
21:41:27 <elliott> Deewiant: Removing those twenty lines and amending the commit would obliterate those lines
21:41:46 <elliott> Such that I would not then be able to create a new commit after that one with those changes without memorising them
21:41:49 <elliott> pikhq: It's what I do after that
21:41:49 <Deewiant> You don't want to amend after the reset --soft
21:41:58 <pikhq> elliott: Ah, right.
21:42:09 <elliott> Deewiant: And git will magically figure out which parts of the commit I want?
21:42:16 <elliott> Or do you mean commit --interactive
21:42:35 <elliott> The problem is that just hunk-based selection probably isn't enough
21:42:43 <pikhq> Here is where you mutter "git's UI sucks balls".
21:42:48 <elliott> I'll need to do some selective manual reverting of changes so that each commit builds cleanly
21:42:55 <Deewiant> With add -p you can edit the hunks manually
21:43:09 <elliott> Thank god, I was almost afraid I'd be able to do this from the comfort of my editor
21:43:27 <elliott> I think I'll stick with the "manually copy the tree out and incrementally bring this closer"
21:43:36 <elliott> Oh yeah, what happens to the commit date if I add new commits in-between
21:44:12 <elliott> The situation is basically
21:44:30 <elliott> The commits made in the last few minutes are just fine
21:44:44 <elliott> That commit made some hours ago is way too big and needs splitting up with manual editing to mimic a less slapdash developmental style :-P
21:45:03 <elliott> I am fine with the commit date of the resulting split patches being "now", and bumping the commit date of all the later patches
21:46:09 -!- kmc has quit (Quit: Leaving).
21:46:25 <Deewiant> Editing in add -p /does/ open an editor :-P
21:46:44 <elliott> I like git to think I'm a vim user for commit messages, but I'm not
21:46:53 <elliott> Deewiant: More importantly, it'll need multi-file edits
21:46:58 <elliott> And cabal-dev invocations to attempt rebuilds
21:47:21 <Deewiant> Sounds like you should maybe do a new branch and cherry-pick or something
21:47:29 <elliott> So, OK, here's the real situation: How do I obliterate the last N patches without throwing away the changes
21:47:34 <elliott> Don't touch the working tree
21:47:39 <elliott> But obliterate those commits and reset the HEAD
21:47:49 <elliott> And then I'll just selectively re-commit everythin
21:47:55 -!- FireFly has quit (Quit: FireFly).
21:49:25 <elliott> I didn't realise reset could change history
21:49:34 <elliott> --soft sounds rather more hard than what --hard does
21:50:21 <Deewiant> --hard does the same thing as --soft but also throws away your changes, that seems harder
21:50:36 <elliott> Then that doesn't do what I need; --hard doesn't change HEAD
21:50:44 <elliott> Unless I'm sorely mistaken
21:51:29 <Deewiant> reset changes the head, always
21:52:05 <Deewiant> --soft makes it not change the index, --hard makes it also change the working tree
21:52:20 <elliott> I use "git reset --hard" to remove changes from the working tree after I make some changes and they suck
21:52:23 <elliott> Without changing the repository
21:53:06 <Deewiant> No, that's equivalent to "git reset --hard HEAD" which obviously doesn't change the head in practice :-P
21:53:30 <elliott> OK, time to do this shit, as they say in the hood
21:53:52 <elliott> Deewiant: btw, I take it the commit objects will remain around until a git-gc?
21:54:16 <Deewiant> And even thereafter unless I misunderstand gc
21:54:28 <elliott> How do I get rid of 'em then, git pack?
21:54:42 <pikhq> Deewiant: If the commit objects aren't referred to by anything, gc will remove them.
21:54:47 <Deewiant> Do enough shit that they fall out of the reflog
21:54:55 <Deewiant> pikhq: But aren't they referred to by the reflog
21:55:05 <Deewiant> elliott: You don't need to explicitly get rid of them
21:55:18 <elliott> Deewiant: Will they get pushed to github if I push
21:55:19 <Deewiant> They'll disappear if you don't use them
21:55:31 <Deewiant> Unless you leave a branch pointing to them or something
21:55:40 <pikhq> They expire after a given time, so it's not like you really need to think about it.
21:55:51 <elliott> elliott@katia:~/Code/mchost$ git reset --soft fe5730069ce57be21cbc2fddb5115094679e1ab8
21:55:51 <elliott> elliott@katia:~/Code/mchost$ git diff
21:55:51 <elliott> elliott@katia:~/Code/mchost$
21:56:17 <elliott> # Changes to be committed:
21:56:18 <elliott> # (use "git reset HEAD <file>..." to unstage)
21:56:18 <elliott> #modified: MC/Protocol/Fields.hs
21:56:18 <elliott> #modified: MC/Protocol/Types.hs
21:56:38 <elliott> So I just need to git reset HEAD them to get them back in the diff?
21:57:02 <Deewiant> If you just want to look at them, that is
21:57:08 <pikhq> Or you could have done git reset --mixed, to drop the staged changes, too.
21:57:13 <Deewiant> You can even git reset -p (inverse of add -p) if you're feeling adventurous
21:57:31 <elliott> Should I feel upset about the resulting stream of commits not being authentically chronological
21:57:34 <Deewiant> Right, plain git reset (it defaults to --mixed) would probably have been better
21:57:42 <Deewiant> But it's equivalent to doing another reset now
21:57:51 <pikhq> Probably the worst bit of git is that it in no way makes its own data model actually visible; you pretty much need to remember what each command actually does to the data.
21:57:55 <elliott> I did a bunch of fixes between adding ServerProtocol and before exporting ServerProtocol
21:57:55 <pikhq> Rather than it being clear.
21:58:05 <elliott> But I'm going to do it this time as me exporting ServerProtocol as soon as I write it
21:58:10 <elliott> Is that bad, am I a bad person, I feel bad
21:58:17 <pikhq> Imagine if it were "git set-head" instead of "git reset --soft", for instance.
21:58:42 <Deewiant> I wonder if somebody's written a set of aliases like that
22:00:26 <pikhq> Hmm. Actually, maybe have it be a bit clearer still. You name the data structure being modified and then the modification to do.
22:01:01 <pikhq> e.g. "git working checkout" to do a checkout into your working tree, "git stage add" to add things to the staging area, "git stage commit" to commit the staging area...
22:01:18 <Deewiant> Many operations are too complicated to express like that, though
22:01:26 <Deewiant> Like the swiss army knife that is rebase
22:01:32 <pikhq> Oh, effing rebase.
22:01:44 <elliott> Validate me or I'm switching to darcs
22:02:18 <Deewiant> You're worried about exporting something in an earlier commit now? :-P
22:02:32 <pikhq> I'd probably want to split rebase into a few different commands, TBH.
22:03:02 <elliott> At least splitting isn't very lie-like, it only lies about my committing practices, not my development order
22:03:08 <Deewiant> pikhq: rebase --interactive is immensely convenient as one command
22:03:29 <pikhq> Deewiant: It's also quite different from git rebase without --interactive.
22:04:22 <Deewiant> Maybe something like "git everything interactive-rebase" ;-)
22:04:23 <pikhq> I'd probably split it up into "git branch rebase" and "git branch rewrite" or something.
22:04:54 <pikhq> Though "branch" doesn't seem quite right, because branch isn't really a git data structure.
22:05:26 <pikhq> "history" is at least less of a misnomer.
22:07:27 <pikhq> Hmm. The "git commit" vs. "git commit -a" comes out nicely. "git stage commit" vs. "git working commit".
22:08:30 <pikhq> Clearly misguided. "git commit" would be a class of commands that operate on commit objects.
22:09:08 <Deewiant> It's equivalent to stash, add file, commit, stash pop
22:09:13 <elliott> How does one hard reset a single file
22:09:26 <pikhq> Probably "git working commit file".
22:10:36 <elliott> Aww, you can't do "git diff ../derivative-of-this-repo ." :/
22:11:04 <Deewiant> But you can do that without the "git" ;-P
22:11:05 <Lymee> Somebody need to write git repodiff or something
22:11:31 <elliott> Deewiant: Does that support patience diff??????
22:12:02 <elliott> --- ./.git/COMMIT_EDITMSG 2011-09-19 23:10:44.580093001 +0100
22:12:02 <elliott> +++ ../mchost.new/.git/COMMIT_EDITMSG 2011-09-19 23:05:02.490093001 +0100
22:12:02 <elliott> -Make fields in MC.Protocol.Types strict
22:12:02 <elliott> +Turn some simple wrapper data types into newtypes
22:12:03 <elliott> # Please enter the commit message for your changes. Lines starting
22:12:05 <elliott> # with '#' will be ignored, and an empty message aborts the commit.
22:12:09 <elliott> -# Your branch is ahead of 'origin/master' by 3 commits.
22:12:11 <elliott> +# Your branch is ahead of 'origin/master' by 7 commits.
22:12:15 <elliott> # Changes to be committed:
22:12:17 <elliott> # (use "git reset HEAD <file>..." to unstage)
22:12:19 <elliott> Binary files ./.git/index and ../mchost.new/.git/index differ
22:12:21 <elliott> diff -ru ./.git/logs/HEAD ../mchost.new/.git/logs/HEAD
22:12:23 <elliott> Thanks Deewiant, you're so right, I can do that with just "diff"
22:12:44 <elliott> File ./fifo is a fifo while file ../mchost.new/fifo is a fifo
22:12:45 <Deewiant> Don't blame me if you don't have diff aliased to the appropriate thing
22:13:26 <elliott> I wonder why git-diff doesn't work on things that aren't git repos.
22:13:45 <Deewiant> Does any other <VCS> diff? :-P
22:14:24 <elliott> Well, git diff is better than diff(1)
22:14:35 <elliott> And git is stupid, so the algorithm should not be git-specific at all
22:14:59 <elliott> Oh my god, Debian really does call ack "ack-grep"
22:15:07 <elliott> Wait, why did I install that, I want diff
22:15:22 <elliott> I am not think good right now
22:21:14 -!- SgeoN1 has joined.
22:21:57 <SgeoN1> I told my dad about the swap space issue, he said not to worry about it. I think he'll buy me another flash or HD if this wears out.
22:22:09 <SgeoN1> Can wear out be detected?
22:23:29 <SgeoN1> I'll also try switching to Lubuntu.
22:25:14 <elliott> Deewiant: git add -p, git commit --amend should do the right thing, right?
22:25:47 <elliott> As in "only amend in the stuff I select, leave the other stuff untouched in my working tree"
22:29:15 -!- Phantom_Hoover has quit (Quit: Leaving).
22:38:09 -!- ineiros has quit (Ping timeout: 240 seconds).
22:39:44 -!- ineiros has joined.
22:55:59 <oerjan> i cannot open new connections
22:56:44 <olsner> look up some IP address and see if you can connect to it by IP
22:59:40 -!- Jafet has quit (Quit: Leaving.).
23:02:40 <elliott> $ dist/build/mchost/mchost server < serverlog
23:02:40 <elliott> SHandshake (LoggedIn "9544a299e615f168")
23:02:40 <elliott> SLogin (EntityID 964784) "" 8675309 False (WorldID 0) 0 0 0
23:02:40 <elliott> mchost: Data.Text.Array.new: size overflow
23:02:49 <elliott> fizzie: The server sends string lengths as signed shorts, not unsigned, right?
23:03:02 <elliott> Obviously no real string will be long enough to show the difference, just checking. :p
23:06:55 <fizzie> Since, as you say, no strings are long enough, it's a bit of a philosophical question. Someone should check the deobfuscated source just to be sure. We do assume signed in mcmap.
23:07:28 <oerjan> that's weird now my putty shortcuts work again, but still not web
23:07:37 <elliott> If a string falls in the forest and nobody is around to hear it, is its length still measured in signed shorts?
23:07:55 <elliott> fizzie: So, it's after the worldid that parsing fucks up, you concluded, yes?
23:09:02 <fizzie> Yes. Because the unknown 02 is/was what's interpreted as the type byte for a new 0x02 SHandshake.
23:09:30 <oerjan> google by ip doesn't work either
23:09:32 <fizzie> (At least it sounded like that.)
23:09:50 <elliott> fizzie: Time to use -ddump-splices to look at what the generated code looks like, then.
23:10:23 <elliott> -> do { entity[aj6v] <- Data.Serialize.get;
23:10:23 <elliott> unused[aj6w] <- getTextUTF16be;
23:10:23 <elliott> mapSeed[aj6x] <- Data.Serialize.get;
23:10:23 <elliott> isCreative[aj6y] <- Data.Serialize.get;
23:10:23 <elliott> world[aj6z] <- Data.Serialize.get;
23:10:25 <elliott> unknown[aj6A] <- Data.Serialize.get;
23:10:27 <elliott> worldHeight[aj6B] <- Data.Serialize.Get.getWord8;
23:10:31 <elliott> maxPlayers[aj6C] <- Data.Serialize.Get.getWord8;
23:10:53 <elliott> Well, that certainly looks right.
23:10:57 <elliott> maxPlayers isn't a ubyte is it
23:11:13 <elliott> SLogin !EntityID !Data.Text.Internal.Text !GHC.Int.Int64 !Bool !WorldID !GHC.Int.Int8 !GHC.Word.Word8 !GHC.Word.Word8 |
23:11:21 <elliott> That also looks right. At least to me.
23:11:50 <elliott> fizzie: Note that "Bool" there
23:11:54 <elliott> Bools are usually bytes in the Minecraft protocol
23:12:08 <elliott> -- Bools are encoded as a byte in the range 0 .. 1
23:12:08 <elliott> instance Serialize Bool where
23:12:08 <elliott> put = putWord8 . fromIntegral . fromEnum
23:12:08 <elliott> get = liftM (toEnum . fromIntegral) getWord8
23:12:38 -!- Patashu has joined.
23:12:57 <fizzie> What's that WorldID like? Just another name for a byte?
23:13:23 <elliott> Yes, this is almost certainly the problem. The seed parses fine because big endian.
23:13:27 <elliott> And thus we have a desync.
23:15:03 <elliott> fizzie: Ah good, now it fails after parsing some entity data
23:15:21 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
23:15:38 <fizzie> Ho-hum, right; the server mode is an int is what you meant.
23:17:40 -!- ive has quit (Ping timeout: 260 seconds).
23:23:11 <SgeoN1> This does feel more comfortable with swap.
23:23:31 <SgeoN1> Free -m doesn't state that there's any swap usage though, so I'm cknfused
23:23:37 <oerjan> hm some sites work now
23:24:49 <hagb4rd> can do ansic style too? the dump thang
23:25:29 -!- sebbu3 has changed nick to sebbu.
23:26:02 <hagb4rd> no, it's not that important..i'll go out for a walk and a drink
23:26:41 <elliott> oerjan: i'm trying to en-nicen
23:26:42 <elliott> WindowItems <$> (replicateM (fromIntegral count) $ do
23:26:42 <elliott> let getShort = SE.get :: Get Int16
23:26:42 <elliott> sh <- SE.lookAhead getShort
23:26:42 <elliott> then getShort >> return Nothing
23:26:46 <elliott> the parens are... unnice...
23:26:53 <hagb4rd> hi elliott.. i'll explain this later on, if u like
23:27:05 <elliott> fmap WindowItems . replicateM (fromIntegral count) $ do
23:27:08 <elliott> oerjan: that works but is kinda ugly :/
23:27:25 <elliott> I guess I'll just go with that
23:30:25 <SgeoN1> Why is casper-rw not part of disk space according to Ubuntu
23:30:33 <elliott> WindowItems <$> fromIntegral count `replicateM` do
23:30:47 <elliott> i'm not convinced it's nicer though :P
23:30:59 <oerjan> alternative, `id` instead of $
23:31:16 <oerjan> but i somehow doubt you think that's better :P
23:31:33 <elliott> but I think my solution is more readable :P
23:31:51 <elliott> fmap WindowItems . replicateM (fromIntegral count) $ do
23:32:27 <SgeoN1> Argh, I need a home-rw too I guess
23:35:27 -!- calamari has joined.
23:36:57 <oerjan> hm my tests make me suspect i cannot correct directly to sites outside norway. not due to dns, as google.no doesn't work, but statoil.com does.
23:37:35 <elliott> oerjan: sounds like a router is down
23:37:42 <elliott> but that is soooo cool :DDDDDD
23:37:52 <elliott> reminds me of that sysadmin story thing that maybe someone remembers
23:38:35 <oerjan> however i can connect from nvg to google.no just fine, so it's not _from_ all norwegian sites.
23:40:41 <elliott> well that just means that nvg have a different isp to you.
23:40:41 <oerjan> quite possibly just my isp, since when the failure started i couldn't reach norwegian sites either.
23:40:43 -!- copumpkin has joined.
23:40:54 <elliott> you're essentially using nvg as a router in place of your isp's :P
23:41:05 <oerjan> nvg is in the university network, almost certainly
23:41:13 -!- Jafet has joined.
23:41:30 <oerjan> which is in a sense norway's oldest isp, i think :P
23:45:13 <elliott> How long until oerjan figures out we caged Scandinavia?
23:45:33 <oerjan> well i couldn't reach bbc earlier
23:45:45 <elliott> BBC: a Scandinavian institution.
23:46:06 <oerjan> elliott: well it was the first clearly european domain i tried
23:50:48 <oerjan> it does indeed look distinctly scandinavian
23:52:05 <oerjan> hm could it be that it depends on more than just country
23:52:27 <elliott> oerjan: It depends on the exact tangle of ISPs :P
23:52:38 <elliott> Cables and routers and blah blah blah.
23:53:24 <oerjan> elliott: i just realized all the working scandinavian ones were universities
23:53:46 <elliott> oerjan: maybe there's some sort of scandinavian university network thing
23:54:10 -!- augur has quit (Remote host closed the connection).
23:54:23 <oerjan> elliott: that was what i was thinking, however i hadn't actually tested any non-universities
23:54:59 <elliott> oerjan: you could use nvg as an http proxy, if you'd like it fixed sooner rather than later
23:55:36 <oerjan> hm ikea.se fails but that's aliased to akamai something
23:55:36 -!- AndChat| has quit (Read error: Connection reset by peer).
23:55:44 <elliott> Akamai is a content distribution network.
23:55:49 <elliott> They're not Scandinavian. :p
23:55:49 -!- DH____ has joined.
23:56:01 <elliott> Would take a few commands and a setting in IE
23:56:05 <oerjan> that was what i recalled, i think reddit uses them
23:57:30 <oerjan> no hurry yet, i'll just read vg.no
23:57:30 -!- DH____ has quit (Read error: Connection reset by peer).
23:57:49 -!- DH____ has joined.