00:03:12 -!- kwertii has joined. 00:12:10 Well, my muxer works perfectly, with the small caveat that it doesn't work. 00:12:16 Gregor: Sounds like mine. 00:12:20 What was wrong with mine again? :-P 00:12:31 elliott: Yours just didn't send shit anywhere :P 00:12:37 Gregor: And your does? :P 00:12:39 Mine works, it just gets all wonky after a few K. 00:12:46 Oh well that's far better :P 00:12:49 At least mine fails predictably 00:13:00 I think I'm doing something wrong with nonblocking I/O. 00:13:20 Gregor: Can I sell @ Enterprise Solutions to you? 00:13:25 They make non-blocking I/O... a CINCH 00:13:43 @ enterprise solutions 00:13:52 Yes, it's identical to @ 00:15:14 Gregor will have none of this @ in his redneck computer system o-tron. 00:20:04 -!- botte has joined. 00:20:13 botte: WHAT'S THI 00:20:14 S 00:20:18 And 00:20:19 Also 00:20:21 Why is it buffering like that 00:20:22 Oh 00:20:23 I think I know why 00:20:29 -!- botte has quit (Remote host closed the connection). 00:20:34 bye botte 00:20:40 Hmm 00:20:41 -!- botte has joined. 00:20:42 Why isn't it 00:20:45 botte: Why aren't you 00:21:52 help why is it 00:22:03 why is what help 00:22:08 what is it 00:22:09 help 00:22:12 help 00:22:23 :( 00:25:49 -!- botte has quit (Ping timeout: 276 seconds). 00:27:45 what does/did botte do 00:28:09 its 00:28:10 note working 00:28:11 sonothing 00:28:23 what should it do... 00:42:33 I FIXED IT 8-D 00:42:38 I suck at nonblocking I/O though :P 00:42:40 Gregor: WHAT DID YOU DO 00:42:41 WAS IT MAGIC 00:43:11 Just fixed a read that should have been blocking. 00:45:49 -!- sllide has quit (Ping timeout: 250 seconds). 00:49:06 `killall linux` feels like a really bad command. 00:49:08 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: killall: not found 00:49:20 X-D 00:49:53 >_> 00:50:05 Hm ... this may or may not be working ... 00:50:13 If it is working, it's supaslow. 00:53:35 (That is, working via tty redirection) 00:56:30 Argh 00:56:49 I feel sick for being unable to think of a nice functional solution to a problem that looks like it ought to have one 00:57:06 Yes. You're sick. 00:57:21 a sgeo problem 00:58:08 Gregor doesn't want to implement mudem in @ I WNODER WHY 00:58:47 This code is so imperative ;( 00:59:18 sickening 01:00:14 Sgeo: what languagea e you using 01:00:25 Ruby 01:00:33 why 01:00:43 I'd like to know what a nice Haskell solution looks like though 01:00:50 what's the problem 01:01:40 Sgeo: whats the problem 01:01:46 Hold on 01:01:59 no 01:01:59 no holding 01:02:01 only haskell 01:02:02 forever 01:02:16 http://pastie.org/2394254 01:02:28 ouch my eyes 01:02:36 http://pastie.org/pastes/2394254/text 01:02:36 ur welcome 01:02:40 * elliott reads 01:02:58 ok i can do this 01:03:46 Sgeo: the ordering doesn't matter, right? 01:03:51 i.e. it's five numbers in arbitrary order 01:04:05 I'm not sure 01:04:20 the problem is way too ambiguous as specified if I don't know that 01:04:24 doe "set of three ones" mean "three consecutive ones" 01:04:27 or "three ones in any order" 01:04:28 [asterisk]does 01:04:38 assert_equal 250, score([2,5,2,2,3]) 01:04:55 that doesn't answer my question 01:05:01 Yes it does 01:05:02 Sgeo,....................... 01:05:09 Any order. Which I thought it wasn't, so oops 01:05:27 http://en.wikipedia.org/wiki/Greed_(dice_game)#Scoring 01:05:28 are you sure 01:06:10 I shouldn't be asking for this now, it feels like asking for homework help 01:06:26 But that's one of the test cases given, so... 01:07:12 Sgeo: i'm donig it in haskell 01:07:14 so how will it help you 01:07:21 how about giving me the actual link to whatever it is 01:07:27 so i can see all the test cases 01:07:30 this wikiped does not agree with this what sgeo pasted... 01:08:14 https://github.com/edgecase/ruby_koans/blob/master/koans/about_scoring_project.rb 01:08:22 # * A one (that is not part of a set of three) is worth 100 points. 01:08:23 # 01:08:23 # * A five (that is not part of a set of three) is worth 50 points. 01:08:26 this is the stupidest fucking game ever 01:08:31 I'm not sure I understand the game of Greed 01:08:39 if your turn ends when you don't score points, how do you ever get a straight? 01:08:41 Sgeo: wait, score takes an arbitrary-length list? 01:08:47 oh "up to five" dice 01:08:53 OH nevermind 01:09:35 Well, my problem here is with thinking, not the language 01:09:44 But unordered should be much easier 01:13:40 -!- CakeProphet has joined. 01:13:40 -!- CakeProphet has quit (Changing host). 01:13:40 -!- CakeProphet has joined. 01:14:51 It shouldn't be cheating to use pry to explore things like Hash's methods, right? 01:15:08 (Looked for a way to set a default value in a hash, and found it) 01:15:09 what 01:16:33 Sgeo: I almost have a nice-ish solution 01:16:44 I almost have something nice-ish too 01:17:15 I like the way my solution is turning out. Still a little imperative, but still 01:17:31 *Main> score [1,5,5,1] 01:17:31 100 01:17:33 oops 01:17:43 *sob* WHY IT NO WORKY :( 01:19:00 Sgeo: http://sprunge.us/TRiI 01:19:09 Sgeo: This is mine... triples is fairly ugly, but it could be a lot worse. 01:19:13 monqy: What's yours look like? 01:19:32 im not done im learning the split package :( 01:21:35 -!- elliott_ has joined. 01:21:40 Sgeo: Did mine get through? 01:21:54 elliott_, I haven't tested or anything 01:21:58 Sgeo: I mean 01:21:59 Did the link to mine 01:22:01 get through 01:22:04 yes 01:22:07 Yes 01:22:10 -!- elliott has quit (Read error: Connection reset by peer). 01:22:21 if the link was 18:20:55 < elliott> Sgeo: http://sprunge.us/TRiI 01:22:22 at least 01:22:25 Yeah 01:23:37 monqy: If you clean up triples let me know ;-) 01:23:56 Hmm, I think I can 01:23:56 i'm multitasking so much right now 01:24:14 recently i have also been putting food in my mouth 01:24:28 > fmap succ (0,9) 01:24:29 (0,10) 01:26:06 Bleh, I have no idea why this isn't working ... 01:26:09 Aha 01:26:16 Sgeo: monqy: http://sprunge.us/SVcQ 01:26:18 Now it's pretty nice. 01:26:21 I like it. 01:26:29 it ineed looks better 01:28:50 Sgeo: What's yours look like 01:29:03 I'm not done 01:29:18 -!- evincar has joined. 01:29:43 http://pastie.org/2394371 is what it currently looks like though 01:31:09 Oh, hmm, I could simplify mine a lot. 01:33:14 I should probably clone before deleting from a Hash while looping through a hash 01:34:11 -!- zzo38 has joined. 01:34:34 Darn, I suck at variable names 01:35:25 didnt someone in here used to have "lament" as their username? :| 01:36:36 augur: lament used to be in #haskell, at least. 01:36:46 lament is an op here. 01:36:53 He only comes to try and irritate us lamely nowadays. 01:37:01 Also he hates Haskell. And programming. :p 01:37:05 well! 01:37:09 ?hoogle divmod 01:37:10 Prelude divMod :: Integral a => a -> a -> (a, a) 01:37:10 Data.Fixed divMod' :: (Real a, Integral b) => a -> a -> (b, a) 01:37:11 ?hoogle quotRem 01:37:11 Prelude quotRem :: Integral a => a -> a -> (a, a) 01:37:39 well theres a lament in #math who says he has no idea what #esoteric is 01:37:42 maybe hes lying :D 01:37:46 He is. 01:37:50 * [lament] (~lament@S0106002312fa554a.vc.shawcable.net): Nikita 01:37:54 Right hostname, realname. 01:39:28 -!- moses_ has joined. 01:39:36 lament 01:39:38 WTF 01:39:40 where are you 01:39:55 moses_: in #math! 01:40:20 omg 01:40:23 what 01:40:24 the fuck 01:40:25 way to ruin my life 01:40:25 is going on 01:40:34 moses_: ????????? 01:40:46 elliott_, you were once my hampster!!! 01:40:58 I know. 01:41:02 But then I passed away. 01:41:06 I'm still with you in spirit, moses_. 01:41:31 actually you got lost in my house 01:41:47 ok no but seriously what is it with lament?? 01:41:51 why are you here 01:42:02 you dont know lament? 01:42:09 yes, I do 01:42:12 well, fsvo know 01:42:19 he is an op here, why? 01:42:29 he hates me 01:43:09 he hates a lot of things 01:43:10 is it true that he doesn't come here anymore specifically because of elliott_ specifically 01:43:17 yes 01:43:19 i believe so 01:43:22 yeah :D 01:43:25 he hates someone in this channel 01:43:27 moses_: what's your point, and why are you coming here to make it 01:43:29 so what is this channel? 01:43:35 it's about esoteric programming languages 01:43:40 which are like which? 01:43:42 C? 01:43:46 muhahahaaha 01:43:48 jkjk 01:43:55 brainfuck, intercal, unlambda :P 01:44:01 (but nobody likes brainfuck much.) 01:44:15 so wait 01:44:26 moses_: does lament going around telling people how much he hates this one guy in #esoteric or something 01:44:31 because that's hilarious 01:44:41 someone called him out on it 01:45:47 augur, hello 01:45:58 -!- dbelange has joined. 01:45:58 moses_, hello 01:46:12 they told me to ask you about brainfuck 01:46:26 coppro: someone let dbelange out of the cage again 01:47:10 ok my score looks worky 01:47:21 monqy: I just did it in a nice way except sprunge is down oops 01:47:25 I don't really like how the layout turned out, but other than that, I'm pleased with it 01:47:36 oh no 01:47:41 I'll hpaste mine I guess?? 01:48:03 elliott_: who are you 01:48:23 dbelange: a beautiful snowflake 01:48:27 does anyone here know erlang 01:48:27 monqy: Sgeo: here we go: http://hpaste.org/50453 01:48:29 also it's fast now 01:48:38 I want to learn erlang but nobody uses it because it's useless 01:48:40 elliott_: Sgeo: http://hpaste.org/50454 01:48:42 so I come here 01:49:05 dbelange, Erlang isn't considered "esoteric" 01:49:13 Sgeo: dude dbelange has been in here before 01:49:16 But there may be people here who know some ... oh 01:50:11 monqy: yours requires language extensions :( 01:50:16 you probably want a newline before the | anyway 01:50:28 elliott_: yeah 01:50:38 elliott_: What did I do last time that was so memorable? 01:50:53 dbelange: I think I primarily remember coppro shooing you away 01:50:54 elliott_: I guess my thing got scrolled down so the {-# LANGUAGE PatternGuards #-} got cut off 01:51:03 elliott_: anyway I can't live without pattern guards 01:51:09 I wish guards could nest 01:51:10 that would be nice 01:51:33 monqy: yours doesn't scale very well if your dice miraculously grows a few thousand extra sides, just sayin' 01:51:39 :( 01:51:47 it was my first try 01:51:58 hmm, I wonder if fusion eliminates the map altogether 01:52:05 it's a pretty simple "fold . map . construct" pipeline 01:52:09 * elliott_ looks at the core 01:54:48 also i gues the thing i import requires extensions too but i forgive it because i can't live without extensions either 01:54:58 elliott_: fold fusion?? 01:55:25 augur: yes fusion 01:55:55 * Sgeo finishes 01:55:57 monqy: it does not look like it's eliminating the map entirely HMMmmmmmMMMMmmmmmmmmmmmmmMMMMmmmmmmmMMMmmmmMMmmmmMMmmMMMmmmMMmmmMMmmmMMMmmMMmmmMmmmmmmmmmmmmmm 01:56:06 * elliott_ tries to make it use a list COUNTERINTUITIVE BUT WILL IT WORK??? 01:56:11 http://pastie.org/2394478 01:56:16 well, map-fold fusion certainly eliminates the map altogether 01:56:26 but because of identification 01:56:27 elliott_: you could manually put the thing in the fold????????? 01:56:32 :t foldl' 01:56:33 forall a b. (a -> b -> a) -> a -> [b] -> a 01:56:44 augur: map as in Data.Map in this case 01:56:49 foldr f z . map g = foldr (f . g) z 01:56:56 oh, well then! 01:56:59 who knows 01:57:08 :t Data.Map.fold 01:57:09 forall a b k. (a -> b -> b) -> b -> M.Map k a -> b 01:57:16 ask in #haskell! 01:57:45 meh, this is almost certainly the best solution 01:59:27 sgeos solution is too much mutation for me :( 02:00:39 > let feels = fmap (>>= (const Nothing)); batman = Just (Just False) in feels batman 02:00:40 Just Nothing 02:00:51 Some assumptions in this area that there won't be more than 5 dice. Otherwise, multiple triplets may be 02:00:52 underreported 02:00:53 pro 02:01:01 mine handles an arbitrary number of triples 02:01:08 also dice of any size???? 02:01:13 also lists of any side 02:01:14 im good 02:01:15 size 02:01:26 i think mine handles multiple triplets as well 02:01:27 elliott_ has excellent size. 02:01:43 monqy: mine is the best y/y 02:01:49 sure fine whatever 02:01:54 monqy: FEEL BAD 02:01:58 mine should also handle dice of any size, lists of any size??? 02:02:06 i wouldnt know i cant read it its too wide 02:02:26 > let feels = fmap (>>= (const Nothing)); batman = Just (Just (Just (Just (Just (Just Nothing))))) in feels batman 02:02:26 Just Nothing 02:02:54 > join (Just Nothing) 02:02:55 Nothing 02:03:50 * Sgeo ponders porting the Haskell prelude to Ruby 02:03:57 why 02:03:58 lol 02:04:56 why would you ever 02:04:58 anyone ever 02:04:58 do that 02:05:24 the useful functions? 02:05:31 or is it for the learning rubey experience 02:05:43 Why not for both? 02:06:09 both are useless because ruby sucks 02:07:49 I don't really understand why ruby sucks. 02:07:56 is it, for instance, more sucky than Python? 02:08:17 yes and also no, but it's on the same tier as python 02:08:23 so it's in the region of unacceptably afwul 02:08:24 any language with syntactically significant whitespace automatically gains 550 suck points, just for that. 02:08:25 what exactly are you looking for in your language. 02:08:29 some of its flaws are different than python's 02:08:59 syntactically significant whitespace is pretty okay. (thumbs up) 02:09:08 Yeah, it is. 02:09:10 CakeProphet: haskell 02:09:17 Some people just don't like being told what to do. 02:09:21 what 02:09:24 Even if they were going to do that very thing anyway. 02:09:26 * CakeProphet sees nothing wrong with significant whitespace as long as it's done properly 02:09:31 properly: Haskell 02:09:37 improperly: Python 02:09:49 How is Python's improper? 02:09:59 no non-significant option 02:10:05 with {}'s and such 02:10:47 Well, to be fair, at least it's intentional in Python. 02:10:54 that makes it even worse. 02:10:55 "There should be ONE TRUE WAY." 02:11:05 one true bad way 02:11:06 It's an idealistic language. :P 02:11:09 hyu k huyk 02:11:09 that means it's an ideological fuck up and not just a fuck up of negligence. 02:11:30 So long as we know where the problem is. 02:11:34 * CakeProphet knows all about the Python "philosophy" 02:11:40 it's almost as bad as the Ruby way. :P 02:11:59 and maybe Perl ranks up there somewhere in "programming languages turned into philosophies gone wrong" 02:12:17 it's not a freakin' religion, okay? it's a programming language. 02:12:20 does any language have a good philosophy? 02:12:32 x86 assembly 02:12:33 isn't perl's philosophy that there's multiple ways to do things 02:12:39 yes, among other things. 02:12:51 x86 has a philosophy? 02:12:53 "do what I mean" is another. 02:12:58 What's wrong with Only One Obvious Way To Do It? 02:13:15 if x86 has a philosophy, it's godawful, ok. 02:13:16 The one thing I don't like about Perl6 is changing the meanings of $, @, and % based on context. 02:13:23 heres my philosophy THE LANGUAGE IS PERFECT AND DOES WHAT YOU MEAN 02:13:28 it is about as achievable as only one obvious way to do it 02:13:29 Rather than "$ always gets me a scalar". 02:13:30 evincar: rest in peace hilariously bad misfeatures 02:13:44 I liked typed dereferencing operators. :( 02:13:49 monqy: exactly 02:13:49 because there's usually more than one way to do something? 02:13:50 even in Python. 02:14:14 and because you cant make everything obvious 02:14:17 unless everything you do is trivial 02:14:22 which is true for most pyhton programmers i guess 02:15:25 I think Perl's philosophy is a better approach, honestly. Though it may not be the best language. 02:16:15 "do what I mean" is pretty bad 02:16:26 well, it can be. 02:16:31 perls is timtoady 02:16:37 monqy, like Javascript implied semicolon? 02:16:46 there's also "make the easy things easy and the hard things possible" 02:17:16 Sgeo: I hate that sort of thing 02:17:34 "you can put semicolons here if you want them, but it's fine if you leave them out" is just ugh 02:17:53 I remember reading about a Javascript quirk that's exactly due to implied semicolon 02:18:01 monqy: let x=0; y=9 in z 02:18:06 monqy: let {x=0; y=9} in z 02:18:12 you can put braces here if you want them [...] 02:18:38 elliott_: i indeed dislike that,,,haskell isnt perfect,,, 02:18:58 that's an incredibly trivial thing to dislike, though... 02:19:10 I never said it made me want to kill people or anything 02:19:12 CakeProphet: js' implied semicolons cause shit 02:19:13 function x() 02:19:13 { 02:19:15 hatred of JS implied semicolon is sensible though. 02:19:15 return 02:19:16 { 02:19:17 x:9 02:19:18 }; 02:19:18 } 02:19:19 I mildly dislike it 02:19:23 guess what that returns 02:19:28 I was referring to the Haskell thing. 02:19:30 hint, it's not {x:9} 02:19:31 not JS. 02:19:34 CakeProphet: I was too 02:19:40 indeed 02:19:44 CakeProphet: the javascript one is more dislikeable 02:20:50 because with let..in it's completely disambiguous where it starts and ends. 02:21:08 starts with a let, ends with an in 02:21:13 unambiguous 02:21:18 right. 02:21:26 too much wikipedia, obviously. 02:24:11 I find the Python design goals to be insulting really. 02:24:30 very conservative inclusion of features so that our feeble minds aren't overloaded. 02:25:06 we can't add that it makes it possible to write unreadable code! 02:27:15 -!- variable has joined. 02:28:12 ...you don't even declare variables in Python. really I don't want to know what testing a large Python application is like. 02:28:28 it must be something like what I imagine hell to be. 02:30:21 Almost as bad as testing a large Perl application 02:30:41 hey at least Perl has some compile-time errors that aren't syntax errors. 02:31:48 "hey you didn't declare this variable" "uh, hey this is an array reference but I want an array" 02:32:11 but yes, not much better, with more room to fuck up due to complicated syntax. 02:32:44 I'd imagine using subroutine prototyping would greatly improve compile-time errors. 02:34:15 "hey you didn't declare this variable" "uh, hey this is an array reference but I want an array" 02:34:18 only with use strict/warnings 02:34:25 ...right. 02:34:37 who in their right mind would not use strict/warnings when writing a Perl application. 02:34:48 that's their problem not Perls. 02:35:00 Option Explicit 02:35:48 in fact unless you're using Perl 02:35:54 's -e option to write a short command line thing 02:36:02 pretty much every program needs a use strict; use warnings line 02:38:01 one line? gross 02:38:23 .....really? 02:38:32 like, it's that big of a deal that I write use strict; use warnings; 02:38:33 instead of 02:38:34 use strict; 02:38:36 use warnings; 02:38:57 man that newline character makes such a different 02:39:09 uh, effect. 02:42:14 -!- jcp|other has joined. 02:42:31 Yes. 02:42:32 Yes it does. 02:43:31 -!- jcp has joined. 02:43:48 I thought you didn't care about superficial syntax differences? 02:44:10 :) 02:44:21 :D 02:46:40 * Sgeo kind of wants to play with Heroku >.> 02:48:14 the Heroku guys seem nice, but they also support non-Ruby languages 02:48:36 _why would you do that 02:48:47 so it's hardly a reason to torture yourself 02:49:03 I'm not really finding this torture yet 02:49:07 That's a personal flaw 02:51:57 Besides Ruby, they support... Node.js, I don't see what else they support. 02:52:09 Unless you'd say Javascript is actually better than Ruby 02:52:37 * Sgeo looks harder 02:53:42 Clojure too, but also anything statically linked. 02:54:31 -!- derrik has joined. 03:11:29 -!- MSleep has joined. 03:14:29 -!- MDude has quit (Ping timeout: 252 seconds). 03:21:44 W. T. F. 03:21:46 range.first + rand (range.last + (range.include_end? ? 1 : 0)) 03:22:08 lol 03:22:16 oops, wrong thing 03:22:20 That's _my_ code 03:22:25 http://www.ruby-forum.com/topic/93106#187674 03:25:00 -!- GreaseMonkey has joined. 03:31:23 -!- derrik has quit (Quit: all work and no play). 03:38:26 pikhq: You know, with a decent union FS, writing a purely-functional package manager is really trivial. 03:40:39 Modulo dependencies, which have no general solution, due to recursive build-time dependencies. 03:41:35 pikhq: How on earth can you say those have no general solution? There's more than one way to get the package [name-version-hash] than following the build script. 03:41:50 For instance, downloading an archive from a known binary source and verifying its checksum, thus giving bit-identical results. 03:42:01 : gcc |> |> gcc 03:42:07 This is what you have to encode. 03:42:13 pikhq: There are no unsatisfiably cyclic _dependencies_, only methods of getting these dependencies. 03:42:29 Rather than "build GHC -> build GHC -> ...", you want "build GHC -> download GHC". 03:42:31 Again, 03:42:32 pikhq: How on earth can you say those have no general solution? There's more than one way to get the package [name-version-hash] than following the build script. 03:42:32 For instance, downloading an archive from a known binary source and verifying its checksum, thus giving bit-identical results. 03:42:42 Building from source is just one way to get the same bit-for-bit result. 03:44:06 pikhq: And if your package manager only supports one way of getting a package, it's pretty lame. Rebuilding is a waste of time unless you want abnormal flags. 03:44:24 And, of course, if you want abnormal flags, that doesn't change GHC's dependencies; GHC compiles with a stock GHC, no matter what flags you're giving it. 03:45:29 pikhq: No? 03:47:17 GHC foo built with GHC foo != GHC foo built with GHC bar. What you want for cyclic dependencies like that is the fixed point... 03:47:27 I don't think this thing is teaching best practices 03:47:32 pikhq: Why? 03:47:43 pikhq: GHC is parameterised on its flags; it depends on GHC(stock-flags). 03:47:57 It taught how to access and modify instance variables from within a module, but didn't say "Don't do that" 03:48:06 pikhq: A GHC parameterised on flags =/= stock-flags might not even be able to build a useful GHC -- for instance, if you want a GHC that compiles for ARM. 03:48:18 Sgeo: Because that's not bad practice in Ruby. 03:48:29 So what if there's a conflict? 03:48:30 Sgeo: Shit language, shitter idioms, shittest community. 03:48:51 elliott_: Does GHC(stock-flags) depend on GHC(stock-flags) or GHC(version--, stock-flags)? 03:49:02 I think the only language I've never seen smacktalked in here is haskell 03:49:15 Patashu: I could smacktalk Haskell all day if you'd like 03:49:23 sure B) 03:49:26 pikhq: The latter will probably work, but I'd specify the dependency as the former. 03:49:43 pikhq: Yes, it's a cyclic dependency, but that doesn't mean its unresolvable; it only is with a naive method of package-finding. 03:49:51 elliott_: Then you're going to be finding the fixed point of package building. 03:49:56 pikhq: No. 03:50:02 pikhq: You keep saying that, but it's not true. 03:50:14 pikhq: Yes, it's a cyclic dependency, but that doesn't mean its unresolvable; it only is with a naive method of package-finding. 03:50:19 _Building is not the only way to install a package._ 03:50:37 Building is the only way to install a package if the package does not already exist. 03:50:45 Patashu: Module system should be more like ML's, record system sucks, IO monad sucks should be more like FRP (but this leads to an entire operating system, well... see @), ... 03:50:53 pikhq: Sure, if you own the only computer in the world. 03:50:57 pikhq: You could also get the package from someone else. 03:51:01 i.e. *AT ALL*. 03:51:17 pikhq: How exactly does wgetting the package from a package repository fail to produce the package? 03:51:18 Well, rather, in a form at all usable on your system. 03:51:30 elliott_: Where does the package repository get it from? 03:51:34 Thin air? 03:52:08 Surely there's a nice clean idiom for having modules store state that doesn't interfere with the instance variables of the class 03:52:16 pikhq: Building it locally. To start with, you'd simply make an initial binary package of the current version by building it on another machine or downloading the provided haskell.org/ghc/ binary distribution, extracting that tree, and packaging it up. 03:52:37 pikhq: That package can then be used to satisfy the dependency. 03:52:51 Sgeo: Ruby sucks. 03:52:59 Patashu: I could go on, but those are pretty big problems. 03:53:31 And now you're either going to be building GHC with the same configuration of GHC, eventually getting the fixed point of building GHC, or you're going to have one funky build dependency chain. 03:53:43 Now are we done confusing each other? 03:54:16 pikhq: I don't see how branding the obvious thing to do as a "funky dependency chain" makes it not the obvious thing to do. 03:54:23 'module system should be more like ML's' what is ML? 03:54:43 Patashu: Um, one of the oldest functional languages in existence? http://en.wikipedia.org/wiki/ML_(programming_language) 03:55:04 http://en.wikipedia.org/wiki/Standard_ML#Module_system is relevant. 03:55:28 elliott_: ghc7->ghc6->ghc5->ghc4->ghc3->ghc2->ghc-non-bootstrapped is a funky thing to specify as your dependency chain. 03:55:44 Especially if you don't want anything earlier than ghc7 still around. 03:55:45 pikhq: I never said that 03:55:47 But w/e 04:12:51 Argh pipes are weird. 04:13:00 "HEY YOU HAVE INPUT! READ IT! READ IT NOW! Oh it's zero bytes." 04:20:17 Gregor: doesn't read returning 0 = eof or error 04:20:53 Not if you're nonblocking. 04:21:03 Ohohoh 04:21:07 why be nonblocking 04:21:09 Sorry, I didn't explain properly :P 04:21:14 just use select or w/e 04:21:28 Gregor: Um, that still applies. 04:21:32 read() returned -1, I just meant it was select()ing and then giving me no bytes. 04:21:43 Gregor: It's just that one of the errors you get is "There's no data here right now". 04:21:56 Gregor: that means error, i think 04:21:57 I'm starting to consider C# favorably in relation to Ruby 04:22:03 maybe i'm wrong 04:22:08 -!- sebbu has quit (Ping timeout: 246 seconds). 04:22:09 Indeed, it is errors :P 04:22:15 For some reason my connection is unidirectional. 04:22:22 At least I'm blind to any masive C# warts, even if it's not quite as smoothly powerful 04:22:23 Gregor: but yeah why nonblocking 04:22:34 elliott_: That was just a bit of overgeneralization *shrugs* 04:22:36 I have since fixed it. 04:22:38 elliott_: EAGAIN, telling you that there's no data pending right now, is an error. :) 04:22:38 its just more painful and iirc doesnt work on sockets 04:22:56 s/sockets/pipes/ 04:29:27 Ugh, this is painful. Someone please freeze me until Newspeak or similar language with decent modularity overtakes the world. 04:29:44 hi 04:31:21 -!- augur has quit (Remote host closed the connection). 04:31:24 Does vanilla Smalltalk not have this kind of stupidity? 04:31:59 ...Oh, right, it does, kind of 04:33:01 hey sexies 04:34:30 sup quintopia 04:34:35 I am a sexy 04:34:43 me too 04:34:48 good to have you around 04:34:53 -!- evincar has quit (Quit: Sleemp.). 04:36:17 -!- sebbu has joined. 04:39:26 -!- augur has joined. 04:40:04 Sgeo: about what are you so upset 04:40:27 modules with instance variables that can conflict with eachother 04:40:37 When included into a class 04:40:50 Suggestions by one person include long variable names 04:40:50 -!- augur has quit (Remote host closed the connection). 04:41:33 and there's no way to handle it? 04:41:41 that's ridiculous 04:41:51 -!- oerjan has joined. 04:42:00 hello mr. o 04:42:21 There probably is a way, but certainly not built-in or anything. Supposedly, Ruby 2.0 will make a lot of these things much better 04:42:37 good morning Q 04:42:52 it's not yet 1 am here 04:43:32 hah you want to make me believe in that stupid time zone theory 04:44:15 At least there is a way to deal with conflicting method names 04:45:11 But, hmm, static typing makes more sense than duck-typing for that purpose 04:45:49 Since with duck-typing, a rename means something that just expects a class that conforms to the API of one of the modules that tries to simply use an instance of the class breaks 04:48:33 Ugh, I made a patch to Newspeak a while ago 04:48:39 I should have submitted it somewhere 04:48:46 The lack of it is now bothering me 04:52:22 repatch! 04:53:16 wangs 05:04:57 -!- myndzi has quit (Read error: Connection reset by peer). 05:07:44 -!- zzo38 has left. 05:13:31 wow. in C# you can write 'sql' http://msdn.microsoft.com/en-us/library/bb311045.aspx 05:13:33 I need to try that 05:13:55 Aaah, LINQ 05:14:32 -!- myndzi has joined. 05:21:45 Patashu: AKA monad comprehensions. 05:23:42 pikhq: you need to cackle evilly when you say that. 05:27:11 a ha! C# is functional after all 05:28:58 yeah right 05:58:16 `addquote That's the stupidest thing I've heard all morning. (Though I did wake up five minutes ago, so I haven't had a chance to hear very much.) The "Why are you still asleep? I told the cat to wake you up." comment does come pretty close, though. 05:58:17 600) That's the stupidest thing I've heard all morning. (Though I did wake up five minutes ago, so I haven't had a chance to hear very much.) The "Why are you still asleep? I told the cat to wake you up." comment does come pretty close, though. 05:58:18 fizzie EXPOSED TO THE WORLD 05:58:26 Ooh, nice 600th quote. 05:59:13 elliott_: NOW YOU CANNOT DELETE ANY OF THE PREVIOUS ONES *MWAHAHAHA* 05:59:35 :'( 06:00:11 a wicked dilemma 06:01:07 I can only assume the Mr_Grim in #ruby is not the MrGrim on Reddit. 06:01:11 unless he manually moves later ones to before it 06:01:19 I assume MrGrim on Reddit has an IQ of above 50 06:01:29 or he could move that one to position 100, since 100 is more auspicious than 600 06:02:02 Sgeo: #ruby-lang is the official channel (I forget whether it's better or worse...) 06:02:03 well 06:02:09 zenspider is an op in #ruby-lang 06:02:11 so i guess it has to be worse 06:07:21 oerjan: quintopia: monqy: if you guess the question i ask i turn into god...... 06:08:52 then i won't guess 06:09:04 because as unlikely as it is, i might be right 06:10:27 :( 06:10:30 guese or die 06:10:30 i somehow doubt that. 06:10:44 guese or dei 06:11:09 guess and deus 06:11:27 GES OR DE 06:11:44 DO UT DES 06:11:57 *VT 06:12:09 -!- Taneb has joined. 06:12:14 oh hi Taneb 06:12:21 Hello! 06:12:33 I have no idea what you were on about last night. 06:12:55 Taneb: i think i commented on your Cab = a or b question while you were away 06:13:04 Taneb: i like being incoherent its great 06:13:54 anyway, any combinator such that Cab = a must as a lambda expression be eta-equivalent to \x y -> x, and similarly for b 06:14:34 elliott_, I read "IM TAB" as "Go to the IM tab" 06:14:36 -!- Pianoo has joined. 06:14:49 no no on 06:14:52 i was just identifying with tabness 06:15:14 Hence my private message 06:15:20 wow im tab too 06:15:39 monqy: tab frends 06:16:08 Ola 06:16:15 helo 06:16:21 are you in spain now???? 06:16:40 Bonjourno? 06:16:47 hi 06:17:13 Taneb: also, system F (explicitly typed polymorphic LC) explores the idea of defining booleans as the type forall t. t -> t -> t, which in that system has only those two solutions. 06:17:29 Hmm... 06:17:33 -!- Pianoo has quit (Remote host closed the connection). 06:17:34 well irreducible solutions 06:17:57 *normalized 06:17:58 I was thinking in terms of MIBBLLII output 06:18:03 -!- Pianoo has joined. 06:18:32 isnt mibbllii impure 06:18:36 bye pianoo hi pianoo 06:18:54 ...Only in terms of IO? 06:18:56 system F can define other data types in that way too, e.g. church numerals are forall t. (t -> t) -> (t -> t) 06:19:06 Taneb: that's the point :P 06:19:22 -!- Pianoo has quit (Remote host closed the connection). 06:19:44 I still don't quite get language purity 06:20:39 what part? 06:20:45 -!- Pianoo has joined. 06:21:06 Hum sorry for that... 06:21:10 I mean, it's basically: 06:21:15 - Evaluating an expression cannot cause any side-effects to happen; 06:21:22 - A function's return value cannot depend on anything but its argument. 06:22:01 - Values don't change. 06:22:22 oerjan: That's inherent in the definition of value :-) 06:22:38 elliott_: well i mean in the context of your function arguments 06:22:41 I still need to make my Scumbag Ola Bini pic 06:22:52 Hmm 06:23:21 So, pure languages cannot have interactive IO? 06:23:24 otherwise that _could_ be interpreted as the function's return value depending on just what its argument _currently_ is. 06:23:34 Taneb: not as part of their evaluation 06:23:41 Taneb: That's true in some ways, and untrue in others. 06:23:42 or wait 06:23:58 Consider Haskell; all Haskell code is pure, except for that code inside the IO monad. 06:24:23 Taneb: But consider Lazy K 06:24:24 Taneb: original haskell managed, in a convoluted way, to have the main program be a pure function without any monads. 06:24:40 oerjan: that's misleading 06:24:44 elliott_, how is the IO monad not pure? 06:24:49 oerjan: you can define a simple IO type that has PutChar and GetChar 06:24:54 but code inside it still isn't pure 06:24:54 It's only main that's treated, at execution, in an impure way 06:24:58 It is internally, but not externally 06:25:27 Sgeo: Would you be offended if I said that I didn't think you had a good enough understanding of Haskell to give a satisfactory answer? 06:25:32 The fact is that you can perform impure operations from within IO. 06:25:50 That you can contain these effects is nice, but does not make the IO monad itself impure. 06:25:55 Haskell is pure, but the IO monad isn't. 06:26:08 I think you mistyped 06:26:11 MIBBLLII's about as pure as Haskell, if I'm understanding this correctly 06:26:13 Sgeo: Where? 06:26:20 That you can contain these effects is nice, but does not make the IO monad itself impure. 06:26:25 s/impure/pure/ 06:26:33 (no pun intended) 06:26:37 > takes the next bit from the I/O stream, and then evaluates it in the following format: 06:26:37 < a prints whatever a 1 0 evaluates to, and returns null. 06:26:38 : parse error on input `,' 06:26:39 Taneb: Sorry, no. 06:26:44 MIBBLLII is an impure language. 06:27:01 Evaluation of an expression could cause things to be printed or read from the input stream. 06:27:13 The latter is a dependency of a function on something other than its argument; the former is causing a side-effect. 06:28:13 (You can mostly ignore everything I said about the IO monad, it's a sticky corner-case.) 06:28:22 "The behaviour when you override if should still work as expected, but will make the global performance of that program slower for the rest of the execution." 06:28:25 Tell me how I could do interactive IO without becoming impure 06:28:28 I like that 06:28:43 "Seph has mutable lexical scopes." 06:28:46 I don't like that 06:28:47 Taneb: Model a program as a function from input stream to output stream; read all input up-front. 06:29:07 Hmm... 06:29:22 oerjan: hmm, what's your opinion on Lazy K's pureness? IMO, the fact that IO can be interactive in the Haskell interact style makes me consider it impure, because by causing expressions to be evaluated you can cause input to be read 06:29:27 That would give me space to have S and I combinators 06:29:29 or something like that 06:29:31 While still looking a lot like brainfuck 06:29:51 Taneb: Obviously you need to encode the input and output stream somehow -- a Church list of Church numerals is the obvious representation. 06:29:58 Well, Church stream 06:30:05 cons = \hd tl f. f hd tl 06:30:08 I assume you know how Church numerals go 06:30:19 elliott_: it depends on exact lazy evaluation order for I/O ordering doesn't it 06:30:20 Yeah 06:30:20 Then just model input as "cons inputchr (cons inputchr (cons ..." 06:30:28 And terminate it on some too-large character 06:30:40 (256 if you're doing bytes) 06:30:48 Taneb: or terminate on 0, to give it the same IO weakness as brainfuck :) 06:30:52 oerjan: yep 06:30:56 oerjan: which I would consider impure 06:31:05 elliott_: it's pure if you think of it as a batch program pipe, but not for interactive use 06:31:26 oerjan: well, doing benign rearrangements on it when considering the program as a pure function can change its interactive behaviour 06:31:37 elliott_: Actually, at EOF you have fix (256:), not just 256. :) 06:31:38 oerjan: I agree that reading all input up-front would solve the problem which is why I suggested it to Taneb 06:31:54 oerjan: But IMO as far as interactive use goes, Lazy K is definitely impure 06:32:00 Which is ironic considering its goals 06:32:23 MIBBLLII isn't brainfuck. EOF is an infinite stream of 256s 06:32:41 Taneb: What, don't want to advertise Unicode support? :-) 06:32:46 I suppose that gives you binary processing 06:32:53 You can just write your own UTF decoding routines :D 06:33:01 IT IS DECIDED 06:33:09 Or possibly EOF is an infite stream of threes 06:33:10 oerjan: hmm, I wonder what the simplest model of stdio that retains purity _and_ interactivity 06:33:11 elliott_: although actually when you consider bottom, it's not that obvious, because that reduces the amount of rearrangement you can do - reading an extra character could give I/O error as bottom, and so rearrangement is not equivalent even purely. but there are probably corner cases. 06:33:20 well, purity in the technical sense, allowing "cheating" like Haskell's IO monad 06:33:34 oerjan: I/O error as bottom is not standard Lazy K afaik 06:34:15 elliott_: well alternatively think of it as lazy K having to act equivalent even if its input is not correctly formatted 06:34:41 oerjan: hmm, what do you mean? 06:34:59 I could define 1 as \l a b -> a and 0 as \l a b -> b and EOF as... \l a b -> \l a b -> b 06:35:12 And do it bitwise 06:35:32 elliott_: if you can only do rearrangements that give the exact same LC function up to eta equivalence, then i don't think you can read an extra character. 06:35:41 Taneb: well the data-type you want is 06:35:50 data Input = EOF | Cons Bool Input 06:35:54 I'll let oerjan church-encode that :P 06:35:56 -!- Pianoo has quit (Quit: Rooms • iPhone IRC Client • http://www.roomsapp.mobi). 06:36:06 I always forget the church-encoding of lists 06:36:20 elliott_: foldr 06:36:23 oh, right 06:36:47 hmm, what's (:) with that representation? 06:37:02 \in. in (:) [] would be your cat program, obviously 06:37:06 elliott_: if you can only do rearrangements that give the exact same LC function up to eta equivalence, then i don't think you can read an extra character. 06:37:12 no, but surely you can mix up input and output in the wrong order 06:38:40 oerjan: i take it you were too scraed to answer oerjan: hmm, I wonder what the simplest model of stdio that retains purity _and_ interactivity >:) 06:39:00 [asterisk]scared 06:41:04 "In practice, however, interactive Lazy K programs tend not to exhibit these problems. The first case cannot arise if the "H" of "Hello" depends in some way on the end of the user's input. The most obvious way of writing this particular program is to cons together the "Hello, [name]!" string in an expression which is conditioned on receipt of a newline. If you do this you are safe, because there's no way for any evaluator to prove in advance that the u 06:41:04 ser will ever type a newline. 06:41:04 The second case does not occur as long as the prompt ("What is your name?") is consed together irrespective of the input — again the obvious thing to do. The reason this works is that the Lazy K interpreter uses lazy evaluation, which by definition tries to produce output as early as possible and do everything else (including input) as late as possible. 06:41:07 So there's no practical problem with interactive software. Nevertheless, there's something unpleasant about the way the second case is prevented. A referentially transparent program should not have to rely on lazy evaluation in order to work properly." 06:41:11 oerjan: it seems clear to me that Lazy K is definitely impure in this manner 06:41:37 elliott_: a simple (G)ADT for IO? 06:42:11 oerjan: that's rather vague -- if you do 06:42:30 data IO where Stop :: IO; GetChar :: (Char -> IO) -> IO; PutChar :: Char -> IO -> IO 06:42:44 then you can mechanically transform that into the monadic form 06:42:47 elliott_: yeah 06:42:49 (see Russell O'Connor :P) 06:43:04 it seems like calling that the simple ADT for IO is misleading, in that it's presupposing monadic IO 06:43:14 I suppose you inevitably need _some_ sort of ugly ordering, though 06:43:26 um no it doesn't, there's no return. it's CPS style isn't it. 06:43:26 * elliott_ wonders what the church encoding of _that_ is 06:43:31 oerjan: well yes 06:43:39 but it's "close" in the sense that the transformation is very simple 06:43:55 data IO = Stop | GetChar (Char -> IO) | PutChar Char IO 06:44:00 i should really remember how to church-encode things :( 06:44:46 you don't have to use foldr when it's untyped anyway, just use pairs for conses 06:44:58 oerjan: that's gross 06:45:28 A | B | C encodes as forall t. (A -> t) -> (B -> t) -> (C -> t) -> t 06:45:39 er 06:45:47 lol 06:45:50 ?ty foldr 06:45:50 forall a b. (a -> b -> b) -> b -> [a] -> b 06:45:58 always forget the way round the a/bs are 06:46:21 *data X = A a | B b | C c endodes as forall t. (a -> t) -> (b -> t) -> (c -> t) -> t 06:46:25 *encodes 06:46:43 io :: b -> ((Char -> b) -> b) -> (Char -> b -> b) -> IO -> b 06:46:44 maybe? 06:47:14 hmm, wait 06:47:31 never mind me 06:47:38 oerjan: im not smrt 06:49:54 um drop the -> IO i think 06:51:06 oerjan: I was doing it as foldr, but right 06:51:11 -!- augur has joined. 06:51:25 Changed MIBBLLII spec 06:51:34 Is now more pute 06:51:36 \stop get put. put 'a' stop 06:51:37 um list foldr only applies to lists afaik 06:51:39 purer, too 06:51:41 \stop get put. put 'a' (put 'b' stop) 06:51:43 oerjan: I meant... never mind 06:51:55 \stop get put. put 'a' (put 'b' (get (\c. put c stop))) 06:51:59 heh, that's actually quite nice 06:52:17 oh, hmm 06:52:29 cat might be a bit difficult :/ 06:52:30 you need fix 06:52:51 some haskell version did have a CPS IO style 06:52:57 \stop get put. fix (\r. get (\c. eof? c stop r)) 06:52:58 Yay, Ruby has a Parsec 06:53:01 that's right, right? 06:53:02 erm, I mean 06:53:05 \stop get put. fix (\r. get (\c. eof? c stop (put c r))) 06:53:10 that's right, right? 06:53:14 Sgeo: but is it any good 06:53:21 monqy, no idea 06:53:28 expressed as a church list of church booleans corresponding to the bits of the input, ending with an infinite stream of church trues 06:53:33 Taneb: um there is no way to detect EOF with this scheme 06:53:41 the user might have typed in a million ones, or it might be EOF 06:54:03 EOF by universe heat death 06:54:38 Sgeo: guess what other language has parsec 06:54:50 PHP 06:54:58 * oerjan runs away 06:55:35 A language in whch I struggle to do simple tasks? 06:55:39 Thing is, they don't type in 1s or 0s, they type in characters 06:55:49 Which are converted into 1s and 0s 06:55:56 which 06:56:00 Sgeo: Maybe because you haven't learned it yet 06:56:06 Taneb: there is no way to detect EOF with your IO scheme. 06:56:33 You just need to know what encoding it uses 06:56:52 And check for a number of consecutive ones that is too many for a valid character in that encoding 06:57:13 um, if the encoding is bytes, then no. 06:57:18 an infinite stream of ones is valid. 06:57:21 ....why is this blank http://rubydoc.info/gems/rparsec/1.0/frames 06:57:31 Sgeo: rubydoc sucks, get used to it 06:57:35 oh that's the YARD thing 06:57:36 If it's in ASCII, then yes 06:57:50 Taneb: well you'd better specify an encoding then... 06:58:03 I'm keeping that implementation dependent. 06:58:03 Taneb: wait, no, you are totally wrong 06:58:14 Taneb: I mean 06:58:20 That's only true if you pad out the encoding with at least one bit 06:58:28 Because I don't want to think about it right now. 06:58:30 If you use the minimal number of bits then infinite ones will _always_ be valid 06:58:42 You can't leave it implementation-dependent because it changes whether your language can do all the IO it needs to be able to or not 06:58:59 the benefit of a repeating series is you don't need as much information to communicate it 06:59:08 << Captain Obvious 06:59:43 Okay, the encoding is to be decided by whomever makes the first implementation with a sensible encoding. 07:00:35 btw your wikipedia link is broken :P 07:00:47 s/L/K/ 07:01:20 Because I really do not want to think about it 07:01:21 No it isn't 07:01:45 rparsec (on github) looks unmaintained. Does something like rparsec need maintainance even? 07:03:03 "Do libraries need maintenance?" --Sgeo 07:03:08 probably, I can't imagine any ruby coder getting it right for the first time 07:03:25 besides, even the Haskell version has maintenance 07:06:42 elliott_: hel 07:06:44 help 07:06:47 quintopia: help 07:07:04 why am i awake elliott? 07:07:19 Help me, elliott_, you're my only home! 07:07:31 you're only home is bone 07:07:51 quintopia: thats a question i ask myself a lot 07:08:09 do you ever have an answer 07:08:18 i could use an answer 07:08:20 quintopia: because being asleep is for the weak. 07:08:27 you are only. home is bone. 07:08:40 olsner: help 07:08:49 quintopia: help 07:09:06 Taneb has moved in with elliott_? that was quick. 07:09:21 oerjan: 07:09:44 oerjan: I've moved in/to/ elliott_. 07:09:58 aha 07:10:01 I'll move into taneb 07:10:16 and then if elliott moves into me, the cycle will be complete 07:10:18 and we can sleep 07:10:35 help 07:10:41 quintopia: ok my answer is usually 07:10:43 ask irc about it???? 07:10:46 and oerjan wont answer 07:10:47 and monqy usually 07:10:50 says something about not being a slep doctor 07:10:55 but then i coerce him to tell him to go to sleep 07:10:59 which i should do now oops 07:11:00 but 07:11:02 hello 07:11:06 so what about me 07:11:09 tell me 07:11:12 im... you could try asking monqy??? 07:11:15 im not a slep doctor either help :( 07:11:18 monqy: help 07:11:32 hlep 07:11:48 elliott_: im still noit a slep e doctor 07:11:52 Try asking good ol' fungy 07:12:01 fungot: help 07:12:01 quintopia: and no macros), so it worked nicely, although builds took a long time since i saw scheme i wanted to choose fnord, but don't 07:12:11 fungot is not a slepe doctor... 07:12:12 monqy: i'm in a fnord style for the operator. i know marc consider the interpreter as root, device files are your biggest foe. 07:12:14 ew fungot, mind matching brackets? 07:12:15 quintopia: but you still shouldn't do that 07:12:20 oh 07:12:25 what should i do fungot? 07:12:26 quintopia: eval ( string-ref " n" are for 07:12:27 > map (flip testBit) [0..] 'a' 07:12:28 Couldn't match expected type `GHC.Types.Char -> t' 07:12:28 against inferred... 07:12:41 ?hoogle [a -> b] -> a -> [b] 07:12:41 Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b 07:12:41 Control.Monad ap :: Monad m => m (a -> b) -> m a -> m b 07:12:41 Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b 07:12:49 > map (flip testBit) [0..] <**> 'a' 07:12:49 Couldn't match expected type `[(a -> GHC.Bool.Bool) -> b]' 07:12:49 against ... 07:12:56 > map (flip testBit) [0..] <*> 'a' 07:12:57 Couldn't match expected type `[a]' 07:12:57 against inferred type `GHC.Types... 07:13:01 oerjan: hepl 07:13:02 -!- kwertii has quit (Quit: bye). 07:13:05 should i sleep or code or write or what fungot? 07:13:06 quintopia: i expect whoever made the plt-file. dunno about the r6rs progress report' is probably save. 07:13:08 elliott_: Recommendations for books on the lambda calculus. Go. 07:13:14 quintopia: how long have you been awake?? 07:13:30 NihilistDandy: i dont read books books are lame 07:13:35 FUCK BOOKS 07:13:42 i guess around 13 hours 07:13:45 i guess people like to mock a mockingbird?? is that close enough 07:13:46 its pi o'clock now 07:13:47 :t sequence 07:13:47 forall (m :: * -> *) a. (Monad m) => [m a] -> m [a] 07:13:50 quintopia: oh 07:13:52 quintopia: well stay up duh 07:13:58 elliott_: ^ 07:14:07 elliott_: I've already read that. :D 07:14:08 > mapM (flip testBit) [0..] 'a' 07:14:08 No instance for (Data.Bits.Bits GHC.Types.Char) 07:14:08 arising from a use of `D... 07:14:12 :t mapM (flip testBit) [0..] 07:14:12 forall a. (Bits a) => a -> [Bool] 07:14:16 oerjan: omg hot 07:14:17 how much longer should i stay up 07:14:23 :t \a -> mapM (flip testBit) [0..bitSize a] a 07:14:24 forall a. (Bits a) => a -> [Bool] 07:14:28 > (\a -> mapM (flip testBit) [0..bitSize a] a) (99::Int) 07:14:30 quintopia: e 07:14:30 [True,True,False,False,False,True,True,False,False,False,False,False,False,... 07:14:40 > (\a -> mapM (flip testBit) [0..bitSize a] a) (99::Word8) 07:14:41 e hours? 07:14:41 [True,True,False,False,False,True,True,False,False] 07:14:47 i'll try 07:15:07 > length ((\a -> mapM (flip testBit) [0..bitSize a] a) (99::Word8)) 07:15:08 9 07:15:15 NihilistDandy: are you like me and do not know lambda calc or do you need a method to teach someone else lambda calc? 07:15:40 NihilistDandy: Why are you asking? 07:15:47 shachaf: itidus20: I'm sort of familiar with it, but I'd like something more rigorous 07:15:57 shachaf: oh your question asking method is so elegant 07:16:15 i used to know lambda calculus. i even evaluated THREE PLUS ONE in standard lambda calc once. i don't remember the substitutions anymore. 07:16:42 What's a good 3D thing for making a craft game easily? 07:17:06 craft game? 07:17:10 If such a thing exists, that is 07:17:12 Taneb: if it were easy, it would be easy. 07:17:18 craft game = minecraft genre 07:17:18 what is a craft game? 07:17:20 oh 07:17:21 enjoy opengl 07:17:25 ^ 07:17:27 i know minetest uses irrlicht 07:17:28 but uh 07:17:34 yeah if you are wanting a painless experience 07:17:36 write something two dimensional 07:17:39 fromBits = foldl (.|.) 0 . map (\(i,b) -> if b then bit i else 0) . zip [0..] 07:17:41 oerjan: help it's ugly :( 07:17:52 quintopia: i eat and shit games... so such questions are elementary to me hahahahhaa 07:18:08 i dont know the answer but i mean the meaning of "craft game" 07:18:14 well 07:18:16 elliott_: fromBits = foldl (.|.) 0 . zipWith (flip flip 0 . flip if' . bit) [0..] 07:18:23 elliott_: what's that supposed to do 07:18:26 NihilistDandy: GENIUS 07:18:29 if you actually shit games, you are the answer to taneb's prayers 07:18:29 oerjan: (Bits a) => [Bool] -> a 07:18:36 An ncraft 07:18:44 itidus20: do you play minecraft 07:18:46 Taneb: MINECRAFT BY INDUCTION 07:18:50 quintopia: there is a genre of japanese absurd games. 07:18:56 taneb: find the right combination of games to feed itidus, and you shall have your painless creation of a craft game 07:19:04 elliott_: no. if i did i would have at least asked about the esolang minecraft server 07:19:12 elliott_: are you _sure_ it's not easier to use Num a? 07:19:25 sorry to be snarky 07:19:28 oerjan: um how would that help 07:19:30 Bits has NUm 07:19:36 Num 07:19:39 itidus20: we have one of those :P 07:19:43 i gotta chill out 07:19:48 :t readInt 07:19:49 forall a. (Num a) => a -> (Char -> Bool) -> (Char -> Int) -> String -> [(a, String)] 07:19:49 you were snarky? 07:19:58 i felt snarky 07:19:59 > fromEnum True :: Int 07:20:00 1 07:20:07 fromBits = foldl (\n b -> (n `shiftR` 1) .|. fromEnum b) 0 07:20:08 there we go 07:20:16 Better 07:20:34 oh hm it requires Char. that's actually a stupid restriction... 07:21:08 itidus20: would you kindly eat Minecraft, Team Fortress 2, the FunOrb version of Chess, and also VVVVVV? 07:21:28 NihilistDandy: while lambda can't be understood by analogy or such.. it seems the weakness is that lambda is a method of symbolic manipulation 07:21:51 so 07:21:56 itidus20: How is that a weakness? Symbolic manipulation is like 80% of my daily life :D 07:21:58 Taneb: my mibbllii interpreter is almost done. 07:22:13 Taneb: and yes I'm doing this just to give it a good IO model :) 07:22:22 NihilistDandy: it is a gap in lambda calc's armor where we might attack him 07:22:29 elliott_: Yay! 07:22:39 Taneb: one guess as to the language 07:22:46 ...Haskell 07:22:56 HOW DID YOU KNEOWNOE 07:23:02 RE YOU A MAGIXIAN???? 07:23:07 Aw, I was *just* about to guess Visual Basic for Applications. 07:23:11 Because I would have done it in Python 07:23:11 itidus20: LC λf.λx. f (f (f (f x))) LYFE 07:23:15 fizzie: WHO TOLD YOU LALL MY SECRETS.............. 07:23:20 NihilistDandy: i mean it is a weakness of lambda calc's attempts to hide its understanding 07:24:02 elliott_: LALL YOUR SECRETS ARE BALLONG TO AAS 07:24:04 the notation is clearly bollocks 07:24:16 it doesn't lend itself to being understood 07:24:56 itidus20: It doesn't seem that opaque, really, I just enjoy the books that people that are more educated than I am write about subjects about which I have some small knowledge 07:25:09 I'd never have known about LC unless I'd stumbled on Haskell :D 07:25:47 You just have to get used to Greek 07:25:51 can someone say an asterisk plz 07:25:57 NihilistDandy: i mean to be both friendly and confronting 07:26:04 It's a hell of a lot easier to understand than SKI 07:26:07 *? 07:26:08 elliott_: ASTERISK 07:26:11 * 07:26:12 NihilistDandy: FUCK YOU 07:26:13 thanks 07:26:14 :) 07:26:19 itidus20: you assume that the lambda calculus is deliberately trying to be obscure. 07:26:23 i can see now what is eventually coming 07:26:35 elliott_: you are merely the next generation of machine coders 07:26:44 hehehe 07:27:16 i dont really mean that... 07:27:20 itidus20: lambda calculus is older than any machine code. except possibly babbage's... 07:27:30 it is a machine code isnt it 07:27:38 Not really 07:27:48 noone has yet had the tenacity to abstract it 07:27:49 It's a method of describing functions of functions 07:27:54 oerjan: We should program on looms. 07:28:09 oh right looms 07:28:26 Looms are the height of abstraction 07:28:27 well one could compile to lc right? 07:28:32 they may lack a little something on the turing-completeness front 07:29:04 oerjan: We shall see. When my BF loom is complete, ye shall have your comeuppance~ 07:29:37 my comeuppance, and perhaps a new carpet. 07:29:46 I've never seen a turing complete computer. 07:29:48 in other words, LC could be a compile target right? 07:29:54 I've read about them, but not seen them 07:29:55 itidus20: it kind of is (GHC Core) 07:29:59 Probably a very ugly carpet 07:30:15 noone has yet had the tenacity to abstract it 07:30:20 itidus20: this is called functional programming languages. 07:30:20 itidus20: I got reasonably far with a brainfuck to lambda calculus translator 07:30:28 elliott_: I hate reading Core. It makes me feel insane. 07:30:46 Then again, I'm terrible at it 07:30:48 So... 07:31:11 is there any actual benefit to abstract it to a point where you can't see the lambda happening? 07:31:35 my conception here is probably getting out of alignemnt with reality 07:32:19 *Main> parse (expr <* eof) "" "+--" 07:32:19 Right (App B (App C C)) 07:32:22 oerjan: hepl 07:32:25 elliott_: ok i guess.. 07:32:27 itidus20: you can "see the lambda happening" in haskell. 07:32:36 :t \x -> \y -> x 07:32:37 forall t t1. t -> t1 -> t 07:32:38 itidus20: see, a lambda. 07:32:49 \ is the name for λ. 07:33:09 i guess the point is that i don't understand lambda calc... and that fact is not something which should be escaped by building a layer on top of it 07:33:14 oerjan: how does write parser :( 07:33:14 :-" 07:33:26 elliott_: wat hepl, it seemed to work ... 07:33:34 oerjan: no, that should be App (B C) C 07:33:47 expr = do 07:33:48 o <- op 07:33:48 (App o <$> expr) <|> return o 07:33:48 not right :( 07:34:08 :t \f x y z -> f (x y z) 07:34:09 forall t t1 t2 t3. (t2 -> t3) -> (t -> t1 -> t2) -> t -> t1 -> t3 07:34:11 LAMBDAS 07:34:21 :t ((.).(.).(.) 07:34:21 elliott_: ah you want it left recursive, which is problematic directly. 07:34:22 parse error (possibly incorrect indentation) 07:34:24 @hoogle chainl 07:34:25 :t ((.).(.).(.)) 07:34:25 Text.Parsec.Combinator chainl :: Stream s m t => ParsecT s u m a -> ParsecT s u m (a -> a -> a) -> a -> ParsecT s u m a 07:34:25 Text.ParserCombinators.ReadP chainl :: ReadP a -> ReadP (a -> a -> a) -> a -> ReadP a 07:34:25 Text.ParserCombinators.Parsec.Combinator chainl :: Stream s m t => ParsecT s u m a -> ParsecT s u m (a -> a -> a) -> a -> ParsecT s u m a 07:34:25 forall (f :: * -> *) (f1 :: * -> *) a b (f2 :: * -> *). (Functor f, Functor f1, Functor f2) => (a -> b) -> f (f1 (f2 a)) -> f (f1 (f2 b)) 07:34:32 elliott_: try those ^ 07:34:57 oerjan: huh, never seen that 07:35:08 oerjan: I don't know what that final a is meant to be though 07:35:35 :t \x y z -> x z (y z 07:35:36 parse error (possibly incorrect indentation) 07:35:42 ah, hmm 07:35:55 :t \x y z -> x z (y z) 07:35:56 forall t t1 t2. (t -> t1 -> t2) -> (t -> t1) -> t -> t2 07:36:12 oerjan: it works if I specify undefiend for the last parameter and then it gives undefined on empty input 07:36:15 that feels wrong though :/ 07:36:19 there must be a way to make it fail from within 07:36:24 ?hoogle chainl1 07:36:24 Text.Parsec.Combinator chainl1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m (a -> a -> a) -> ParsecT s u m a 07:36:25 Text.ParserCombinators.ReadP chainl1 :: ReadP a -> ReadP (a -> a -> a) -> ReadP a 07:36:25 Text.ParserCombinators.Parsec.Combinator chainl1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m (a -> a -> a) -> ParsecT s u m a 07:36:26 :D 07:36:26 yay 07:36:53 oerjan: now the question is, how do you do parens :/ 07:36:57 hmm 07:36:59 oh 07:37:01 I think I see how 07:37:20 elliott_: between is nice 07:37:49 although with the newfangled applicatives you can do it directly, i think 07:38:02 oerjan: argh yes but the problem is that if I do "chainl1 op (pure App)", there's no recursion at _all_ 07:38:07 which means I can't just simply insert a paren alternative 07:38:18 I need chainl1 (op <|> withparens) (pure App) I think 07:38:23 so the secret to unobscuring LC seems to be in exploiting the fact it is about symbolic manipulation.. 07:38:31 elliott_: yeah 07:38:37 yay 07:38:38 that works 07:38:49 and the standard LC notation seems to strain itself to become intuitive 07:39:21 itidus20: the math standard is very compact 07:39:34 and haskell only slightly less 07:39:54 how many symbols need to be recognized in the most primal form of LC? 07:40:07 sorry.. should i say glyphs? 07:40:27 oh. you need variable representations, so in _principle_ infinite but you can choose something more efficient. 07:40:39 Taneb: I take it whitespace is ignored 07:40:48 uhmm 07:41:17 alpha conversion means you sometimes must introduce new variable names on the fly 07:41:17 uhmm 07:41:42 oerjan: suppose that we introduced a metasymbol called an identifier for such situations 07:41:54 which implementations do under the hood, probably 07:42:04 itidus20: well yeah. 07:42:06 perhaps metasymbol is not a real world 07:42:09 ^word 07:42:27 well.. supposing we took care of such things in a way like that 07:42:41 \() and variables are all you need in the most primitive form 07:42:54 how many glyphs or symbols basically is it made up of 07:43:01 so just the 3? 07:43:06 3 + variables? 07:43:10 yeah 07:43:21 and does every ( need a corresponding ) ? 07:43:50 however it's very convenient to be able to list several variables in a row after the \, which needs another symbol, customarily . 07:43:50 elliott_: yes 07:44:00 itidus20: well in the orginal syntax yes. 07:44:02 :t splitAt 07:44:03 forall a. Int -> [a] -> ([a], [a]) 07:44:13 > splitAt 9 [0..] 07:44:13 ([0,1,2,3,4,5,6,7,8],[9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,... 07:44:25 itidus20: if you change the syntax rampantly you could go for unlambda syntax, just `sk 07:44:50 but then it's combinator calculus, not lambda, really 07:46:15 ok so with 2 bits a symbol could be differentiated as being a \, a, ( a, ) or a variable 07:47:07 in what insane world should shift-backspace be mapped to delete?????? 07:47:08 then being a variable it could be followed by n bits to say which variable 07:48:05 itidus20: what's the a 07:48:25 an ungrammatical article 07:48:26 :P 07:48:32 ok 07:48:34 should have used an 'an' perhaps 07:48:46 i.e. 00 = \ 01 = ( 10 = ) 11 = variable 07:49:00 no i think those start with consonants if pronounced 07:49:12 hummm 07:49:23 i knew it was trouble when typing it 07:49:40 itidus20: well everything can be encoded as 0 and 1, that's basic information theory :P 07:49:52 quintopia: Isn't that fairly standard on keyboards that don't have a discrete delete key? 07:50:07 NihilistDandy: no, fn+backspace is 07:50:18 then suppose you had 4 variables... you could follow a "11" with another 2 bits to indicate which variable is being referred to 07:50:35 elliott_: So it is 07:50:56 NihilistDandy: it is default and unchangeable in this application. and it is annoying, since sometimes i yell in my comments and also make typos and also i dont ccaps lock 07:51:06 so 00 01 11 10 would mean \(a) 07:52:05 anyway, later 07:52:12 -!- oerjan has quit (Quit: leaving). 07:52:13 bye 07:53:18 itidus20: You're getting dangerously close to Gödel numbering now 07:53:43 Taneb: hmm, indeed, all invalid characters are ignored, I presume... 07:55:26 :t withFile 07:55:27 Not in scope: `withFile' 07:56:59 Taneb: http://sprunge.us/SZCU 07:57:01 This might work :-P 07:57:35 The IO scheme is: takes a stream, outputs a stream. A stream is of the form (\end zero one. end), (\end zero one. zero restofstream), or (\end zero one. one restofstream). 07:58:04 So id is cat, as usual. 08:17:28 * Sgeo wants to play with Shoes >.> 08:18:06 imagining sgeo playing with shoes now 08:18:23 oh a ruby gui thing 08:18:27 disappointment 08:18:38 monqy: shhh it's by why 08:18:41 everything by why is good 08:18:47 http://shoesrb.com/ oh man what they made the webpage boring :( 08:19:02 it used to look like the nobody knows shoes book 08:19:10 with a bunch of pencil illustrations 08:19:49 I wonder if anyone ever managed to archive all of hackety 08:20:09 I guess http://viewsourcecode.org/why/hackety.org/ has all of it 08:22:08 that thing's missing a lot of the images 08:24:39 "Rubyists love life. Boy, I tell you. They love humans. They love cars!! They looooooove dishes of real, actual food. You don’t even know. Airplanes in mid-air, refueling? They love that!" --Sgeo 08:24:51 ...? 08:25:13 Sgeo: http://viewsourcecode.org/why/hackety.org/2008/11/21/aCostlyParade.html 08:25:40 I am not _why. 08:25:53 Well, that's true. 08:25:57 monqy: Can we all agree on that? 08:26:01 im agree 08:26:08 -!- Vorpal has joined. 08:26:17 "Let me put it this way. Suppose you’ve got Zed Shaw. No, wait, say you’ve got “a person.” (We’ll call this person “Hannah Montana” for the sake of this exercise.) And you look outside and this young teen sensation is yelling, throwing darts at your house and peeing in your mailbox. For reals. You can see it all. Your mailbox is soaked. Defiled. The flag is up." 08:26:17 help im laughing and i cant stop 08:28:19 elliott_, where is that from 08:28:31 elliott_: Agreed 08:28:56 Vorpal: http://viewsourcecode.org/why/hackety.org/2008/11/21/aCostlyParade.html (enjoyable without a single bit of knowledge of the Ruby community and its drama, in fact better without it) 08:29:05 "It’s like Jesus. Except Jesus never had the forthrightness and temerity to actually kick a guy in the jugular if he had to." 08:29:30 elliott_, oh they are people known in the ruby community? 08:29:43 Vorpal: Uh... you mean Hannah Montana? 08:30:04 elliott_, yeah. And Zed Shaw. Either they are that or they come from popular culture. 08:30:08 I know neither 08:30:11 Yes. Yes, let's go with that. 08:30:22 They're from the hit US TV show "Zed Shaw and Hannah Montana". 08:30:31 ah 08:30:36 I'll google it 08:30:55 elliott_: that hello world thing reminds me of something i said yesterday (whistles non-chalantly) 08:30:56 hepl 08:31:06 elliott_: hepl 08:31:10 NihilistDandy: repl 08:31:11 what has happened 08:31:16 laughterl 08:31:20 not stopl 08:31:21 Someone set up us the bomb. 08:31:24 elliott_, wait, the latter is a TV show. But Zed Shaw is not. Right. 08:31:25 im dead 08:31:30 What you say? 08:31:54 itidus20: I RECOGNIZE YOUR REFERENCE 08:32:10 me too. it killed me. dead. 08:32:12 itidus20, move all zig 08:32:21 (killed is a bad thing) ((not a good thing)) 08:32:58 (if that came in the correct place, lucky, I completely forgot the order) 08:33:14 i don't know the whole poem 08:33:16 #ethoteric 08:33:19 "poem" 08:33:34 yeah, see what i did there :P 08:33:38 NihilistDandy, eth0teric? 08:33:54 Vorpal: No, #ethoteric with a :ithp 08:33:56 *L 08:34:00 NihilistDandy, so no ifconfig then 08:34:16 What with all the parenthetheth 08:34:22 I think that all your base deserves to be included in a poetry compendium some day 08:34:30 i wonder if they need rights from the company 08:34:35 I think something broke and I switched to eth1 because I was too lazy to figure out what happened 08:34:58 itidus20, copyrights do expire. Though hm not sure what happens if a company owns a copyright 08:35:36 how do i make a bot search for something i said yesterday? 08:35:44 perhaps it needs to be quoted? 08:35:50 :P 08:35:55 eh? 08:36:19 well i said something about hello world's 08:36:37 "At last, open source works as it should. Certainly, patching is cool. Branching is cool. But nothing beats intruding in my repo and just finishing the whole thing." everything on this blog is gold 08:36:37 try the logs, and grep them 08:36:56 whence might I find the logs? 08:37:09 in the topic 08:37:12 good stuff, that topic 08:37:14 oh 08:37:17 hahahha 08:37:27 you could also do !logs or whatever it is 08:37:33 and rsync them good 08:37:36 all of them 08:37:42 but if you know the date, it may be easier not to bother 08:38:09 lol @ stalker mode 08:41:04 http://viewsourcecode.org/why/hackety.org/2008/05/16/blimlimb.html <-- me 08:41:31 (https://github.com/bterlson/blimlimb/tree/master/logs for those links) 08:42:53 am i still here? i think my connection on this network is just about over 08:42:58 itidus20: no 08:43:06 itidus20, you are not here 08:43:45 i am on one network burning up bandwidth because it is due to soon be disconnected and for me to jump onto another when my brother returns 08:44:28 how can irc ever burn up bandwidth. It is low bandwidth. I mean I used it on plain GSM ffs! 08:44:35 torrents 08:44:45 that is a network? 08:44:50 uhm no.. 08:44:53 isp i should say 08:45:50 ok heres a topic has hello world worn out it's welcome? yeah the world is starting to get pissed 08:46:09 typical of oerjan. 08:46:13 People who read Homestuck: update 08:46:34 When was the last time homestuck actually took a command? 08:46:39 02:44:49: ok heres a topic 02:45:05: has hello world worn out it's welcome? Meanwhile, from the worst member of the channel to the best... 08:46:44 Taneb: Is that what all your other cryptic things for the last weeks have been? 08:46:52 that was on 17th august 08:46:56 NihilistDandy: It's Sgeo who does the cryptic things. 08:46:59 Mostly. 08:47:03 Problem Sleuth 08:47:03 Early 2009 08:47:07 Oh, I see a "SNOP". This will be good. I take my leave. 08:47:10 Whatever. You're all the same. Fucking whities. 08:47:18 lol 08:47:27 now today being the 19th of august, i clicked on elliott's hackety.org link.. and i see "What makes a good Hello World program? Because Hello World itself is a terrible Hello World." 08:47:41 Taneb, ty 08:47:52 ahh independant co-discovery 08:48:01 how you rue me 08:48:23 ^how I rue you 08:48:49 Taneb: Sgeo: I HAVE BEEN WAITING FOR THIS EVER SINCE THE SCRATCHING BEGAN 08:48:57 Proof that I am right always, naturally. 08:50:06 elliott_: well that is exactly what i was thinking re: hello world. it should be an application which takes advantage of multimedia capabilities of a prorgamming lang and it's standard library 08:50:18 itidus20: Most languages don't have much of that 08:50:34 good point 08:50:37 But the purpose of a hello world program is usually to get the user accustomed with how to actually run a program 08:50:41 And save it, etc. 08:50:48 The more non-trivial it is, the more that focus is lost 08:50:53 good point 08:51:18 that Max/MSP looked vaguely fun. 08:51:57 Hope you've got the cash to fork over for it 08:52:10 didn't look that fun 08:52:17 hehehe 08:52:25 itidus20: You probably aren't in the target market :-P 08:52:36 i am a competitor 08:52:45 i just don't have any products developed 08:52:53 Pro. 08:53:29 oh i am using words which would make stallman upset 08:54:18 ok my net is back to speed 08:54:25 Hurrah! 08:54:37 howzaaaat 08:54:38 itidus20: What words would make Stallman upset 08:54:48 "products" 08:55:07 "developed" is probably borderline 08:55:20 i think he would prefer if i said 08:55:35 I just haven't authored any software of that kind yet. 08:55:52 Who cares what Stallman thinks 08:56:10 oh. ha ha. ha ha. certainly not me. 08:56:36 itidus20 also known as richard stallman 08:56:57 also known as richard matthew stallman? 08:57:14 Also known as Ricky 08:57:37 also known as emakasu no kami 08:58:39 one of very few real life celebrities to feature in XKCD 08:59:01 also known as 08:59:08 GNU/XKCD 08:59:39 ok 08:59:48 sorry i am killing you 09:00:13 so i read that bot troupe thing and it was great 09:00:46 monqy: did you read the logs they're beautiful trainwrecks 09:01:10 i read most of one of them 09:01:23 I forget why I stopped 09:01:28 prin and whitely is the better one 09:01:36 he said as as a connosiaoruower 09:01:36 yes it was that one which I read 09:05:59 "People, Ruby isn’t a game. It isn’t a hobby. It’s certainly not a very good food source and it’s not an article of clothing. You can’t just put Ruby in the wash with a load of whites. Nice try, but no. No. Jeez, grow a brain. Ruby isn’t a tambourine you can bang loudly in my ear. I’m trying to use my iPhone here, guy. 09:05:59 And Ruby is not some bachelor’s party with a foxy lady in a sherlock holmes hat. Hardly: Ruby is all dads. Put a petticoat on, woman. Pop those balloons. We’re all getting paid here and we’re all having kids here. Get with the program." 09:06:11 maybe why disappeared to become a beat poet 09:06:35 a guru 09:06:47 oh no i am the can't think sort of tired without being the feel like slep tired i prefer it the other way around :'( 09:06:47 A beat guru 09:07:05 at least i am not the horrible sick die tired. i dislike that tired.. 09:07:14 do you get that tired a lot 09:07:21 no 09:07:53 http://viewsourcecode.org/why/hackety.org/2007/11/14/rubyIsMoney.html for posterity 09:07:58 I forget what it feels like aprat from frealing bad 09:08:09 #1 best dad 09:10:03 why seems like a good person 09:10:10 for how long has he been mysteriously disappeared now 09:11:13 two years or so 09:11:30 oh 09:11:31 in fact 09:11:34 exactly two years to the day 09:11:37 :| 09:11:41 :'( 09:11:45 ok oerjan stop it 09:11:49 stop making me believe in synchronicity 09:11:52 it's _rude_ 09:12:33 hi mollu 09:12:36 molly 09:12:38 http://upload.wikimedia.org/wikipedia/commons/e/e2/Sch%C3%A9ma_synchronicit%C3%A9_in_English.png synchronicity 09:13:04 why do i find this diagram hilarious help 09:13:39 lmao 09:14:40 i should just 09:14:43 draw it everywhere 09:14:51 graffiti 09:14:54 public restrooms 09:15:22 just add random lines going at different angles 09:15:30 "Political-industrial complex" 09:15:34 "Socioeconomic factors" 09:15:42 "Supermarket lineage" 09:16:02 -!- moses_ has quit (Read error: Connection reset by peer). 09:16:11 Supermarket Lineage: band name 09:17:21 for some reason i thought of stock music stores and their awful stock music collections for tasteful play in markets and elevators and held phone lines 09:17:26 or whatever they are 09:17:38 http://www.muzak.com/ like this thing 09:18:08 muzak sells smells? 09:19:41 awesome 09:19:48 i'm going to start the first smell band 09:19:58 http://www.muzak.com/products/scent 09:20:04 im going to elevate this to an art form 09:20:12 ScentWave® 09:20:14 ScentDirect® 09:20:16 ScentStream® 09:20:22 edgy experimental release that basically just smells like human excrement for an hour 09:20:40 pop scents that smell lightly fragrant but not really of much anything at all 09:20:45 yessssssss i will corner this market 09:21:32 mmm these music samples are still so tasteful 09:21:43 `addquote mmm these music samples are still so tasteful 09:21:47 601) mmm these music samples are still so tasteful 09:21:56 im sampling ultra hip holiday 09:22:38 hes the boogie woogie santa clause 09:22:48 switching to oktoberfest 09:23:16 yes i would love to shop to this 09:24:27 `addquote im sampling ultra hip holiday hes the boogie woogie santa clause switching to oktoberfest yes i would love to shop to this 09:24:29 602) im sampling ultra hip holiday hes the boogie woogie santa clause switching to oktoberfest yes i would love to shop to this 09:24:29 scotchtoberfest 09:24:34 "beer-drinken beer-drinken" - good song 09:25:13 the ultra hip holiday description is so good 09:25:23 Hey Santa Daddy-O, only the coolest of the cool get to play here. Timelessly hip and ever relevant, this program celebrates the holidays with swing, style and panache! Vocals and instrumentals combine to give a special musical sophistication to the season. Artists like Louis Prima, Frank Sinatra, Ella Fitzgerald and Louis Armstrong ring in the holiday with timeless style. 09:25:26 link 09:25:39 http://www.muzak.com/samples/music_programs/category/holiday their holiday themed selection 09:25:47 holiday best genre 09:26:08 fizzie: hi help 09:26:11 fizzie: sdl help 09:26:18 monqy: help theyre sielnt 09:26:33 holiday remix is so tasteful too 09:26:33 oh now it osunds 09:26:45 help i 09:26:46 inverted my 09:26:46 window 09:26:48 and now its 09:26:49 inverted 09:26:50 inverted??? 09:26:52 yes 09:26:56 what does that 09:26:56 mean 09:27:00 inverted 09:27:00 colours 09:27:04 how did that happen 09:27:11 im hotke 09:27:11 y 09:27:15 hotkey 09:27:22 what sort of hotkey would 09:27:23 do 09:27:23 that 09:27:25 who would do that 09:27:54 What SDL what. 09:28:20 fizzie: what is the "proper" way to go from r g b to the packed pixel for a surface (the surface is the screen) 09:28:26 or can i just pack it in the obvious way if it's the screen??? help 09:28:47 I used to know how to do that 09:29:05 monqy: windows+n 09:29:07 is invert key, 09:29:33 You can look at surface->format, I'm not sure if there was a function for it already. 09:30:08 ugh I forget how I knew how to do it 09:30:09 fizzie: hSDL miiight not offer a function for that. 09:30:13 How the fuck are you even meant to poke pixels with SDL. 09:30:20 s/SDL/hSDL/. 09:30:28 Maybe I am Missing Something. 09:30:32 SDL_MapRGB(SDL_PixelFormat *format, Uint8 r, Uint8 g, Uint8 b). 09:30:36 That one. 09:30:51 Yes. 09:30:55 I have to get the PixelFormat, though. 09:32:14 surfaceGetPixelFormat :: Surface -> PixelFormatSource 09:32:29 Disregard the "Source" bit, that got miscopied too. 09:32:45 "Hm. Yes. That might work." 09:32:49 surfaceGetPixels :: Surface -> IO Pixels 09:32:57 Also surfaceGetPixels :: Surface -> IO Pixels. 09:32:57 I'm not sure what "Pixels" are, though. 09:32:57 Pixel is a Word32. 09:33:01 And there's that too, although it returns a pointer to an opaque type, so it'll be "fun" to use. 09:33:10 data PixelsData 09:33:10 type Pixels = Ptr PixelsData 09:33:18 In fact Pixels isn't even exported, so lol. 09:33:29 since when do esolangers have the right to render individual pixels? 09:33:33 I also like: that mapRGB returns in IO. 09:33:49 elliott_: would it be safe to unsafeperformio? 09:34:05 or was there a reason to make it io 09:34:19 It seems to return in IO because it has to do a withForeignPtr to access the thing. 09:34:28 PixelFormat being a ForeignPtr Something. 09:34:38 I guess the PixelFormat _could_ be mutated from underneath you. 09:34:43 That sounds pretty rude though. 09:34:56 http://sdl.beuc.net/sdl.wiki/SDL_PixelFormat 09:35:03 I thought they were meant to have read/readwrite information. 09:37:38 -!- fungot has quit (Ping timeout: 260 seconds). 09:39:27 fizzie: halp 09:39:29 fungot 09:39:40 elliott_, why are you doing SDL? 09:39:50 Vorpal: As opposed to? 09:40:02 elliott_, I don't know. I'm asking for the context here. 09:40:21 Fiddling about with some Haskell thing. It's as vague as it sounds. 09:40:26 ah 09:41:02 elliott_, anyway if you want alternatives: allegro. opengl. direct frambuffer access. 09:41:06 thanks now im curious 09:41:14 data RGB = RGB Word8 Word8 Word8 09:41:15 type Coord = Rational 09:41:15 type Point = (Coord, Coord) 09:41:15 type Picture a = Point -> a 09:41:16 monqy: hth 09:41:26 Vorpal: Allegro is lolretro and there aren't any Haskell bindings that I know of. 09:41:37 Vorpal: OpenGL still needs a windowing library, i.e. SDL, and for what I'm doing that makes it overkill. 09:41:43 Vorpal: Direct framebuffer yes definitely. 09:41:44 http://wiki.allegro.cc/index.php?title=Allegro_languages#Haskell 09:41:51 monqy: SUSPICIOUSLY FAST 09:42:04 are you mahogny 09:42:06 monghy 09:42:09 no 09:42:10 elliott_, seem to remember there was a windowing library for opengl. Was it glut or was that something else 09:42:10 im not 09:42:14 r u sure 09:42:20 Vorpal: Yes, and GLUT sucks massively. 09:42:26 yes im sure elliott wants to use opengl and glut 09:42:32 this is a thing elliott wants to do 09:42:34 elliott_, ah okay. I never used it 09:42:36 I don't think anything in PixelFormat is supposed to be writable, and I also don't think it is supposed to ever change in the lifetime of a "normal" surface; not sure even for the screen, since after SetVideoMode probably the old pointer is something you shouldn't use. 09:42:40 whatever happened to glfwpipe anyway 09:43:15 monqy, what is/was that? 09:43:29 monqy: I'm ostensibly going to patch GPipe to be windowing system independent instead 09:43:35 fizzie, what if the user goes to the screen settings in the OS and changes the bit depth? 09:43:43 do you want i should mail mahogny? 09:43:48 itidus20: no 09:43:50 elliott_: sounds good; whatever happened to that, then 09:43:56 monqy: its been days dude 09:43:57 monqy: but uh 09:43:59 oh 09:44:00 ive been doing other things 09:44:03 i thought it had been weeks 09:44:08 im out of so much loop 09:44:11 lol 09:44:14 well it might have been like 09:44:16 two weeks at most?? 09:44:22 Vorpal: Not sure SDL handles that gracefully, really. But I guess it *could* change the screen's pixelformat. I suppose the only real guarantee is that it won't change in-between a LockSurface/UnlockSurface pair. 09:44:39 Vorpal: gpipe but glfw or windowing system independednt instead of depending on glut 09:44:44 "Not all surfaces require locking. If SDL_MUSTLOCK(surface) evaluates to 0, then you can read and write to the surface at any time, and the pixel format of the surface will not change." 09:44:44 fizzie, heh 09:44:51 monqy, ah 09:44:53 Yeah, I guess for hardware surfaces it might change. 09:44:58 im amazed you guys all know how to do graphics 09:45:12 FSVO know, graphics 09:45:17 Also how, to, do 09:45:19 whats a grahpics elhp 09:45:23 Also guy. 09:45:28 Also s 09:46:05 oh oh I know how to do graphics too 09:46:47 >.<; 09:46:52 hi 09:47:14 did we frighten you 09:47:23 if you want to learn how to a graphic read http://fly.cc.fer.hr/~unreal/theredbook/ 09:47:50 Patashu: does that thing even cover shaders 09:48:02 Patashu, that is the old stateful opengl stuff which is deprecated isn't it 09:48:10 looks like it 09:48:11 (not that I got a clue about how you do the new modern stuff) 09:48:16 shaders 09:48:17 more shaders 09:48:19 and more shaders 09:48:25 how 2 use shaders 09:48:29 Patashu: write shader 09:48:30 run shader 09:48:33 shader 09:48:33 ok 09:49:00 elliott_, so how do you load the vertices and textures into the graphics card? 09:49:05 i learned c++, winapi, first few chapters of opengl redbook in a certain autodidactic period... which however got cut short by i forget what 09:49:15 I hope it isn't a loading shader 09:49:20 "Oh - shader, shader, shader / I made it out of clay / and when it's compiled and link'd / with shader I shall play!" 09:49:29 Vorpal: dunno, pointers???? 09:49:36 elliott_, XD 09:49:43 Vorpal: Vertex buffer objects, I believe. 09:49:45 yes 09:49:47 that 09:49:48 that sounds familiar 09:49:50 fizzie, for textures? 09:49:58 A Vertex Buffer Object (VBO) is an OpenGL extension that provides methods for uploading data (vertex, normal vector, color, etc.) to the video device for non-immediate-mode rendering. VBOs offer substantial performance gains over immediate mode rendering primarily because the data resides in the video device memory rather than the system memory and so it can be rendered directly by the video device. 09:50:07 then you SHADE THEM 09:50:08 youse.. write stupid codes 09:50:09 aha 09:50:30 from what I heard, directx has a less annoying API. Hm. 09:50:35 itidus20: do you know any languages other than c++? I dislike c++. 09:50:45 itidus20: I've heard bad things about winapi as well, but never used it myself 09:50:48 i once killed a person because they used c++. 09:50:49 : ) 09:50:51 i was singing with fizzie 09:50:53 * elliott_ glares at itidus20 09:50:56 : ) 09:50:59 : ) 09:51:02 i don't know c++, winapi or opengl 09:51:20 fizzie, so does the GPU do translation? As in, you upload a model and then give an offset to define where in the world it should be and so on? 09:51:24 but you said that before fizzie sunge.s.. 09:51:26 i know nothing! 09:51:37 but you said you learned it 09:51:45 phew, good luck i don't use c++, otherwise elliott_ might want to kill me 09:51:46 Vorpal: You do that within the geometry shaders. 09:51:49 i had a shot at it 09:51:56 fizzie, ah... 09:52:01 but i didnt complete the learning 09:52:18 Vorpal: Or, well, maybe in a vertex shader. Anyhow. 09:52:21 i had several projects i tried to make at that time.. but then i burned out 09:52:41 and well fundamentally i wasn't really ready as a coder for such things 09:52:53 fizzie, so you upload a new shader each time you want to move an object!? 09:53:09 Vorpal: They can have parameters, you know. 09:53:13 oh okay 09:53:35 fizzie, is it one shader per program or do you use different shaders for different objects or such 09:53:44 can I use shaders to mine bitcoins? 09:53:45 (per type of shader) 09:53:45 You use whatever you want, I suppose. 09:53:58 fizzie, so having multiple vertex shaders is possible? 09:54:06 (as an example) 09:54:15 Patashu: The GPU miners use shaders, yes. Or, well, OpenCL, which is basically the same thing. 09:54:22 hooray! 09:54:26 Patashu: ...but there are better uses of your GPU. 09:54:31 yeah right. 09:54:32 like what? 09:54:34 drawing things? 09:54:36 I'm making money here 09:54:37 Playing Elliottcraft. 09:54:39 Patashu, stitching panoramas 09:54:43 CHECKMATE BITCHES 09:54:55 Vorpal: It's still stateful in that there's the currently active "program" (a collection of shaders). 09:55:01 elliottcraft should use left over gpu time to make bitcoins for you 09:55:16 mahogny is Johan Henriksson 09:55:34 sounds Swedish. 09:55:52 fizzie, ah 09:55:53 in fact he's a namibian princess, it's just a decoy. 09:56:05 And I have a feeling the "global" modelview and projection matrices still exist too, and the shader can utilize their product, but I'm not entirely certain about that. Went through our OpenGL course before it had been updated to all this programmable-pipeline fluff. 09:56:08 fizzie, well there is the state of loaded vertex buffer objects too 09:56:32 http://mahogny.areta.org/ 09:56:49 fizzie, well I have an opengl course this autumn. I hope it is updated 09:56:56 I kind of wish my opengl class wasn't the stateful kind now 09:57:05 b/c it looks like everything I'll use from now on will be shaders shaders shaders 09:57:07 and vertex buffers 09:57:28 Patashu: use gpipe and have fun 09:57:34 Patashu, and texture buffer objects I think 09:57:41 them too 09:57:49 Patashu: compiles functional haskell into efficient shader code ON TEH FLY.... 09:57:51 And FBOs, for fancy render-to-texture stuff. 09:58:02 elliott: handy! 09:58:18 Patashu: I SNESE SARCAS 09:58:19 m 09:58:31 no it does sound handy 09:58:40 fizzie, I guess that would be useful in order to create portal or screens in-game? 09:58:51 gpus are suited for functional programming anyway? because they're highly parallelized 09:59:54 Why did no-one tell me how fun children's train toys were? 10:00:24 -!- myndzi has quit (Ping timeout: 252 seconds). 10:00:31 Taneb: it is the Great Secret 10:00:49 Oh that train has a toilet which empties onto the tracks 10:00:51 nice 10:01:21 `quote toilet 10:01:22 147) alise: mainly it's the fact it blows so hard i cannot avoid hitting the walls of the thing, which completely goes against my basic public toilet hygiene principles \ 488) * Sgeo mutters about broken toilets #toilet is useless is #toilet even a thing I'm looking for help with toilets \ 489) 10:01:35 `pastequotes toilet 10:01:37 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.4134 10:01:38 valuable information 10:01:44 -!- atehwa has quit (Ping timeout: 276 seconds). 10:01:45 and mmemories 10:02:12 monqy: im ehird and tusho and estoppel and alise btw.................................... just realised that you may not know my alternate nicks...................... 10:02:24 i want more elispeses 10:02:27 (to eat) 10:02:46 i knew ehird, i knew about tusho but forgot the exact name, forgot or never knew about estoppel and alise 10:02:58 estoppel i did not use much 10:03:02 im hungary too...but cnnot eat until hours 10:03:02 -!- atehwa has joined. 10:03:35 I do not recognize estoppel 10:03:55 Has anyone used CryoPID? 10:03:58 'quote alise 10:04:06 oops 10:04:10 `quote alise 10:04:12 128) use "grep --crazy" \ 129) * augur rubs alise's bum [...] what? she said square ped :| \ 131) alise: why internet is like wtf \ 135) like, just like I'd mark "Bob knob hobs deathly poop violation EXCREMENT unto;" as English alise: that's great filler ais523: well it 10:04:24 :D 10:04:37 Vorpal: Those, and (not the render-to-texture thing, FBOs in general) general post-processing of the final render, by a fragment shader or something. 10:04:37 elliott_: im geting centepides help 10:04:39 elliott_: helloooooooo 10:04:43 augur: whatoiht 10:04:55 monqy: help 10:05:01 `addquote im hungary too...but cnnot eat until hours 10:05:02 603) im hungary too...but cnnot eat until hours 10:05:09 is that funny 10:05:13 hungary 10:05:13 i dont get it 10:05:13 help 10:05:15 its a country, 10:05:16 yes 10:05:18 that was intentional 10:05:21 but you cannot eat until hours... 10:05:23 DMM knows who I am... 10:05:36 Taneb: THE FAMOUS DMM 10:05:39 :o what? how? 10:05:56 itidus20: is DMM what passes for a celebrity in your country 10:06:21 fizzie, hm 10:06:23 What passes for a celebrity in my country is as follows: 10:06:25 Well, he mananged to connect forum me to IRC me 10:06:38 amazing 10:06:47 I don't know if anyone knows me 10:06:50 Taneb: hard feat what with them having exactly the same name 10:06:58 :P 10:07:24 Players of cricket. Players of aussie rules football. Actors starring in the soap opera home and away. Actors starring in the soap opera neighbours. Politicians. 10:07:35 DMM. 10:07:53 do you guys even have more than two soap operas 10:07:53 Also certain musicians of course. 10:08:04 those two are like 10:08:06 your country's primary export 10:08:17 I dont; know what counts as famouse...i am bad at fame 10:08:18 Seachange was good but didn't last very long 10:08:21 -!- fungot has joined. 10:08:34 im glad this is a channel where people have opinions on australian soap operas 10:08:35 i am out of all the fame loops 10:08:44 im just sitting here grinning likean idiot 10:08:48 and the australien soap opera loops 10:08:57 so much loop / s omcuh 10:09:01 `addquote i am out of all the fame loops and the australien soap opera loops so much loop / s omcuh 10:09:02 604) i am out of all the fame loops and the australien soap opera loops so much loop / s omcuh 10:09:09 i have sort of met toadfish once in a nightclub 10:09:18 please do tell 10:09:21 while famous loop { } 10:09:30 *runs 0 times* 10:09:41 my friend who used to boss me around asked me to offer him a beer. he was kinda creeped out by me. 10:09:48 :P 10:10:09 who is toadfise 10:10:13 yeah i uh 10:10:15 don't know who that is 10:10:19 a fictional character in neighbours 10:10:20 I thought you said "a toadfish" 10:10:27 and I was like 10:10:30 lol 10:10:31 whoa what's a toadsish 10:10:35 toadfish was kinda creeped out by itidus20 10:10:35 toadfish, sorry 10:10:39 http://en.wikipedia.org/wiki/Toadfish 10:10:40 its a thing 10:10:46 itidus20 met one once in a nightclub 10:10:50 http://upload.wikimedia.org/wikipedia/commons/2/29/Neophrynichthys_latus_%28Dark_toadfish%29.gif 10:10:58 hey iti offer to buy a beer for that guy 10:11:02 that is actually how i imagine itidus20 10:11:06 hey toadfish i buy beer??? 10:11:09 http://upload.wikimedia.org/wikipedia/commons/2/29/Neophrynichthys_latus_%28Dark_toadfish%29.gif 10:11:16 that toadfish picture describes my mental image of itidus20 perfectly 10:11:18 I once visited the set of Home and Away, I think 10:11:20 "For the television character, see Toadfish Rebecchi." 10:11:22 monqy: ahahaha 10:11:35 http://upload.wikimedia.org/wikipedia/en/5/55/Toadie_Rebecchi.jpg 10:11:36 http://upload.wikimedia.org/wikipedia/commons/2/29/Neophrynichthys_latus_%28Dark_toadfish%29.gif 10:11:38 the resemblance is uncanny 10:11:39 -!- Taneb has left ("I am outta here"). 10:11:47 -!- Taneb has joined. 10:11:49 taneb can't take the heat 10:11:57 the heat being comparisons of soap opera actors to fish 10:11:58 I didn't know I could do that 10:11:58 http://upload.wikimedia.org/wikipedia/commons/9/91/OysterToadfish.jpeg helo 10:12:06 monqy: http://upload.wikimedia.org/wikipedia/en/5/55/Toadie_Rebecchi.jpg same person?? 10:12:08 maybe same photo 10:12:25 ya that guy 10:12:48 his brother in the tv show is named stonefish :P 10:13:13 stonefish does not jive with my mental itidus20 image 10:13:21 who is stonefish.... 10:13:32 http://en.wikipedia.org/wiki/Stonefish_stings_in_Australia 10:13:33 another character in that tv show 10:13:40 toadfish's brother 10:13:45 stonefish is not sgeo either 10:13:48 http://upload.wikimedia.org/wikipedia/commons/e/e2/Sch%C3%A9ma_synchronicit%C3%A9_in_English.png <-- soap operas 10:13:49 what is a good sgeo fish 10:14:23 No results found for "sgeo fish". 10:14:24 help 10:14:40 help 10:14:51 help 10:14:54 trying +sego +fish 10:15:05 http://www.charlesgilchrist.com/SGEO/Gal1101.html 10:15:09 first result 10:16:01 where fish 10:16:14 C.G. "Yes. As I am sure you remember, Leslie, and as I have told you many times before: Sacred Geometry is the architecture of the universe. You can observe these proportions everywhere; in fish and shells, birds and beasts of all kinds, many forms of insects, it's in plants and trees; God's Golden Mean is to be found everywhere in nature." 10:16:25 C.G. "I have no idea, Leslie, and I don't believe anyone knows that for sure. The Golden Mean Rectangle and the related Phi Ratio have been perceived in numerous cultures dating back to the roots of recorded history, especially in the Middle East and the Far East. But the information was a guarded part of esoteric wisdom and was not shared with anyone but the most privileged initiates of very obscure and secret societies." 10:16:30 But the information was a guarded part of esoteric wisdom and was not shared with anyone but the most privileged 10:16:35 part of esoteric wisdom and was not 10:16:37 part of esoteric wisdom and 10:16:38 of esoteric wisdom and 10:16:40 of esoteric 10:16:42 esoteric 10:16:45 esoteric wisdom 10:16:48 esoteric /SGEO/ 10:16:58 http://upload.wikimedia.org/wikipedia/commons/e/e2/Sch%C3%A9ma_synchronicit%C3%A9_in_English.png 10:20:00 just coincedence 10:20:17 http://upload.wikimedia.org/wikipedia/en/8/84/Sgeoct.wav helpful audio clip from sgeo wikipedia userpage 10:20:22 pun intentional 10:20:30 That second-to-latest reminded me of this guy: http://upload.wikimedia.org/wikipedia/commons/3/3e/Kauko_Nieminen.jpg 10:21:33 He's written 15 "books" about his "aether whirlpool theory". 10:21:34 he looks like a bro 10:21:56 and i thought: vortex math 10:22:04 Kauko Armas Nieminen (born 15 February 1929 in Kuopio, Finland) is a Finnish self-taught physicist. His work is pseudoscience.[citation needed] 10:22:04 Although Nieminen is most known for his works in physics, he does not have any academic training or degree in physics, but is entirely self-taught. He has a bachelor's degree in law from the University of Helsinki. 10:22:05 a bro? help 10:22:31 Kauko Nieminen was a deputy member of the city council of Helsinki from 2001 to 2004. 10:22:33 fizzie: what happened 10:22:38 His work is pseudoscience.[citation needed] 10:22:44 lol 10:22:47 "Nieminen's research and theories in physics are unusual.[citation needed]" 10:22:50 Oh, Wikipedia. 10:23:12 * itidus20 laughs aloud 10:23:21 elliott_: Maybe he wanted to concentrate on his real work instead of politics? (I don't know.) 10:23:22 http://sgeo.deviantart.com/ is this sgeo i have a suspicion it isnt 10:23:39 fizzie: i mean how did he... get in 10:24:16 elliott_: Well, by being elected, I would suppose. 10:24:21 fizzie: how 10:26:33 http://www.helsinki.fi/~pvalimak/sitaatit/nieminen.htm what does this mean 10:26:34 good frog 10:26:48 wikipedia said it's an interview with crazyman but I can't read 10:27:14 monqy: tranarnslate it 10:27:19 chrome askes me too, you should, get that 10:27:22 "Many of us think they know what is to be a bohemian scientist or spend a carefree university life - beer, an old Kuppila and stuff. But the absent-minded scientist, or a bohemian being is like other things. Others are amateurs, and some charismatic individuals you're verissä: they will become professionals who are leaving other in the shade. The latter caste is vice Notari Far Nieminen. 10:27:30 Are you going to continue the political uraanne? 10:27:30 "I will continue, if I find the party, which is not only selfish bourgeois juntteja reindeer. Has gone low. " 10:27:44 not only selfish bourgeois juntteja reindeer 10:27:49 has gone low 10:28:00 fizzie: is he complaining about the bourgeois reindeer, say yes 10:29:20 I am vice Notari Far Nieminen, I have published reach much further than Jesus. At their chapter The overall co-benefit and other places it occurs. After all, I witnessed OF CREATION, which is achieved eternal life in the broadest sense ETHERS ETERNAL POWER OF. 10:29:23 elliott_: It seems he got 221 votes (out of 230k) in the 2000 muncipal elections. But do note that that he was just a deputy member; got the second-most votes from the independents, but the independents in total got one seat out of 85, so... 10:29:24 ROAD READY ON, CAN find it! 10:29:26 REMOTE RECORD Nieminen AIKAJA SUBSTANCE NOT BUY bookstores, HELSINKI EDULLISEMMAT Second-hand bookshop. " 10:29:38 fizzie: is he complaining about the bourgeois reindeer, say yes 10:29:41 also 10:29:44 my SDL.fillRect code 10:29:46 is sloe :( 10:29:55 i gess i wil ltry pixels 10:29:56 that's what happens when (whatever you did here) 10:30:24 fizzie: um help how do i know what memory format the plixes is in....... 10:30:37 wasn't there a function for that 10:30:42 maybes??????? 10:30:45 elliott_: I... I don't want to lie; no, he's not. The source word "poroporvarillinen" translates to "really bourgeois", even though "poro" as a stand-alone word means reindeer. 10:31:16 is surfacegetpixelformat a function which you want 10:31:29 elliott_: The pixels is in the format specified by the PixelFormat, of course. (And each line is separated by surfaceGetPitch bytes. 10:32:50 fizzie: could you translate the entire line which says "I will continue, if I find the party, which is not only selfish bourgeois juntteja reindeer. Has gone low. " ? 10:32:57 fizzie: What if I assumed the format..................... what then 10:33:05 this is a big ask.. i have no obvious means of thanks 10:33:13 i think http://sdl.beuc.net/sdl.wiki/Pixel_Access is how i learned how to do pixel stuff with sdl,,,,,it was years ago. 10:33:20 Basically I suppose what you need to do is to run your RGB values through mapRGB (because the Haskell binding doesn't seem to expose the fields of the PixelFormat struct) and then use the pixelFormatGetBytesPerPixel and surfaceGetPitch values to calculate the offset in surfaceGetPixels, and stick pixelFormatGetBytesPerPixel bytes of the mapRGB-returned Word32 there. 10:33:52 monqy: were you even born years ago...... 10:34:00 a few of them,,,,,,,, 10:34:03 fizzie: what if i just assumed it was how it is........... 10:34:08 fizzie: and hardcoded....... 10:34:11 would i be bad 10:34:14 ew / gross 10:34:17 would it break 10:34:32 elliott_, yes very gross 10:34:39 aether way it is no skin of my nose 10:34:50 Vorpal: YOURE GROSS ASSHOLE 10:34:54 * elliott_ creis 10:34:54 * elliott_ creis 10:34:55 * elliott_ creis 10:34:56 * elliott_ creis 10:34:59 help 10:35:02 help 10:35:10 nett 10:35:22 Neurological Emergencies Treatment Trials 10:35:51 Haberdashery Exegesis LARPers Purdue 10:35:56 elliott_: Well, you could draw to a createRGBSurface you constructed yourself, with the right format, and then just blit that into the screen, then SDL will take care of the conversion. (Possibly disable double-buffering in that case, since it's already double-buffered in software.) 10:36:24 fizzie: oh i forgot to ask for doubline ufbfuerring or anything... 10:36:28 itidus20: Roughly translated... "I will continue [my political career], if I can find a party that consists of not just ur-bourgeois selfish rednecks. It's gone low." (I don't really know what that last part means. I guess it's just a lamentation of how bad things are.) 10:36:32 surface <- SDL.setVideoMode w h 32 [] 10:36:34 would that speed this up 10:36:39 (it's slow) 10:36:58 fizzie: thanks 10:38:47 The selfish bourgeois juntteja reindeer has gone low. 10:38:48 elliott_: I think the slowness could be because each fillRect call will do an internal lockSurface ... unlockSurface pair, and if the surface you're drawing to is a in-video-memory hardware surface, that may involve a round-trip to the display card memory. You could easily try that by sticking a SWSurface in your setVideoMode call. Though I guess it could also easily be something else wrong in the fillRect way. 10:39:42 fizzie: Well, I'm doing it via poking now, and it works (wow, first time!), but... it's still not fast. 10:39:49 fizzie: I have a feeling my representation is just non-ideal. 10:39:53 ((Rational,Rational) -> RGB) 10:39:56 (For pictures.) 10:40:03 BUT I WILL OPTOMIZE 10:40:07 The selfish bourgeois juntteja reindeer has gone low. <-- I'll assume low is a logical 1 in this case. 10:40:09 I'm calling mapRGB all the time, that's gotta be slow. 10:40:34 Is b normally least-significant, or r? 10:40:42 :( 10:41:15 elliott_, why not just cache the mapRGB results? 10:41:28 ok 10:41:33 Vorpal: because the rgb differs each time... 10:41:42 a map lookup will be slower 10:41:50 hm true 10:42:14 what is even doing 10:42:21 elliott_, anyway what are you doing really. Maybe I can suggest a better way 10:42:25 I used SDL quite a bit 10:42:36 (from C though) 10:42:49 The RGBA/ARGB/BGRA/ABGR is often anyone's guess, really, thanks to sometimes it being sensibly "RGBARGBA..." in memory, but in some other times they've wanted to put it so that it looks like 0xRRGGBBAA when viewed from a little-endian CPU. 10:43:16 Vorpal: did it do anything amusing? 10:43:16 Vorpal: Rendering pictures. Later animations. 10:43:25 data RGB = RGB Word8 Word8 Word8 10:43:25 type Coord = Rational 10:43:26 type Point = (Coord, Coord) 10:43:26 type Picture a = Point -> a 10:43:35 Picture RGB is the relevant type. 10:43:44 Just doing a 500x500 checkerboard, it's slow. 10:43:49 And no, s/Rational/Double/ doesn't help much. 10:43:51 why do you need pixel manipualtion to do this.... 10:43:52 elliott_, if you render a picture why not just blit the textures or whatever? 10:43:55 Takes multiple sconds to render. 10:44:14 why not draw big boxes 10:44:19 Vorpal: The pictures are continuous. 10:44:20 indeed what monqy said 10:44:28 And the animations will then depend on input factors. 10:44:44 or is this a fine-grained checkerboard 10:44:46 "don't write your program in the first place" isn't terribly helpful advice. 10:44:50 elliott_, if you are drawing a checkerboard, just use the box drawing primitives 10:44:58 Vorpal: Just... 10:45:04 elliott_, just what 10:45:04 Shut up, you have no idea what I'm trying to do. 10:45:07 "don't write your program in the first place" isn't terribly helpful advice. 10:45:16 Shut up, you have no idea what I'm trying to do. <-- because you aren't explaining 10:45:18 The representation isn't up for discussion; how to render it is. 10:45:28 elliott_: i hope you are not using some variation on putpixel 10:45:38 elliott_, I say the representation is wrong. 10:45:45 Vorpal: Then stop talking. 10:45:46 oh dagn!!!! 10:45:54 elliott_, fine. 10:46:14 elliot.. also.. try making it 512x512? 10:46:20 i dont know? 10:46:24 elliott_, at least try profile it. 10:46:35 im just throwing silly ideas out there 10:46:44 in this case power of 2 10:46:47 If you want to avoid mapRGB, you *could* perhaps use a hardcoded format of your own, an in-memory byte-buffer done however that sort of thing gets done in Haskell, and then the oh-there's-no-documentation createRGBSurfaceFrom :: Ptr a -> Int -> Int -> Int -> Int -> Word32 -> Word32 -> Word32 -> Word32 -> IO Surface. That should avoid any nonsense in the SDL binding, maybe. 10:46:50 Vorpal: There are about five calls in the loop that takes the time. Trial and error is faster than profiling. 10:49:07 fizzie: In-memory byte buffers look pretty much the same in Haskell as C. :p 10:49:55 i think im shoudl probably slep soon 10:50:24 monqy: what tmie is it........... 10:50:38 almost 0352 10:50:40 i mean 10:50:41 it is that 10:50:48 i was about to type almost 0400 10:50:50 but then i didn't 10:50:53 i typed 0352 10:51:40 hahaha 10:51:47 elliott_: Coincidentally, I was wondering what the difference between tryCreateRGBSurface and tryCreateRGBSurfaceEndian is in the bindings. Source -> "tryCreateRGBSurfaceEndian flags width height bpp = tryCreateRGBSurface flags width height bpp" 10:52:29 -!- myndzi has joined. 10:52:52 fizzie: Nice. Probably for backwards compatibility. 10:53:08 i'm not particularly tired but i have other reasons for sleep desire 10:53:17 monqy: why slep desire 10:53:19 why an slep desire 10:53:45 avoiding bad consequences of not slep, such as yelled at 10:54:04 in an utopia not slep would be as unto slep but with les slep 10:54:18 my choice is either yelled at for slep deprivation, or yelled at for slep too late 10:54:42 what if you slep deprive hide................................. like a SLEUTH............... 10:54:55 alternatively, preemptively yelled at if anyone wakes up and hears me not slepeing 10:55:00 Ohhhh, it *continues* three lines later with "{-# LINE 412 "Graphics/UI/SDL/Video.hsc" #-} 0x000000FF 0x0000FF00 0x00FF0000 0xFF000000" which are of course additional arguments to that tryCreateRGBSurface call. Well, that makes sense. Also, pretty formatting. 10:55:13 i'm spooked out by noises i may or may not be hearing 10:55:15 this spooks me 10:55:16 im leave 10:55:24 -!- monqy has quit (Quit: hello). 10:58:19 fizzie: Well, it _is_ generated code. 11:01:01 let rgb = (fromIntegral r `shiftR` 16) .|. (fromIntegral g `shiftR` 8) .|. fromIntegral b 11:01:06 What does it mean if this produces blue for black. :p 11:01:14 Not pure blue, either. I think. 11:01:22 Might be wrong about that one. 11:02:05 If r, g, b are all 0 and you get blue out, that's quite impressive. 11:03:06 fizzie: Erm for white. 11:03:08 Not for black. White. 11:03:10 Oh. 11:04:06 It's still quite interesting. But the needed shifts are pretty much always one out of (16, 8, 0), (24, 16, 8), (0, 8, 16) or (8, 16, 24); that's just four alternatives to try. 11:04:09 It means you're using that as an 8-bit value? 11:04:23 And later fromIntegral'ing it again to get something bigger 11:04:23 Oh, I guess it could be that too. 11:04:33 let RGB r g b = picture (fromIntegral x, fromIntegral y) 11:04:33 -- SDL.Pixel rgb <- SDL.mapRGB fmt r g b 11:04:33 let rgb = (fromIntegral r `shiftR` 16) .|. (fromIntegral g `shiftR` 8) .|. fromIntegral b 11:04:33 pokeElemOff pixels (x*w + y) rgb 11:04:36 AFAICT what you've got there is Bits a => a 11:04:37 let pixels = castPtr pxs :: Ptr Word32 11:07:09 print $ peekElemOff pixels (x*w +y) 11:09:35 Deewiant: =<<, not $... but yeah okay. 11:09:47 Hmm, you're right. 11:09:51 But that makes literally no sense. 11:09:57 I wrote that as traceShow . unsafePerformIO originally but then I realized it was in IO 11:10:07 I mean, pokeElemOff _takes a wordthirtytwo_ here. 11:10:18 So rgb being eight-bit just doesn't work. 11:10:31 let rgb :: Word32 11:10:41 Shouldn't make a difference 11:10:49 Cargo-cultist :) 11:11:04 Just for testing 11:11:07 Deewiant: Doesn't work, ha, world still makes sense 11:11:16 Why doesn't it work 11:11:19 So I guess I might have my alignment wrong or something?? 11:11:23 Deewiant: As in, works, produces same results 11:11:30 Oh, I thought you meant it doesn't compile :-P 11:13:49 `quote bonkers 11:13:51 26) so i can only conclude that it is flawed, or the world is utterly bonkers \ 27) IN EINEM ALTERNATIVEN UNIVERSUM (WO DIE NAZIS WON): So kann ich nur schliessen, dass es falsch ist, oder die Welt ist vollig BONKERS. Gegrusset seist du der Fuhrer Hitler! \ 29) PA ET ANNET UNIVERSET DER DE ENESTE PERSONEN OERJAN: 11:13:53 Current working assumption 11:14:16 Maybe it's like... BBAAAAGGRR 11:14:19 (least significant to most) 11:14:21 That makes sense 11:14:22 :-) 11:14:30 Waitwait 11:14:35 Deewiant: "shiftR" 11:15:10 Right, you probably want shiftL 11:15:22 I never liked those names :-P 11:15:36 Now it works, and it's a whole imperceptible faster than the pure version! 11:15:43 Deewiant: I suggest "bigger" and "smaller" 11:15:46 n `bigger` 9 11:16:08 .<<. .>>. 11:16:17 Since that's what they did for the |^& 11:16:24 :-d 11:16:25 :-D 11:16:56 Some sort of pack :: (Bits a, Bits b) => [a] -> b would have been a nice addition 11:17:04 Using the sizeOf 11:19:19 Deewiant: Did they do that for ^? I thought Data.Bits did only the middle-finger (.|.) and the (.&.) and then "xor". 11:19:30 Oh, true that. 11:19:49 I didn't know haskell had the boobies operator 11:20:04 (.).(.) 11:21:40 Though (..|.) would be the true middle-finger operator. (Left hand, seen from the front.) 11:22:02 ..|.. 11:22:06 ,,|,, 11:22:32 the middle finger should crash haskell 11:22:45 (..|..) = error "fuck you" 11:22:59 hehehe 11:27:50 elliott_: pack ys = go 0 (reverse ys) where go _ [] = 0; go s (x:xs) = fromIntegral x `shiftL` s .|. go (s + bitSize x) xs 11:27:59 Really annoying that this can't be made ... 11:28:03 Deewiant: Yes, I'm aware it can be implemented. :p 11:28:07 pack :: (Integral a, Bits a, Bits b) => [a] -> b 11:28:14 ... fast. 11:28:26 It needs the Integral though 11:28:53 Well, to be performant 11:31:08 Deewiant: You can do it with "bit", I think 11:31:09 pack ys = go 0 (reverse ys) where go _ [] = 0; go s (x:xs) = f x `shiftL` s .|. go (s + size) xs; f x = foldl1' (.|.) [bit i | i <- [0..size-1], x `testBit` i]; size = bitSize $ head ys 11:31:12 To avoid the Integral constr- yeah. 11:31:18 pack :: (Bits a, Bits b) => [a] -> b 11:31:29 But, that's expensive :-P 11:31:41 Deewiant: Well, you really want it in the (Bits a) class. 11:31:54 That could just be the deafult. 11:31:57 default. 11:32:10 Why would you want this in the class 11:32:26 Deewiant: So that it can have the right signature (Bits a, Bits b) => [a] -> b while still being performant 11:32:36 By specialising the implementation to various specific a types 11:32:47 Same reason Bits isn't just like two functions 11:33:14 -!- cheater has quit (Ping timeout: 250 seconds). 11:33:14 I don't see how this would be specialized 11:33:31 Deewiant: elliott_: pack ys = go 0 (reverse ys) where go _ [] = 0; go s (x:xs) = fromIntegral x `shiftL` s .|. go (s + bitSize x) xs 11:33:37 There's a fast implementation for any a with Integral 11:33:59 I'd just make that a separate function :-P 11:34:13 Deewiant: You have no sense of elegance :-( 11:34:42 pack is obviously possible for every (Bits a, Bits b), and so that's the signature it should have; the fact that it's much more efficient with (Integral a) is a reason to put it in the class so that each a can implement it ideally. 11:34:53 If elegance is big classes look no further than Data.ListTrie.Base.Map 11:35:09 Deewiant: Under the constraints of the language as it is :-) 11:35:22 If I was in charge of things Bits would look like this: 11:35:27 I'd think that pack isn't the appropriate function to put in the class 11:35:27 class Bits a where 11:35:31 toBits :: a -> [Bool] 11:35:33 Rather, (Bits a, Bits b) => a -> b is 11:35:34 fromBits :: [Bool] -> a 11:39:51 bits2bits :: (Bits a, Bits b) => a -> b is sufficiently simple that it could be in the class IMO, but pack isn't 11:40:35 bits2pieces. 11:45:08 -!- cheater has joined. 11:47:25 -!- Phantom_Hoover has joined. 11:54:22 -!- GreaseMonkey has quit (Quit: The Other Game). 12:02:33 -!- BeholdMyGlory has joined. 12:08:20 -!- Taneb has quit (Ping timeout: 250 seconds). 12:11:39 -!- boily has joined. 12:12:14 -!- Taneb has joined. 12:17:37 `addquote The only happy dorf has a compassion stat of 0. Well, 20, but it amounts to the same. 12:17:40 605) The only happy dorf has a compassion stat of 0. Well, 20, but it amounts to the same. 12:28:50 -!- hiato has joined. 12:28:50 -!- hiato has quit (Client Quit). 12:30:26 fizzie: Ooh, ooh, what if I parallalemalised my draw loop??? 12:30:35 Why poke to one memory location in sequence when you can poke to a HUNDRED? 12:32:18 -!- Taneb has left ("I am outta here"). 12:34:41 http://i.imgur.com/JuUTG.jpg 12:34:41 Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them. 12:34:46 Best translation. 12:34:58 -!- myndzi has quit (Ping timeout: 260 seconds). 12:35:00 Phantom_Hoover: Welcome to, like, four years ago. 12:35:45 elliott_, I CAN'T BE BLAMED 12:38:15 -!- guardian has joined. 12:38:34 -!- guardian has left. 12:38:39 rip grauniad 12:50:45 elliott_: X11 forwarding accomplished. 12:50:56 (For no good reason 8-D ) 12:51:03 Gregor: Well aren't you a shithead I MEAN CONGRATULATIONS 12:51:33 Gregor: Now I need to one-up you :P 12:51:43 Man that's a lot of lines of code. 12:55:46 Oh piffle, it's not even 1,000. 12:56:28 Mine was like two hundred :P 12:58:17 Mine works :P 12:58:23 Mine ALMOST works :P 13:10:55 Mine is HARDCORE 13:11:01 Also mine is more generalizable :P 13:11:45 -!- sllide has joined. 13:12:21 Gregor: And what do you plan to generalise it to? :P 13:12:27 Did you change the protocol? 13:12:47 tcp6, for example. 13:13:01 I change the protocol only insofar as it's a push-only protocol now. 13:13:04 Sweet, now you support all three IPv6 hosts :P 13:13:15 No, I just have the ability to support them :P 13:13:21 SWEEEEEEET 13:13:33 Appletalk! 13:13:38 YESSSSSSSSSSS 13:13:52 -!- MSleep has changed nick to MDude. 13:14:08 IPX networking is the best form of networking. (Disclaimer: a context-free comment.) 13:16:37 Gregor: You should switch to epoll for SCALABILITY. 13:17:47 why not switch to Scala for SCALAbility. :3 13:18:25 Or C for sCalability. 13:18:31 Wait, is it in fact C already? 13:18:34 Yes. 13:18:36 I don't even know what it's all about. 13:18:50 fizzie: Arbitrary socket multiplexer over tty. 13:19:01 fizzie: The only outside-world communication UML offers is via ttys, so... yeah. 13:19:35 "every value is an object!" such a deep paradigm. 13:21:25 Does anyone even like OOP any more? I haven't been keeping track. 13:21:34 That's not strictly speaking true for "UML", though of course I don't know the scenario. (For example, the TUN/TAP uml_net thing requires some root privileges for setting it up.) 13:21:36 most people I talk to don't. 13:21:47 a lot of my professors seem to like it. 13:21:50 fizzie: Well, talk to Gregor; ISTR tun/tap was ruled out for various reasons. slirp too. 13:21:52 it's basically all they teach. 13:22:02 Maybe the needing-root + ugliness outruled it. :p 13:22:17 Not that doing it over a tty isn't ugly, but it's also cute. 13:22:23 in my second intro to programming class that spent like, a lecture going over recursion. 13:22:24 Needing-root sounds like a reasonable reason not to play with taps. 13:22:28 `run curl http://www.google.com/ 2> /dev/null 13:22:31 Try -I 13:27:28 ? 13:27:35 I think that's the headers option anyway 13:27:40 "Important: The APIs included in this family have all been deprecated. Please see each API for details." http://code.google.com/apis/language/ 13:27:45 `url jp penis 13:27:46 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/jp penis 13:27:52 They should still exist, though. 13:27:53 `wl jp penis 13:27:56 Traceback (most recent call last): \ File "/hackenv/bin/wl", line 52, in \ q = query(continue_id) \ File "/hackenv/bin/wl", line 44, in query \ response = urllib2.urlopen(url).read() \ File "/opt/python27/lib/python2.7/urllib2.py", line 126, in urlopen \ return _opener.open(url, data, 13:28:01 I broke it. 13:28:13 I... don't know what happened there. 13:28:15 Gregor? 13:28:23 `wl jasoiaoisdj hello 13:28:26 Traceback (most recent call last): \ File "/hackenv/bin/wl", line 52, in \ q = query(continue_id) \ File "/hackenv/bin/wl", line 46, in query \ print e.reason \ AttributeError: 'HTTPError' object has no attribute 'reason' 13:28:34 `wl jp penis 13:28:37 Traceback (most recent call last): \ File "/hackenv/bin/wl", line 52, in \ q = query(continue_id) \ File "/hackenv/bin/wl", line 44, in query \ response = urllib2.urlopen(url).read() \ File "/opt/python27/lib/python2.7/urllib2.py", line 126, in urlopen \ return _opener.open(url, data, 13:28:55 `run wl jp penis 2>&1 | paste 13:28:58 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.12766 13:29:04 lol 13:29:11 Weird, it seems that Google Translate's "auto" doesn't work anymore ... 13:29:21 And the rest of the service is ... intermittent. 13:29:22 `translatefromto es en Hola 13:29:26 Traceback (most recent call last): \ File "/hackenv/bin/json", line 4, in \ data = json.loads(sys.stdin.read().decode('utf-8')) \ File "/opt/python27/lib/python2.7/json/__init__.py", line 310, in loads \ return _default_decoder.decode(s) \ File "/opt/python27/lib/python2.7/json/decoder.py", line 346, 13:29:31 See, intermittent X-D 13:29:35 `translatefromto es en Hola 13:29:35 Hello 13:29:38 Oh well 13:29:55 Gregor: I suspect your proxy is crapping out somehow :P 13:30:01 Because "" is not an HTTP header line, yo. 13:30:09 -i isn't on there. 13:30:28 `run curl http://www.google.com/ 2> /dev/null 13:30:30 fizzie: Not from Codu >_> 13:30:55 See how I used your ajax-site name too. 13:31:30 Gregor: I suspect your proxy is crapping out somehow :P 13:31:30 Because "" is not an HTTP header line, yo. 13:31:33 I mean the wl error 13:31:40 Oh, I didn't see that ... 13:31:43 I'd like to know how many queries they get from "http://www.my-ajax-site.com" literally, because that's in the curl examples of the API doc. 13:31:56 fizzie: They may very well reject that. 13:31:58 http://www.my-ajax-site.com/ <-- nice 13:32:05 Gregor: But what about the owners of http://www.my-ajax-site.com/? :P 13:32:15 You'd think Google would just snap up that domain for example purposes. 13:33:16 * CakeProphet uses 4chan.org for all example URLs. 13:33:28 OK OK, so obviously something can go wrong here X-D 13:34:11 But I'm not fixing it now! So foo 2 u! 13:34:17 Good work Gregor 13:35:10 `ghc --version 13:35:12 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ghc: not found 13:35:20 Gregor: Hey, can I build GHC in HackEgo? 13:35:21 BAD WORK GREGOR 13:35:29 elliott_: Doubtful, it has a 30sec timeout :P 13:35:42 Gregor: I'm sure that's circumventable... cronjob? 13:35:57 elliott_: If you can configure in <30sec, you could do the rest in successive makes 8-D 13:36:15 Sweeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeet 13:36:23 There's only like a billion make invocations to do 13:36:35 Gregor: OK, I'll do the reasonable thing and install a binary build :P 13:36:47 Gregor: Is there any way for me to change the PATH, or do you have to do that? 13:36:54 I guess there might be a .profile or sth I could edit 13:36:59 There isn't :P 13:37:04 (I don't want to clutter bin so I'm thinking about creating local/) 13:37:10 Gregor: Meh, I can just symlink local/bin 13:37:17 `arch 13:37:17 That'd be good *shrugs* 13:37:18 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: arch: not found 13:37:21 `uname 13:37:23 Linux 13:37:26 `uname -a 13:37:28 Linux (none) 3.0.1-umlbox #5 Fri Aug 19 13:17:44 UTC 2011 x86_64 GNU/Linux 13:37:34 Incidentally, enjoy the 10MB file limit. 13:37:40 Gregor: Does `fetch have... right. 13:37:52 Gregor: What would you say about increasing that by, say, 99 megabytes? 13:38:10 I got 99 megabytes but GHC ain't one. 13:38:20 No, it appears to be ~12 13:38:44 `run curl http://debian.org/ 13:38:46 ​\ ERROR: The requested URL could not be retrieved