00:01:54 well yes but I'm saying no pure 00:01:56 not saying Applicative 00:03:03 so the question is, what can you implement (<$>) for but not (<*>)? 00:03:33 yes 00:03:34 i think Map k has a perfectly fine <*> 00:04:01 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 I'm guessing Set doesn't count, since you don't exactly have <$> for it either 00:05:08 itidus21: FUCK THE STONE 00:05:10 I guess another thing you can do is divide the block up into different rearrangeable sections. 00:05:23 Gregor: ;_; sorry 00:05:32 lolwut 00:05:33 for similar reasons as to why you wouldn;t have <*> 00:05:43 a stone raped Gregor when he was little 00:05:51 i have worshipped hte stone too much 00:05:59 I was using "fuck" in the classical sense of "fornicate at" 00:06:04 oh! 00:06:34 it was all the rage among the classical greek. 00:06:49 oerjan: Fornicating at stuff? 00:06:54 sorry guys.. thats my hijacking the conversation. but you probably all needed a small break. 00:07:02 letting the tension go a bit 00:07:06 Gregor: why else do you think they made all those nude statues. 00:07:12 * Gregor nods sagely. 00:07:34 uughhhh all these applicative laws involve pure 00:07:39 there was no porn back then 00:08:20 there was 00:08:22 monqy: I guess that's a problem 00:08:41 http://en.wikipedia.org/wiki/History_of_erotic_depictions 00:08:45 monqy: you might be able to use <$> instead some places? 00:08:48 hm 00:08:49 perhaps 00:08:57 oerjan: why would this be taking up eighty percent of my time in a profiling: 00:08:57 printDump :: ByteString -> IO () 00:08:57 printDump dump 00:08:57 | B.null dump = return () 00:08:57 | otherwise = 00:08:57 case SE.runGetState (SE.get :: Get ClientPacket) dump 0 of 00:08:59 Left err -> hPutStr stderr err >> exitFailure 00:09:01 Right (p, dump') -> print p >> printDump dump' 00:09:09 im a _pseudo_-chinese philosopher 00:09:16 not the runGetState itself 00:09:19 but the actual function 00:09:52 famous chinese philosopher Su Do 00:10:04 lol 00:10:09 (.) <$> u <*> v = u <*> (v <*> w) 00:10:19 which somehow gets corrupted into Itidus in latin. 00:10:22 oerjan: whyyyyyyyyyyyyyyyyyyyyyy 00:10:33 The Law 00:10:48 maybe I can squeeze some more laws out of this if I stare hard enough 00:10:50 i + s/teiida/tidus + s/20/21 00:11:09 maybe it doesn't need any more laws 00:11:17 monqy: what is w 00:11:25 a typo 00:11:30 what's it meant to be 00:11:37 (.) <$> u <*> v <*> w = u <*> (v <*> w) 00:12:26 elliott: this doesn't look like my area of expertise 00:12:51 oerjan: oh well :P 00:13:03 trying to squeeze another law: 00:13:05 elliott: so spend eighty percent of your time optimizing it 00:13:06 ITIDVSXXI 00:13:24 `addquote famous chinese philosopher Su Do 00:13:26 671) famous chinese philosopher Su Do 00:13:32 `delquote 671 00:13:34 ​*poof* 00:13:50 elliott: you are an evil archival dictator 00:13:58 !haskell import Unsafe.Coerce; data Test = A | B | C; main = print (unsafeCoerce (2 :: Int) :: Test) 00:14:24 !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (2 :: Int) :: Test) 00:14:29 A 00:14:33 huh 00:14:35 !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (0 :: Int) :: Test) 00:14:36 oerjan: ban elliott for gross lack of quoting you 00:14:40 A 00:14:41 !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (99 :: Int) :: Test) 00:14:46 A 00:14:49 !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (999 :: Int) :: Test) 00:14:54 A 00:14:55 im bad at law squezeing :( 00:14:58 oerjan: help :( 00:14:59 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 !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (B :: Test) :: Int) 00:15:05 monqy: basically i think you can reshape everything into f <$> x1 <*> x2 <*> ... <*> xn form 00:15:08 4828174336 00:15:14 oh no 00:15:16 !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (C :: Test) :: Int) 00:15:21 35757122814038016 00:15:23 oh no 00:15:31 oerjan: what's everything 00:15:31 > gcd 4828174336 35757122814038016 00:15:32 2048 00:15:38 > map (div 2048) [4828174336, 35757122814038016] 00:15:39 [0,0] 00:15:45 > map (`div` 2048) [4828174336, 35757122814038016] 00:15:46 [2357507,17459532624042] 00:15:47 philosophy texts don't show up as pirated ebooks often enouhg 00:15:49 oerjan: help 00:16:02 i guess they're pointers 00:16:05 monqy: any applicative expression using <$> and <*>. 00:16:07 except 00:16:10 elliott: I would think so 00:16:11 they're not 00:16:13 because A isn't 00:16:15 !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (A :: Test) :: Int) 00:16:19 35962179842425344 00:16:31 !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((99*2048) :: Test) :: Int) 00:16:42 monqy: flattening it, so to speak 00:16:44 !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((99*2048) :: Int) :: Test) 00:16:49 A 00:16:54 !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((999*2048) :: Int) :: Test) 00:16:55 oerjan: help I can't quote you. 00:16:58 4828174336 = 0001 0001 1111 1100 1000 0001 1000 0000 0000 00:16:58 A 00:17:00 !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((9999*2048) :: Int) :: Test) 00:17:05 A 00:17:07 !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((99999*2048) :: Int) :: Test) 00:17:12 A 00:17:16 A 00:17:17 !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((999999*2048) :: Int) :: Test) 00:17:22 A 00:17:29 :-?? 00:17:31 help oerjan help 00:17:47 !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((2^9) :: Int) :: Test) 00:17:48 I guess GHC just assigns some weird integer value for enum-like constructors? 00:17:53 A 00:17:56 http://uncyclopedia.org/wiki/AAAAAAAAA! 00:17:56 CakeProphet: i suspect they /are/ pointers, but tagged 00:17:57 !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce ((2^(9+9)) :: Int) :: Test) 00:18:02 A 00:18:13 Jafet: hi how do i coerce a small integer to a data type thnx 00:18:37 toEnum 00:18:40 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 !haskell data Test = A | B | C deriving (Show, Enum); main = mapM_ (print.toEnum) [0..2] 00:19:13 I think you just want map there... 00:19:16 oerjan: well that's why I'm doing arithmetic 00:19:18 Int has one constructor, namely I# 00:19:20 Jafet: NOT EFFICIENT ENOUGH 00:19:22 er, nevermind. 00:19:56 elliott: I bet a GADT can be used to solve this issue. 00:19:57 !haskell data Test = A | B | C deriving (Show, Enum); main = mapM_ (putStr.show.(toEnum::Int->Test)) [0..2] 00:20:02 ABC 00:20:13 GADTs are sufficient for all porpoises. 00:20:18 Jafet: NOT EFFICIETNT ENOUGHGH 00:20:38 MOAR NITROGLYCERIN 00:21:27 elliott: what do you need Ints for? 00:21:41 CakeProphet: Network protocol. 00:21:59 instance Show Test where ... :P 00:22:08 What? 00:22:19 convert them into strings of integers. best plan. 00:22:21 most efficient. 00:22:45 I don't think you know what I'm talking about. 00:22:48 nope 00:22:50 CakeProphet: sounds like the reflection package 00:23:15 elliott: I'm going entirely off of "network protocol" as the explanation for what you're doing. 00:23:27 CakeProphet: also when quoting me, you might want to include enough context to make it actually funny 00:23:39 oerjan: what sounds like that? 00:23:44 CakeProphet: No, you know the exact function I was trying to write. 00:23:46 But w/e. 00:23:52 elliott: convert them into strings of integers. best plan. 00:24:15 Ancient Roman oil lamp (circa 1st Century AD) depicting woman having sexual intercourse with two men simultaneously 00:25:19 They didn't have man pages. 00:26:00 hm... 00:26:11 oerjan: ah 00:26:57 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 !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (A :: Test) :: Either Int ()) 00:27:38 Left 00:27:46 ...so much for that. 00:27:59 oh wait 00:28:20 !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (Left (A :: Test)) :: Int) 00:28:24 139868736410664 00:28:30 :( 00:29:11 data Test p = Test Int deriving blah blah blah 00:29:18 type Phantom1 = ... 00:29:20 type Phantom2 = ... 00:29:24 best plan. 00:29:45 phantom types are always the answer. 00:29:48 !haskell import Unsafe.Coerce; data Test = A | B | C deriving (Show); main = print (unsafeCoerce (Right (A :: Test)) :: Int) 00:29:52 ​-2305842462150928042 00:30:41 it would appear there's no compatible structure to exploit... 00:31:05 er wait, not phantom types 00:31:06 but 00:31:14 newtype Test = Test Int 00:31:19 a = Test 0 00:31:22 b = Test 1 00:31:23 ... 00:31:28 given Int = I# Int# , an unboxed field, that may not be too surprising 00:32:14 http://esoteric.voxelperfect.net/wiki/User:OArnoldoWhiteheada 00:32:23 I'm assuming the idea is to efficiently convert zero-argument type constructors to integers... 00:32:35 so why not just represent them as integers and name each one via functions? 00:32:52 CakeProphet: no pattern matching for one thing... 00:33:03 ah yes. 00:33:34 well you can pattern match them just not in a fun way. 00:34:26 -XPatternSynonyms :P 00:34:49 what 00:34:54 but yeah you probably just want to use toEnum and be happy. 00:35:02 (Note for monqys: not an actual thing) 00:35:20 oh 00:35:53 elliott and I were talking about pattern synonyms a few days ago. 00:36:21 http://personal.cis.strath.ac.uk/~conor/pub/she/patsy.html these ones or pattern synonyms in general 00:36:25 and now we have an example of where they would be useful. 00:36:30 i was telling you they were great and you were being lame 00:36:33 and misunderstanding 00:36:33 and bad 00:36:35 :'( 00:36:37 sure. 00:36:57 I'm always bad. 00:37:31 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:37:35 and find holes in it plz 00:37:37 I did. 00:37:38 It was really annoying. 00:38:10 or possible improvements plz 00:40:01 I have none. 00:40:13 so then it is clearly a perfect game, yes? 00:40:28 otherwise you would have something to say. :) 00:40:49 clearly 00:41:02 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 00:41:25 perhaps I should ask instead 00:41:27 what is wrong with it? 00:41:36 I guess that's similar to "find holes" 00:41:41 but less specific 00:41:56 it's not a hole, it's a portal! 00:44:20 ...surely elliott is not passing up this great opportunity. 00:44:34 what better things could he have to do? 00:46:00 monqy: (.) <$> u <*> v <*> w = u <*> (v <*> w) + some variations with <$> on the right side should suffice to flatten everything 00:47:19 I wonder if I shouldn't use String for strings guaranteed to be 120 characters or less. 00:47:26 Rather than Text. :p 00:47:57 u <$> (v <*> w) = (u .) <$> v <*> w 00:48:05 Though I guess it's no big deal. 00:48:10 Text.Array sounds like the right choice. 00:48:34 u <$> (v <$> w) = (u . v) <$> w (Functor law) 00:48:48 but yes also not a big deal. 00:49:16 oerjan: where are these laws documented I never see them. 00:50:00 CakeProphet: these ones i'm just reconstructing, but the ones with pure in them i think i've seen... 00:50:11 ah 00:50:39 u <*> (v <$> w) = (. v) <$> u <*> w 00:50:49 monqy: i think those four are all needed 00:51:29 is length on arrays O(1) in Haskell? 00:51:51 yeah 00:52:08 so it stores the link as an Integer I'd hope? 00:52:13 otherwise array sizes are fixed. 00:52:21 ...they are fixed. 00:52:27 er I mean 00:52:29 well, per array 00:52:38 otherwise there's a fixed maximum array size. 00:52:57 CakeProphet: well i think it's Int, really. 00:53:08 they're supposed to fit in memory. 00:53:25 > 2^32 00:53:26 4294967296 00:53:31 NOT GOOD ENOUGH. 00:53:45 CakeProphet: also that's just underneath. there's an entire Ix class for types that may be used for array indices. 00:53:51 > maxBound :: Int 00:53:52 9223372036854775807 00:54:05 such short-sightedness 00:54:33 it won't be long before we have thousands of terabytes of memory. 00:54:56 int may be bigger by then 00:55:01 who knows!!! 00:56:22 no all systems will be 64-bit obviously 00:56:42 CakeProphet: You're not far off; existing computers have a hundred terabytes of RAM. 00:56:44 Well, at least one. 00:56:50 I can't find RAM information for Jaguar or Fujitsu K. 00:56:59 But Roadrunner has 103.6 Tio of RAM. 00:57:10 http://www.haskell.org/ghc/docs/latest/html/libraries/haskell98-2.0.0.0/Ix.html 00:57:15 Admittedly it's not all on the one motherboard. 00:57:31 And accessing RAM at the opposite end of the complex is probably _not_ as fast as you expect RAM to be. 00:57:54 but still reasonably fast I'd imagine. 00:57:58 CakeProphet: http://www.haskell.org/ghc/docs/latest/html/libraries/base-4.4.0.0/Control-Applicative.html lists the laws 00:58:06 CakeProphet: Well, not really. 00:58:14 The request and response have to go over Infiniband. 00:58:23 Numa numa yay 00:58:30 It's faster than Ethernet, but... 00:58:43 It might even be faster than reading from disk; Inifiniband is pretty good. 00:58:45 i misread as infinibad 00:58:50 is the speed of light not good enough for you? 00:58:50 But it'll be orders of magnitude off local RAM. 00:58:55 The same thing already happens on a single motherboard 00:59:02 CakeProphet: Light is pretty slow. 00:59:08 Jafet: That's a rather lower distance. 00:59:10 See the multi-socket Xeon or Opteron boards 00:59:19 Wikipedia says Roadrunner's complex is 6,000 sq ft. 00:59:24 Or 560 square metres. 00:59:30 elliott: you have high expectations for "fast" :P 00:59:32 I'd like to see a motherboard _that_ big. 00:59:39 CakeProphet: So do computers. 01:00:00 Latency isn't really that important for memory. 01:00:05 s/computers/humans that use computers/ 01:00:10 It just means you have to pipeline moar. 01:00:20 And not share cache lines. 01:00:56 also what do you mean faster than reading from disk? isn't that slow? 01:01:03 oh you're saying accessing memory from across the complex 01:01:06 might be faster than that. 01:01:39 It might be nearly as fast if every node had a flash disk 01:03:17 I don't think Adobe flash is a good persistent storage device. :3 01:03:36 (>:3) 01:03:54 Jafet: You mean completely in place of RAM? 01:03:58 Not over SATA, that's for sure. 01:04:11 shiver me timbers, it's that day again 01:04:30 oerjan: wat 01:04:36 oerjan: ahoy mate it is. 01:04:38 Also, 100T of flash isn't cheap neither 01:05:12 oerjan: well, not in these waters it ain't. But soon! 01:05:33 s/neither/either/ 01:05:38 oerjan: oh right 01:05:42 oerjan: plz refrain 01:05:51 registers are fast. 01:06:00 elliott: help what is negations. 01:06:05 itidus21 has a good point 01:06:07 CakeProphet: please refrain as well 01:06:07 elliott: arrright! errr, i mean... 01:06:11 they could just replace everything with registers. 01:06:17 Yes. 01:06:31 Well, compilers tend to already assume machines have infinite registers. 01:06:43 (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:44 good plan 01:06:46 Well, a finite but arbitrary amount. 01:07:32 itidus21: also, registers are fast because they are pretty much part of the CPU. 01:07:59 and so don't have to travel, or deal with other physical nuisances. 01:08:04 travel = latency 01:08:16 sure. 01:08:32 im not certain on that though 01:08:40 if you queue up a stream of data is it fast? 01:08:41 it's part of it. 01:08:46 also what? 01:09:03 i guess you can't just "queue up a stream of data" 01:09:08 my head has the wrong conception 01:09:13 "queue up a stream of data" is abstract-speak. latency is considered with physical implementation. 01:09:22 *concerned 01:10:27 quantum computers ahoy then? 01:10:40 what 01:11:05 perhaps quantum computers are fast 01:11:42 sure 01:14:33 monqy: ya can't tell me when to avast ya scurvy rat-nosed scalawag. 01:14:53 :| 01:15:13 -!- Jafet1 has joined. 01:15:25 fizzie: Ping 01:15:49 -!- Jafet has quit (Ping timeout: 260 seconds). 01:16:17 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 Behold the intelligence of Wikipedia talk page commentors. 01:17:07 -!- Jafet1 has changed nick to Jafet. 01:17:52 But can it run Crysis. 01:18:15 1000% more expensive 01:18:16 Hurr hurr 01:18:22 -!- copumpkin has joined. 01:18:44 (at $400/PS3) 01:18:47 more ps3s 01:19:34 s/Crysis/Dwarf Fortress/ 01:20:14 if thats the case im guessing ps3 cost reduction is from selling a lot 01:20:19 can it run the entire generated world of dwarf fortress all at once? (is that even a thing you can do with DF?) 01:20:42 it should be. 01:21:29 51.8 million ps3's have been sold 01:21:37 that probably helps keep costs down 01:21:59 #esoteric - masters of economic theory 01:23:57 CakeProphet: well we could only be marginally worse... 01:24:58 "Move along, these are not the gaming rigs you are looking for." 01:26:03 oerjan: argh, hold fast and quit ye optimism. 01:26:29 http://www.minecraftwiki.net/images/8/8c/Items_slot_number.JPG 01:26:33 What an incredibly rational numbering system. 01:26:35 CakeProphet: how is that optimism 01:26:50 oerjan: I don't bloody know I'm a pirate! 01:27:03 elliott: makes sense to me. 01:27:08 also it's all rationals 01:27:15 so... I guess you weren't being sarcastic? 01:27:43 CakeProphet: Note how it randomly skips from thirty-five to eighty. 01:27:46 Then from eighty-three to a hundred. 01:27:53 And then starts going upwards rather than left-downwards. 01:28:07 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:19 *choice 01:28:30 Why doesn't it distinguish the immediately-accessible inventory from the rest of it, then? 01:28:36 There's no corresponding jump; it just goes from eight to nine. 01:28:49 that's fine it can do that... :P 01:28:51 so what does 80 81 82 83 produce 01:28:56 those are crafting slots. 01:28:58 for crafting 01:28:59 things. 01:29:04 well what has been crafted? 01:29:07 seems like nothing 01:29:07 nothing 01:29:10 that is a diagram 01:29:30 they need to take out 83 and replace it with Add 01:29:39 .. 01:29:41 ^Sum 01:29:43 ... 01:30:10 it's basically application 01:30:16 argh! man ye cannons we spotted an itidus 01:30:18 except not 01:30:27 4 term application 01:30:31 stop. 01:30:55 ok i see where im going wrong 01:31:01 i ought to stop 01:31:07 it's minecraft. not a programming language (well... elliott shhhh). 01:32:01 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 I wonder what happens when you try to store something in 36-79 01:33:42 DEATH. 01:34:05 {5,10,Sum,Increment} = 16 01:34:32 (5,10,Multiply,Increment) = ??? 01:34:36 help order of operations 01:34:57 51 01:35:06 itidus21: what 01:35:14 5*10= 50 + 1 = 51; 5+1=6*10 = 60 01:35:28 oerjan: what rules did you use because it could also be 55 or 60. 01:35:43 sorry i didnt use proper = 01:35:49 ah it's a set? 01:35:57 it's ah uh.... 01:36:03 minecraft crafting window. 01:36:06 thing 01:36:12 with a list of 4 items 01:36:17 >_> 01:36:18 * itidus21 is just thinking of practical uses 01:36:51 {0, Inc} = 1 01:36:51 oerjan: so basically it's not anything so the rules are ambiguous is what I meant. 01:36:54 CakeProphet: clearly this is a case for gamma calculus. 01:37:01 {0, Inc, Inc, Inc} = 3 01:37:09 itidus21: what are you doing 01:37:27 i'm doing it wrong 01:37:31 :P 01:37:48 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:37:52 oerjan: help 01:38:41 The lambda-gamma calculus: A language adequate for defining recursive functions 01:38:49 {5, Stick, Stick, } 01:38:54 I wonder if this author realizes that the lambda calculus is adequate for defining recursive functions 01:39:03 itidus21: what 01:39:18 monqy: it's a uhmm.. 01:39:32 -!- SgeoN1 has quit (Read error: Connection reset by peer). 01:39:34 crafting of a '5' and 'stick' and 'stick' 01:39:35 CakeProphet: i'm not sure all the google links are relevant. or any. but it should be a chemistry analogue. 01:39:50 oerjan: yes that's what this one is about 01:39:59 http://www.gridworkflow.org/snips/gridworkflow/space/Gamma-calculus 01:41:57 well minecraft follows arbitrary rules as far as i know 01:43:05 -!- oerjan has quit (Quit: Good night). 01:43:25 oerjan quits 01:43:57 i havent actually got minecraft, but it is a nice quality that crafting is a finite system 01:44:07 at least i hope it is finite 01:44:25 help what is he talking about 01:44:41 crafting table.. taking a number of elements. creating a single element 01:45:06 explain how an infinite system would work. 01:45:36 autogenerated & autoexpand 01:45:48 or realtime processing 01:46:28 well suppose that there were infinite possible results of crafting 01:46:44 any element mixed with any other would make a element 01:46:57 eventually you should by able to transmut them in circle 01:47:06 that's not infinite. 01:47:13 it could be 01:47:23 oops 01:47:31 uhhhmmm 01:47:54 if it create new element 01:48:01 if you allowed the element/object descriptor size to be unbounded 01:48:03 and the transmutation can add AND remove element 01:48:13 can be infinite 01:48:41 i dunno.. what does minecraft terminology call those objects? 01:48:42 (but i doubt it'ld be a good apport to the game) 01:48:47 im not actually a minecraft player 01:49:06 i guess it doesn't need a precise name. object works 01:49:14 item 01:49:15 probably 01:49:19 haha 01:49:44 -!- Jafet has quit (Ping timeout: 260 seconds). 01:49:59 hilarious. 01:50:16 wiki says, among other definitions, Item is: entry in a list, or one object in a collection of objects 01:50:48 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 "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 (this channel is the only one where people are speaking right now among all the channel i'm on) 01:51:03 I HATE YOU NOTCH 01:51:06 I HATE YOUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 01:51:30 notch.................................................. 01:51:40 `log notch 01:51:41 speaking of elliottcraft 01:51:44 2011-09-19.txt:01:51:03: I HATE YOU NOTCH 01:51:48 `log notch 01:51:52 2011-01-07.txt:18:51:39: Wait, is Notch actually against *redstone circuits* 01:51:58 `log notch 01:52:01 2010-12-21.txt:22:34:52: Goosey: Because god dammit Notch. 01:52:03 -!- Jafet has joined. 01:52:06 `log notch 01:52:10 2010-11-18.txt:23:16:35: Though based on Notch's tweets, he has it sort-of working and it will be in next patch. 01:54:17 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 try other wiki, like wikia, or some rpg dev communities :p 01:55:24 why is item (video game) even a thing 01:55:28 er 01:55:31 item (gaming) 01:55:54 "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 sounds like a thing itidus21 would say 01:56:02 -!- sebbu has quit (Read error: Connection reset by peer). 01:56:03 somehow 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 elliottcable news: elliottcable has a channel named after himself. I will now land-grab #elliott. 02:01:42 shachaf: Accept that invite so I can kick you. 02:02:07 Oops, I should have used the message "u mad". 02:02:10 I mad. :( 02:02:25 Whoops, you can't kick me. 02:02:29 elliott mad! 02:02:44 @admin - shachaf 02:02:44 Not enough privileges 02:02:49 @admin + shachaf 02:02:53 Useful. 02:02:56 Now do it to me. 02:03:02 oh baby. 02:03:07 @@ (@admin + elliott) (@admin - elliott) 02:03:08 Plugin `compose' failed with: Privledged commands cannot be composed 02:03:09 @admin - shachaf 02:03:09 Not enough privileges 02:03:19 I wonder if @@ is atomic. 02:03:27 Maybe if it didn't block that, I could get in in the millisecond between the two commands. 02:03:38 @admin + elliott 02:03:39 @admin - elliott 02:03:39 hey I bet it's atomic. 02:03:41 @admin - shachaf 02:03:41 Not enough privileges 02:03:43 oijsadiosdjofidjoigjdg 02:03:46 IM GOING TO RIP YOUR SKULL OUT 02:03:48 "millisecond"? 02:04:01 Sorry, Haskell is slow, isn't it? Second. 02:04:01 MOAR LYK MEGASECOND AMIRITE? 02:04:10 Oh, that was your joke. :/ 02:04:20 elliott: My joke was about *something* being slow. 02:04:26 I thought he was confused about why it would take an entire millisecond... 02:04:30 Your FACE is slow. 02:04:34 CakeProphet: ME too. 02:04:38 s/ME/Me/ 02:04:39 : 02:04:40 - 02:04:41 ( 02:04:47 That... is the slowest face. 02:04:58 : 02:04:59 02:04:59 - 02:05:00 02:05:01 ( 02:05:07 : 02:05:09 Also that. 02:05:13 @admin + elliott 02:05:13 @admin - elliott 02:05:14 CakeProphet is just a :. 02:05:15 @admin - 02:05:15 Not enough privileges 02:05:20 @admin + elliott 02:05:21 @admin - elliott 02:05:34 02:05:39 Don't even GIVE A SHIT 02:05:44 "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:05:47 FML. 02:05:56 admin + monqy 02:06:06 @admin + elliott 02:06:35 la la la 02:06:38 - 02:06:48 @admin - shachaf 02:06:51 @admin - dons 02:06:52 Not enough privileges 02:06:54 finally 02:06:55 @admin - mauke everyone 02:07:01 What, I am below the dons. 02:07:06 @admin - mauke 02:07:06 Not enough privileges 02:07:10 Aw. :/ 02:07:20 @vixen-on plz 02:07:20 Unknown command, try @list 02:07:22 cry 02:07:23 @list 02:07:24 http://code.haskell.org/lambdabot/COMMANDS 02:07:34 02:07:35 @uptime 02:07:35 uptime: 5d 10h 33m 21s, longest uptime: 1m 10d 23h 44m 29s 02:07:40 @listchans 02:07:40 ##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 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 learnanycomputerlanguage #lesswrong #macosx #macosxdev #rosettacode #scala #scalaz #scannedinavian #teamunix #unicycling #uscs2010 #xmonad #yi weird# 02:07:47 weird# is some channel. 02:07:56 I'm joining. 02:07:56 unboxed# 02:08:21 #learnanycomputerlanguage what 02:08:27 elliott: a brilliant observation. 02:08:34 ( 02:08:39 my slow face is complete. 02:08:40 shachaf: It's a channel where all the people inside have their guts spewed out directly into the user list. 02:08:43 It's kind of hideous. 02:09:06 #functionaljava what 02:09:14 that's not a thing 02:09:26 It's a thing. 02:09:46 also what is #lesswrong 02:09:51 sounds like elitist pricks. 02:10:10 not at all like the rest of Freenode. 02:10:52 It's lesswrong.com, man. 02:11:58 it appears to be some sort of elitist IRC club. 02:13:02 I can't tell whether CakeProphet is making a joke wrt Less Wrongers' holier-than-thouness or is just dim. 02:13:13 Actually I can never understand whether CakeProphet is joking or just dim. 02:13:27 ...my humor often relies on playing stupid. 02:13:38 DIM CakeProphet AS INTEGER 02:14:09 they are voiced I think 02:14:13 CakeProphet: That's hard to pull off when you're stupid. 02:14:15 it's a "karma-limited channel" 02:14:27 (My humour often relies on being an asshole without any emoticons.) 02:14:41 :) :) :) :) :) :) :) 02:14:44 that's easy to do. 02:14:53 FFFFFFFFFFFFUUUUUUUUu 02:14:59 I typed /list weird# 02:15:04 I'm probably about to be kicked. 02:15:12 bahahaha 02:15:23 WHY WOULD THAT LIST EVERY CHANNEL 02:15:25 WHYYYYYYYYYYYYYYYYYYYY 02:15:29 elliott: are you perhaps suggesting that I am too stupid to pull off playing stupid? 02:15:39 I am shocked 02:15:43 I thought we friendship. :( 02:16:20 are you playing dumb now too 02:16:26 Hey ... I'm still alive. 02:17:17 Gregor: Uh 02:17:22 monqy: no, elliott and I are great franz 02:17:22 Gregor: I /list occasionally for the hell of it 02:17:33 I'm even in his channel about elliottcable 02:17:35 It's perfectly fine, freenode is not gigantic and the internet is fast :P 02:17:48 Many clients expose a fancy GUI /list, even 02:18:06 See Server → List of Channels... in X-Chat 02:18:08 s/X-/X/ 02:18:12 Freenode apparently doesn't have squery 02:18:40 well, it doesn't have ALIS 02:18:43 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 Like Smalltalk, except you can access those things Smalltalk doesn't let you access? 02:19:09 I think C? :> 02:19:42 tswett: Do you mean VPRI's cola work? 02:19:49 well, C doesn't have reflection I guess. 02:19:53 elliott: yes, that sounds right. 02:19:58 http://piumarta.com/software/cola/ 02:20:11 reflective-C 02:20:21 The VPRI is where Alan Kay's at these days, FWIW. 02:20:29 Yes, yes. Everything is late-bound. That's it. 02:20:48 You're the man now, dog. Thank you. 02:21:15 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:19 elliott: fuck you. 02:21:26 There. Perfect. Carry on. 02:22:01 tswett: Excellent. 02:22:11 elliott is a pretty cool guy. eh links websites and doesn't afraid of anything. 02:22:14 `addquote 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... elliott: fuck you. There. Perfect. Carry on. 02:22:16 671) 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... elliott: fuck you. There. Perfect. Carry on. 02:22:24 elliott: I thought it would SendQ me to hell :P 02:22:36 Gregor: Isn't that SENDING too much :P 02:22:42 elliott: archival. fascist. 02:22:51 No, I think SendQ is when you're receiving too much. 02:22:52 elliott: Faaaaaaaaaaaaaair point. 02:22:59 I.e. the server is sending you too much. 02:23:00 CakeProphet: I omitted nothing. 02:23:01 elliott: "Kicked for flooding" is sending too much 02:23:05 SendQ is the server's send queue 02:23:26 You're both wrong. About *everything*. 02:23:38 monqy is the mon queuey 02:23:42 -!- kmc has quit (Quit: Leaving). 02:23:46 hi what 02:24:17 `log hi 02:24:21 A quinquagintillion is a queuein queueuagintillion, I suppose. 02:24:23 2005-09-30.txt:18:01:28: but the main thing is ready 02:24:41 `log \bhi\ 02:24:42 `log \bhi\b 02:24:43 egrep: Trailing backslash 02:24:46 2010-02-12.txt:20:43:01: Oh, hi, scarf. 02:25:00 `log . 02:25:08 * CakeProphet whistles. 02:25:08 shuf: memory exhausted 02:25:18 poor shuf 02:25:32 May he rest in piece. 02:25:39 `log 02:25:40 [sic] 02:25:41 2007-08-15.txt:23:17:35: so people think it's a real person... at least for some time 02:25:46 That's what `log is for. 02:25:49 tswett: shuf is male? 02:25:57 Well... a piece of him is. 02:26:12 `log (.*?).*?(?<=...) 02:26:12 Weird. 02:26:15 2010-10-05.txt:16:13:52: ais523: changing "< end" to "<= end-1" fixed it. 02:26:30 `log (.*?)+?(?<=...). 02:26:34 2011-01-08.txt:18:57:40: |^(0) => #2 <= {(0,0): inc(#0); (0,1): inc(inc(#1))} 02:26:44 Actually, I don't know anything about this shuf person. Who is he? 02:27:16 Gregor's slave. his memory is exhausted so he's not really sure who he is. 02:27:40 `log 2010-10-05.txt:16:13:52: 02:27:43 2011-09-19.txt:02:27:40: `log 2010-10-05.txt:16:13:52: 02:27:46 `logurl 2010-10-05.txt:16:13:52: 02:27:48 http://codu.org/logs/log/_esoteric/2010-10-05 02:28:06 Now, I wonder, why the 'L' is an integer represented by a pointer whose *lowest* bit is 1, in Smalltalk? 02:28:20 tswett: That makes sense. 02:28:33 Systems only allocate even pointers, usually. 02:28:45 If you do that, then integer-pointers have to be converted before they can be treated as integers. 02:28:52 So having the pointer tag be 0 avoids de-masking a pointer before dereferencing it. 02:28:57 tswett: Yes, they do. 02:29:02 That's better than pointer-pointers needing conversion. 02:29:06 This is the standard system. 02:29:16 Yes, that is true. 02:29:32 integers to pointers are the worst. 02:29:58 Yeah, the worst integers are the ones that intege to pointers. 02:30:39 no they're the worst of worse things. 02:31:07 (As everyone knows, "to intege" means "to be whole".) 02:31:27 !wacro 02:31:28 PMERSGFM 02:31:32 speaking of the worst things 02:31:50 but all integers must have an integirth. 02:32:25 Yes, PMERSGFM is also definitely one of the worst things. 02:32:31 !wacro 02:32:31 CBCN 02:32:33 !wacro 3 5 02:32:34 APB 02:32:35 !wacro 3 5 02:32:36 AOE 02:32:37 !wacro 3 5 02:32:37 DSMBE 02:32:38 !wacro 3 5 02:32:39 BBA 02:32:39 !wacro 3 5 02:32:40 baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad 02:32:40 GPB 02:32:42 !wacro 3 5 02:32:42 VHMC 02:32:44 !wacro 3 5 02:32:45 MMRR 02:32:47 !wacro 3 5 02:32:48 BPMA 02:32:54 these are all perfectly acceptable acronyms. 02:33:15 !warco 35 02:33:20 !wacro 35 02:33:21 BTSDFSDBCDTHAEUCCIRCMOEBT 02:33:30 !wacro 25 02:33:31 NKUSPBLMBFAFASVKICIVCCUFS 02:33:37 -!- SgeoN1 has joined. 02:33:48 !show wacro 02:33:48 perl (sending via DCC) 02:33:58 beautiful code. 02:34:21 CBCN < Chinese Bakery Cake Network 02:34:22 Or something 02:34:35 monqy has high expectations for acronyms. 02:34:44 and does not realize that most acronyms are actually not pronouncable or clever in any way. 02:35:01 most acronyms suck 02:35:18 monqy: then you can admit that this is a faithful acronym generator. 02:35:22 scuba? good. laser? good. pmersgfm? bad. 02:35:41 !wacro 3 5 02:35:42 CASB 02:35:43 !wacro 3 5 02:35:44 WCP 02:35:45 !wacro 3 5 02:35:46 GWCA 02:35:46 !wacro 3 5 02:35:47 UTW 02:35:48 !wacro 3 5 02:35:49 BLCTP 02:35:50 !wacro 3 5 02:35:51 RLTD 02:35:58 BLCTP could easily be a transfer protocol 02:36:00 Casualty Actuary Society, Bitch. 02:36:29 We Calculate Pensions. Go With Casualty Actuary. 02:36:41 -!- Patashu has quit (Ping timeout: 258 seconds). 02:36:47 Big Lounging Cat Transfer Protocol 02:37:06 Universal Turing Waffle 02:37:20 Grant Wacro Complete Annihilation 02:37:48 its a sign 02:37:56 Royal Lagoon Transformation Dance. 02:38:09 The most important dance. 02:38:15 !wacro 3 6 02:38:16 GCGPD 02:38:19 !wacro 3 6 02:38:19 CCS 02:38:20 !wacro 3 6 02:38:21 TKW 02:38:21 !wacro 3 6 02:38:22 LRJE 02:38:23 !wacro 3 6 02:38:24 TPPP 02:38:25 !wacro 3 6 02:38:26 CBNT 02:38:27 !wacro 3 6 02:38:28 ECSCJ 02:39:07 monqy is jealous. 02:39:08 Cool Cat Splendor 02:39:25 because he's never coded anything bad. 02:39:26 Transfer Protocol Protocol Protocol. 02:40:46 turquoise paper party palace 02:41:16 The most important palace. 02:41:23 Centralized Bureau of Neglect and Torment 02:41:59 CCS means one and only one thing to me. >> 02:42:01 To Kill a Wacro 02:42:13 hm? 02:42:27 A certain anime. 02:42:28 how can it mean only one thing!! 02:42:30 oh 02:42:31 Doh! 02:42:40 !wacro 3 6 02:42:41 HZLMJA 02:42:48 the best one yet. 02:42:54 !wacro 3 6 02:42:55 !wacro 3 6 02:42:55 FFS 02:42:55 !wacro 3 6 02:42:55 PUQE 02:42:56 KLD 02:43:05 bahahaha 02:43:06 -!- rottytooth has left. 02:43:18 FFS. PUQE. 02:43:24 kld 02:44:16 hurriedly, zealous leprachauns make jam always 02:44:21 Hey Zappa Lame Michael Jackson Authority. 02:44:29 Kill Languising Daemons. 02:44:41 It's a cross between languishing and disguising. 02:45:28 Finite Fourier Sandwich 02:45:49 Please Understand Queen Elizabeth 02:46:05 !wacro 4 7 02:46:06 BBDR 02:46:09 The most important kind of elizabeth. 02:46:22 Be Back; Dumping Raccoons 02:46:28 !wacro 4 7 02:46:29 CMLA 02:46:49 !wacro 4 7 02:46:50 CDSDAG 02:47:22 !wacro 4 7 02:47:23 UPHESG 02:47:38 Unless Pedro Has Escaped, Smoke Gum. 02:47:53 Cancel My Latest Appointment. How plausible. 02:48:08 Then again, why would you ever cancel a past appointment? 02:48:24 Lost time is never found again. Ben Franklin discovered this. 02:48:28 a past appointment 02:48:33 not a past fulfilling of said appointment 02:48:38 thus completely reasonable. 02:48:39 ... 02:48:42 or something. 02:49:04 CMLA is also Catholic 02:49:07 Metro League of Atlanta 02:49:12 boring 02:49:38 monqy is just never satisfied with anything. 02:49:43 ever 02:50:40 you should program something. 02:50:43 I AM INTRIGUED 02:50:50 BY WHAT YOU MIGHT PRODUCE. 02:50:54 like banans and oranges. 02:50:56 This is the most tedious thing ever. 02:51:19 elliott: perl 02:52:05 What. 02:52:12 Cakeprophet Desires Salvation, Destroys Acronym Generator 02:52:17 put some kind of --autogenerated code goes here comment 02:52:27 and then write a Perl script to auto-generate code. 02:52:36 using -pi 02:52:39 What does "wacro" stand for, anyway? 02:52:45 weighted acronym 02:52:51 wreallybad acronym 02:53:27 the letters are given weighted probabilities based on frequency as a starting letter of entries in /usr/share/dict/words 02:53:33 CakeProphet: I'm already using TH. 02:53:43 oh... yes that's probably a better choice. 02:53:54 perl to generate th 02:53:54 I should learn me some TH for great good sometime. 02:55:40 tswett: the first incarnation was called !simpleacro but is now !acro 02:55:41 !acro 02:55:44 VRWHT 02:55:48 as you can see it's not so great. 02:55:53 !acro 02:55:54 !acro 02:55:55 !acro 02:55:55 !acro 02:55:56 !acro 02:55:57 BIN 02:55:57 AYVGX 02:55:58 NMSHGRN 02:55:59 IKSBWCOBGR 02:55:59 XPPFGZGTR 02:56:17 !show acro 02:56:17 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:40 hmmm... is Char a Random? 02:56:58 :t randomR 02:56:58 forall a g. (Random a, RandomGen g) => (a, a) -> g -> (a, g) 02:57:10 > randomR ('a', 'z') (mkStdGen 123981294812412415123) 02:57:10 ('x',31932274 40692) 02:57:18 ...oh, well that would simplify things greatly. 03:00:46 now I wonder if that's an inclusive range. 03:00:51 I believe so. 03:00:59 I think so. 03:01:08 > randomR (0,0) (mkStdGen 0) 03:01:09 (0,40014 40692) 03:01:13 > randomR (0,1) (mkStdGen 0) 03:01:14 (1,40014 40692) 03:01:17 Yes. 03:01:19 otherwise what the hell would randomR (True, False) even mean. 03:01:51 yay, best Show instance evar 03:02:37 copumpkin: Totally 03:02:45 You just need an instance Num (... -> ...) 03:02:51 > randomR (False,True) (mkStdGen 0) 03:02:51 That constructs a StdGen 03:02:52 (True,40014 40692) 03:02:53 > randomR (False,True) (mkStdGen 0) 03:02:54 (True,40014 40692) 03:02:57 > randomR (False,True) (mkStdGen 0) 03:02:58 (True,40014 40692) 03:03:02 Lymee: Haskell is a pure language. 03:03:02 > randomR (False,True) (mkStdGen 1) 03:03:03 (True,80028 40692) 03:03:05 oh derp 03:03:08 lol 03:03:12 elliott, I missed the "0" part 03:03:13 -!- Jafet1 has joined. 03:03:14 > randomR (False,True) (mkStdGen 2) 03:03:15 (True,120042 40692) 03:03:19 > randomR (False,True) (mkStdGen 3) 03:03:19 (True,160056 40692) 03:03:22 Lymee: That wouldn't stop it being pure. 03:03:34 > map (randomR (False,True) . mkStdGen) [1..] 03:03:35 Lymee: yeah you'll have to change the seed a lot. 03:03:36 [(True,80028 40692),(True,120042 40692),(True,160056 40692),(True,200070 40... 03:03:37 > map randomR (False,True) . mkStdGen $ [0..99] 03:03:38 Couldn't match expected type `[(a, a)]' 03:03:38 against inferred type `(GHC... 03:03:43 Dammit, Lymee beat me to it. 03:03:45 * CakeProphet noticed this earlier. 03:03:47 > map (fst . randomR (False,True) . mkStdGen) $ [0..99] 03:03:47 > map (fst . randomR (False,True) . mkStdGen) [1..] 03:03:48 [True,True,True,True,True,True,True,True,True,True,True,True,True,True,True... 03:03:49 [True,True,True,True,True,True,True,True,True,True,True,True,True,True,True... 03:03:52 Nice. 03:04:03 > map (fst . randomR (True, False) . mkStdGen) [1..] 03:04:05 [True,True,True,True,True,True,True,True,True,True,True,True,True,True,True... 03:04:13 That'll be the same as (True,True). 03:04:38 @check \i -> let gen = mkStdGen i in randomR (True,True) gen == randomR (True,False) gen 03:04:39 No instance for (GHC.Classes.Eq System.Random.StdGen) 03:04:39 arising from a use... 03:04:45 @check \i -> let gen = mkStdGen i in fst (randomR (True,True) gen) == fst (randomR (True,False) gen) 03:04:45 "OK, passed 500 tests." 03:05:36 !addinterp haskell import System.Random; import Control.Monad; main = (replicateM =<< randomRIO (2, 10)) `ap` (putChar =<< randomRIO ('A', 'Z')) 03:05:37 ​There is already an interpreter for haskell! 03:05:45 !delinterp acro 03:05:45 ​Interpreter acro deleted. 03:05:49 !addinterp acro haskell import System.Random; import Control.Monad; main = (replicateM =<< randomRIO (2, 10)) `ap` (putChar =<< randomRIO ('A', 'Z')) 03:05:49 ​Interpreter acro installed. 03:05:52 !acro 03:06:16 rip acro 03:06:41 erm... 03:06:48 !haskell import System.Random; import Control.Monad; main = (replicateM =<< randomRIO (2, 10)) `ap` (putChar =<< randomRIO ('A', 'Z')) 03:07:02 it is broken 03:07:08 yes I know I'm looking at the error right now. 03:07:11 trying to make sense of it. 03:07:43 :t randomRIO 03:07:44 forall a. (Random a) => (a, a) -> IO a 03:07:49 -!- Jafet has quit (Ping timeout: 260 seconds). 03:08:13 oh I see. 03:08:35 :t replicateM =<< randomRIO (2,10) 03:08:35 Couldn't match expected type `m a -> Int' 03:08:35 against inferred type `IO t' 03:08:35 In the second argument of `(=<<)', namely `randomRIO (2, 10)' 03:08:52 erm, nevermind no I don't 03:09:13 :t replicateM >>= randomRIO (2,10) 03:09:14 Couldn't match expected type `(m a -> m [a]) -> Int -> b' 03:09:14 against inferred type `IO t' 03:09:14 In the second argument of `(>>=)', namely `randomRIO (2, 10)' 03:09:15 lol 03:09:32 HELP 03:09:44 :t replicateM 03:09:45 forall (m :: * -> *) a. (Monad m) => Int -> m a -> m [a] 03:09:55 :t (=<<) 03:09:56 forall a (m :: * -> *) b. (Monad m) => (a -> m b) -> m a -> m b 03:12:30 !delinterp acro 03:12:30 ​Interpreter acro deleted. 03:12:33 !addinterp acro haskell import System.Random; import Control.Monad; main = (`replicateM` (putChar =<< randomRIO('A','Z'))) =<< randomRIO (2, 10) 03:12:33 ​Interpreter acro installed. 03:12:36 !acro 03:12:41 TJT 03:12:52 ...I am not so great at Haskell still. 03:12:58 combinator overload. 03:17:03 !acro 03:17:08 MYDZDPYHZV 03:17:18 :( 03:17:59 @undo do {n <- randomRIO (2,10); replicateM n (putChar =<< randomRIO ('A','Z')} 03:17:59 Unbalanced parentheses 03:18:05 @undo do {n <- randomRIO (2,10); replicateM n (putChar =<< randomRIO ('A','Z'))} 03:18:06 randomRIO (2, 10) >>= \ n -> replicateM n (putChar =<< randomRIO ('A', 'Z')) 03:18:12 ?pl randomRIO (2, 10) >>= \ n -> replicateM n (putChar =<< randomRIO ('A', 'Z')) 03:18:12 flip replicateM (putChar =<< randomRIO ('A', 'Z')) =<< randomRIO (2, 10) 03:18:20 ?pl randomRIO (2, 10) >>= \ n -> replicateM n (randomRIO ('A', 'Z') >>= putChar) 03:18:20 flip replicateM (putChar =<< randomRIO ('A', 'Z')) =<< randomRIO (2, 10) 03:18:20 oh, okay... so basically what I did. 03:18:53 why is ?pl obsessed with =<< 03:19:01 * CakeProphet prefers it as well. 03:19:05 usually 03:19:07 it depends 03:19:30 because it's in the same order as all the other stuff that is usually in the wrong ordeR?? 03:19:32 >>= is nice to visualize pipelining. 03:19:41 while =<< looks more like a function application 03:21:52 f =<< m reads pretty naturally though. 03:22:48 it's okay if it's small like that 03:23:03 but when writing out a big,, it's really backwards annoying 03:23:12 it depends on which side of the expression is big. 03:23:20 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 I think it's easier to read when the left-hand side is the smaller expression. 03:23:34 monqy: (.) is backwards in the same way 03:23:37 SgeoN1: ubuntu or debian 03:23:39 I do want to try Ubuntu's new thing. 03:23:44 if ubuntu, use gnome. 03:23:50 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:56 SgeoN1: ubuntu's new thing is bad. 03:23:56 monqy: right 03:23:59 i was SECRETLY REFERENCING (.) 03:24:04 Would Linux Mint be that bad? 03:24:34 SgeoN1: I use what is now called the "classic interface" in Ubuntu 10.10 (aka GNOME) 03:24:37 CakeProphet: when you have long chains it's easier to read >>=wise than =< SgeoN1: linux mint is stupid 03:25:01 again, depends on which expressions are large. 03:25:04 what's the point of linux mint anyway 03:25:06 and pointless 03:25:09 monqy: nothing 03:25:12 it has literally no point 03:25:21 this is what confused me. I couldn't figure out the point. 03:25:23 other than "lol we ship slightly more non-free drivers by default except actually ubuntu ships all them anyway" 03:25:24 I think I like having just one bar 03:25:33 SgeoN1: yeah you can do that with gnome in hmm 03:25:36 about ten seconds 03:25:44 and xfce comes lik ethat by default 03:25:47 soOOOOOoooooooOOOOoooOOOoooOOooooooooo 03:25:55 Pure:Dyne is pretty neat. 03:26:07 comes with a bunch of music software. 03:26:20 and is below Ubuntu on the repo chain. 03:26:38 also has good realtime scheduling support. 03:26:53 which is kind of silly for a distro that's intended to be used on a CD / USB 03:27:03 Can I easily switch between classic and new? 03:27:09 yes 03:27:13 it's an option on the login screen 03:27:14 at the bottom. 03:27:23 the new interface is baaaaad 03:27:34 it's like "lolololol let's emulate Apple poorly because that's the new trend" 03:27:40 woohoo 03:27:49 I've never tried it? what's so bad about it? I'd probably hate both? 03:28:02 it's awful 03:28:11 in every way but not the ways CakeProphet says 03:28:18 of course. 03:28:53 it's just... obviously it's not a mature piece of software. 03:28:58 it doesn't matter 03:28:58 unlike GNOME. 03:29:00 it's terrible 03:29:04 if it were polished 03:29:06 it would remain terrible 03:29:11 ...yes, but better nonetheless. 03:29:15 polished 03:29:41 in any case just keep using GNOME forever 03:29:48 and not Unity 03:29:58 though I think Unity is on top of gnome... whatever. 03:30:18 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 oh wait... I'm not using 10.10 I'm using 11.04 03:31:17 I lose track of these versions... 03:31:20 SgeoN1: I use 10.10. I wouldn't use 10.04, it's rather outdated by now. 03:31:44 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 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:32:24 +noticed 03:33:26 the scrollbars are different yes. 03:33:27 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 CakeProphet: Yeah, but the terminal scrollbars are black. 03:33:44 I don't think any other scrollbar is black. 03:33:47 yeah 03:33:51 scrollbars are for jumps. 03:33:53 ...er 03:33:55 chumps 03:34:23 They're useful for jumping, too. 03:34:43 I use page up / page down for that... which annoyingly doesn't work in terminal 03:36:36 ...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 I assume that I'll notice Unity's badness quickly, or is it more subtle and will grate on me later? 03:39:50 elliott: to exclude all subdirectories of a directory do I need to specify dir/*? 03:39:55 SgeoN1: you will notice immediately 03:40:13 -!- sebbu2 has joined. 03:40:13 -!- sebbu2 has quit (Changing host). 03:40:13 -!- sebbu2 has joined. 03:40:45 SgeoN1: You have no taste, so who knows. 03:40:57 Maybe it will be so new and shiny that you are seduced and you will spend the rest of your life using it. 03:41:07 horrible. 03:41:32 okay qadding the *'s fixed it. 03:42:30 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 CakeProphet: dude, just use an existing rsync-based backup solution 03:44:52 one that does hardlink snapshotting for you 03:45:04 I hear good things about rdiff-backup: http://www.nongnu.org/rdiff-backup/ 03:46:38 "rsync-based backup solution"??? 03:46:39 I pretty much already have this set up though... 03:46:43 rsync already is a backup solution. 03:46:49 yeah.. 03:47:06 Gregor: Not really. 03:47:14 It doesn't do snapshotting, for one. 03:47:35 not really what I want. 03:47:46 Why not 03:47:48 elliott: My backup of Codu is rsync -> git. 03:47:54 For luls! 03:47:54 MonoDevelop doesn't support C# 4.0 ? Bleh 03:48:00 Gregor: Why git 03:48:13 elliott: Because neither hg nor git can store themselves in themselves, and I never use git :P 03:48:25 Why can hg not store itself inside itself 03:48:34 I honestly have no friggin' clue. 03:48:36 And why are you under the impression that git is a decent deduplicative storage system 03:48:36 Well, no. 03:48:56 Both of them just arbitrarily say "lol no" if you try to store their dot directory. 03:49:07 elliott: it's not necessary and I already have rsync set up. 03:49:26 elliott: Mainly because I've been doing this for over a year and it hasn't gone crazy. 03:49:33 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 Gregor: That doesn't mean it isn't using a billion times more disk than necessary :P 03:49:55 (Billion may be exaggerated, but c'mon, git is based around storing entire trees.) 03:50:05 Do you at least git-gc it? 03:50:27 Yes, once per week. 03:50:42 I don't have my external plugged in most of the time so the cron script rarely runs. 03:50:42 Fair enough then, though it's still awful. : 03:50:43 :p 03:50:45 I usually manually run it. 03:51:22 and I'm not going to run out of disk space because I only keep one backup. 03:51:42 though with my external I could easily keep about 3 or 4 rotating backups. 03:52:15 more if I used diffs... which is probably what rdiff-backup does. 03:52:53 Do you actually know what snapshotting is? 03:53:18 I mean, yes, it does diffs, but you can get snapshotting just with hardlinks. 03:53:34 yes it copies a read-only version of the directory.. 03:53:44 What? 03:53:50 that is what snapshotting is... 03:54:06 it takes a "snapshot" of the directory before it copies it, to prevent writes from fucking up the transfer. 03:54:17 >_>? 03:54:26 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 CakeProphet: Yes, but you expect a snapshot-based backup system to not re-backup unchanged files. 03:54:39 i.e. almost every file on your system. 03:54:42 i.e. backups are much smaller. 03:54:54 rsync does this anyways. 03:55:04 not with diffs. 03:55:08 just by checking modification times. 03:55:42 I just ran a backup that took about a minute. 03:55:46 first backup took several hours. 03:55:49 >_< 03:55:52 Yes, but you're overwriting your previous backup. 03:55:57 So it's not a snapshot at all. 03:56:09 didn't say it was. 03:57:01 -!- Jafet1 has quit (Quit: Leaving.). 03:57:03 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 Ugh, arty, not enough space. Going to put TinyCore onto USB then deal with things from there 04:05:08 "arty"? 04:06:00 Autocorrevt 04:06:12 Was warty or something 04:06:22 Argh 04:07:47 Would it really be a bad idea to use TinyCore as a primary OS? 04:08:02 I nominate Gregor to babysit SgeoN1, I'm busy. 04:08:12 s/,/;/ 04:08:47 I forgot why I hated puppy 04:11:40 SgeoN1: whenever you finish all of thatI recommend nautilus-open-terminal 04:14:50 NO UNETBOOTIN I DO NOT WANT MICROCORE 04:16:20 monqy: id really needs renaming :'( 04:16:29 SgeoN1: i think unetbootin's copy of tiny core is ancient, give it the iso 04:16:31 :( 04:17:06 monqy: it 04:17:09 monqy: mconfcointliscts :( 04:17:14 I did give it the iso 04:17:34 I don't remember the differences between tcblah 04:20:55 * SgeoN1 tries startx 04:21:04 Not found 04:21:06 -!- MDude has changed nick to MSleep. 04:21:26 I chose tca. Command line thing for that mentions MultiCore 04:21:58 Hey Gregor 04:21:59 Hey 04:22:00 Gregor 04:22:01 Gregor 04:22:02 Rename my type 04:23:28 I'm going to do what I should have done before 04:23:38 Wait, that may or may not work 04:24:09 Can I have unetbootin's target ISO stored on the USB drive? 04:25:25 It copies the ISO's contents to the drive. 04:25:55 OK, tinycore's working 04:27:05 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 elliott: if I made some sort of portal chess program would you play it? 04:41:13 I was thinking IRC bot, or web-based. 04:42:29 Maybe. 04:45:12 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:50:36 no need for AI if you have I 04:51:00 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:37 (return .) == fmap 04:53:41 or hm 04:53:44 :t (return .) 04:53:46 forall a (m :: * -> *) (f :: * -> *). (Monad m, Functor f) => f a -> f (m a) 04:53:50 argh 04:53:53 :t (return Prelude..) 04:53:54 forall b (m :: * -> *) a. (Monad m) => (a -> b) -> a -> m b 04:53:56 yeah 04:54:02 so it's fmap and (>=>) 04:54:08 i doubt it 04:54:11 because that doesn't give you return 04:55:04 I don't think that is the type of fmap 04:55:43 fmap is (a -> b) -> f a -> f b 04:56:02 (return .) is you remove the first f 04:57:02 Going to download Ubuntu to USB and use Unetbootin on that. I think it unpacked stuff to temporary, so... 04:57:08 Tmp dammit 04:57:10 elliott: also do you know of any libraries that would be useful for a web-based chess-like game? 04:57:18 I was probably just going to JS tomfoolery. 04:57:20 +do 04:57:30 jQuery? :-P 04:58:42 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 zzo38: sorry, I was wrong, that isn't fmap, yeah 04:59:09 well the idea is to make it accessible to people who might say, not care very much. 04:59:18 yeah (f .) ~ f 04:59:30 to go (f .) -> f: g id 04:59:34 to go from f -> (f .) = (f .) 04:59:44 where g is (f .) in the first one 04:59:58 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:13 *was 05:00:39 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:00:52 ...nah not as many people use MUDs. 05:01:11 It has a Java client, so if you have Java you do not need a MUD client. 05:01:20 yeah Java is an option. 05:01:27 so is Flash but flash is icky. 05:01:37 And if you have a MUD client you do not need Java or a web browser program. 05:01:49 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 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 you mean like... barebones telnet right? am I interpreting MUD correctly? 05:04:29 CakeProphet: FICS is linemode, so if you have a linemode telnet client that will work. 05:04:58 hmmm okay 05:04:59 (You could support charmode as well if you wanted to, I suppose) 05:05:14 OK, this trackpad is almost broken. 05:05:27 This laptop: I am sick of it. 05:05:42 Then fix it or get a new one. 05:06:01 zzo38: how do you create games with other people using FICS? 05:06:22 zzo38: I am, I've just been busy using it. 05:06:36 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 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 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 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 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:48 oh dear god 05:07:50 also Java could easily be converted to an android app. my portal chess empire will soon kick off. 05:07:58 CakeProphet: "Easily" 05:08:09 Except that the entire Android API is wildly different from standard Java stuff. 05:08:14 elliott: you are correct. 05:08:20 So not easily at all. 05:08:25 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:43 zzo38: dunno 05:08:50 elliott: with enough boilerplate code anything is possible in Java. :P 05:09:01 JUST GOTTA THINK WITH CLASSES. 05:09:04 DAWG 05:09:34 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 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 Using (return .) and (<=<) seem like a category where you have morphism conversion and morphism composition. 05:10:36 which will no doubt blossom in a few months. 05:10:38 CakeProphet: That is why you need a Java client!! 05:10:43 correct. 05:11:23 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 yes I will need a good explosion sound effect for when portals explode. 05:11:38 :P 05:11:57 zzo38: I am understanding what you said. no need to clarify. 05:12:05 OK 05:12:59 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 I like how the FICS website has some woman playing chess on it. 05:13:25 probably to persuade socially inept chess nerds that they will find their soulmate through FICS. 05:14:23 fizzie: It's... what is even this format? 05:14:28 Seriously. What is it. 05:14:40 CakeProphet: I'm pretty sure there are, in fact, women who play chess. 05:14:42 CakeProphet: Our CS department website photos tend to do that too. 05:14:53 fizzie: What is this. Website. 05:15:00 elliott: what? unspeakable. 05:15:04 ... 05:15:05 Website? 05:15:06 elliott: You don't know answer to my question? 05:15:07 I mean format. 05:15:09 zzo38: I don't. 05:15:22 fizzie: Seriously. This is the screwiest format... ever. 05:15:23 CakeProphet: I can confirm that there are, in fact, women who play chess. 05:15:24 elliott: It's just this thing, you know. 05:15:34 pikhq: that's unpossible 05:15:38 I am completely unconvinced at the unpossible. 05:15:56 Ironic sexism: bringing funny to your IRC since 1990. 05:16:00 fizzie: It's. 05:16:02 Since you already have return from that, can it be converted to a statement in intuitionistic logic by Curry-Howard? 05:16:03 fizzie: It's not a thing I like. 05:16:06 `log impossible is 05:16:06 fizzie: I don't like the thing. 05:16:11 2007-08-03.txt:21:51:44: bsmntbombdood, but this is clearly in an alternate universe where the impossible is possible 05:16:11 fizzie: Help. 05:16:21 Actually I don't know if Curry-Howard is sufficient. 05:16:23 `log impossible is 05:16:26 2011-09-19.txt:05:16:23: `log impossible is 05:16:30 `log impossible is 05:16:34 2011-09-19.txt:05:16:06: `log impossible is 05:16:38 shee 05:16:40 t 05:16:46 `log impossible is 05:16:49 2011-09-15.txt:22:12:10: maybe impossible is a limit 05:16:54 No, it's just as utterly implausible as the move 0-0-0-0-0-0. 05:16:55 `log impossible is 05:16:59 2011-09-19.txt:05:16:26: 2011-09-19.txt:05:16:23: `log impossible is 05:17:09 elliott: just pretending to be incredulous as usual. 05:17:15 the sexism was an artifact. 05:17:22 dewuihdeu (\iewjiwejdiwjijdiwdjwidjiewjdiwdi.x) huiehuie dehhu 05:17:23 pikhq: I think someone once played that move, although the modern rules clarify that such move is not permitted. 05:17:38 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 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 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 fizzie: Can you explain this? 05:17:52 (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 I don't get how the payload comes before the type. 05:17:57 zzo38: It was part of a solution to a chess problem, and no longer permitted. 05:17:59 fizzie: Is the example just wrong? 05:18:08 pikhq: if I create portal chess software will you play it? 05:18:13 pikhq: I know that 05:18:15 also if I write rules so that you know how to play it? 05:18:28 CakeProphet: I would like to see the complete rules. 05:18:40 elliott: The example is wrong; the payload is 0x01. 05:19:03 zzo38: they'll be a bit tricky to describe technically. 05:19:13 fizzie: Right. 05:19:13 the loop breaking rules are somewhat messy. 05:19:25 fizzie: I'm... I hate this format. 05:19:29 fizzie: Of all the formats: this is the worst. 05:19:40 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 basically the bidirectional loops have a number of variant rules you could adopt. 05:19:52 fizzie: The IDs are just ignored by the client, right? 05:20:03 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 elliott: No clue, since I make no attempts to decode it. 05:20:19 Heh. 05:20:25 so you just have to say "okay this is what happens" 05:20:36 and there's so far 4 ways to do that. I picked one for the standard rules. 05:20:51 elliott: http://mc.kev009.com/Protocol#Metadata says the ID is "either an index or bitmask". 05:21:04 fizzie: And the strings are encoded in the usual Minecraft way, right? 05:21:52 elliott: yes block formatting 05:22:12 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 the good thing about minecraft is that since it's not free, you won't get advertising bots 05:22:41 > 9 `shiftL` 99 05:22:42 Ambiguous type variable `a' in the constraint: 05:22:42 `Data.Bits.Bits a' 05:22:42 a... 05:22:44 > 9 `shiftL` 99 :: Int 05:22:44 0 05:22:46 > 9 `shiftL` 99 :: Integer 05:22:46 5704427701027032306735164424192 05:22:48 zzo38: oh the infinite loop itself is not a problem and is part of the rules/strategy. 05:22:48 > 9 `shiftR` 99 :: Integer 05:22:49 0 05:22:49 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 zzo38: the problem is there are certain ways to break a loop via portal that are ambiguous. 05:23:16 specifically if you have, on any file/row/diagonal the following setup 05:23:19 >-------< 05:23:21 fizzie: FML 05:23:30 where > and < are arrows and the ---- is the projectile path (the loop) 05:23:36 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 if you place a portal inside the loop. what happens? 05:23:50 But of course protocol.c might easily be wrong. 05:24:01 does the portal redirect the projectile? does it get captured? both? or should you flip a coin? 05:24:01 fizzie: I 05:24:02 HATE 05:24:02 MY 05:24:04 LIFE 05:24:06 these are the 4 rule variations I've come up with. 05:24:17 the first one being the standard one. 05:24:19 fizzie: It's probably not wrong since mcmap actually works. 05:24:22 Sometimes. 05:24:24 "case 4: t = buf_get_jshort(state); if (!buf_skip(state, t)) return 0; break;" 05:24:54 What's the mask for five bits again? 05:25:23 0x1f. 05:25:36 Thanks. 05:25:58 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:19 Not that I know of. :p 05:26:43 Could be stealthily wrong, then. 05:26:44 fizzie: case 4: read string (UCS-2) from stream 05:26:50 Nothing _seems_ to stay it's any different from the usual strings. 05:26:53 I'd expect that point to come up. 05:30:44 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:30:50 !wacro 3 6 05:30:51 DCECO 05:31:01 monqy: ^^^ 05:31:08 thanks 05:31:13 it's amost good 05:31:30 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 the consonatnt cluster at the beginning though? two plosives? really? 05:31:59 unless the first c isn't but that's dumb too 05:32:09 no it's not. 05:32:13 fizzie: http://sprunge.us/OiGK 05:32:16 fizzie: Behold the ugliest. 05:32:21 c is a pretty useless letter 05:32:24 Also, MC UTF-8 strings don't exist any more. 05:32:25 Thank fucking god. 05:33:01 minecraft needs more portals. 05:33:13 does it not already have them? shameful 05:33:35 it has doors 05:33:39 but those don't count as portals. 05:33:52 just in the lame pre-21st century way. 05:33:57 It... 05:33:57 Has portals. 05:34:03 not the same 05:34:04 As a separate thing to doors. 05:34:05 hell portals are lame. 05:34:11 They're called Nether portals. 05:34:16 don't care 05:35:04 Some of them moddifications do tele-portals. 05:35:34 do they preserve momentum? 05:35:53 MC/Protocol.hs:361:7: Not in scope: `PF.byteArray' 05:35:53 MC/Protocol.hs:367:7: Not in scope: `PF.multiBlockChangeData' 05:35:53 MC/Protocol.hs:391:7: Not in scope: `PF.explosionData' 05:35:53 MC/Protocol.hs:427:7: Not in scope: `PF.windowItemData' 05:35:53 MC/Protocol.hs:456:7: Not in scope: `PF.mapData' 05:35:58 Probably not. 05:36:03 fizzie: Would you be willing to sell alcohol to a minor? I kind of need it. 05:36:15 elliott: perl is your friend. 05:36:22 CakeProphet: How can Perl help here? 05:36:23 perl is better than stiff drinks. 05:36:34 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 elliott: while I assume you need to change something about the exports or rename a bunch of identifiers. 05:37:00 fizzie: Please kill me. 05:37:07 CakeProphet: No, I need to implement a shitload of horrible packet field types. 05:37:23 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 zzo38: the first suggestion is basically what I already do 05:38:03 I have the standard rule and then optional varints that should be decided upon beforehand 05:38:07 second idea is horrible. 05:38:16 OK 05:38:57 elliott: you could just do the packet stuff as a perl script. :D 05:39:01 there, now perl is helping. 05:39:09 CakeProphet: Shut up, I'm ratty. 05:39:41 elliott: Ooh, map data is also pretty funny if you want to properly decode it. 05:40:08 regex is the best way to decode everything. 05:40:29 "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 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 fizzie: I'm seriously going to commit suicide. 05:40:56 This is 05:40:57 The worst 05:40:58 Protocol. 05:41:03 Find me a worser protocol. I dare you. 05:41:06 perl would make it easy. 05:41:09 :):):) 05:41:13 :D:D:D 05:41:16 elliott: ymsg 05:41:23 :>:>:> 05:41:32 itidus21: ? 05:41:35 "getLengthPrefixedByteString" -- ah yes, the good names. 05:41:42 yahoo messenger protocol 05:41:55 itidus21: What's it like 05:42:12 they hacked it up years ago much like whats being done for minecraft :D 05:42:15 I bet whatever WoW uses is pretty bad. 05:42:22 this led to the creation of many third party clients 05:42:48 itidus21: I'm talking about worse as in the technical details of the protocol. 05:42:49 i dont actually know what its like 05:43:00 it might not be that bad... probably got worse with time 05:43:18 finne 05:43:29 ... i failed to find a worse one,. 05:43:36 i relent 05:44:15 * itidus21 checks google for relent meaning. 05:44:19 im not sure if it applies. 05:44:51 MC/Protocol.hs:367:7: Not in scope: `PF.multiBlockChangeData' 05:44:52 MC/Protocol.hs:391:7: Not in scope: `PF.explosionData' 05:44:52 MC/Protocol.hs:427:7: Not in scope: `PF.windowItemData' 05:44:52 MC/Protocol.hs:456:7: Not in scope: `PF.mapData' 05:44:53 And so it thins. 05:45:08 OK, explosion looks pretty easy. 05:46:22 fizzie: So is the explosion data composed of signed or unsigned bytes? :p 05:47:17 itidus21: to relent means to give up. 05:47:26 I've been assuming all bytes signed, pretty much. Even though some might not be. 05:47:37 well yeah i give up 05:47:51 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 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 s/followed/optionally followed/ 05:48:52 i withdraw, yield, submit, concede, relent 05:49:11 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:12 itidus21: avast ye scurvy marmit. 05:49:36 elliott: perhaps you should take a break. 05:49:45 CakeProphet: That would not get me closer to the world of grass. 05:49:50 elliott: go swaggering with your posse 05:49:59 but it would perhaps prevent you from going insane. 05:50:28 CakeProphet: Too late. 05:50:53 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:51:27 a haskell mc project? 05:51:30 cool 05:52:06 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 Then perhaps it will yield fucks to give. 05:54:29 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 Maybe I'll go eat while this thing takes eternity to shrink a 29.98 gb partition to 5.37 05:54:47 `log cheap thing 05:54:50 2009-04-21.txt:23:18:37: ais523: the really cheap thing misses the point, since they just pirated it instead. 05:55:08 fizzie: Not _that_ cheap. 05:55:27 `log cheap thing 05:55:31 2011-09-19.txt:05:54:47: `log cheap thing 05:55:35 Oh it finished 05:55:52 Time to make casper-rw 05:55:55 `log minecraft 05:55:59 2010-12-18.txt:16:42:10: oh MINECRAFT okay 05:56:09 `log elliottcraft 05:56:09 Anything horribly wrong with ext4? 05:56:13 2011-08-28.txt:22:24:41: elliott, isn't that basically elliottcraft in a nutshell? 05:56:15 SgeoN1: Use jfs. 05:56:18 Cheap thing -> https://github.com/mpolney/mcproxy/blob/master/Protocol/SMP.hs 05:56:23 `log elliottcraft 05:56:27 2011-08-19.txt:20:00:21: 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:40 Why? 05:56:51 SgeoN1: Because it's the best Linux filesystem. 05:57:02 fizzie: For some definition of cheap. 05:57:17 fizzie: That doesn't even do client packets, I think. 05:57:31 It's a proxy, it should. 05:57:32 Hmm, it does. But only one of them. 05:57:37 Oh, it's old. 05:57:37 Well, "do". 05:57:42 Anyway, it's: bad. 05:57:49 Yeah, I was expecting it could be dead. 05:58:07 I took some initial mcmap protocol info from there. 05:58:23 Huh, it can do keyboard examples. 05:58:29 fizzie: Heh, it predates mcmap? 05:58:31 Should I leave a gb free for swap? 05:58:42 SgeoN1: How much RAM? 05:58:46 And did you use JFS, because it is the best. 05:58:53 Also ext4 is designed for obsoletion. 05:58:56 I forgot how to check 05:59:03 SgeoN1: free -m 05:59:12 (It's meant to be the "stopgap" towards btrfs, which is unstable and Oracle-controlled. JFS = good.) 05:59:21 fizzie: That certainly doesn't predate mcmap. 05:59:27 elliott: Oh, it was https://gist.github.com/727175 instead. 05:59:27 I checked the repo. 05:59:29 -!- GreaseMonkey has joined. 05:59:30 -!- GreaseMonkey has quit (Changing host). 05:59:30 -!- GreaseMonkey has joined. 05:59:30 992 05:59:45 fizzie: Oh, I saw that. 06:00:11 I was blinded by all the "Int32 String Int32 Int32 Int32 Int8 Int8 Int16". 06:00:28 There's a reason I decided to auto-generate the parser. :p 06:00:33 (And deparser.) 06:00:44 let blks = zipWith3 (\ (a, b, c) d e -> (a, b, c, d, e) `asTypeOf` (a, a, a, a, a)) pos t md 06:00:44 Noice. 06:02:13 Musts to wurk now. 06:03:39 -!- augur has joined. 06:03:57 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 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:03:57 What. 06:04:14 @pl (\ (a, b, c) d e -> (a, b, c, d, e) `asTypeOf` (a, a, a, a, a)) 06:04:14 (line 1, column 9): 06:04:14 unexpected "," 06:04:14 expecting letter or digit, operator or ")" 06:04:14 ambiguous use of a non associative operator 06:04:37 Is it a bad idea to have a swap partition on a flash drive? 06:04:54 no. 06:05:08 swap on a flash drive would be faster than disk writes I believe. (...?) 06:05:21 "Can I have a glass of water?" "Do you want a plate or a fork?" 06:05:33 Faster isn't the issue, wear on the drive is 06:05:46 oh 06:05:47 nah... 06:06:39 Honestly, swap is basically irrelevant anymore. 06:07:01 Even with just 1gb ram w 06:07:10 1gb ram? Allocate two gigs swap. 06:07:21 That's an anaemic amount of RAM. 06:07:42 Aenaemic. Does that mean what I think it means? 06:07:47 s/Aenaemic/Anaemic/ 06:07:47 Yeah, at that point GCC might OOM... 06:07:53 For some reason I was under the impression that swap should = physical 06:08:50 Did you use jfs. It is the best. 06:09:10 I can disable swap if I need to right? 06:09:23 Yes. 06:09:26 Why would you need to? 06:09:40 Damage to flash drove 06:09:43 Drive 06:09:47 What? 06:09:50 This flash drive is expensove 06:09:53 it takes about 100,000 flashes. 06:10:01 What SSD is it? 06:10:01 before that happens. 06:10:08 depending on the drive. 06:10:19 There's no way you're going to break the SSD. 06:10:20 Pikhq, how do I determine 06:10:30 SgeoN1: but yes "swapoff -a" will disable swap. 06:10:37 Wait, how do you have an expensive SSD on a shitty computer? 06:10:59 It's just a thumb drive 06:11:01 elliott: he's using a USB port I'd imagine. 06:11:07 they're pretty cool 06:11:10 you should check them out. 06:11:19 CakeProphet: He said it was expensive. 06:11:21 Costs less than aa brand new computer I'm only going to be using for a month 06:11:21 I use one to attach a 1.5 TB hard drive to my laptop. 06:11:28 elliott: hey some people are poor. 06:11:31 SgeoN1: Oh. Um. Swap will rape it. 06:11:46 CakeProphet: Sure. 06:11:57 CakeProphet: What's the most expensive pen drive though, really? 06:12:20 probably like $20 06:12:45 32 GB thumb drive for $32 06:12:47 I'm going to leave 2gb unused but no swap partition. I can add one later, right? 06:13:07 with 1gb I highly recommend some form of swap. 06:13:18 CakeProphet: Depends on the distro, actually. 06:13:20 SgeoN1: Dude, put some swap on the actual hard drive. 06:13:30 There is no hard drive. 06:13:38 SgeoN1: What the fuck is this machine? 06:13:40 See if you can remember why. 06:13:52 Have you considered putting a new hard drive in. 06:14:15 I'm going on the assumption that Sgeo is poor. 06:14:37 Not poor, it's just painful to ask my dad for stuff 06:14:55 most adults have more money than they put on... 06:15:15 I don't even work full time and buying a 1.5 TB external was almost negligible. 06:16:47 SgeoN1: I thought you got your own card finally. 06:16:53 -!- ive has quit (Ping timeout: 260 seconds). 06:17:02 CakeProphet: Selection bias. 06:17:07 Unknown keyword in configuration file 06:17:11 What. 06:17:14 Hey, what's eight plus four. I'm in tedium mode, can't do thinking. 06:17:15 What the fucking fuck 06:17:22 12 06:17:32 Thanks bro. 06:18:19 elliott: yes I am a scientist always. 06:19:03 CakeProphet: "That's a fancy word so your observation of my fallacy is irrelevant"? 06:19:03 ?hoogle zip3 06:19:04 Prelude zip3 :: [a] -> [b] -> [c] -> [(a, b, c)] 06:19:04 Data.List zip3 :: [a] -> [b] -> [c] -> [(a, b, c)] 06:19:04 Prelude unzip3 :: [(a, b, c)] -> ([a], [b], [c]) 06:19:16 I, in no way, use anecdotal evidence to help myself understand the world. 06:20:10 :t sequence 06:20:11 forall (m :: * -> *) a. (Monad m) => [m a] -> m [a] 06:20:13 Thank you Google. 06:20:14 Obviously this is what I was criticising. 06:20:16 Obviously. 06:20:20 zip kind of reminds me of sequence. 06:20:32 er, unzip 06:21:58 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 return kind of reminds me of Just (note: this should not be used to imply I think cps thing is similar) 06:22:06 and yes, I know what a selection bias is. 06:22:35 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 In the Maybe monad, return = Just 06:23:08 >_> 06:23:33 elliott: I'm sorry but all of those sentences are so reliant on social factors that I'm having trouble understanding them. 06:23:37 I time travelled from the 10th century. 06:23:50 fizzie: Oi. 06:23:56 CakeProphet: Yeah, I don't have time for this. 06:24:34 Apparently to do classical logic in Curry-Howard you use call/cc; how exactly does that work? 06:24:35 help what is this thing I'm typing into. 06:24:53 IRC 06:26:30 elliott: in the future I will try not to rely too much on my experience. 06:27:02 which is, of course, applicable to every human being on the planet. 06:27:14 $ MultiBlockChangeData (zipWith3 makeItem coords types metadata) 06:27:14 where -- FIXME: might be Word16 06:27:14 unpackCoords :: Int16 -> (Word8,Word8,Word8) 06:27:14 unpackCoords sh = (fromIntegral (sh `shiftL` 12), fromIntegral ((sh `shiftL` 8) .&. 0xF), fromIntegral (sh .&. 0xF)) 06:27:14 makeItem :: (Word8,Word8,Word8) -> Int8 -> Int8 -> MultiBlockChangeItem 06:27:16 makeItem (x,y,z) blockType metadata = MultiBlockChangeItem x y z (Block (BlockID blockType) metadata) 06:27:19 askldfjgnh 06:27:21 instance Serialize MultiBlockChangeData where 06:27:23 get = do 06:27:25 count <- fromIntegral <$> (SE.get :: Get Int16) 06:27:27 coords <- replicateM count (unpackCoords <$> SE.get) 06:27:29 types <- replicateM count SE.get 06:27:31 metadata <- replicateM count SE.get 06:27:34 return $ MultiBlockChangeData (zipWith3 makeItem coords types metadata) 06:27:35 where -- FIXME: might be Word16 06:27:37 unpackCoords :: Int16 -> (Word8,Word8,Word8) 06:27:41 unpackCoords sh = (fromIntegral (sh `shiftL` 12), fromIntegral ((sh `shiftL` 8) .&. 0xF), fromIntegral (sh .&. 0xF)) 06:27:44 makeItem :: (Word8,Word8,Word8) -> Int8 -> Int8 -> MultiBlockChangeItem 06:27:46 makeItem (x,y,z) blockType metadata = MultiBlockChangeItem x y z (Block (BlockID blockType) metadata) 06:27:49 jkasnLDFGHKLGDD; 06:27:50 wow that's beautiful. 06:27:51 Sorry, fell asleep at the wheel. 06:28:26 are you sure there's not some clever way to reuse a bunch of code for all of this? 06:28:33 and avoid the boilerplate? 06:29:03 If Haskell had better macros you might be able to do so. 06:29:53 CakeProphet: All of these data types are pretty much wildly different for no reason, so no. 06:30:11 just occured to me if i ever get really bored i could do war and peace the graphic novel 06:30:13 Right, to hell with map data; I'm parsing it into a raw bytestring for now and fixing it later. 06:30:32 i would read it through once.. and then a second time as i developed the graphic novel 06:31:13 elliott: wildly? at least it's exciting then. 06:31:22 CakeProphet: Not that wildly. 06:31:56 writing entertainment software in haskell is akin to alchemy. 06:32:04 what 06:32:11 itidus21 you don';t even know haskselle 06:32:15 so perhaps 5 coals on this hookah was overkill. 06:32:25 alchemy isn't a bad thing 06:32:35 monqy: you can't argue with itidus21's reason. 06:32:38 how do you know it's alchemy, you know almost nothing about haskell 06:33:02 cos knowing shit is too much work. 06:33:35 it's like alchemy in that itidus21 doesn't understand either. 06:34:02 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 is that a metaphor for what you do on IRC 06:34:33 more than IRC 06:34:41 i used to believe my own lies IRL once 06:34:46 it's metonymy for itidus21 is a sqrt function. 06:35:26 itidus21: alchemy :: a -> b 06:35:44 alchemy lead :: Gold 06:35:51 it's as if i am on the precipice of doing actual work, but i am frozen in my tracks 06:36:23 fungot: blahblahbaljbakherihe 06:36:24 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 I am blowing a lot of regulations right now. 06:37:49 im considering meditation 06:37:50 who would be affected, and continues. 06:37:57 Maybe I should be using Lubuntu? 06:38:00 At wurk. 06:38:43 This is so ducking slow 06:38:50 my working definition of alchemy is, in striving for the impossible countless wonderful discoveries are made 06:38:56 SgeoN1: are you perhaps using a duck typed language? 06:39:09 Duck you 06:39:13 quack. 06:39:43 except that writing entertainment software in haskell isn't impossible so the metaphor breaks at that point 06:39:54 what entertainment software are you talking about. 06:40:06 fungot: fuuuuuck 06:40:06 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:14 ^europarl homestuck 06:40:18 fungot: lalalalala girst 06:40:19 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 ^style homestuck 06:40:24 Selected style: homestuck (Homestuck pages 1901-4673) 06:40:25 fungot: lalalalala girst 06:40:25 CakeProphet: have a look.... :) ham, potatoes, and squash. jade's radioactive, omnipotent, space-warping dog named... 06:40:26 in this, i am suggesting chemistry and traditional chinese medicine to be fruits of various forms of alchemy 06:40:38 CakeProphet: "^europarl homestuck"? 06:40:49 fizzie: sometimes my fingers move faster than I think. 06:40:57 Yes, but. 06:41:03 shhhhh 06:41:16 ok.. bravo haskell 06:41:19 for great good 06:41:38 are you learning it now finally? 06:43:20 i gather haskell is subservient to LC 06:44:16 if i discuss this topic.. there will be agony all around 06:44:43 ?hoogle getArgs 06:44:44 System.Environment getArgs :: IO [String] 06:44:54 itidus21: that doesn't really mean anything so no. 06:44:56 wiki tells me backus's function-level programming is not the same thing as functional programming languages 06:45:12 fizzie: The best europarl. 06:45:42 fungot: lalalalalaa weersddf 06:45:50 haskell can be broken down into a set of assembly language instructions 06:45:55 -- TODO FIXME: Parse this properly rather than this ridiculously lazy hack 06:45:55 data MapData = MapData !ByteString deriving (Eq, Show) 06:45:55 instance Serialize MapData where 06:45:55 get = MapData <$> getLengthPrefixedByteString 06:45:55 put (MapData s) = putLengthPrefixedByteString s 06:45:58 fizzie: Behold my map data parser. 06:46:06 itidus21: -sigh- 06:46:10 layers 06:46:20 human readable layer translated into machine code 06:47:58 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:48:50 itidus21: yes Haskell is compiled. 06:48:56 generally. 06:49:03 GHC compiles it. 06:49:06 interpreters still ultimately are machine code 06:49:12 though Hugs for example interprets it. 06:49:45 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 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 7168\NUL\26368\253\36096\CAN\NULe\13567\65525\38400\b\255\65529\16546\NUL\DEL\7168\NUL\25858\3325\3 06:49:48 fizzie: 'Hokay, that is definitely not right. 06:50:16 itidus21: you can program right? these aren't new ideas to you are they? 06:50:29 elliott@katia:~/Code/mchost$ mkfifo fifo; nc p.nerd.nu 25565 fifo 06:50:32 fizzie: Does that look right to you? :p 06:51:26 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:51:31 focusing on the road 06:52:06 ok 06:52:26 however... haskell coders are better at driving the PC in some computations than asm coders 06:52:33 no. 06:52:36 ok 06:52:52 I go to install Chromium. I decide to view the info for Dooble. I see reviews that are clearly for Chromium. 06:52:53 language and programming skill are independent of each other. 06:53:15 CakeProphet: Not entirely. 06:55:09 Hmph, what _is_ it with handshakes these days? 06:55:21 elliott: black people added all sorts of crazy shit is what happened. 06:55:26 I guess my handshake thing is broken 06:55:46 str <- getTextUTF16be 06:55:46 case str of 06:55:46 "-" -> return NoAuthentication 06:55:46 "+" -> return Authenticate 06:55:46 _ -> return (LoggedIn str) 06:55:48 looks ok to me :( 06:56:06 would be nice to have some kind of case-bind 06:56:22 well should i consider a lambda expression as an infinite tree? 06:56:27 no 06:56:37 a finite tree. 06:57:02 but to use the tree you keep growing it? 06:57:32 no you would expand and reduce it as necessary. 06:58:07 well... I suppose it /could/ be a lazily evaluated tree... 06:58:08 well, an expression is surely of no use on its own 06:58:17 itidus21: here read this: http://mitpress.mit.edu/sicp/full-text/book/book.html 06:58:51 second person to refer me to that book. it must be good :D 06:58:53 i think sicp might be at a slightly higher level than itidus21 is at. 06:59:18 tidus was one day complaining that no book walks you through completely creating a compiler 06:59:25 in another channel 06:59:33 and 2 books were mentioned 06:59:41 that book does I believe. 06:59:46 oh wait.. thats a lambda on the front 07:00:00 with a sun around it 07:00:15 yes programming is wizardry not alchemy. 07:01:19 i'll yield on my alchemy comment just to play fair 07:01:32 ^s/fair/nice 07:02:24 elliott: I think SICP starts off simply enough to allow itidus21 to catch on. 07:02:38 and then it gradually builds on previous concepts. 07:03:06 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 fizzie: Yes, but more importantly, it shouldn't start with \1536. 07:03:35 It should be -, +, or a hash. Probably -. 07:03:41 So I am ``not knowing of what is happening''. 07:05:10 ``'' 07:05:13 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: `'': not found 07:05:31 What's your getTextUTF16be like? (Also altenratively: hexdump -C serverlogtwo | head -n 20 or so.) 07:05:35 CakeProphet: i have this concept in the backlog of programming where errors are acceptable 07:05:38 ALTEN RATIVE. 07:05:47 sorry rewording now to make more sense 07:05:48 -!- ive has joined. 07:05:48 fizzie: 07:05:49 getTextUTF16be :: Get Text 07:05:49 getTextUTF16be = do 07:05:49 len <- SE.get :: Get Word16 07:05:49 TE.decodeUtf16BEWith TEE.ignore <$> SE.getBytes (fromIntegral len * 2) 07:06:00 itidus21: can you please what that sentence even means. 07:06:03 (That TEE.ignore thing just replaces erroneous UTF with the empty string.) 07:06:14 CakeProphet: i have this concept on the drawing board, of making a programming system where errors are acceptable 07:06:20 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 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 00000020 36 00 38 01 00 0e b8 b0 00 00 00 00 00 00 00 84 |6.8.............| 07:06:20 00000030 5f ed 00 00 00 00 00 02 80 3c 06 00 00 00 00 00 |_........<......| 07:06:20 00000040 00 00 40 00 00 00 00 04 00 00 00 00 01 20 1b 87 |..@.......... ..| 07:06:20 00000050 03 00 08 00 a7 00 35 00 a7 00 36 00 a7 00 34 00 |......5...6...4.| 07:06:22 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 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 00000080 00 69 00 72 00 64 00 a7 00 63 00 21 00 20 03 00 |.i.r.d...c.!. ..| 07:06:28 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 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:06:55 itidus21: what kinds of errors. 07:07:04 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 CakeProphet: the idea is simple. program in problem domains where errors don't matter 07:07:23 fizzie: But it should start with"+". 07:07:25 "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:36 itidus21: such. as. 07:07:38 itidus21: any such domain is trivially implemented by this program: main = return () 07:07:46 it does nothing; if this is an error, it does not matter, because errors are acceptable 07:07:51 s/with"+"/with "+"/ 07:07:55 elliott: No, it should be a hash. '+' is only used for password-without-minecraft.net-name-verification. 07:07:57 humm 07:08:08 "A unique, per-connection hash, or '-', or '+'" 07:08:32 rendering a frame in a video game doesn't really matter if it is wrong.. 07:08:41 uh.. 07:09:01 player might get a bit emotionally upset.. or may experience upset eyes from trying to watch poorly rendered frames 07:09:18 poorly rendered is not wrongly rendered though 07:09:20 but overall, it doesn't matter if it's right 07:09:32 I can't play a game if it renders a black screen. 07:09:49 or crashes in the process of rendering. 07:10:24 a few aspects are.. errors should be restricted.. like it shouldn't bring down the whole system 07:10:40 are you familiar with exception handling? 07:10:45 and shouldn't be anything which needs security 07:11:12 well.. some things don't really need to be handled 07:11:20 its more or less ok ifthey're wrong 07:11:30 elliott: No, it should be a hash. '+' is only used for password-without-minecraft.net-name-verification. 07:11:33 fizzie: That exists? 07:11:37 Is that new? 07:12:12 -!- ive has quit (Quit: leaving). 07:12:19 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 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:33 itidus21: 07:12:54 Can you do comma categories in Haskell? 07:12:58 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 Hmm. Why on _earth_ is the handshake being read wrong? 07:13:19 * elliott tweaks the getter 07:13:52 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 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 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:28 Sorry, 55. I think. 07:15:35 get = LoggedIn `fmap`getTextUTF16be 07:15:37 does not help at all. 07:15:42 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 That doesn't help either. :/ 07:16:34 my ideas are almost always really bad. im cool with knowing this. 07:16:38 fizzie: Are you _sure_ that string looks right? :p 07:16:45 Well, it looks right to me. 07:16:52 My client dump strings all parse perfectly: 07:17:03 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 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 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0d 40 |...............@| 07:17:04 00000030 72 b6 00 00 00 00 00 40 44 80 00 00 00 00 00 40 |r......@D......@| 07:17:04 00000040 45 4f 5c 29 00 00 00 40 44 ec 00 00 00 00 00 43 |EO\)...@D......C| 07:17:07 And that starts with a handshake too. 07:17:55 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 I need some kind of lock that prevents me from using irc for a while that also isn't /quit 07:18:32 The handshake in that, "02 00 05 00 65 00 68 00 69 00 72 00 64", is very similar. 07:18:43 (And after both there's a login packet starting with 01.) 07:18:45 hmmm... 07:18:55 , packet 0x02 "SHandshake" 07:18:55 [ PF.handshake "handshake" -- FIXME: handshake is a rubbish name 07:18:55 ] 07:18:56 :/ 07:19:04 -!- CakeProphet has left ("fungot"). 07:19:07 -!- CakeProphet has joined. 07:19:22 fizzie: I guess I'll debugtrace the byte count it thinks it gets. 07:19:23 CakeProphet: What exactly do you intend to make? 07:19:37 I was seeing if fungot read part lines. 07:19:55 No, I think it read only PRIVMSG lines as far as I can tell. 07:20:00 ^source 07:20:00 http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 07:20:13 fizzie: I'm not even going to begin to read that. :P 07:20:15 Check on line 105. 07:20:28 15G0"GSMVIRP"Q| and so on. 07:20:40 fizzie: Okay, _what_. 07:20:43 If not, it just goes back to read the next message. 07:20:48 16 07:20:48 0 07:20:48 32828 07:20:48 SHandshake (LoggedIn "9544a299e615f168") 07:20:48 SLogin (EntityID 964784) "" 8675309 False (WorldID 0) 0 0 0 07:20:49 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 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:20:59 8\4352\ 07:21:01 I changed nothing. Why did the parse change? 07:21:03 What is going _on_? 07:21:21 * elliott does a clean rebuild out of superstition. 07:21:31 -!- CakeProphet has quit (Quit: aiwriavniuqenehweer). 07:21:34 OK, now it reliably parses the above. 07:21:40 SHandshake (LoggedIn "9544a299e615f168") 07:21:40 SLogin (EntityID 964784) "" 8675309 False (WorldID 0) 0 0 0 07:21:40 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 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 So that's a slightly less ridiculous parsing. 07:21:53 At least SHandshake, SLogin, broken SHandshake makes more sense, since that explains why it starts "\1536\NUL\NUL\NUL\16384..." 07:22:10 Ye-ees, but it still doesn't explain why the broken. 07:23:23 s/ 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:11 That seems right. 07:25:24 For some reason, your thing starts to read a new packet from that 02 byte on. 07:25:32 Oh. What? 07:25:50 , packet 0x01 "SLogin" 07:25:50 [ PF.entityID "entity" 07:25:50 , PF.string "unused" 07:25:50 , PF.long "mapSeed" -- as above 07:25:50 , PF.bool "isCreative" -- as above 07:25:51 , PF.worldID "world" 07:25:53 , PF.byte "unknown" 07:25:55 , PF.ubyte "worldHeight" 07:25:57 , PF.ubyte "maxPlayers" 07:25:59 ] 07:26:01 It... shouldn't be doing anything tricksy there. 07:26:16 Uh, wait. 07:26:19 How come the world height isn't in 07:26:21 SLogin (EntityID 964784) "" 8675309 False (WorldID 0) 0 0 0 07:26:22 ? 07:26:48 Weird. 07:27:11 I suppose it parses your client-side login just fine, and that has the same fields? 07:27:24 Well, same-ish. 07:27:28 Same data types, anyhow. 07:27:47 CHandshake "ehird" 07:27:48 CLogin 17 "ehird" 0 0 0 0 0 0 07:27:52 I'm... not so sure. 07:27:58 Unless they're meant to be 0. 07:28:06 They are, yes. 07:28:37 -!- CakeProphet has joined. 07:28:38 -!- CakeProphet has quit (Changing host). 07:28:38 -!- CakeProphet has joined. 07:28:41 Right. 07:28:53 So something is rotten in the state of... uh, I can't bring myself to say Minecraftia. 07:29:30 newtype WorldID = WorldID Int8 deriving (Eq, Show, Serialize) 07:29:30 Well, that's right. 07:29:47 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 I shall never: forgive fizzie. 07:30:42 Anyhow, based on those bytes I think you should end up with "SLogin (EntityID 964784) "" 8675309 False (WorldID 0) 0 128 60". 07:31:21 Um. 07:31:25 fizzie: "02 (unknown byte)" 07:31:28 Did that become a 0? 07:31:34 Oh. Whoops. 07:31:36 Right. 07:31:46 Well, 2, 128, 60 then. 07:31:50 SLogin (EntityID 964784) "" 8675309 False (WorldID 0) 2 128 60 07:31:52 Hmmmmmmm. 07:32:03 IT KEEPS HAPPENING 07:32:10 No that didn't happen. 07:32:13 That's just what I'm aiming for. 07:32:15 Ah. Aw. 07:32:22 I was hoping you had some nondeterminism there. 07:32:29 That would be nice. 07:32:35 It's the only thing that could improve this, uh, experience. 07:32:44 -!- sebbu3 has quit (Ping timeout: 260 seconds). 07:32:49 Anyway, the seed is right; 0x0000000000845fed == 8675309. 07:33:24 It's as if it has stopped reading after the WorldID and padded the rest with zeros. 07:33:36 Yes, but... that shouldn't be happening. 07:33:40 That's not... a thing that happens. 07:33:43 (And then continued from after the WorldID as if it was a new packet from there.) 07:33:47 There is no code to suddenly stop reading and keep 0ing. 07:33:53 It is a feature I neglected to write. 07:34:03 I shall lurch anyhow. -> 07:34:04 -!- Vorpal has joined. 07:34:28 elliott: are you sure you read all the bytes from the socket? :) 07:34:43 wtf, windows 8 looks like a disaster from the screenshots. 07:35:12 it /seems/ like it is basically running something like android or iOS on a desktop... Which is stupid. 07:35:31 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:35 olsner: It's not socket. 07:35:38 I'm reading from a dumped file. 07:35:43 (reverse-i-search)`| tee': mkfifo fifo; nc p.nerd.nu 25565 fifo 07:35:48 Please feel free to point out errors. 07:36:19 elliott, eh, are you trying to reply minecraft server data? 07:36:24 I've successfully dumped a client log with: 07:36:25 replay* 07:36:26 (reverse-i-search)`anotherlog': mkfifo fifo; nc p.nerd.nu 25565 anotherlog 07:36:29 so I think this should be fine. 07:36:30 Vorpal: No. 07:36:35 ah okay 07:36:49 elliott, I would just use tcpdump to do it. Seems easier 07:36:57 Vorpal: yes - the UI is inspired by, if not based on, windows phone 7 07:37:11 Vorpal: Show me the tcpdump line. 07:37:19 I know how to use nc, pipes, and tee; I don't know how to use tcpdump. 07:37:22 elliott, I would launch wireshark and use that for it 07:37:41 since wireshark uses tcpdump as a backend iirc, or something compatible at least 07:37:53 olsner, yeah, that model doesn't really fit a desktop with a mouse though 07:38:01 Vorpal: How is this simpler than tee? 07:38:03 olsner, you don't need huge buttons unless you have a touchscreen. 07:38:13 elliott, not simpler, but it would definitely work 07:38:19 Vorpal: This does work. 07:38:30 elliott, oh okay, sounded like it didn't in one direction 07:38:33 $ dist/build/mchost/mchost client < anotherlog | head 07:38:33 CHandshake "ehird" 07:38:33 CLogin 17 "ehird" 0 0 0 0 0 0 07:38:33 CPlayerPositionLook 299.375 41.0 42.62000000476837 41.84375 351.4492 13.349988 False 07:38:33 CPlayerPositionLook 299.375 41.0 42.62000000476837 41.84375 351.4492 13.349988 False 07:38:34 CPlayerPosition 299.375 40.92159999847412 42.54160000324249 41.84375 False 07:38:36 CPlayerPosition 299.375 40.76636799395752 42.386367998725895 41.84375 False 07:38:38 CPlayerPosition 299.375 40.53584062504456 42.15584062981293 41.84375 False 07:38:42 CPlayerPosition 299.375 40.231523797587016 41.85152380235539 41.84375 False 07:38:44 CPlayerPosition 299.375 39.85489329934836 41.47489330411673 41.84375 False 07:38:46 CPlayerPosition 299.375 39.40739540236494 41.02739540713331 41.84375 False 07:38:48 What is broken is my code. 07:38:52 But only for certain server packets. 07:38:54 If I knew it'd be fixed. 07:39:03 right 07:40:10 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 Vorpal: you're really late for the windows 8 discussion. 07:40:31 elliott, oh? 07:40:41 come back like two weeks ago 07:40:47 elliott, I have been busy, only just now caught up with things. 07:41:11 elliott, anyway, what is your opinion on it? 07:41:22 `log windows 8 07:41:40 `log windows 8 07:41:43 HackEgo: Oi. 07:41:43 2011-03-30.txt:17:34:50: 339) * Received a CTCP VERSION from nyuszika7h * VERSION Microsoft IRC# 2011 64-bit (Windows 8 Beta, x64, 2GB RAM) Gregor: Windows 8 Beta? o_O A small benefit of my brief time as an intern at MS. 07:41:44 2011-09-19.txt:07:40:25: Vorpal: you're really late for the windows 8 discussion. 07:41:51 That's. 07:41:53 Not helpful. 07:41:55 `log windows 8 07:41:59 2010-11-18.txt:19:48:21: Gregor: Only 2 gigs of RAM for Windows 8? 07:42:02 `log windows 8 07:42:05 2010-06-14.txt:20:46:29: It will be somewhat interesting to see what Windows 8 will be "in reality". 07:42:08 `log windows 8 07:42:08 `log windows 8 07:42:09 `log windows 8 07:42:09 `log windows 8 07:42:09 `log windows 8 07:42:14 2011-09-19.txt:07:40:25: Vorpal: you're really late for the windows 8 discussion. 07:42:14 2011-03-30.txt:17:34:47: `addquote * Received a CTCP VERSION from nyuszika7h * VERSION Microsoft IRC# 2011 64-bit (Windows 8 Beta, x64, 2GB RAM) Gregor: Windows 8 Beta? o_O A small benefit of my brief time as an intern at MS. 07:42:15 2011-09-19.txt:07:41:40: `log windows 8 07:42:16 2011-09-13.txt:19:31:55: 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 2011-03-13.txt:13:33:46: Phantom_Hoover: i just want Windows 8 Cloud 07:42:22 Oh for chrissakes. 07:42:55 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 07:43:23 -!- Vorpal has joined. 07:43:28 fuck this connection 07:43:42 last line I saw was elliott, anyway, what is your opinion on it? 07:43:55 http://codu.org/logs/_esoteric/ 07:43:59 right 07:44:26 07:42:14: 2011-03-30.txt:17:34:47: `addquote * Received a CTCP VERSION from nyuszika7h * VERSION Microsoft IRC# 2011 64-bit (Windows 8 Beta, x64, 2GB RAM) Gregor: Windows 8 Beta? o_O A small benefit of my brief time as an intern at MS. <-- IRC#? 07:44:29 wtf is IRC# 07:45:03 a smell benefit of Gregor's brief time as an intern at MS 07:45:05 ... 07:45:05 small 07:45:08 Gregor has no smell benefits. 07:45:39 ms comic chat revival? 07:45:48 -!- Vorpal has quit (Read error: Connection reset by peer). 07:46:27 the joke is that vorpal is dumb 07:47:22 rip 07:49:38 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:49:46 existential 07:50:02 Sweden is supposed to have good internet, I wonder how vorpal failed to get it and got bad internet instead 07:50:55 he lives in a rural nowhere motto "for dumb vorpals" 07:51:05 well, maybe he just forgot to scroll down and thought he got disconnected, then restarted IRC because of it 07:51:39 but forgot the restart part 07:51:51 or was that the other one 07:52:24 not important 07:53:25 It is the wrapper for the Quasi class. So is there some hidden Quasi instance for working with Haskell programs? 07:53:26 also, smell benefits :D 07:55:20 zzo38: it is probably instantiated to IO in practice 07:55:24 or at least that is my hunch 07:55:52 IO cannot do reify or some of its other commands 07:55:58 hmm 07:56:02 probably some horrific internal ghc thing then :) 07:57:37 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 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 uggh how is Q not an instance of MonadIO 07:59:43 monqy: I don't know. It does have a runIO command, is that sufficient to make MonadIO? 08:00:02 yes 08:00:24 class Monad m => MonadIO m where liftIO :: IO a -> m a 08:00:32 runIO :: IO a -> Q a 08:01:17 So, liftIO = runIO is that correct? In which library/module is MonadIO? 08:02:00 Control.Monad.IO.Class looks like 08:02:05 But note that runIO is not always defined when runQ is used; sometimes it will be error. 08:02:53 Such as, I defined Maybe and (State QuasiState) as instances of Quasi, neither of which can perform I/O. 08:03:02 your instances are incomplete 08:03:22 I know. 08:03:24 and I don't see how this has any bearing on making a MonadIO instance 08:03:31 But even the IO instance of Quasi is incomplete. 08:03:38 what 08:03:42 do you mean by that 08:03:48 monqy: But, yes, I do suppose it can in fact be made a MonadIO instance anyways. 08:04:05 the only case in which it wouldn't work is when it wouldn't work anyway 08:04:06 The IO instance of Quasi cannot perform everything either. 08:04:08 because of incomplete 08:04:20 what do you mean by "IO instance" 08:04:38 I mean the instance Quasi IO 08:04:57 oh 08:05:44 so I see 08:06:37 What uses does the MonadIO class currently have? 08:08:04 OK, I made Q to be an instance of MonadIO in my ExtraTH program now. 08:08:07 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 same deal with MonadWhatever classes 08:13:36 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:18:43 lenses 08:19:19 data-lens and friends 08:19:32 Yes I know about lenses, but is there something for record syntax 08:19:54 not that I know of 08:20:03 why do you need record syntax? 08:20:18 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 recUpd :: Name -> Q Exp; -- :: (f -> f) -> r -> r; 08:45:17 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 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 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 Heh, a poll where the question says "choose two best options", and the list of options is a single-select radiobutton group. 10:46:24 haha clevur 10:59:51 -!- zanzarel has joined. 11:01:18 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 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 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 Probably a race condition somewhere 11:34:07 -!- variable has quit (*.net *.split). 11:36:08 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 uggh how is Q not an instance of MonadIO 12:02:30 @tell 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:02:30 Consider it noted. 12:03:58 @hoogle liftIO 12:03:58 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:31 :t foldM 12:44:32 forall a b (m :: * -> *). (Monad m) => (a -> b -> m a) -> a -> [b] -> m a 12:45:25 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 there is something so beautiful about the misencoding there 12:45:54 (there are misencoded quotes all over that document, but seeing them in that context is hilarious) 12:47:03 a classic 12:47:37 that page also obnoxiously puts title= attributes on every paragraph with the section header 12:47:48 meaning that it's kind-of hard to find anywhere safe to put the mouse 12:48:17 Well, the document itself does have and the quotes are proper UTF-8; unfortunately the server headers seem to specify ISO-8859-1. 12:48:44 12:48:58 Nothing like reassuring the parser that, yes, this is utf-8 12:48:58 Oh, it has that too. 12:49:13 Despite a deranged httpd's assertions to the contrary 12:50:11 shouldn't the meta override the server headers? 12:50:24 ais523: IT WAS YOUR BROWSER ALL ALONG 12:50:50 my browser normally obeys the normal rules for detecting encodings 12:51:50 "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 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 So it's entirely the server's prerogative. 12:55:40 Love standards... so many... choice... 13:03:18 -!- hagb4rd has joined. 13:35:19 -!- DH____ has joined. 13:57:13 https://github.com/rfw/metafun/blob/master/metafun/list.hxx 14:00:49 What is that 14:01:00 :) 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 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:19:53 Hello! 15:21:37 hi 15:23:06 -!- MSleep has changed nick to MDude. 15:24:34 ais523, I think there's some spam on the wiki 15:25:06 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 I know, I admin the Mezzawiki 15:25:28 right, indeed, deleted it 15:25:40 Which has had very few edits recently... 15:30:30 So, what's happening in THE WORLD OF ESOTERIC PROGRAMMING, then? 15:31:35 less than probably should 15:41:33 What ever happed to the Essies? 15:42:59 people lost interest, I think 15:43:18 Shame 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 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 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:05:10 @hoogle (%%) 17:05:10 No results found 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 > fix (2:) 18:25:09 [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 > fix error 18:25:50 "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E... 18:31:42 :t erorr 18:31:43 Not in scope: `erorr' 18:31:44 :t error 18:31:45 forall a. [Char] -> a 18:31:53 :t fix 18:31:54 forall a. (a -> a) -> a 18:32:05 I'm actually a little mystified as to how that works.. 18:32:56 oh wait, nevermind, I'm not. 18:34:58 -!- augur has quit (Remote host closed the connection). 18:40:28 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:54:24 Oh I am bored 18:55:47 -!- DH____ has quit (Read error: Connection reset by peer). 18:55:51 -!- AndChat| has joined. 18:56:30 Ngevd: I was going to recommend NetHack, when I saw this was #esoteric 18:56:33 but I may as well recommend it anyway 18:56:35 go play NetHack 18:56:43 I could never get the hang of it 18:56:50 hmm, fair enough 18:57:56 I will try, though 18:58:37 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 Can you reccomend a character's race, role, gender and alignment for me? 18:59:33 female lawful dwarven valkyrie 18:59:35 'tis the easiest combo 19:00:49 Hold on, University Challenge 19:00:59 -!- Ngevd has changed nick to Taneb|Hovercraft. 19:01:38 heh, it's on here too 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 Item lists are now sorted into alphabetical order 19:25:09 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 i suppose the problem is randomizing it only once, perhaps 19:25:40 but that could be done when you make the bones file(?) 19:25:53 alpha prevents information just as well 19:26:01 *information leakage 19:26:09 -!- zzo38 has joined. 19:26:21 how so? it g ives you information about what the item is by its name 19:26:25 assuming you knew what you had 19:26:33 which is the problem it was designed to avoid 19:26:45 or wait 19:26:52 i suppose you mean by its "unknown" name 19:26:57 yep 19:26:58 not its actual or original name 19:27:02 ok ;) 19:27:05 in fact, by the name the character sees it as 19:27:15 right 19:27:15 which is the description if unknown, and actual if known 19:28:00 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 @pl (\x y -> (compare `on` snd) x y `mappend` (compare `on` fst) x y) 19:28:18 ap (ap . (mappend .) . (compare `on` snd)) (compare `on` fst) 19:28:23 it's in development, as far as anyone can tell, but there's no releases, and no public repo 19:28:29 oh 19:28:30 so the development is entirely useless from anyone else'se point of view 19:28:40 and it's been like that for something like eight years now 19:28:52 lol :( 19:29:12 `addquote lol :( 19:29:14 672) lol :( 19:29:18 this is everything that's wrong with modern Internet language 19:29:32 no u 19:29:36 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 19:29:55 fizzie: the fixed version of the modern internet language? 19:30:19 olsner: Right. It's a shame you'll never see it, it's beautiful. 19:30:24 it's actually interesting if you think about it 19:31:28 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 in six characters, that's not bad 19:31:49 so i'm not so sure i can agree that it's "wrong" 19:31:57 though by all means, like everything it can be abused 19:32:15 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 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 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 didn't you watch LOTR? ;) 19:35:34 wielding arrows are piercing weapons 19:35:42 also: effective, if you care 19:35:51 Oh, this is annoying 19:37:03 Nethack: in a room with the exit staircase, a dead goblin, some money, a fountain, and a creaky floorboard 19:37:33 take money, drink fountain, exit ... profit? 19:37:34 ;p 19:37:48 eat the goblin 19:37:52 and then search the walls for secret doors 19:37:58 (assuming the goblin died recently) 19:38:09 vertical walls are more likely to have secret doors than horizontal walls 19:38:19 ^ more useful advice than i can offer 19:38:31 i've always been fascinated by nethack, but never played it much 19:38:39 Hang on, how do I check for hidden walls? 19:38:45 s for search? 19:39:00 i'm more interested in the distinction between vertical walls and horizontal walls 19:39:10 yep, s for search 19:39:13 oh, from overhead view 19:39:15 North-south, east-west 19:39:18 yeah 19:39:23 -!- oerjan has joined. 19:39:23 myndzi: it's not deliberate, AFAIK, just a side-effect of the map generation algo 19:39:32 Found a locked door 19:39:34 nah, i thought you meant vertical as in floor-to-ceiling 19:39:40 like, how would you tell? 19:39:45 also wouldn't it be the same thing? 19:39:48 but i understand 19:40:02 Horizontal walls, also called floors. 19:40:02 and yeah, text screens are wider than tall, so it makes sense to have a horizontal preference 19:40:20 fizzie: well, walls take up two axes so horizontal could be a wall as well 19:40:27 horizontal AND vertical = wall! 19:40:29 Ngevd: you can kick it down 19:40:30 > 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:30 control-D 19:40:31 No instance for (GHC.Num.Num System.Random.StdGen) 19:40:31 arising from a use of... 19:40:33 halp 19:41:22 > toEnum 1 :: Ordering 19:41:23 EQ 19:41:25 > toEnum 0 :: Ordering 19:41:26 LT 19:41:42 > 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 CakeProphet: that's ((mkStdGen x)^y) 19:41:43 No instance for (GHC.Num.Num System.Random.StdGen) 19:41:43 arising from a use of... 19:42:13 > 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 No instance for (GHC.Num.Num System.Random.StdGen) 19:42:14 arising from a use of... 19:42:35 CakeProphet: no, i mean, that's what it parses as, and it's not sensible 19:42:52 > 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 [6,5,21,6,5,2,6,5,2,5,2,5,2,5,4,1] 19:42:55 > 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 [6,5,21,6,5,2,6,5,2,5,2,5,2,5,4,1] 19:43:01 bahahahaha 19:43:06 best sort ever. 19:43:16 CakeProphet: not that i see how (mkStdGen (x^y) is any better 19:43:44 > 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 [6,5,2,6,5,2,5,21,6,5,2,5,2,5,4,1] 19:44:21 What#s a rust trap? 19:45:04 CakeProphet: i mean, i see no reason why that should be an order relation 19:45:41 oerjan: you think too narrowly. 19:45:44 -!- Zuu has quit (Ping timeout: 244 seconds). 19:45:45 :P 19:45:55 THIS IS A GREAT ORDERING OF OUR TIMES 19:46:04 i had to look up the vibrating square 19:46:11 and i am left to wonder how anyone would figure this crap out on their own 19:46:23 CakeProphet: oh i've experimented with sortBy crazy relations myself, just to find out what it compared. 19:46:32 yeah that's what I'm doing 19:46:35 also being sleep deprived. 19:47:43 Don't know what to do next 19:48:39 -!- ineiros_ has joined. 19:49:13 @hoogle (%%) 19:49:21 what would that be supposed to do 19:51:30 Floor two! 19:51:55 @pl (\x y -> (compare `on` snd) x y `mappend` (compare `on` fst) x y) 19:54:32 :t (mappend `on` ($ ?y).($ ?x).(compare `on`)) snd fst 19:54:33 forall a. (?y::(a, a), ?x::(a, a), Ord a) => Ordering 19:55:10 AAAH! 19:55:12 A HOBBIT! 19:55:20 What do I do, ais523? 19:55:27 join = id <=< id is that correct? 19:55:54 zzo38: hm maybe 19:56:01 :t id <=< id 19:56:02 forall (m :: * -> *) c. (Monad m) => m (m c) -> m c 19:56:06 yeah 19:56:29 Ngevd: attack it 19:56:38 unless it's peaceful, in which case ignore it 19:56:51 :t (id =<<) 19:56:52 forall (m :: * -> *) b. (Monad m) => m (m b) -> m b 19:56:54 Can't I recruit it to my cause? 19:57:02 To find the Amulet of Yendor? 19:57:09 not without appropriate magic 19:57:14 Aww 19:57:14 and even so, it wouldn't live long 19:57:35 Don't waste your magic on such thing 19:59:24 "If it moves, kill it." (Well, maybe not quite.) 20:00:06 "It it move, kill you." 20:00:25 Okay, floor three seems annoyingly empty 20:01:08 No wait, I died from food poisoning 20:01:37 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 Ngevd: don't eat undead that you've made dead again, don't eat things unless you killed them yourself recently 20:05:34 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:37 otherwise, run away 20:05:46 ais523: Thanks for the advice 20:05:58 the funny thing about nethack is 20:06:02 AceHack warns you against mistakes like that 20:06:11 it does a pretty good job in many cases of emulating things that would be common sense in real life 20:06:18 but you don't expect them of a video g ame 20:06:23 so you do stupid things 20:06:24 ;D 20:06:38 "you mean my actions have consequences?!" 20:07:40 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 ha, well, i was thinking on a bit smaller of a scale 20:08:58 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 just waiting for someone to merge nethack with dwarf fortress, haha 20:09:59 actually, it's possible to extinct a species of monster eventually if you keep killing things 20:10:13 i did know that at least 20:10:22 i remember a friend who was trying to extinct everything once 20:10:25 it was pretty amusing 20:10:29 he kept summoning and one-shotting them 20:10:47 extinctionist is a well known stupid ascension trick 20:10:49 his stash room was full of boulders from killing giants etc. 20:10:52 someone even did pacifist extinctionist once 20:10:53 mooz has played at least on extinctionist. 20:10:58 s/on/one/ 20:11:09 which is a beautifully ridiculous combination 20:11:13 someone even did pacifist extinctionist once <-- O_o 20:11:19 how... you make everything kill each other? 20:11:21 yep 20:11:26 how does the last one die 20:11:32 throw him a poisoned water flask? lol 20:11:34 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:11:39 I'm not sure 20:12:04 probably get a nonextinctable monster like Rodney to make the kill 20:12:09 lead it down a trap or hole maybe 20:12:18 or that 20:13:13 Random log-quote: [2006-12-12 13:47:01] I wonder why the Wikipedia category "Species extinct in the wild" has the page "User talk:TrogdorPolitiks". 20:13:21 (The statement is no longer true.) 20:15:47 `log 20:15:49 2010-02-09.txt:20:54:46: Turing complete = Turing degree 0' 20:28:16 -!- elliott has joined. 20:28:32 That PH sure is a long time Ireland. 20:30:15 an irish wake is not something to be rushed. 20:31:16 12:02:30: @tell 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 oerjan: um template-haskell is a hackage package now too 20:31:37 but yeah, it doesn't depend on transformers 20:32:22 -!- Zuu has joined. 20:32:33 elliott: the ghc documentation has TH modules but not transformer ones listed 20:33:31 13:57:13: https://github.com/rfw/metafun/blob/master/metafun/list.hxx 20:33:31 boring, done tons of times before :P 20:33:33 oerjan: well right 20:34:48 16:13:30: 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 16:13:41: lol, you can't do SHIT. Hahaha 20:35:00 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 19:00:49: Hold on, University Challenge 20:35:30 19:00:59: -!- Ngevd is now known as Taneb|Hovercraft. 20:35:30 19:01:38: heh, it's on here too 20:35:35 ais523: you realise you live in the same country 20:35:46 elliott: I know, I mean physically in this room there's a TV 20:35:53 gasp 20:35:54 and it was showing University Challenge at the time 20:36:11 19:29:12: `addquote lol :( 20:36:12 19:29:14: 672) lol :( 20:36:12 19:29:18: this is everything that's wrong with modern Internet language 20:36:15 ais523: by wrong, you mean right 20:36:25 19:29:32: no u 20:36:27 myndzi: u mad 20:36:28 NO UNIVERSITY CHALLENGE HERE 20:36:30 (I have embraced the demon.) 20:36:33 I just can't figure out what the line means at all 20:36:49 wrong country, no tv in my room and several hours later might explain it. possibly. 20:36:50 ais523: I can, but it's hard to describe without the incredibly useful "lol" and ":(" 20:37:01 it's like ":(", but it's been modified slightly 20:37:08 there's an inkling of a :/ type situation 20:37:27 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 something hinting at cosmic irony 20:37:35 YOU'RE WELCOME 20:37:48 thanks for the description 20:37:53 night everyone 20:37:55 -!- ais523 has quit (Remote host closed the connection). 20:38:09 19:31:28: 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:09 also this 20:38:15 also I scared ais away with my psychobabble 20:38:49 -!- Ngevd has quit (Ping timeout: 252 seconds). 20:39:05 hey it's topical, he should be able to stand it if he voluntarily joins the channel 20:39:07 If you defined join in that way would fmap be fmap x = id >=> return . x 20:39:27 :t id >=> return . ?x 20:39:28 forall (m :: * -> *) b a. (Monad m, ?x::b -> a) => m b -> m a 20:39:43 so it seems 20:41:20 Why doesn't that ?x stuff working in my computer? I just used \ to display the type instead 20:41:33 ImplicitParameters extension 20:41:45 OK 20:42:23 Then I suppose you can define a monad in terms of (return .) and (<=<) 20:42:43 :t (return .) 20:42:44 forall a (m :: * -> *) (f :: * -> *). (Monad m, Functor f) => f a -> f (m a) 20:42:54 sigh, caleskell 20:42:57 :t (return Prelude..) 20:42:58 forall b (m :: * -> *) a. (Monad m) => (a -> b) -> a -> m b 20:43:36 -!- Phantom_Hoover has joined. 20:43:36 :t (return .) id 20:43:37 forall a (m :: * -> *). (Monad m) => a -> m a 20:43:43 You can get return from (return .) by, if you have f = (return .) then you have return = f id 20:43:50 Because that is the identity laws of categories 20:44:01 i just did that :P 20:44:14 oh Phantom_Hoover came back 20:44:21 speak of the devil 20:44:22 i guess 20:44:23 he returns 20:44:25 from eireriealdn 20:44:55 :t (const ?x >=> ?f) undefined 20:44:56 forall (m :: * -> *) b c. (?x::m b, ?f::b -> m c, Monad m) => m c 20:45:11 Is this like the last time you spoke of the devil by insulting me. 20:45:17 and that's one way to get >>= 20:45:30 Help my key is unreliable. 20:46:16 the key is such a fickle beast 20:46:34 It is indeed. 20:51:30 Defining monad in terms of (return .) and (<=<) seems a way to directly convert morphisms?? 20:52:42 zzo38: ah yes, (return .) is a mathematical functor from the category with . as composition to the one with <=< as composition 20:53:30 (the latter is the kleisli category, if you haven't seen it, although it's mentioned in the Control.Arrow module) 20:53:47 (with a newtype wrapper) 20:53:52 :t Kleisli 20:53:53 forall a (m :: * -> *) b. (a -> m b) -> Kleisli m a b 20:55:48 http://www.haskell.org/ghc/docs/latest/html/libraries/base-4.4.0.0/Control-Arrow.html#t:Kleisli 20:56:21 but then i expect you have, since you're investigating <=< in the first place 21:00:48 Yes I know that <=< and >=> is the Kleisli composition. 21:01:26 Now I can understand better. 21:01:51 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:15:54 can i have caret plz 21:16:07 > 17*8-7*11 21:16:08 59 21:16:11 thats not caret 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 elliott: git add -p instead of git commit --interactive 21:17:54 Deewiant: Hmm, that looks nicer 21:18:02 Deewiant: Is there any way to amend a previous commit by splitting it into patches? :-P 21:18:37 rebase :-P 21:19:12 :'( 21:27:06 -!- sllide has quit (Read error: Connection reset by peer). 21:32:50 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 Deewiant: I don't support an interactive rebase will do it :P 21:34:48 suppose* 21:35:01 Just "edit" the commit you want to split 21:36:48 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:31 Oh right, hmm 21:37:42 I suppose you can git reset --soft there 21:38:11 Hmm, I've never used reset --soft before 21:38:12 What's that do 21:38:16 Manpage isn't very helpful 21:38:53 "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 elliott: git reset --soft changes the head pointer to point at the commit you hand it. And nothing else. 21:40:10 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 I must instead copy those lines elsewhere, outside of the repo, so that I can later restore them 21:40:36 "Does not touch the ... working tree at all" 21:40:44 ... 21:40:47 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 I must instead copy those lines elsewhere, outside of the repo, so that I can later restore them 21:40:56 The whole point is to reduce the size of the commit 21:40:56 elliott: What is "that" 21:41:02 Which involves editing the files 21:41:06 Deewiant: ..."so that" 21:41:11 In order so that I may be able to later restorethem 21:41:14 elliott: What part of changing the head pointer obliterates changes? 21:41:15 elliott: "that owuld then obliterate" 21:41:19 would* 21:41:27 Deewiant: Removing those twenty lines and amending the commit would obliterate those lines 21:41:46 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 pikhq: It's what I do after that 21:41:49 You don't want to amend after the reset --soft 21:41:55 Just commit ordinarily 21:41:58 elliott: Ah, right. 21:42:09 Deewiant: And git will magically figure out which parts of the commit I want? 21:42:16 Or do you mean commit --interactive 21:42:35 The problem is that just hunk-based selection probably isn't enough 21:42:43 Here is where you mutter "git's UI sucks balls". 21:42:48 I'll need to do some selective manual reverting of changes so that each commit builds cleanly 21:42:55 With add -p you can edit the hunks manually 21:43:09 Thank god, I was almost afraid I'd be able to do this from the comfort of my editor 21:43:27 I think I'll stick with the "manually copy the tree out and incrementally bring this closer" 21:43:36 Oh yeah, what happens to the commit date if I add new commits in-between 21:44:12 The situation is basically 21:44:22 http://sprunge.us/JhTb 21:44:30 The commits made in the last few minutes are just fine 21:44:44 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 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:24 This is a pain :P 21:46:25 Editing in add -p /does/ open an editor :-P 21:46:44 I like git to think I'm a vim user for commit messages, but I'm not 21:46:53 Deewiant: More importantly, it'll need multi-file edits 21:46:58 And cabal-dev invocations to attempt rebuilds 21:46:59 etc. 21:47:21 Sounds like you should maybe do a new branch and cherry-pick or something 21:47:29 So, OK, here's the real situation: How do I obliterate the last N patches without throwing away the changes 21:47:30 As in 21:47:34 Don't touch the working tree 21:47:39 But obliterate those commits and reset the HEAD 21:47:49 And then I'll just selectively re-commit everythin 21:47:50 g 21:47:55 -!- FireFly has quit (Quit: FireFly). 21:48:17 elliott: git reset --soft :-P 21:49:21 Heh 21:49:25 I didn't realise reset could change history 21:49:34 --soft sounds rather more hard than what --hard does 21:50:21 --hard does the same thing as --soft but also throws away your changes, that seems harder 21:50:36 Then that doesn't do what I need; --hard doesn't change HEAD 21:50:44 Unless I'm sorely mistaken 21:51:29 reset changes the head, always 21:52:05 --soft makes it not change the index, --hard makes it also change the working tree 21:52:20 I use "git reset --hard" to remove changes from the working tree after I make some changes and they suck 21:52:23 Without changing the repository 21:52:23 Is that wrong 21:53:06 No, that's equivalent to "git reset --hard HEAD" which obviously doesn't change the head in practice :-P 21:53:19 Ah 21:53:30 OK, time to do this shit, as they say in the hood 21:53:52 Deewiant: btw, I take it the commit objects will remain around until a git-gc? 21:54:16 And even thereafter unless I misunderstand gc 21:54:28 How do I get rid of 'em then, git pack? 21:54:42 Deewiant: If the commit objects aren't referred to by anything, gc will remove them. 21:54:47 Do enough shit that they fall out of the reflog 21:54:54 Deewiant: Gross 21:54:55 pikhq: But aren't they referred to by the reflog 21:55:05 Quite possibly. 21:55:05 elliott: You don't need to explicitly get rid of them 21:55:18 Deewiant: Will they get pushed to github if I push 21:55:19 They'll disappear if you don't use them 21:55:21 No 21:55:26 Hmmmmmmm 21:55:28 Alright then 21:55:31 Unless you leave a branch pointing to them or something 21:55:32 I might just re-clone :-P 21:55:36 (And then push that branch) 21:55:40 They expire after a given time, so it's not like you really need to think about it. 21:55:51 elliott@katia:~/Code/mchost$ git reset --soft fe5730069ce57be21cbc2fddb5115094679e1ab8 21:55:51 elliott@katia:~/Code/mchost$ git diff 21:55:51 elliott@katia:~/Code/mchost$ 21:55:53 Deewiant: Help 21:56:03 git status 21:56:17 # Changes to be committed: 21:56:18 # (use "git reset HEAD ..." to unstage) 21:56:18 # 21:56:18 #modified: MC/Protocol.hs 21:56:18 #modified: MC/Protocol/Fields.hs 21:56:18 #modified: MC/Protocol/Types.hs 21:56:20 #modified: Main.hs 21:56:22 Hmmm 21:56:38 So I just need to git reset HEAD them to get them back in the diff? 21:56:42 God I suck at git 21:56:48 Or git diff --cached 21:57:02 If you just want to look at them, that is 21:57:08 Or you could have done git reset --mixed, to drop the staged changes, too. 21:57:13 You can even git reset -p (inverse of add -p) if you're feeling adventurous 21:57:31 Should I feel upset about the resulting stream of commits not being authentically chronological 21:57:34 Right, plain git reset (it defaults to --mixed) would probably have been better 21:57:36 As in 21:57:42 But it's equivalent to doing another reset now 21:57:51 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 I did a bunch of fixes between adding ServerProtocol and before exporting ServerProtocol 21:57:55 Rather than it being clear. 21:58:05 But I'm going to do it this time as me exporting ServerProtocol as soon as I write it 21:58:10 Is that bad, am I a bad person, I feel bad 21:58:17 Imagine if it were "git set-head" instead of "git reset --soft", for instance. 21:58:42 I wonder if somebody's written a set of aliases like that 21:58:49 (And published it) 21:58:58 Pls. report on my badness 21:59:26 Shrug 22:00:26 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 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 Many operations are too complicated to express like that, though 22:01:25 I'm feeling bad still 22:01:26 Like the swiss army knife that is rebase 22:01:27 For instance? 22:01:32 Oh, effing rebase. 22:01:44 Validate me or I'm switching to darcs 22:02:18 You're worried about exporting something in an earlier commit now? :-P 22:02:32 I'd probably want to split rebase into a few different commands, TBH. 22:02:35 Yes 22:02:40 It's like lying 22:02:42 I'm a aliar 22:02:44 s/aliar/liar/ 22:02:55 Doesn't seem bad to me 22:03:02 At least splitting isn't very lie-like, it only lies about my committing practices, not my development order 22:03:08 pikhq: rebase --interactive is immensely convenient as one command 22:03:29 Deewiant: It's also quite different from git rebase without --interactive. 22:03:36 True 22:04:22 Maybe something like "git everything interactive-rebase" ;-) 22:04:23 I'd probably split it up into "git branch rebase" and "git branch rewrite" or something. 22:04:54 Though "branch" doesn't seem quite right, because branch isn't really a git data structure. 22:05:26 "history" is at least less of a misnomer. 22:07:27 Hmm. The "git commit" vs. "git commit -a" comes out nicely. "git stage commit" vs. "git working commit". 22:07:50 What about "git commit file" 22:08:30 Clearly misguided. "git commit" would be a class of commands that operate on commit objects. 22:08:42 I meant, what would it be 22:09:08 It's equivalent to stash, add file, commit, stash pop 22:09:13 How does one hard reset a single file 22:09:22 git refuses to do it :P 22:09:26 Probably "git working commit file". 22:09:28 git status tells you 22:09:38 Oh, right 22:10:36 Aww, you can't do "git diff ../derivative-of-this-repo ." :/ 22:11:04 But you can do that without the "git" ;-P 22:11:05 Somebody need to write git repodiff or something 22:11:31 Deewiant: Does that support patience diff?????? 22:11:32 I think not 22:11:45 Probably not 22:12:02 --- ./.git/COMMIT_EDITMSG 2011-09-19 23:10:44.580093001 +0100 22:12:02 +++ ../mchost.new/.git/COMMIT_EDITMSG 2011-09-19 23:05:02.490093001 +0100 22:12:02 @@ -1,8 +1,8 @@ 22:12:02 -Make fields in MC.Protocol.Types strict 22:12:02 +Turn some simple wrapper data types into newtypes 22:12:02 -1,8 +1,8 22:12:03 # Please enter the commit message for your changes. Lines starting 22:12:05 # with '#' will be ignored, and an empty message aborts the commit. 22:12:07 # On branch master 22:12:09 -# Your branch is ahead of 'origin/master' by 3 commits. 22:12:11 +# Your branch is ahead of 'origin/master' by 7 commits. 22:12:13 # 22:12:15 # Changes to be committed: 22:12:17 # (use "git reset HEAD ..." to unstage) 22:12:19 Binary files ./.git/index and ../mchost.new/.git/index differ 22:12:21 diff -ru ./.git/logs/HEAD ../mchost.new/.git/logs/HEAD 22:12:23 Thanks Deewiant, you're so right, I can do that with just "diff" 22:12:25 WORKS PERFECT FIRST TIME 22:12:34 -x .git woo 22:12:44 File ./fifo is a fifo while file ../mchost.new/fifo is a fifo 22:12:44 A large difference 22:12:45 Don't blame me if you don't have diff aliased to the appropriate thing 22:13:26 I wonder why git-diff doesn't work on things that aren't git repos. 22:13:45 Does any other diff? :-P 22:14:24 Well, git diff is better than diff(1) 22:14:35 And git is stupid, so the algorithm should not be git-specific at all 22:14:59 Oh my god, Debian really does call ack "ack-grep" 22:15:07 Wait, why did I install that, I want diff 22:15:08 diff is not grep 22:15:22 I am not think good right now 22:21:14 -!- SgeoN1 has joined. 22:21:57 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 Can wear out be detected? 22:23:29 I'll also try switching to Lubuntu. 22:25:14 Deewiant: git add -p, git commit --amend should do the right thing, right? 22:25:47 As in "only amend in the stuff I select, leave the other stuff untouched in my working tree" 22:26:43 Seems so 22:29:12 * Phantom_Hoover → sleep 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:49:04 eek, web is gone 22:54:44 ? 22:55:44 i smell a dns issue 22:55:59 i cannot open new connections 22:56:44 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 $ dist/build/mchost/mchost server < serverlog 23:02:40 SHandshake (LoggedIn "9544a299e615f168") 23:02:40 SLogin (EntityID 964784) "" 8675309 False (WorldID 0) 0 0 0 23:02:40 mchost: Data.Text.Array.new: size overflow 23:02:40 Heh 23:02:49 fizzie: The server sends string lengths as signed shorts, not unsigned, right? 23:03:02 Obviously no real string will be long enough to show the difference, just checking. :p 23:06:55 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 that's weird now my putty shortcuts work again, but still not web 23:07:37 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 fizzie: So, it's after the worldid that parsing fucks up, you concluded, yes? 23:09:02 Yes. Because the unknown 02 is/was what's interpreted as the type byte for a new 0x02 SHandshake. 23:09:30 google by ip doesn't work either 23:09:32 (At least it sounded like that.) 23:09:50 fizzie: Time to use -ddump-splices to look at what the generated code looks like, then. 23:10:22 1## 23:10:23 -> do { entity[aj6v] <- Data.Serialize.get; 23:10:23 unused[aj6w] <- getTextUTF16be; 23:10:23 mapSeed[aj6x] <- Data.Serialize.get; 23:10:23 isCreative[aj6y] <- Data.Serialize.get; 23:10:23 world[aj6z] <- Data.Serialize.get; 23:10:25 unknown[aj6A] <- Data.Serialize.get; 23:10:27 worldHeight[aj6B] <- Data.Serialize.Get.getWord8; 23:10:31 maxPlayers[aj6C] <- Data.Serialize.Get.getWord8; 23:10:33 return 23:10:35 (SLogin 23:10:37 entity[aj6v] 23:10:39 unused[aj6w] 23:10:41 mapSeed[aj6x] 23:10:43 isCreative[aj6y] 23:10:45 world[aj6z] 23:10:47 unknown[aj6A] 23:10:49 worldHeight[aj6B] 23:10:51 maxPlayers[aj6C]) } 23:10:53 Well, that certainly looks right. 23:10:55 Erm. 23:10:57 maxPlayers isn't a ubyte is it 23:11:01 Huh, it is 23:11:13 SLogin !EntityID !Data.Text.Internal.Text !GHC.Int.Int64 !Bool !WorldID !GHC.Int.Int8 !GHC.Word.Word8 !GHC.Word.Word8 | 23:11:21 That also looks right. At least to me. 23:11:33 Ah hmm ah hmm 23:11:33 Hmm 23:11:34 Ah 23:11:34 Hmm 23:11:38 Hmmmmmmmmmmmm 23:11:50 fizzie: Note that "Bool" there 23:11:54 Bools are usually bytes in the Minecraft protocol 23:12:08 -- Bools are encoded as a byte in the range 0 .. 1 23:12:08 instance Serialize Bool where 23:12:08 put = putWord8 . fromIntegral . fromEnum 23:12:08 get = liftM (toEnum . fromIntegral) getWord8 23:12:38 -!- Patashu has joined. 23:12:57 What's that WorldID like? Just another name for a byte? 23:13:14 Yes. 23:13:23 Yes, this is almost certainly the problem. The seed parses fine because big endian. 23:13:27 And thus we have a desync. 23:15:03 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 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 This does feel more comfortable with swap. 23:23:31 Free -m doesn't state that there's any swap usage though, so I'm cknfused 23:23:37 hm some sites work now 23:24:49 can do ansic style too? the dump thang 23:25:29 -!- sebbu3 has changed nick to sebbu. 23:26:02 no, it's not that important..i'll go out for a walk and a drink 23:26:05 cu later 23:26:15 ?pl fmap f (g x) 23:26:15 fmap f (g x) 23:26:18 oerjan: hepl 23:26:20 hagb4rd: The dump thing? 23:26:41 oerjan: i'm trying to en-nicen 23:26:42 WindowItems <$> (replicateM (fromIntegral count) $ do 23:26:42 let getShort = SE.get :: Get Int16 23:26:42 sh <- SE.lookAhead getShort 23:26:42 if sh < 0 23:26:42 then getShort >> return Nothing 23:26:44 else Just <$> SE.get) 23:26:46 the parens are... unnice... 23:26:53 hi elliott.. i'll explain this later on, if u like 23:26:57 hagb4rd: ok 23:27:05 fmap WindowItems . replicateM (fromIntegral count) $ do 23:27:08 oerjan: that works but is kinda ugly :/ 23:27:25 I guess I'll just go with that 23:27:40 elliott: `replicateM` 23:27:56 should work there 23:28:44 in the spot of the $ 23:30:25 Why is casper-rw not part of disk space according to Ubuntu 23:30:31 oerjan: you mean 23:30:33 WindowItems <$> fromIntegral count `replicateM` do 23:30:34 ... 23:30:34 ? 23:30:36 yep 23:30:41 * elliott tries it 23:30:47 i'm not convinced it's nicer though :P 23:30:59 alternative, `id` instead of $ 23:31:16 but i somehow doubt you think that's better :P 23:31:21 nice :P 23:31:28 hmm, it does indeed work 23:31:33 but I think my solution is more readable :P 23:31:41 what solution 23:31:51 fmap WindowItems . replicateM (fromIntegral count) $ do 23:31:55 oh well 23:32:13 oh hm 23:32:27 Argh, I need a home-rw too I guess 23:35:27 -!- calamari has joined. 23:36:57 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:18 :D 23:37:29 s/correct/connect/ btw 23:37:35 er right 23:37:35 oerjan: sounds like a router is down 23:37:39 yeah 23:37:42 but that is soooo cool :DDDDDD 23:37:43 geographical internet 23:37:52 reminds me of that sysadmin story thing that maybe someone remembers 23:38:35 however i can connect from nvg to google.no just fine, so it's not _from_ all norwegian sites. 23:40:41 well that just means that nvg have a different isp to you. 23:40:41 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:48 yeah 23:40:54 you're essentially using nvg as a router in place of your isp's :P 23:40:57 or your isp's isp's 23:41:05 nvg is in the university network, almost certainly 23:41:13 -!- Jafet has joined. 23:41:30 which is in a sense norway's oldest isp, i think :P 23:42:06 or close to it 23:44:55 oh i reached liu.se 23:45:13 How long until oerjan figures out we caged Scandinavia? 23:45:33 well i couldn't reach bbc earlier 23:45:45 BBC: a Scandinavian institution. 23:45:49 still no haskell.org 23:46:06 elliott: well it was the first clearly european domain i tried 23:46:22 (outside norway) 23:46:24 Heh 23:47:32 www.turku.fi failed 23:49:01 ok ku.dk works 23:50:48 it does indeed look distinctly scandinavian 23:51:36 hamburg.de fails 23:52:05 hm could it be that it depends on more than just country 23:52:27 oerjan: It depends on the exact tangle of ISPs :P 23:52:38 Cables and routers and blah blah blah. 23:52:59 oxford.ac.uk fails 23:53:24 elliott: i just realized all the working scandinavian ones were universities 23:53:46 oerjan: maybe there's some sort of scandinavian university network thing 23:54:04 www.maersk.dk fails 23:54:10 -!- augur has quit (Remote host closed the connection). 23:54:23 elliott: that was what i was thinking, however i hadn't actually tested any non-universities 23:54:59 oerjan: you could use nvg as an http proxy, if you'd like it fixed sooner rather than later 23:55:36 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:43 heh 23:55:44 Akamai is a content distribution network. 23:55:49 They're not Scandinavian. :p 23:55:49 -!- DH____ has joined. 23:55:51 oerjan: I wasn't joking 23:56:01 Would take a few commands and a setting in IE 23:56:05 that was what i recalled, i think reddit uses them 23:56:12 Yeah. 23:57:30 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.