00:00:42 <oerjan> that wasn't a stupid question...
00:02:39 -!- cheater_ has quit (Ping timeout: 255 seconds).
00:15:39 -!- cheater_ has joined.
00:18:03 -!- copumpkin has joined.
00:41:57 <NihilistDandy> http://www.reddit.com/r/askscience/comments/j66uq/is_it_possible_to_heat_the_planet_via_burning/
00:45:03 -!- Phantom_Hoover has quit (Quit: Leaving).
00:52:55 <elliott> monqy: Yes. Mostly so that you can tell me what (textual) tileset to use.
00:53:03 <monqy> elliott: but that's what I wanted to know
00:53:09 <elliott> Preferably square, preferably doesn't make text COMPLETELY UNREADABLE, and none of that fancy curved wall stuff.
00:53:22 <monqy> these are things I want to know
00:53:24 <elliott> And one that recognises that my screen is high-resolution and high-dpi i.e. not tiny.
00:53:29 <elliott> monqy: WELL I WANT TO KNOW THEM TOO
00:53:41 <elliott> Also one where dwarfs have beards, I can't bear not having them.
00:55:07 -!- oerjan has quit (Quit: m4h uo+ nujaepeqle?).
01:11:17 <bsmntbombdood> ages ago, i'm sure i shared some code here for some various things
01:11:37 <bsmntbombdood> a dc interpreter, an oisc virtual machine for example
01:11:53 <bsmntbombdood> i wouldn't suppose anyone still has a copy of any of that code?
01:17:24 <NihilistDandy> http://amtal.github.com/2011/07/19/unix-pipes-pointless-functional-programming.html
01:17:44 <elliott> bsmntbombdood: it was offline then online then offline again
01:18:01 <elliott> NihilistDandy: oleg said that years ago.
01:18:31 <elliott> http://okmij.org/ftp/Computation/monadic-shell.html
01:18:48 <NihilistDandy> Mostly it's the stuff about LFE at the end that was vaguely interesting
01:19:46 <elliott> "but your language doesn’t support pointfree style?" can you not define operators in erlang
01:19:56 <bsmntbombdood> some stuff on pastebin, other stuff on a personal server which is also no good
01:20:24 <elliott> bsmntbombdood: sounds like you're fucked
01:20:44 <bsmntbombdood> elliott: yep, unless someone happened to save something
01:21:21 <elliott> bsmntbombdood: i might have a copy of bsmntbot lying around on another computer
01:21:37 <monqy> what did bsmntbot do
01:22:18 -!- cheater_ has quit (Ping timeout: 255 seconds).
01:22:26 <NihilistDandy> elliott: I like that the thing could be interpreted as "Well, I guess erlang's not that awesome after all, I guess Lisp is the way"
01:28:38 <monqy> opengl has the worst api
01:28:46 <monqy> is there anything worse
01:29:07 <monqy> I will try to stay away from glib
01:29:46 <elliott> you can avoid gobject almost entirely when using glib
01:30:22 <monqy> last night I tried to opengl again and I just couldn't do it
01:30:36 <elliott> monqy: im trying to opengl from haskell but
01:30:40 <elliott> it turns out that it isnt better that way
01:30:51 <elliott> upon exposure to the opengl
01:31:10 <elliott> monqy: were you doing it with sdl too, are you actually me
01:31:48 <monqy> I had made something earlier with GLFW-b and I was porting it to SDL for comparison and just died
01:31:51 <elliott> monqy: what were you trying to code,,, you may actually be me...supsicisous
01:32:12 <elliott> i kind of gave up on everything GLFW because it forces all your callbacks to be in IO
01:32:16 <elliott> i gues sthat might be okay but
01:32:22 <elliott> monqy: but um SDL is actually nicer??
01:32:24 <monqy> yeah that's what I dislike about GLFW
01:32:33 <monqy> well I wanted to compare them
01:32:57 <NihilistDandy> elliott: I couldn't even get the GLFW lib from Hackage to compile
01:33:03 <elliott> NihilistDandy: GLFW-b is different
01:33:09 <monqy> the thing i was porting was just a little thing with spinning boxes. for comparison between GLFW-b and SDL. so I would know what to use to make my magical graphics library so i would be able to avoid opengl and still have things the way i wanted them
01:33:18 <monqy> GLFW-b is better than GLFW imo
01:33:20 <pikhq> elliott: Okay, fine, I'll go with real awfulness.
01:33:29 <elliott> monqy: what problem did you have with SDL?
01:33:36 <pikhq> (don't say it twice more, you'll some Beelzebub)
01:33:36 <monqy> elliott: it wasn't SDL that killed me
01:33:43 <monqy> elliott: it was looking at opengl again
01:33:53 <monqy> elliott: the thing that finally did me in was matrixMode
01:33:57 <elliott> monqy: also: can i have your spinning boxes code, currently my minecraft code is blocked on "how do i get this fucking box to draw without being stretched and dark grey"
01:34:03 <elliott> i suppose i should write camera-moving code
01:34:14 <monqy> my spinning box code kind of sucks :(
01:34:32 <elliott> well i dunno it can't suck more than my threedee stuff
01:34:35 <monqy> I hadn't taken the time to make it pretty
01:34:42 <monqy> because I died before then
01:34:51 <elliott> let size = length xs * 3 * sizeOf (undefined :: GL.GLfloat)
01:34:51 <elliott> foldM (\idx (a,b,c) -> do pokeElemOff ptr (idx*3) a
01:34:51 <elliott> pokeElemOff ptr ((idx*3)+1) b
01:34:51 <elliott> pokeElemOff ptr ((idx*3)+2) c
01:34:58 <elliott> GL.vertexAttribPointer (GL.AttribLocation 0) GL.$= (GL.ToFloat, GL.VertexArrayDescriptor (fromIntegral (length xs)) GL.Float 3 ptr)
01:35:01 <elliott> let f v = [v,(0,0,0.51),(0,0.51,0.51),(0,0.51,0),(0.51,0.51,0),(0.51,0,0),(0.51,0,1),(0,0,0.51)]
01:35:01 <elliott> let xs = f (0,0,0) ++ f (0.51,0.51,0.51) :: [(GL.GLfloat,GL.GLfloat,GL.GLfloat)]
01:35:07 <elliott> your code cannot possibly be worse than this
01:35:10 <elliott> ugh the pointer stuff its just like
01:35:13 <elliott> my code currently segfaults
01:35:16 <elliott> that should not even be possible :(
01:35:19 -!- cheater_ has joined.
01:35:27 <elliott> segfaults should not even be a thing that are a thing.
01:35:36 <monqy> i wanted to try gpipe just to see if it was better but it didn;t compile so whatever
01:35:53 <elliott> "It is an alternative to using OpenGl, and has the advantage that it is purely functional, statically typed and operates on immutable data as opposed to OpenGl's inherently imperative style. Another important difference with OpenGl is that with GPipe you don't need to write shaders in a second shader language such as GLSL or Cg, but instead use regular Haskell functions on the GPU data types."
01:36:04 <elliott> monqy: it sounds like a really nice library that you can't use because it's stupidly unfinihed
01:36:07 <elliott> "GLUT is used in GPipe for window management and the main loop."
01:36:36 <elliott> it depends on Deewiant's trie library
01:37:39 <elliott> yeah totally that is what i said
01:37:48 -!- cheater_ has quit (Excess Flood).
01:38:00 <elliott> monqy: gpipe seems nice but like
01:38:12 <elliott> too... experimental? I don't want to say that but
01:38:20 <elliott> it seems like writing my own shader dsl thing would be a better choice
01:38:31 <elliott> and the GLUT dependency is kind of silly
01:38:37 -!- cheater_ has joined.
01:38:55 <elliott> monqy: how spinny r ur boxes
01:39:07 <monqy> well one of them spins and goes up and down
01:39:11 <monqy> the other one goes side to side
01:39:48 <elliott> plz impart on me, ur wisdom
01:40:25 <monqy> i have a square thing that draws a square.... and i use preservingMatrix???????
01:40:59 <monqy> at least i hope i used preservingMatrix properly
01:40:59 -!- cheater_ has quit (Excess Flood).
01:41:31 -!- cheater_ has joined.
01:41:37 <elliott> i need ur wisdom in my life
01:41:54 <monqy> it's like you push a new matrix onto the matrix stack and then do the action supplied as an argument and then pop the matrix off
01:42:09 <monqy> so the matrix transformations done in there are nice and contained
01:42:16 <monqy> and don't muck up the rest of everything else
01:42:17 <NihilistDandy> Someone's just going to come up with some other standard tomorrow and all the OpenGL effort will have been in vain~
01:42:21 <elliott> how much does your code, cost,
01:42:33 -!- evincar has joined.
01:42:39 <elliott> for access to its AMZING, POWERS
01:43:30 * elliott looks at example GPipe code... it would be kind of nice except that this static-length vector code has an ugly interface
01:43:31 -!- augur has changed nick to augur[sleep].
01:43:43 <elliott> and i dont even think its being used in a >one-d manner so........
01:43:53 <elliott> monqy: what cost,,,,,,,,,,,,,,,,,,at WHAT jcoist,
01:45:27 <elliott> :OOOOOOOoooooooooooooooooooooooooooooo
01:45:33 <evincar> This is a wonderfully dramatic bit of the conversation to waltz in on.
01:45:37 <elliott> im one day hope be as genreous as yuo
01:45:40 <monqy> but this code is guly
01:45:41 <NihilistDandy> WHAT WOULD YOU DOO-OO-OO FOR SOME WORKING OPENGL CODE?
01:45:54 <elliott> monqy: im guly too,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,................... we all have our roels in theis world
01:46:03 <elliott> {- GL.defineNewList GL.CompileAndExecute $ do -}
01:46:03 <elliott> GL.color (GL.Color3 (maxBound::GL.GLbyte) maxBound maxBound)
01:46:03 <elliott> {- GL.renderPrimitive GL.Lines $ do
01:46:04 <elliott> GL.vertex $ GL.Vertex2 (-0.9::GL.GLdouble) 0.9
01:46:06 <elliott> GL.vertex $ GL.Vertex2 (0.9::GL.GLdouble) (-0.9)-}
01:46:08 <elliott> let f v = mapM_ (\(x,y,z) -> GL.vertex (GL.Vertex3 (x::GL.GLdouble) y z)) [v,(0,0,0.51),(0,0.51,0.51),(0,0.51,0),(0.51,0.51,0),(0.51,0,0),(0.51,0,1),(0,0,0.51)]
01:46:08 <monqy> I have to specify whether i am using glfloats or gldoubles or it won'te even compile wTF?
01:46:11 <elliott> even the comments are guly
01:46:19 <elliott> monqy: well thatstzh inherent
01:46:51 <monqy> i forget what rotate even does
01:47:16 <elliott> monqy: ur people need youuuuuuu
01:47:44 <monqy> i am cleanign upt it.....
01:47:58 <elliott> finally a clean tit......................
01:48:32 <evincar> Should I leave? Are you two having a moment?
01:49:42 -!- cheater_ has quit (Excess Flood).
01:50:44 -!- cheater_ has joined.
01:50:54 -!- CakeProphet has quit (Ping timeout: 246 seconds).
01:52:31 <monqy> ok i think its cleaner now??
01:52:55 <monqy> clearnwer...but not.....ttotaly clean....
01:53:08 <elliott> monqy: i can cleanse it,,,,,,,,,,,,,,,,,,,,,,,,, it is my duty
01:53:13 <monqy> it misses out on a bit of sepearation of concern et c because it was a really quicke thing
01:53:23 <monqy> anywa....heres the rendering ....of the bozxwse
01:53:25 <monqy> render :: GL.GLdouble -> GL.GLdouble -> IO ()
01:53:25 <monqy> render width time = do
01:53:25 <monqy> GL.clear [GL.ColorBuffer]
01:53:25 <monqy> GL.color (GL.Color3 0 0 (1 :: GL.GLdouble))
01:53:27 <monqy> GL.preservingMatrix $ do
01:53:30 <monqy> GL.translate (GL.Vector3 (100 * sin time) 0 0)
01:53:35 <monqy> GL.preservingMatrix $ do
01:53:37 <monqy> GL.translate (GL.Vector3 0 (200 * sin time) 0)
01:53:40 <monqy> GL.rotate (time * 100) (GL.Vector3 0 0 (1 :: GL.GLdouble))
01:53:45 <monqy> square :: GL.GLdouble -> IO ()
01:53:47 -!- cheater_ has quit (Excess Flood).
01:53:47 <monqy> square w = GL.renderPrimitive GL.Quads $ do
01:54:00 <monqy> vt :: GL.GLdouble -> GL.GLdouble -> IO ()
01:54:02 <monqy> vt x y = GL.vertex (GL.Vertex2 x y)
01:54:05 <monqy> too cool for.pastebisn/
01:54:18 -!- cheater_ has joined.
01:54:48 <elliott> monqy: dont you have any other GL functions in the program
01:54:56 <monqy> elliott: that's tjuset the rendering
01:54:59 <elliott> and i dont, know what to do with them
01:55:03 <monqy> elliott: do you want the ienteklziaton too??
01:55:11 <monqy> elliott: because.... i have very little cloae about that either.
01:55:14 <elliott> monqy: yezsjop, i am but a poor pheasant
01:55:27 <elliott> http://www.klein.com/dvk/photos/birds/golden_pheasant.jpg me
01:55:44 <evincar> I FEEL AS THOUGH I HAVE FALLEN IN A WORLD WHICH IS NOT LIKE THE WORLD TO WHICH I AM USED
01:55:44 <monqy> it is glfw-b becase i died before porteng the sdl'e
01:58:34 <monqy> actually i guess i didn't do much initalization
01:58:36 <elliott> monqy: together, we will escaepje the opengl teror
01:58:46 <elliott> without a clue on anything
01:58:48 <monqy> except ofr this really nasty bit
01:59:08 <monqy> most of the openGL initty stuff is iwthin an GLFW callbacke
01:59:18 <monqy> the part that....isnt:
01:59:22 <monqy> GL.clearColor $= GL.Color4 0 0 0 0
01:59:34 <monqy> the part that...is:
01:59:38 <monqy> GLFW.setWindowSizeCallback $ \ w h -> do
01:59:38 <monqy> let size = GL.Size (fromIntegral w) (fromIntegral h)
01:59:38 <monqy> GL.viewport $= (GL.Position 0 0, size)
01:59:38 <monqy> GL.matrixMode $= GL.Projection
01:59:40 <monqy> GL.ortho2D 0 (realToFrac w) (realToFrac h) 0
01:59:42 <monqy> GL.translate $ GL.Vector3 (realToFrac w / 2) (realToFrac h / 2) (0 :: GL.GLdouble)
02:00:15 <monqy> which basically means whenever you resize the window you make a new view thingy and center it????
02:00:25 <monqy> is there a ...better waY?
02:00:28 <elliott> who the hell resizes windows,
02:01:19 <monqy> for some reason GLFW stuff stopped getting floated so it gets tiled which messes it all u;p
02:01:25 <monqy> I think SDL stuff gets flaoted though
02:01:37 <monqy> if i use SDL...no problem??
02:01:50 <monqy> i really should stop dieying, finish porting....myabe later
02:04:21 <elliott> monqy: if you give me the file i could port it to SDL,,, and then,, transform it into doing cubes, so that, eventually, my entire game would be descended from ur code............................ a once in a lifetime opportunity of lineaejge (this is total lies id probably throw it out after i got it doing cubes and then modularise it)
02:05:06 <monqy> but what af its..embaraseng
02:05:24 <monqy> (acause of its is.)
02:05:40 <elliott> YouH ATLK TO ME ABOUT EMBARASIONEGNG.... YOU CANT ENHANDLE THE ENMAHERBSINGYLY!!!!!!!!!!!!!!!!!!!!!!!!!! LOOKE AT MY SHAME,,,: http://sprunge.us/dNeD
02:05:50 <elliott> THIS PRISON OF SHAME I CAN NEVER ESCAPE
02:06:28 <monqy> oh right one thing i didn't like about SDL......using 1 instead of True for SDL.glSetAttribute......what?
02:07:04 <monqy> oh god all the 3d stuff
02:07:11 <monqy> it hurts and i am not even to the pointer pokery
02:07:21 <elliott> monqy: yeah so,,, dont U tell ME about embaraseng
02:07:29 <elliott> im practicaly an eorphan of gl
02:07:32 <elliott> and ur denying me hot gl soup
02:07:43 <elliott> the pointer pokerery is,,, an optimzioejnigatinog
02:07:56 <monqy> optimzioejnigatinogs make me died
02:09:16 * elliott starts to starv,e of lack of gl soup...... my life
02:09:58 <monqy> im cleanigne ite up..>?
02:10:00 -!- cheater_ has quit (Ping timeout: 255 seconds).
02:12:57 -!- parcs has joined.
02:13:16 -!- parcs has left ("WeeChat 0.3.5").
02:13:57 <monqy> I have these really great functions I made
02:14:03 <monqy> but I can't think of half-decent names for them
02:14:36 <monqy> thing b m = b >>= flip when m
02:14:40 <monqy> (and another but for unless)
02:15:32 <elliott> monqy: did you write that just now when cleaning it up or was it actually already there
02:15:43 <elliott> ?pl b >>= \b' -> if b' then m else return ()
02:15:44 <lambdabot> flip (flip if' m) (return ()) =<< b
02:15:50 <monqy> it was already there
02:15:52 <elliott> monqy: hleps, at yuoere service?
02:16:31 <elliott> monqy: you asked ed for helpes
02:16:43 <monqy> is that.....thing's name>????????????????????????
02:17:16 <monqy> i have to think of a half decent name right now they are thing and notThing
02:18:01 <monqy> then i changed it to thing
02:18:03 <elliott> monqy: show me, a usgae, of ite,
02:18:04 <monqy> when i got frustrated
02:18:18 <monqy> notThing GLFW.initialize
02:18:18 <monqy> (fail "failed to initialize")
02:18:23 <monqy> (that used to be unlessM)
02:18:41 <elliott> monqy: whats wrong with just
02:18:47 <elliott> GLFW.initialize >>= wh... oh right
02:18:49 -!- Fenhl has joined.
02:18:56 <elliott> monqy: I'd just have (flip when) as something
02:19:15 <elliott> GLFW.initialize >= orM $ fail "failed to initialize"
02:19:40 <monqy> it was that (but just (flip when) and (flip unless) no fancy names) before it was whenM
02:19:54 <monqy> then i got frustrated and made whenM
02:19:58 <monqy> and then i got frustrated and made thing
02:21:33 <elliott> <elliott> What's a good name for (\b m -> b >>= flip when m)? (and the same with when -> unless). I've been using whenM/unlessM, but those are kind of ugly.
02:22:26 <elliott> <kmc> elliott, *shrug* ugly how?
02:22:26 <elliott> <kmc> uglier than mapM, filterM, zipWithM, etc?
02:23:17 <monqy> takcing M onto things makes me feel bad i donte even know if whenM follows the same namethodology as those others which is part of my frustratosn :'(
02:23:31 <lambdabot> forall a (m :: * -> *) b. (Monad m) => (a -> m b) -> [a] -> m [b]
02:23:33 <lambdabot> forall a (m :: * -> *). (Monad m) => (a -> m Bool) -> [a] -> m [a]
02:23:35 <lambdabot> forall a b (m :: * -> *) c. (Monad m) => (a -> b -> m c) -> [a] -> [b] -> m [c]
02:23:39 <elliott> monqy: it tends to take a monadic function
02:23:45 <elliott> but the actual "value" being operated on is non-monadic
02:24:26 <monqy> i guese i will go back to whenM/unlessM now i feel less bad.
02:26:09 <elliott> monqy: yese kmc is , convinucnging me
02:30:39 <monqy> http://dl.dropbox.com/u/13786158/help.tar.bz2 shoulde be eit
02:30:51 <monqy> kindly, compressed
02:32:16 <elliott> this is, a work of great beuty,
02:32:40 <monqy> i tepyed it all with ym....posteriour
02:33:04 <elliott> did u modularise it, just for me,
02:33:11 <elliott> im, feel so lucky, if that is, the case,
02:33:11 <monqy> it was ;like that..aredly
02:33:22 <elliott> <,-- not so lucky but (still apprecijoateive)
02:33:56 <elliott> monqy: im, install glfw-b, to try it,
02:34:12 <elliott> monqy: also, im, maybe try out that GPipe thing?
02:34:20 <monqy> does it compile for you
02:35:07 <elliott> monqy: is, its name, "help",
02:35:17 <elliott> oh my gosh it is the most beautiful box display ive ever encountered
02:35:37 <elliott> also it, is using all my cpu ?
02:35:55 <monqy> i didnt borhter throtelying the framerate oops
02:36:23 <elliott> monqy: but, arent you meant to, like, not throttle but,
02:36:27 <elliott> insetad base thing son, real time
02:36:35 <monqy> that's what it does now maybe??
02:36:41 <monqy> ther'es a clocky thing
02:36:57 <monqy> and it bases the rotation on that if id di d it right so many ages ago...
02:37:01 <elliott> im, must resist urge, to make this game purely-functional frp
02:37:10 <elliott> now, I cabal install, GPipe
02:37:21 <monqy> purely functional frp sounds goodis it good
02:37:23 <elliott> -rw-r--r-- 1 elliott elliott 329 2011-07-24 03:06 Input.hs
02:37:32 <elliott> also, yes, FRP is, so cool,
02:38:15 <monqy> the touching it on 24 was porting it glfw->glfw-b i think
02:38:22 <monqy> i originally wrote it much longer ago i think
02:38:43 <monqy> which is the ... best ... frp library
02:39:09 <elliott> monqy: unfortaentounely, none of them,
02:39:10 <monqy> there are too many
02:39:16 <elliott> frp is, fraught, with problems, for, reasons,
02:39:35 <elliott> reason TWo, you can avoid space leak if you avoid using functions as structure but then this become ugly...........................
02:39:48 <elliott> monqy: luke palmer, says, that if you have al azy specialiser, you can use the obvious model and, the space leak, goes away,,,,
02:39:54 <elliott> but,,, we do not have,, a lazy specialiser.................................
02:40:05 <monqy> i have heard of a thing rdp was it here or ltu mayve both does it fix frps bprolems
02:40:06 <elliott> NihilistDandy: is, banana, a good frp.......
02:40:13 <monqy> is it even...finoished....usab.ey
02:40:21 <NihilistDandy> http://hackage.haskell.org/package/reactive-banana
02:40:22 <elliott> monqy: remote desktop protocol, sdoes no, fijxioaje, frp,
02:40:28 <elliott> NihilistDandy: im know, is it good, but, ok
02:40:43 <monqy> reactive.....something...programming....i think
02:40:45 <elliott> monqy: i think, i remember, what you are saying about, but, what was the name....
02:41:30 <monqy> there was a webpage,,,but i forgrot everything it said
02:44:46 -!- Fenhl has left.
02:44:47 <elliott> how does it not, work for you?
02:44:57 <monqy> i think itwas the examples
02:44:59 <monqy> that didfnt'e compile
02:46:16 <elliott> cabal: unrecognised command: intsall (try --help)
02:47:11 <evincar> What is this, Let's Do Some Haskell Whilst Intoxicated?
02:47:11 <monqy> somehow gpipe-exmaples is compiling
02:47:21 <monqy> im too young to intocixatiod
02:47:34 <elliott> evincar: keayboeards are not eahsyi, stop awaviong your advatnages
02:47:37 <elliott> some ouf seus have bad fngiers
02:47:57 <monqy> im just too lazy to georcete myself <:( usually not here i am not as lazy
02:48:13 <monqy> not georcete what is georcete
02:48:27 <monqy> also why is the compilation of example 2 hanging i think i had this problem last time
02:48:36 <monqy> and then when i tried to hand-compile them...it exploded
02:48:58 <monqy> where by exploded I mean
02:48:58 <elliott> it is, hangging for me, too, not, reassuring
02:49:08 <elliott> lets, find out whats in the box
02:49:28 <elliott> monqy: look at demonHead :: [CUChar]
02:49:34 <elliott> it's a fucking gigantic list
02:49:42 <elliott> get gpipe examples and just look at it
02:49:55 <elliott> who thought that wwas a good idea
02:50:29 <elliott> monqy: gpipe examples, bad examples,
02:50:45 <monqy> yeah i dislike it too
02:50:49 <monqy> why does it a thing
02:50:55 <elliott> monqy: static-length vectors at compile time
02:51:07 <elliott> im look here for goodneess: http://www.koonsolo.com/news/dewitters-gameloop/
02:51:37 <elliott> im "Constant Game Speed independent of Variable FPS" looks good
02:51:44 <elliott> monqy: it is, continuation, of famous, article baout game loops,
02:52:16 <elliott> monqy: im, try porting help, to sdl,
02:52:41 <monqy> why do i het e at the end of words helpe
02:53:12 <monqy> hitting e at the end of words is the worse t reflesx
02:53:35 <elliott> http://hackage.haskell.org/packages/archive/SDL/0.6.2/doc/html/Graphics-UI-SDL-Time.html
02:53:55 <elliott> "SDL_GetTicks() tells how many milliseconds have past since an arbitrary point in the past.
02:54:34 <monqy> better than getcpu time maybe since word32 more fficient than Integer milliseconds more eficient than picosecodns help??
02:54:38 <elliott> , GLFW.displayOptions_numAlphaBits = 8 })
02:54:40 <elliott> thats not, bit depth right,
02:56:31 <elliott> -- using angle for things other than rotation like a TOTAL LOSER
02:57:01 <elliott> im dont like how you leave a blank line after all your imports
02:57:19 <elliott> two blank lines before code,
02:57:40 <monqy> i usually do double-blank to sepearte sections of code (and a single blank to sepearate different things in the same section)
02:57:52 <monqy> so i group imports/definitions/whateverelse like this
02:58:03 <elliott> im think that, more than two blank lines, is a bad thing, probably,
02:58:07 <elliott> you could do the GNU thing, and use form feed,
02:58:25 <monqy> and for big monadic actions with do notations i pepper blank lines throguhout them since there are lots of different things happened
03:00:30 <NihilistDandy> http://www.reddit.com/r/explainlikeimfive/comments/j4ohk/explain_the_pnp_problem_li5/
03:01:24 <monqy> i do not feel comfortable with form feeds
03:01:37 <elliott> monqy: ok, im, almost done convertheing it
03:04:09 <monqy> this makes me hapey
03:04:36 <elliott> monqy: also I think, most people use GLfloat, rather than GLdouble,
03:04:54 <elliott> monqy: also i take it, your things are all separate IORefs, because of glfw,
03:05:05 <elliott> you should, probably use ReaderT, with MVars,
03:05:19 <elliott> I, can do that, since I am also, going to use that
03:05:34 <monqy> aslo i was using float last time but then if reaked out and changed it to double but why
03:05:43 <monqy> sometimes i am bad at reasons
03:05:56 <monqy> theta is a lot of thjings
03:06:07 <elliott> also, I do not quite understand, this theta stuff
03:06:36 <monqy> theta was the rotation angle but then other stuff happened
03:06:39 <NihilistDandy> For the sake of curiosity, whose mannerisms are you mimicking right now?
03:06:57 <monqy> it became averything
03:07:10 <elliott> monqy: its ok, im going to, give it a proper game loop
03:07:23 <monqy> i will not, miss you
03:07:48 <elliott> monqy: so what is theta exactly
03:07:56 <monqy> ther eis no exact meaning
03:08:03 <monqy> check render for usage
03:08:08 <monqy> no ticks goes in time
03:08:16 <elliott> modifyIORef theta (+ (delta * 10))
03:08:34 <elliott> monqy: ok so basically time is time, theta is ticks, which happen to be used as angle
03:08:55 <elliott> you see im, not sure why you have a time ioref,
03:09:00 <elliott> because you only read it directly after writing it
03:09:37 <monqy> maybe it s historical cruft i never removed
03:12:11 <elliott> SDL_GetTicks -- Gets the number of milliseconds since SDL library initialization.
03:12:22 <elliott> least helpful thing ever but ok
03:12:28 <monqy> probably better than getCPUTime or whatever i used
03:14:39 <evincar> elliott: How is that unhelpful?
03:14:49 <evincar> I stopped paying attention because of your shenanigans.
03:15:19 <evincar> You're the first one to say anything about race. Now who's the racist?
03:15:26 <elliott> monqy: also, does your key stuff trigger on key up, or key down
03:17:16 <elliott> monqy: also, you indent, by one too many spaces,
03:18:22 <elliott> monqy: how many ticks per second do you do,
03:18:35 <monqy> uhhhhhhhhhhhhhhhhhhhhhhhhhhhh
03:18:52 <evincar> Fixed frame rates make me sad.
03:19:09 <monqy> i think it triggers on key down i think
03:19:23 <monqy> or while the key is held down
03:19:37 <monqy> as for ticks per second, uhh, what's a tick
03:19:53 <elliott> evincar: frame rate =/= tick rate
03:20:08 <elliott> evincar: unless you like the world running at different speeds on different computers?
03:20:37 <monqy> delta is the number of seconds since the last whatever, i think?? why did i convert to seconds??? i don't know????
03:20:47 <elliott> how many times does theta increase per seconds
03:21:01 <elliott> modifyIORef theta (+ (delta * 10))
03:21:12 <monqy> the number of times it increases per second is machine-dependant
03:21:18 <monqy> the amount it increases per second
03:21:47 <monqy> screwed it up somewhere
03:22:34 <monqy> ugh why are all these things iorefs stop being iorefs
03:22:45 <elliott> monqy: im making them MVars,
03:22:50 <elliott> MVars are nice, they are, concurrency-friendly
03:23:04 <elliott> huh whileM is not a stock thing
03:23:16 <monqy> MVar sounds nice..is TVar the STM thing..is it nice too..
03:24:42 <monqy> is whileM like..... forever.... but guarded by a when
03:24:59 <monqy> something more like whenM??
03:25:47 <elliott> SDL.delay (ticksPerSecond * millisecondsPerSecond)
03:25:47 <elliott> forM_ [0 .. (end - start) `div` ticksPerSecond] $
03:26:02 <elliott> monqy: the only gamestate you have is the ticks increasing isn't it
03:26:24 <monqy> it was not a real game it was a
03:26:30 <monqy> i forget what it was
03:26:48 <monqy> it was like a hello world
03:27:03 <monqy> something to get me started with opengl so i could make something decent out of it
03:29:15 <monqy> with a badloop and iorefs
03:29:18 <monqy> instead of hello world
03:31:25 <elliott> with actual type `GHC.ForeignPtr.ForeignPtr SDL.SurfaceStruct'
03:31:25 <elliott> Actual type: IO SDL.Surface
03:31:31 <elliott> monqy: SDL, leaked my things, i did not, want to know :(
03:31:47 <monqy> what is that :( :( :( :( (:
03:31:54 <elliott> SDL.Surface's real identity :(
03:31:59 <elliott> also il like the smile at the end
03:34:09 <elliott> monqy: i dont like how some of the mVar functions want me to use IO too :(
03:34:19 <elliott> maybe monad stacks, are bad,
03:35:30 <elliott> monqy: but, i thought you disliked glfw, because callabcks in io,
03:35:43 <elliott> mask :: ((forall a. IO a -> IO a) -> IO b) -> IO b
03:35:45 <monqy> callbacks in io are gross too :(
03:36:13 <elliott> <monqy> callbacks in io are gross too :(
03:36:22 <monqy> hgel p i i dopnt knwo :_;
03:36:23 <elliott> thats the true question :(
03:37:03 <monqy> which is why not being gross .... maybe needs a new language??
03:37:16 <elliott> monqy: its probably frp :P
03:37:50 <monqy> maybe banana is good
03:38:13 <monqy> i have never tried any of them because i was too busy freaking over not knowign which to use
03:38:51 <elliott> i bet...conal doesnt like banan
03:39:49 -!- MDude has changed nick to MSleep.
03:40:04 <monqy> i am looking at this list and iwll a comment on each of them
03:40:12 <elliott> conal, wouldnt like any of them, :(
03:40:16 <elliott> he would say, they are, not the true path,
03:40:48 <monqy> did conal not have a hand in making a few of them
03:41:01 <monqy> or did he hate that too
03:42:09 <monqy> didn't everyone knew that
03:42:19 <elliott> but on his blog, he is all,
03:42:22 <elliott> "oops, it is all the wrong path,"
03:42:32 <elliott> "hey luke palmer,,, what u r doing is good" and i am like
03:42:36 <elliott> but we dont have that compiler yet................
03:43:45 <elliott> monqy: i think it is painting once ever y second
03:44:00 <elliott> SDL.delay (ticksPerSecond * millisecondsPerSecond)
03:44:52 <evincar> NihilistDandy: Don't you mean "turn that frown 180 degrees, or mirror it horizontally"?
03:45:18 <evincar> :( upside-down is, y'know, :(.
03:45:25 <elliott> monqy: oh my god yuou have to see what i have created
03:45:37 <monqy> elliott: i want/need to see it
03:45:47 <monqy> elliott: where is it
03:45:57 <elliott> -rwxr-xr-x 1 elliott elliott 14M 2011-08-02 04:44 help
03:46:00 <elliott> how can i get this to you.........
03:46:14 <elliott> monqy: but then you could, figure out, the hilarity,...
03:46:22 <monqy> i will not look,,,untill i see
03:50:08 <monqy> og hod whats hapenming
03:50:31 <monqy> it is going faster than my head can understand it
03:50:35 <evincar> Transposition sounds hella painful on your face.
03:50:46 <elliott> its actually going too slow
03:50:51 <elliott> its painting the screen really slowly
03:52:23 <monqy> it segfaulted when i ^C it help
03:52:37 <elliott> ok its going about 10000 ticks per second lmao
03:53:03 <elliott> now the boxes just sit there...
03:54:18 <elliott> monqy: soon, it will be rperfect
03:54:57 <elliott> what's (ten ticks per second) in (milliseconds per tick)
03:56:58 <elliott> monqy: ok it is, a bit better,
03:57:01 <elliott> i am going to make it even better,
03:57:36 <elliott> SDL_AddTimer -- Adds a timer which will call a callback after the specified number of milliseconds has elapsed.
03:57:49 <evincar> These are all things I could've told you. :P
03:57:54 <elliott> only one way to fihgtn out
03:58:03 <elliott> where are they in the haskell bindgfindignins......
03:58:08 <elliott> and do they force using io
03:58:23 <evincar> But I quit using them for the most part when I switched to variable-frame-rate games.
03:58:32 <elliott> The timer callback function may run in a different thread than your main program, and so shouldn't call any functions from within itself. However, you may always call SDL_PushEvent.
03:58:44 <elliott> evincar: as i said, frame rate =/= tick rate
03:58:57 <evincar> I know, that's why I said "for the most part".
03:59:50 <evincar> I don't often have a world that needs stuff that updates every so many milliseconds.
04:00:14 <evincar> I prefer to construct things from in-world objects that all run in the same timeline.
04:00:54 <elliott> evincar: so how would you handle, say, a crate dropping downwards at a rate of one metre per second
04:01:41 <monqy> seconds are slow on my computr...e
04:01:50 <monqy> or metres are biger
04:01:55 <evincar> Drop the crate each frame by an amount proportional to the current actual framerate.
04:02:31 <evincar> Because chances are the current frame is going to take about as long as the previous one, and if it doesn't, oh well.
04:02:47 <evincar> The effects of local time discontinuities aren't my concern.
04:02:57 <evincar> As long as the rendering is smooth and predictable-ish.
04:03:26 <elliott> "and if it doesn't, oh well"
04:03:39 <elliott> cool, so on slow computers, your game's physics break
04:03:49 <evincar> You just can't predict the future.
04:05:13 <evincar> Time begins. First frame is rendered. Time has elapsed. Next frame is rendered based on elapsed time.
04:05:39 <monqy> that's basically what i did for my dumb boxes hello world i think??
04:06:00 <evincar> The most recently rendered frame always expresses the correct view of the instant in time it began rendering.
04:06:33 <evincar> But the frames are only predictably far apart insofar as the objects in the world behave more or less the same each frame.
04:07:16 <evincar> So introducing many objects might drop my simulation from 110 to 100, but it's still well above the target threshold.
04:09:32 <monqy> im thinking im liking the fixed tickrate with variable framerate thing thouhg it sounds nice
04:09:42 <monqy> or whatever it was
04:09:56 <elliott> all I want is an SDL_Delay that breaks when an event happens
04:10:18 <elliott> i geuss i could use threads
04:10:34 <monqy> one thing I Remember hating about handling events and stuff is
04:10:36 <monqy> handling events and stuff
04:10:55 <monqy> I forget the speciifcs
04:11:24 <elliott> monqy: yay this is working-ish now
04:11:44 <monqy> whats the -ish mean is it bad
04:12:09 <monqy> i imagine frp would hekp with the evcent handline nightmares
04:12:12 <elliott> well it's really jerky and still uses all the cpu
04:12:19 <evincar> elliott: No such thing exists exactly in SDL.
04:14:39 <elliott> help: user error (RTS doesn't support multiple OS threads (use ghc -threaded when linking))
04:18:44 <elliott> monqy: it is, getting good,
04:19:55 <elliott> monqy: but, there is bad things, with your modules,
04:21:04 <elliott> all the resizing handling happens
04:21:07 <elliott> while the stuff is drawing...
04:25:16 <elliott> evincar: anyway, I don't see how you can do a decent framerateless game without either using all the CPU or blocking all events
04:25:40 <elliott> eating all the CPU because you're effectively busylooping, or blocking all events because you're sleeping to keep a maximum framerate
04:28:48 <evincar> Just throw a minimal SDL_Delay in the otherwise busy loop so the game can switch out. You do get an artificially imposed maximum frame rate, but you also don't use all of the CPU.
04:29:10 <evincar> And said maximum rate is still rather high.
04:30:24 <evincar> It has more graceful degradation than a fixed frame rate, at least.
04:31:17 <evincar> With frame dropping, you jump in whole fractions of your frame rate.
04:31:39 <elliott> so events are only processed at your constant frame rate.
04:31:54 <elliott> unless you handle events in another thread
04:33:31 <elliott> monqy: ti still segfaults :(
04:33:46 <monqy> how do you mange to segfault...haske.L??
04:34:10 <elliott> monqy: should i, port this, to gpipe,
04:34:24 <monqy> is gpipe,,,,,,,,owrking-good???
04:34:33 <elliott> there is only one way to find out,,,,,,,,,
04:35:15 <elliott> monqy: im will maybe make this less ugly first though...
04:39:31 <monqy> did you bananana it ....
04:41:36 <elliott> monqy: apart from the segufalts inthis is better...
04:41:55 <monqy> sounds like a good
04:46:31 <elliott> monqy: what if... I gave you this current code, and in the process of fixing it, turned it into my game instead, rather than fixing yours.......
04:47:18 <monqy> its fine i'll just pry out the stuff i want
04:47:37 <monqy> it's not like i need the spinny boxes
04:47:52 <monqy> just a starting point from which to make amazing
04:48:43 <elliott> monqy: oh,,, but,,, my game's source code is not released,,,,, until it is completely done
04:49:26 <monqy> or how long will it take to
04:50:31 <elliott> evincar: Anyway, another problem with your approach is that you effectively do have a fixed tick rate: the precision of your OS timer.
04:50:51 <elliott> And if you're afraid of floats like right-thinking people, you have to pick a fixed tick rate.
04:51:30 <monqy> floats scare me dead
04:52:31 <evincar> elliott: Alright, so it's fixed-ish. My current game varies by about 30fps, broadly, depending on load.
04:52:50 <evincar> The point is that it does so without my intervention or imposition of a specific upper bound.
04:53:12 <evincar> And it does it more gracefully than dropping frames.
04:53:17 <elliott> evincar: No, but the specific bound is right there, it's just hidden.
04:53:22 <elliott> Nobody's proposing frame-dropping. :p
04:54:02 <elliott> I'm just saying that a few sleep calls let you use an int for the ticks rather than an ugly float, provides greater consistency, and reduces CPU usage immensely.
04:54:55 <evincar> I am sleeping. It doesn't bog the CPU. And if I really cared about avoiding floats, I'd use a fix.
04:55:06 <elliott> If you're sleeping, then you have a fixed tick rate.
04:56:30 <evincar> Sleeping alone isn't the way to handle frame timing.
04:56:38 <evincar> I hope you're not saying that.
04:57:39 <elliott> SDL.delay (millisecondsPerSecond `div` ticksPerSecond)
04:57:39 <elliott> return $ (end - start) `div` (millisecondsPerSecond `div` ticksPerSecond)
04:57:43 <elliott> That's the obvious way to do it.
04:57:49 <elliott> (getTicks returns in milliseconds.)
05:01:50 <Lymee> Haskell doesn't have a wait function in it's standard library?
05:02:14 <Lymee> @hoogle Int -> IO ()
05:02:15 <lambdabot> Control.Concurrent threadDelay :: Int -> IO ()
05:02:15 <lambdabot> System.Console.Editline.Readline setCompletionQueryItems :: Int -> IO ()
05:02:15 <lambdabot> System.Console.Editline.Readline setEnd :: Int -> IO ()
05:02:16 -!- GreaseMonkey has joined.
05:02:17 <elliott> But I'm using SDL's because, I don't know, it must be better.
05:02:49 <evincar> It doesn't have particularly good guarantees.
05:03:03 <elliott> Well, that's why I use it resiliently.
05:03:11 <elliott> It's impossible to have good guarantees with traditional OSes.
05:03:15 <evincar> 10ms is the best it promises for minimum delay, but in practice it varies a lot platformwise.
05:03:41 <evincar> And 10ms is also the minimum resolution it promises.
05:04:15 <Lymee> No wonder why 60 FPS is so hard to maintain without feedback...
05:04:49 <elliott> evincar: That's still enough for more thanenough fps.
05:06:02 <elliott> monqy: it sads me that gpipe depends on glut :(
05:07:11 <Lymee> elliott, I had to put a timing loop on the wait command for it to be reliable
05:07:14 <monqy> i wonder what gpipe does..internally...if it would be a good idea to use that as a starting point...formaking something.. better
05:07:40 <Lymee> s/put a timing loop on/add timing code to/
05:07:41 <elliott> monqy: it just does opengl :P
05:07:45 <elliott> monqy: but there's a lot of code
05:07:50 <monqy> yes but in what manner
05:07:57 <Lymee> OpenGL can sync FPS for you?
05:08:28 <Lymee> @hoogle Int -> IO Int
05:08:29 <lambdabot> System.Console.Editline.Readline complete :: Int -> Char -> IO Int
05:08:29 <lambdabot> Control.Exception evaluate :: a -> IO a
05:08:29 <lambdabot> Control.OldException evaluate :: a -> IO a
05:08:44 <Lymee> Strange that there's no wait command that returns the actual time waited.
05:09:19 <Lymee> > a / b = a `div` b
05:09:19 <lambdabot> <no location info>: parse error on input `='
05:10:05 <Lymee> elliott, how would you write a sync loop with OpenGL?
05:11:27 <monqy> elliott: i mean if gpipe screws some things up maybe a modified gpipe with better things would be better??? or would it be better to start with opengl??
05:12:05 <elliott> monqy: i dont like, forking things, because always worse than rewriting,
05:13:35 <evincar> elliott: All of my well-intentioned branch-rewrites turn into "fuck this, I'll do it from scratch".
05:15:16 <lambdabot> Unsafe.Coerce unsafeCoerce :: a -> b
05:15:17 <lambdabot> Prelude ($!) :: (a -> b) -> a -> b
05:15:57 <Lymee> :t \x -> undefined
05:16:30 <elliott> monqy: im going to backup this code as-is, port it to GPipe, then maybe see about reactive-banana????
05:16:30 -!- jimtendo has quit (Read error: Connection reset by peer).
05:16:34 -!- jimtendo_ has joined.
05:16:57 <monqy> is there any way to remove glut from gpope
05:19:26 <lambdabot> forall t b c. (Num t) => b -> c -> (t, b, c)
05:19:43 <elliott> monqy: lol.... i commented on the initial gpipe submission a year ago
05:20:00 <elliott> monqy: yes.......... http://www.reddit.com/r/programming/comments/9qrl5/gpipe_a_functional_graphics_api_for_programmable/c0e0vmo?context=1
05:20:06 <monqy> was it a good comment a wise comment
05:20:10 <Lymee> Is there a way to get any arbitrary Num from "1"?
05:20:22 <elliott> monqy: it was an anti-bonch comment so yes...
05:20:32 <Lymee> <lambdabot> forall t b c. (Num t) => b -> c -> (t, b, c)
05:20:35 <monqy> who's bonch he looks like an awful person
05:20:43 <elliott> he's an anti-haskell spammer
05:20:54 <elliott> and also just a generally awful person
05:20:57 <monqy> hwo can people b.e.... anti-haskelle
05:21:11 <pikhq> monqy: "Derp malloc is fast"
05:21:47 <elliott> "Because the number of people using something determines its quality. Also, Britney Spears is a superior artist to Mozart because more people are listening to her songs than Mozart concerts." --bonch
05:21:49 <elliott> "Haskell is a niche language nobody uses but a small cabal of Reddit users." --bonch
05:22:04 -!- jimtendo_ has quit (Ping timeout: 252 seconds).
05:22:31 <Lymee> Therefore PHP > Haskell?
05:24:01 -!- evincar has quit (Quit: Presumably!).
05:24:07 <pikhq> Therefore "hey id like to make thsi computer thing" > Haskell.
05:25:08 <elliott> "The first parameter is the primitive type (currently Triangle, Line or Point)"
05:25:27 <monqy> what about trianglestrips
05:25:50 <monqy> my amazing secret project only needs trianglestrips
05:26:01 <elliott> monqy: is it TriangleCraft
05:26:38 <monqy> it's hard to describe
05:27:24 <elliott> monqy: there is also, LineStrip, LineList, TriangleList, TriangleFan
05:28:07 <monqy> special-purpose graphics libary for my purposes only which draws everything in a special way using trainglestrips
05:28:29 <elliott> monqy: what about TriangleFans....... my test code uses TriangleFans because fast??
05:28:44 <elliott> monqy: and i will assume it's a minecraft clone until proven otherwise :P
05:29:33 <monqy> 1) maybe i actually want trianglefans I should actually do some reasearching on what these things do
05:29:49 <elliott> monqy: with trianglefans you can draw a cube with only like
05:29:57 <elliott> let f v = [v,(0,0,0.51),(0,0.51,0.51),(0,0.51,0),(0.51,0.51,0),(0.51,0,0),(0.51,0,1),(0,0,0.51)]
05:29:59 <elliott> let xs = f (0,0,0) ++ f (0.51,0.51,0.51) :: [(GL.GLfloat,GL.GLfloat,GL.GLfloat)]
05:30:02 <elliott> not many elements.................
05:30:05 <monqy> 2) it is for me making things involving graphics and it might end up 2d only and it would probably be totally inappropriate for minecraft clones
05:30:14 <elliott> A triangle fan is a primitive in 3D computer graphics that saves on storage and processing time. It describes a set of connected triangles that share one central vertex (unlike the triangle strip that connects the next vertex point to the last two used vertices to form a triangle).
05:30:28 <elliott> monqy: if you're just doing two dimensional i'd use sdl and save all the hassle
05:30:49 <elliott> monqy: looks like triangle strips are the fastest thing
05:31:03 <monqy> does sdl do trianglestirps
05:31:16 <monqy> im not good at this
05:32:15 <elliott> monqy: no.................but you could code them
05:32:18 <elliott> sdl just does blitting basically :P
05:32:30 <elliott> The cube is defined in model-space, i.e where positions and normals are relative the cube. We now want to rotate that cube using a variable angle and project the whole thing with a perspective projection, as it is seen through a camera 2 units down the z-axis.
05:32:35 <elliott> help gpipe tutorial is hurting me hlep
05:33:04 <fizzie> If you pass vertex data designed for GL_QUAD_STRIP to a GL_TRIANGLE_STRIP, it'll draw it just fine, IIRC the vertex ordering works like that. The hardwares only draw triangles anyway.
05:35:04 <elliott> translate :: (Transpose m mt, Reverse' () mt (v' :. t), Reverse' (v' :. ()) t v'1, Transpose v'1 m, Num v', Num a, Snoc v a v') => v -> m -> m
05:35:05 <NihilistDandy> 90% of bonch is apparently bitching about the lack of Starcraft content in /r/starcraft
05:36:39 <elliott> monqy: this is compmpalitcated
05:36:56 <fizzie> (And I would suppose a triangle fan is the fastest primitive when your faces happen to be in a fanlike configuration.)
05:38:25 <monqy> elliott: help how to help help
05:38:38 <monqy> elliott: what's even hgapp[ening haelp
05:40:28 <elliott> Context reduction stack overflow; size = 21
05:40:28 <elliott> Use -fcontext-stack=N to increase stack size to N
05:41:52 <monqy> also would it be reasonably efficient to base my whatever on whatever sdl does to do triangles if that would be simpler
05:42:07 <monqy> or i guess i could use quads if that would be simpler??
05:42:33 <Lymee> elliott, don't you need two triangle fans to draw an cube?
05:43:58 <elliott> monqy: sdl doesnt do anything to do triangles
05:44:05 <elliott> monqy: you literally blit arrays of pixels to the screen that' sit
05:44:08 <elliott> it's totally software-based
05:44:46 <Lymee> elliott, can you draw two parallel surfaces with a triangle fan? You'd need two corner shaped ones, right?
05:44:53 <coppro> well you can use its window-handling functions in conjunction with OpenGL
05:45:06 <elliott> > transform angle (width:.height:.()) (pos, norm, uv) = (transformedPos, (transformedNorm, uv))
05:45:07 <elliott> > modelMat = rotationVec (normalize (1:.0.5:.0.3:.())) angle `multmm` translation (-0.5)
05:45:07 <elliott> > viewMat = translation (-(0:.0:.2:.()))
05:45:07 <elliott> > projMat = perspective 1 100 (pi/3) (fromIntegral width / fromIntegral height)
05:45:07 <elliott> > viewProjMat = projMat `multmm` viewMat
05:45:07 <lambdabot> <no location info>: parse error on input `='
05:45:08 <lambdabot> <no location info>: parse error on input `='
05:45:08 <lambdabot> <no location info>: parse error on input `='
05:45:08 <lambdabot> <no location info>: parse error on input `='
05:45:08 <lambdabot> <no location info>: parse error on input `='
05:45:09 <elliott> > transformedPos = toGPU (viewProjMat `multmm` modelMat) `multmv` (homPoint pos :: Vec4 (Vertex Float))
05:45:09 <lambdabot> <no location info>: parse error on input `where'
05:45:11 <lambdabot> <no location info>: parse error on input `='
05:45:12 <elliott> > transformedNorm = toGPU (Vec.map (Vec.take n3) $ Vec.take n3 $ modelMat) `multmv` norm
05:45:13 <lambdabot> <no location info>: parse error on input `='
05:46:06 <monqy> elliott: thats gpipe? whats it doing
05:46:15 <elliott> monqy: i dont know........
05:46:23 <Lymee> elliott, that type definition scares me.
05:46:31 <elliott> Lymee: there's no type definition there.
05:46:37 <Lymee> I mean the one you posted.
05:46:48 <monqy> the hellish monad stack?
05:46:56 <elliott> <elliott> translate :: (Transpose m mt, Reverse' () mt (v' :. t), Reverse' (v' :. ()) t v'1, Transpose v'1 m, Num v', Num a, Snoc v a v') => v -> m -> m
05:46:58 <Lymee> Is it considered good practice to leave out type definitions when they get like that?
05:48:18 <fizzie> Lymee: The first vertex is shared among all triangles of the triangle fan, so you definitely can't draw a cube with a single fan; it can't draw any of the faces that don't touch the corner you start from. Drawing a cube with two starting from opposite corners sounds possible, though.
05:48:49 <quintopia> drawing a cube with a triangle strip is easier
05:49:03 <NihilistDandy> Lymee: I would think it would be *worse* practice to leave them out if they got like that
05:49:27 <fizzie> Oh? One strip to go "around" the cube, and then the top and bottom separately?
05:49:57 <monqy> sdl-gfx has trangles maybe i think. would it maybe help me maybe
05:50:03 <quintopia> some vertices have to be repeated either way
05:51:16 <elliott> <Lymee> Is it considered good practice to leave out type definitions when they get like that?
05:51:21 <elliott> it probably won't even be inferred with that
05:51:30 <elliott> but yeah, no, it'd be worse
05:51:34 <quintopia> erm, maybe it can't be done with one strip. maybe it still needs two.
05:53:41 <elliott> Couldn't match type `CPU m0'
05:53:42 <elliott> with `(Float :. (Float :. (Float :. (Float :. ()))))
05:53:42 <elliott> :. ((Float :. (Float :. (Float :. (Float :. ()))))
05:53:42 <elliott> :. ((Float :. (Float :. (Float :. (Float :. ()))))
05:53:42 <elliott> :. ((Float :. (Float :. (Float :. (Float :. ())))) :. ())))'
05:54:00 <fizzie> Those are some wonderful types you have there.
05:54:13 <Lymee> .........................................
05:54:25 <Lymee> That is a joke right
05:55:09 <Lymee> (Float :. (Float :. (Float :. (Float :. ())))) = four tuple?
05:55:42 <Lymee> Why isn't that ((Float,Float,Float,Float),(Float,Float,Float,Float),(Float,Float,Float,Float),(Float,Float,Float,Float)), or something similar with an alias for (Float,Float,Float,Float) defined?
05:55:46 <elliott> its Mat44 ghc just sucks at types
05:55:50 <elliott> and because vectors are more general
05:57:49 <fizzie> You can map over them and everything.
05:58:39 <fizzie> elliott: Maybe you could steal a page from C++'s book, and implement a STLFilt-like tool ("VecFilt"?) to shorten those error messages.
05:59:12 <Lymee> fizzie, how would you map over a structure (a :. b)
05:59:37 <Lymee> In particular, check if one of them is a list?
05:59:40 <Lymee> Does Haskell let you do that?
06:00:03 <fizzie> Lymee: http://hackage.haskell.org/packages/archive/Vec/0.9.8/doc/html/Data-Vec-Base.html#t:Map
06:00:32 <pikhq> Lymee: What, you mean like ([a] :. b)? Well, you'd define a function on ([a] :. b)...
06:01:38 <monqy> elliott: whats hapen
06:05:10 -!- pikhq has quit (Ping timeout: 250 seconds).
06:05:11 <elliott> monqy: gpipe types, are hard,
06:06:36 <elliott> monqy: but i am, persevering
06:06:45 <elliott> because it would be totally cool if all of my game could be purely-functional
06:07:34 <elliott> ok ive got this from the article
06:07:37 <elliott> transform :: Float -> Vec2 Int -> (Vec3 (Vertex Float), (Vec3 (Vertex Float),c)) -> (Vec4 (Vertex Float), (Vec3 (Vertex Float), c))
06:08:01 -!- derrik has joined.
06:08:12 -!- TeruFSX has quit (Read error: Operation timed out).
06:10:11 -!- pikhq has joined.
06:16:34 <elliott> monqy: this is complicated :(
06:16:56 <elliott> PrimitiveStream Triangle (Vec3 (Vertex Float), Vec3 (Vertex Float), Vec2 (Vertex Float))
06:16:59 <elliott> positions, normals and uv-coordinates
06:17:07 <elliott> and im just like.................. how do i draw a square
06:17:46 * elliott looks at gpipe-examples insetad
06:17:49 <elliott> triangle :: PrimitiveStream Triangle (Vec3 (Vertex Float))
06:17:50 <elliott> triangle = toGPUStream TriangleList $
06:19:30 <monqy> though I must admit I don't like invisible boundries
06:19:37 <monqy> between triangles in trianglelists, in this case
06:19:52 <monqy> that is, unless trianglelists are different than how im thinking
06:20:00 <monqy> are they more like strips
06:20:12 <monqy> in which case i guess it would make sense to just have a big list of points
06:24:18 <elliott> monqy: donot worry..... soon i will have your entire game working with reactive-banana and GPipe........
06:26:18 -!- derrik has quit (Quit: gone).
06:37:40 <elliott> and probably make the resulting program like 900 times larger and slower
06:39:18 <elliott> monqy: im sorry for emotional rollercoaster
06:39:31 <monqy> its okay i like roalercoasters
06:40:21 <elliott> square :: PrimitiveStream Triangle (Vec3 (Vertex Float))
06:40:22 <elliott> square = toGPUStream TriangleFan $ [vt 1 1, vt 1 (-1), vt (-1) (-1), vt (-1) 1]
06:40:22 <elliott> where vt a b = a :. b :. 0 :. ()
06:40:32 <elliott> fizzie: You told me I could just pass quads data to a trianglefan expecter.
06:40:46 <elliott> fizzie: Did you say TriangleStrip
06:41:28 <fizzie> If it's QuadStrip data, that is.
06:41:33 <fizzie> Not separate quads, obvsly.
06:42:08 <fizzie> Also you may want to check the vertex order. But I think it went the right way around.
06:42:38 <elliott> fizzie: but it was separate quads....
06:42:43 <elliott> But all I want to draw is a square.
06:43:11 <fizzie> If you want a single square, you can just give the four points into a single TriangleFan.
06:43:28 -!- lament has quit (Ping timeout: 252 seconds).
06:43:33 <elliott> Oh, right, that actually works.
06:43:51 <fizzie> Not sure what would be the optimal way to draw a large amount of non-connected quads though. Maybe a TriangleList and manually doing each quad as two triangles.
06:43:57 <elliott> Except... wait what... hmm.
06:50:04 <fizzie> GL_TRIANGLE_FAN's vertices are (1, n+1, n+2) while GL_TRIANGLE_STRIP's are (n, n+1, n+2) for odd n, (n+1, n, n+2) for even; so if you pass four vertices, that's (1, 2, 3)+(1,3,4) for the fan, (1,2,3)+(3,2,4) for the strip. Both could be used to draw a square, you'd just have to pass the corners in a different order.
06:59:44 <elliott> "Ugh. Hipster activists are so annoying. I bet you ride a fixed speed bike and eat granola bars for breakfast." --bonch on saving the lions
07:01:28 <elliott> monqy: when you passed width=fifty to square stuff
07:01:32 <elliott> that was width in pixels right??
07:02:06 <monqy> was half the width in pixels, if anything
07:02:29 <elliott> now i have something that takes a float as the width and....
07:12:04 <elliott> monqy: and what do i.... do..
07:12:23 <monqy> what haepend what bborke ;_;
07:12:31 <elliott> <elliott> monqy: but it's like...
07:12:31 <elliott> <elliott> now i have something that takes a float as the width and....
07:12:35 <elliott> its turned into something that takes like
07:12:40 <elliott> a float where one = full screen width/height
07:13:33 <elliott> i want to turn it into something taking pixels again
07:13:43 <monqy> i've never used gpipe help
07:13:48 <elliott> but its not gpipe its just
07:13:49 <monqy> is flaots how gpipe workse
07:13:55 <monqy> what is this things
07:14:30 <monqy> how did you manage to make it only work in terms of total screen size
07:14:38 <monqy> how does this happen
07:14:56 <elliott> thats jsut how it works :(
07:15:05 <elliott> monqy: whats preservingMatrix
07:15:40 <monqy> it basically isolates matrix transformations
07:15:56 <elliott> monqy: what does that mean,
07:16:16 -!- cheater_ has joined.
07:16:51 <monqy> it duplicates the top of the matrix stack (the current matrix) and pushes it onto the matrix stack (new current matrix) and then does the provided action (its argument) and then pops the matrix (so all transformations to that matrix don't affect following actions)
07:17:11 <elliott> monqy: is that how your squares appear like
07:17:12 <monqy> so it's not like you're mucking around with global state
07:17:15 <elliott> rather than screen percentage wise
07:17:22 <monqy> it's how I turn and transform them
07:17:24 <elliott> ive never had pixelwise in my opengl programs
07:17:50 <monqy> maybe my magic is in the stuff i put at the beginning in the initialization
07:17:53 <monqy> the stuff that made the view
07:17:57 <monqy> and the ortho2d stuff
07:18:04 <monqy> do you still have it
07:18:34 <elliott> GL.viewport $= (GL.Position 0 0, size)
07:18:34 <elliott> GL.matrixMode $= GL.Projection
07:18:34 <elliott> GL.ortho2D 0 (realToFrac w) (realToFrac h) 0
07:18:34 <elliott> GL.translate $ GL.Vector3 (realToFrac w / 2) (realToFrac h / 2) (0 :: GL.GLdouble)
07:18:39 <elliott> i dont understand what it is doing :(
07:19:13 <monqy> i copied most of it from a thing
07:19:21 <monqy> but i think i understand it
07:20:32 <elliott> monqy: what does orthotwodee mean
07:21:05 <fizzie> It's ortho3D with the near and far clipping planes at -1 and 1.
07:21:19 <monqy> ok first it creates the viewport with width and height specified by size, and the lower-left corner being (0, 0), then it sets the current matrix on which it operates to the projection matrix, initializes it to the identity matrix, sets up a projection matrix there spanning from 0-width and height-0, and then translates to centre it
07:21:30 <elliott> ok... but what does that do that's not default
07:21:58 <fizzie> The default projection matrix is the identity matrix.
07:22:08 <elliott> one day i will be expert :(
07:22:15 <fizzie> That would be a glOrtho from -1 to 1.
07:22:29 <elliott> that (-one,one) like fills my screen
07:22:32 <fizzie> Instead of -w/2 to w/2 like that.
07:22:34 <elliott> that's what the projection matrix is?
07:22:37 <fizzie> Yes, that sounds likely.
07:22:42 <elliott> ahhhhhhhhh now i understnand :D
07:22:45 <monqy> i set it to identity because that's in a glfw windowresizecallback i think so the projectionmatrix will be mucked up and i'll have to reset it to identity
07:22:46 <elliott> so is that like how i set FOV
07:22:53 <elliott> when i have a hypothetical block world
07:23:03 <monqy> well with a block world you want 3d stuff
07:23:13 <elliott> the ortho stuff in general
07:23:21 <fizzie> For that you'd want a perspective projection matrix.
07:23:32 <elliott> what would an orthographic thing do
07:23:34 <fizzie> Those tend to take the FOV quite directly.
07:23:42 <fizzie> It would do an isometric-style thing.
07:24:05 <monqy> or you could muck with the matrix yourself??
07:24:07 <monqy> make it go all wack
07:24:41 <olsner> use the matrix of solidity as the projection matrix
07:25:55 <Patashu> oh hey, haskell opengl bindings
07:26:13 <elliott> they suck (thats why im (using gpipe :') ))
07:26:22 <elliott> but opengl sucks in general
07:26:29 <monqy> so what does gpipe do
07:26:53 <monqy> deal with opengl's matricies and stuff
07:27:00 <elliott> transforms them into functional matrices
07:27:07 <elliott> which turns things into shaders
07:28:42 -!- pikhq_ has joined.
07:30:49 -!- pikhq has quit (Ping timeout: 240 seconds).
07:36:24 -!- elliott has quit (Remote host closed the connection).
07:36:53 -!- elliott has joined.
07:37:14 <elliott> monqy: im going to, totally gpipe it up
07:43:59 -!- NihilistDandy has quit (Read error: Connection reset by peer).
07:48:31 <elliott> "I don't make video games. I am not involved with the video game industry. I do not want to talk to you about graphics, textures, engines, or anything of that sort." --John Carmack
07:50:18 -!- NihilistDandy has joined.
07:52:24 -!- NihilistDandy has quit (Read error: Connection reset by peer).
07:52:59 -!- NihilistDandy has joined.
07:54:05 <elliott> orthoProj = toGPU $ orthogonal (-10) 10 (2:.2:.())
07:54:12 <elliott> fizzie: monqy: this looks like the ortho to me...
08:00:56 <fizzie> Soubds likely, though I don't know about the values. Maybe width, height and then a Vec2 for the center and/or corner.
08:01:20 <fizzie> I suppose it has documentation.
08:02:02 <elliott> fizzie: I'm not sure though, since that's the projSquare function.
08:02:08 <elliott> Then it gets rasterised and drawn onto the frame.
08:02:14 <elliott> And I think orthogonals are a global thing.
08:02:39 <elliott> In fact it seems like orthoProj is just multiplied with the ... homPoint of the vertex position thing.
08:02:45 <elliott> To form a four-dimensional vector. Umm.
08:02:54 <coppro> elliott: so I finally got back to watching old doctor who... I like the vulcan neck pinch
08:03:22 <fizzie> Well, maybe it's not using the fixed-function OpenGL pipeline, I think you can opt for that nowadays.
08:03:38 <elliott> coppro: The Doctor: literally a Vulcan.
08:03:41 <elliott> fizzie: im not sure what this means,,
08:04:19 <fizzie> In old-style OGL you'd set the (global-state) projection matrix, which is then used to transform coords in the camera coordinate system to the screen's, by multiplying them.
08:04:49 <fizzie> But I suppose you can nowadays opt for doing all geometry with programmed shaders.
08:06:08 <elliott> fizzie: It does convert things to shaders automagically, yes.
08:07:03 <Patashu> I didn't learn shaders in my opengl class :(
08:07:26 <elliott> or just, opengl not to exist
08:07:32 <monqy> in vanalla open gl you have to specifiy shaders an a special langauge???
08:07:45 <elliott> monqy: they're written in like
08:07:49 <monqy> is it good langauge
08:08:00 <elliott> __kernel void fft1D_1024 (__global float2 *in, __global float2 *out,
08:08:00 <elliott> __local float *sMemx, __local float *sMemy) {
08:08:01 <elliott> int tid = get_local_id(0);
08:08:01 <elliott> int blockIdx = get_group_id(0) * 1024 + tid;
08:08:02 <monqy> is this basing appropriate
08:08:03 <elliott> // starting index of data to/from global memory
08:08:05 <elliott> in = in + blockIdx; out = out + blockIdx;
08:08:11 <elliott> globalLoads(data, in, 64); // coalesced global reads
08:08:13 <elliott> fftRadix16Pass(data); // in-place radix-16 pass
08:08:15 <elliott> twiddleFactorMul(data, tid, 1024, 0);
08:08:16 <elliott> this is what it looks like.................
08:08:19 <elliott> monqy: no, because GPUs are even lower-level than C
08:08:25 <elliott> monqy: ... but with gpipe it like does your haskell all symbolic and compiles it to a shade
08:08:35 <elliott> monqy: (http://esolangs.org/wiki/Checkout)
08:08:49 -!- Taneb has joined.
08:09:06 <elliott> A different form of checkout/2 can move or (possibly readonly) copy between level 1 memory and level 3 memory. The semantics of this need a little explanation, as referring to level 1 memory from a level 2 command is mostly meaningless. What happens is that the command refers to one slab of level 3 memory, and one word of level 1 memory in each subunit, which comes to the same amount (as the size of a slab is that necessary for each level 1 subun
08:09:06 <elliott> it to get one word of it). The access is allowed to be misaligned. In fact, the slab of level 3 memory does not even need to be contiguous in an absolute sense; rather, it has to be contiguous in the segmented sense that if memory is divided into a set of power-of-2-sized blocks each of which wraps around, it's contiguous from the point of view of some block. (So, for instance, in a hypothetical system with 8 level 1 subunits per level 2 unit, [2
08:09:09 <elliott> 7]/3 [28]/3 [29]/3 [30]/3 [31]/3 [16]/3 [17]/3 [18]/3 would be contiguous in this sense, with block size 16.) The third argument gives the block size needed for the block in question to be considered contiguous, and must be a constant integer that's a power of 2, and at least as great as the number of level 1 subunits of a level 2 unit. (The level 1 subunit with identifier 0 gets the first word of the slab, [27]/3 in the example above, the subuni
08:09:14 <elliott> t with identifier 1 gets the second, and so on.) Indirect memory addresses can be given for the first two arguments, with the same restrictions as in the previous case. This instruction is very fast compared to other checkout instructions, taking around twice as long to execute as arithmetic instructions. Additionally, two move/2 instructions with the same arguments, the first from level 3 to level 1 and the second in the other direction, can tak
08:09:19 <elliott> e less time between them to execute than either would individually; the condition for this to happen is that the block size must be set to the amount of level 3 memory per unit (or higher), that they are separated by nothing but arbitrary level 1 i
08:09:21 <monqy> soryt im not reading that
08:09:29 <elliott> it wouldn't let it all go in the input field
08:09:33 <elliott> http://esolangs.org/wiki/Checkout/Quick_reference
08:10:22 <monqy> so i guess shaders are such a thing such that a c-like language is appropriate??
08:11:05 <elliott> monqy: C is too high-level like I said
08:11:33 <monqy> by appropriate, not high- or low-level but
08:11:36 <elliott> well it couldn't be like, java if that is what you mean..........
08:12:09 <monqy> i mean like how HOtMEfSPRIbNG is really high-level but the wrong abstraction entirely for pretty much anything
08:12:25 <monqy> except in this case instead of HOtMEfSPRIbNG it is C
08:12:58 <elliott> http://www.overclock.net/coding-programming/345618-wide-world-code.html oh no the overclockers have found us
08:13:11 <monqy> oh no overclockers
08:13:19 <elliott> IM GOING TO PUNCH MY FACE THROUGH YOUR BRAIN
08:13:25 <elliott> oh thank god it ended after three posts
08:13:50 <elliott> i wish i understood homespring
08:16:08 <monqy> snack's creator genius
08:16:38 <elliott> in five days snack is a month old
08:17:01 <elliott> and one day (warning: scary story ahead)
08:17:05 <elliott> it will be a hundred years old
08:17:11 <monqy> a month? two months?
08:17:13 <elliott> how can we make our langauges last a hundred years
08:17:33 <elliott> we need a command that prints SLEEP? ARE YOU CRAZY? LETS GET UP FOR MIDNIGHT DINNER"
08:17:35 <monqy> in a month ago from five days from now snack willwas be a month old
08:17:56 <monqy> wasn't it a june lnaguage
08:18:18 <elliott> http://esolangs.org/wiki/Snack
08:18:21 <elliott> there is an undocumented command
08:18:39 <elliott> how can you not even document the like five commands your awful language has
08:18:52 <monqy> well he documented 5 of them
08:19:08 <monqy> is smallbug you, itidus20
08:19:31 <elliott> are you implying itidus20 is a bad erson
08:19:55 <itidus20> no! Je ne suis pas sur le wiki.
08:20:06 <monqy> i also like how in the implementation
08:20:28 <monqy> and everything is indented a space
08:20:43 <monqy> or is that just the first two lines after the include
08:20:47 <monqy> help snakes killed me
08:21:04 <monqy> help i cant smell snacks i mean spell help
08:21:11 <monqy> i cant spell spoepll ahELP
08:21:12 <coppro> elliott: not the Doctor; Ian
08:21:21 <elliott> coppro: same person obviosuly
08:21:29 <itidus20> its ok to not smell snacks as long as you can: grave get eat them
08:22:13 <monqy> You have eaten as a snack right 1 people. Happy?
08:22:53 <pikhq_> Ceci n'est pas une “Ceci n'est pas une “Ceci n'est pas une “Ceci n'est pas une “...
08:22:58 <monqy> oh man what if you do grave then let a nonexistant people free
08:23:04 <monqy> you will have eaten...negative people
08:23:41 <Lymee> pikhq_, what does that mean?
08:24:11 <pikhq_> Lymee: This is not a “This is not a “This is not a...
08:24:57 <Lymee> > fix ("Ceci n'est pas une “++)
08:24:58 <lambdabot> lexical error in string/character literal at end o...
08:25:05 <Taneb> Ce n'est pas un truc l'esprit
08:25:16 <pikhq_> See: https://secure.wikimedia.org/wikipedia/en/wiki/La_trahison_des_images
08:25:18 <Lymee> > recurse ("Ceci n'est pas une \"“++) "Ceci n'est pas une “
08:25:19 <lambdabot> <no location info>: lexical error at character '\8220'
08:25:25 <Lymee> > recurse ("Ceci n'est pas une “"++) "Ceci n'est pas une “
08:25:26 <lambdabot> lexical error in string/character literal at end o...
08:25:31 <Lymee> > recurse ("Ceci n'est pas une “"++) "Ceci n'est pas une “"
08:25:43 <Lymee> Doesn't show up in my editbox.
08:25:52 <Lymee> i hate you edit box
08:26:10 <lambdabot> "Ceci n'est pas une Ceci n'est pas une Ceci n'est pas une Ceci n'est pas un...
08:26:24 <lambdabot> "\"Ceci n'est pas une \"Ceci n'est pas une \"Ceci n'est pas une \"Ceci n'es...
08:26:44 <pikhq_> > fix ("Ceci n'est pas une “"++)
08:26:46 <lambdabot> "Ceci n'est pas une \8220Ceci n'est pas une \8220Ceci n'est pas une \8220Ce...
08:26:55 <pikhq_> Shame about the uglyprinting.
08:27:33 <lambdabot> "\8221\8221\8221\8221\8221\8221\8221\8221\8221\8221\8221\8221\8221\8221\822...
08:27:44 <itidus20> Dandy: suffice to say you detected in my post the influence of the Magritte reference I saw yesterday
08:27:52 <Lymee> > (fix ("Ceci n'est pas une “"++)) ++ (cycle "”")
08:27:53 <lambdabot> "Ceci n'est pas une \8220Ceci n'est pas une \8220Ceci n'est pas une \8220Ce...
08:28:14 <NihilistDandy> pikhq_: Well, yes, but with a nicer user interface
08:28:39 <pikhq_> Lymee: Exactly equivalent to the statement sans ++ (cycle "”"). :)
08:28:50 <Patashu> Nuh-uh, 0.000...1 is a real number
08:29:29 <elliott> 0.999999999...0 =/= one dumbtarjsds
08:29:36 <Lymee> The program doesn't cheat!
08:29:51 <Lymee> If we ever build a computer capable of infinite cycles per second, the code will become useful.
08:30:15 <pikhq_> Well. Nearly equivalent. Under some Haskell implementations, that would reconstruct the first list, giving you completely pointless allocation.
08:30:42 <Lymee> > tail $ (fix ("Ceci n'est pas une “"++)) ++ (cycle "”")
08:30:43 <lambdabot> "eci n'est pas une \8220Ceci n'est pas une \8220Ceci n'est pas une \8220Cec...
08:30:49 <Lymee> > last $ (fix ("Ceci n'est pas une “"++)) ++ (cycle "”")
08:31:05 <NihilistDandy> elliott: Well, that's true, in that's it's meaningless
08:31:13 <pikhq_> elliott: com.com? God that was a stupid thing.
08:32:07 -!- asiekierka has joined.
08:32:21 <pikhq_> NihilistDandy: Yes, they used to maintain a hierarchy of sites under com.com.
08:32:26 <pikhq_> NihilistDandy: I am not fucking kidding.
08:32:43 <Taneb> Ve have ways of making you TALK!
08:32:43 <asiekierka> much to your disappointment, possibly, elliott
08:33:06 -!- GreaseMonkey has quit (Read error: Connection reset by peer).
08:33:07 <pikhq_> CNET seems to have cornered the market on stupid domain names.
08:33:07 * Lymee pokes at asiekierka
08:33:18 -!- GreaseMonkey has joined.
08:33:39 <pikhq_> They also have, like, download.com, upload.com, tv.com, search.com, radio.com, and computers.com...
08:33:43 <Lymee> hi stop being missing from espernet
08:33:59 <pikhq_> It's like they think extraordinarily simple nouns make good brand names. Cute.
08:34:44 <pikhq_> To be fair, it was the 90s.
08:35:21 <Taneb> I always feel a bit weird when I realise I was alive during the dot.com bubble
08:35:22 <pikhq_> This was a magical time when everyone got on a computer and forgot every single bit of knowledge we learned over the course of centuries.
08:35:56 <pikhq_> It's not like having a bunch of domains uses up IPv4 space.
08:36:38 <pikhq_> You should damn an older period for being insufficiently forward-thinking.
08:36:53 <pikhq_> "Oh, 32 bits should be enough. It's not like more than 100 hosts will use it anyways, right?"
08:37:25 <NihilistDandy> "This computer thing will never catch on. And networking? Pish tosh."
08:37:41 <pikhq_> Well, they presumed it was a research network.
08:37:49 <itidus20> apparently it was just a demo thing and before long someone pressed the accelerator while everyone was just sitting on top of the car
08:38:00 <pikhq_> Not a network that would leap off into production.
08:38:04 <itidus20> and before they knew it the world was full of 32bit addresses
08:38:31 <Taneb> The world wide web was invented to make it easier to get data from one computer to another in the same room somewhere deep on the France-Switzerland border
08:38:54 <pikhq_> The World Wide Web was also a wiki protocol.
08:39:14 <Taneb> HTTP is not the World Wide Web
08:39:15 <NihilistDandy> First the Web, then the LHC... It's like they WANT the world to die
08:39:30 <pikhq_> The World Wide Web was intended as a giant wiki, though.
08:39:47 <Taneb> But with many, many locked pages
08:40:00 <pikhq_> Not in *any* way like it was designed.
08:40:13 <pikhq_> Half of HTTP gets completely ignored.
08:40:47 <pikhq_> PATCH, DELETE, PUT? Hah.
08:41:06 <fizzie> I'm not sure how you can be "deep on the border".
08:41:11 <elliott> it was invented last year..........
08:41:32 <elliott> Internet Engineering Task Force (IETF) L. Dusseault
08:41:32 <elliott> Request for Comments: 5789 Linden Lab
08:41:32 <elliott> Category: Standards Track J. Snell
08:41:32 <elliott> ISSN: 2070-1721 March 2010
08:41:41 <elliott> "After a long, long time, the HTTP PATCH verb has become an official standard: IETF RFC 5789."
08:41:43 <pikhq_> Also, stop using that many dots, it makes you look like you're 8. In the 90s.
08:41:46 <elliott> might have been invented earlier i dunno
08:42:20 <Taneb> The nineties was the decade before last
08:42:58 <elliott> "Given that it’s taken something like 10 years to get PATCH in"
08:42:59 <monqy> what do 8 years old do now anyway
08:43:35 <elliott> it would be cool if i could become eight again and be all awesome ahead of time........
08:43:46 <monqy> i was probably a horrible person when i was 8
08:43:58 <monqy> are any 8 years olds not horrible people
08:43:59 <pikhq_> I am glad I don't have IRC logs from when I was 8.
08:44:04 <Taneb> I was an idiot who thought he was the best at everything
08:44:35 <monqy> I didn't irc when I was 8, thankfully
08:44:37 <elliott> the only traces of me being eight
08:44:40 <elliott> are under a different nickname
08:44:44 <elliott> that has, to my knowledge,
08:44:53 <elliott> never, ever been publicly linked to my name or any of the nicks i've ever used on irc or ever
08:44:59 <elliott> so i am ............. safe .........
08:45:00 <monqy> what do 8 year olds do on irc anyway
08:45:03 <pikhq_> The only traces of me being eight that I know of *are* my nickname.
08:45:10 <monqy> embarrass themselves and fail to notice it?
08:45:12 <pikhq_> monqy: Internet Relay Chat?
08:45:14 <elliott> monqy: cyber.........esolangs........................haskell.........
08:45:27 <elliott> u be haskell, ill be brainfuck, i put on my robe and type theory hat
08:45:44 <monqy> I don't think I knew about esolangs or haskell when I was 8 :(
08:46:18 <elliott> im not ready for twenty days time... can i put off becoming sixteen until im like sixteen
08:46:23 <Taneb> When I was eight, the closest I got to esolangs was writing down roman numerals in Excel
08:46:37 <elliott> im not ready to sixteen yet :{
08:46:46 <monqy> i;ll never ready to sixteen
08:47:00 <Taneb> I got ready to sixteen just before I sixteened
08:47:11 <elliott> Taneb: help, its going to fast,
08:47:21 <pikhq_> elliott: Congrats, you're 61.
08:47:31 <Taneb> You can only make it go faster
08:47:45 <pikhq_> Taneb: Well, you can stop the flow of time.
08:47:55 <pikhq_> Just fine a nearby event horizon.
08:48:27 <coppro> HackEgo: that's cause you suck
08:56:35 <Taneb> Or maybe it hates Windows 8
09:08:36 -!- Phantom_Hoover has joined.
09:26:14 -!- FireFly has joined.
09:30:32 -!- asiekierka has quit (Ping timeout: 258 seconds).
09:35:44 <elliott> "It is built on top of the programmable pipeline (i.e. non-fixed function) of OpenGL 2.1"
09:36:32 <monqy> what does this mean
09:37:38 <fizzie> It doesn't use the "global" projection/modelview matrices, pretty much. (And the same applies to lighting and things like that.)
09:39:11 <fizzie> There's an awesome flowchart somewhere which shows the fixed-function pipeline, and where shaders fit there, and which parts are/can be skipped if you feed stuff to them.
09:39:55 <elliott> fizzie: it is confusing :(
09:40:03 <elliott> fizzie: why does gpipe use all this advanced stuff but then depend on glut.......
09:40:47 <fizzie> elliott: Maybe you should use DirectX instead, the fixed-function D3D 9.0 pipeline is much simpler: http://www.ategpu.com/wp-content/uploads/2009/06/20090605_0ae51d1100b0ce18cfa6kJFDIv2M25XR.png
09:41:11 <elliott> isn't directx actually simpler to use though :)
09:42:39 <fizzie> Probably not by much, really. But I'm no expert.
09:43:38 <fizzie> Aw, I can only find a flowchart of the current, programmable pipeline: http://www.opentk.com/files/OpenGL%20machine%20diagram%20v2.png -- I'm sure there was one that showed the old, more complicated one, which pretty much replaces the blocks that say "Shader" with a mess.
09:44:27 <elliott> why is it so complicated :(
09:47:09 <fizzie> Here's the old OpenGL 1.1 state machine: http://www.opengl.org/documentation/specs/version1.1/state.pdf -- the programmable pipeline just skips large parts of that and replaces them with your shaders.
09:47:21 <fizzie> Google image search doesn't seem to find pictures that are inside PDF documents. :/
09:48:49 -!- pitufoide has quit (Read error: No route to host).
09:49:01 -!- cheater_ has quit (Ping timeout: 255 seconds).
09:49:45 <fizzie> I think they have officially labeled most of the "old-fashioned" parts as deprecated in current (3 and later) OpenGL versions.
09:50:16 <elliott> GL.ortho2D 0 (realToFrac w) (realToFrac h) 0
09:50:16 <elliott> orthoProj = orthogonal (-10) 10 (2:.2:.())
09:50:21 <elliott> wonder how the first becomes the second...
09:50:30 <elliott> fizzie: yeah they've deprecated practically everything :(
09:50:42 <fizzie> You should probably look at the docs of "orthogonal" to specify that.
09:51:11 <elliott> -- | An orthogonal projection matrix for a right handed coordinate system looking down negative z. This will project far plane to @z = +1@ and near plane to @z = -1@, i.e. into a left handed system.
09:51:12 <elliott> orthogonal :: Fractional a
09:51:12 <elliott> => a -- ^ Near plane clipping distance
09:51:12 <elliott> -> a -- ^ Far plane clipping distance
09:51:13 -!- pitufoide has joined.
09:51:13 <elliott> -> Vec2 a -- ^ The size of the view (center aligned around origo)
09:51:19 <elliott> I'm not exactly sure on GL.ortho2D :)
09:51:28 <fizzie> Well, it's already centered, then.
09:52:06 <fizzie> So that's just orthogonal (-1) 1 (w :. h :. ()) or whatever you need to do to 'w' and 'h' in there.
09:52:27 <fizzie> (ortho2D puts the clipping planes at -1 and 1.)
09:52:49 <lambdabot> when p s = if p then s else return ()
09:52:59 <lambdabot> forall (m :: * -> *). (Monad m) => Bool -> m () -> m ()
09:55:27 <fizzie> You may need to flip that thing though, since I guess "GL.ortho2D 0 (realToFrac w) (realToFrac h) 0" sets up a coordinate system where Y points down, not up.
09:55:40 <fizzie> (Might be enough to just provide -h to it.)
09:56:25 <elliott> now to find the equivalents of
09:56:28 <elliott> GL.viewport $= (GL.Position 0 0, size)
09:56:29 <elliott> GL.matrixMode $= GL.Projection
09:56:32 <elliott> GL.translate $ GL.Vector3 (realToFrac w / 2) (realToFrac h / 2) (0 :: GL.GLdouble)
09:56:55 <fizzie> As mentioned, you don't need the GL.translate, if your 'orthogonal' is already centered.
09:57:37 <elliott> I suppose that matrixMode/loadIdentity thing is abstracted out by GPipe
09:57:45 <fizzie> Probably not a GL.loadIdentity either if it's building the matrix from scratch and not multiplying it over some existing one.
09:58:32 <fizzie> Viewport and how to set the projection matrix depends on how your pipe does things, I suppose.
09:58:34 <elliott> And what is EVEN a MODE of MATRICES.
09:59:08 <fizzie> It's just the global flag that decides which matrix the matrix-operating functions (like loadIdentity and such) operate on.
09:59:11 <Taneb> The most common matrix?
10:00:00 <elliott> ortho thing also handle that?
10:00:54 -!- cheater_ has joined.
10:01:06 <fizzie> That I don't know about. In the fixed-function pipeline it's an affine transformation from "normalized device coordinates" (i.e. what you get after the projection matrix is applied) into window coordinates.
10:01:26 <elliott> Well, it seems to work-ish.
10:02:11 <elliott> I need to make it actually move for instance.
10:05:09 -!- clog has quit (Ping timeout: 252 seconds).
10:07:26 -!- oerjan has joined.
10:09:35 <oerjan> oh i do. btw it was removed from topic.
10:10:13 -!- elliott has set topic: http://codu.org/logs/_esoteric/.
10:10:18 <elliott> no tunes in topic in retaliation
10:12:39 <elliott> monqy: im think, rotate, now,
10:12:55 <elliott> GL.rotate (blah * 100) (GL.Vector3 0 0 (1 :: GL.GLfloat))
10:14:35 <elliott> monqy: http://i.imgur.com/FQdnB.png
10:14:54 <elliott> its title "Green Triangle" of window
10:15:05 <monqy> is there a second box too wheres the traingle
10:15:11 <monqy> is this a threedee box
10:15:32 <monqy> my eyes are going funny in the blue and green and tired and it's going distortey
10:15:50 <monqy> and i cannot make heads or tales of the specifics of what this box actually looks like
10:15:58 <monqy> but i'm thinking it's a square
10:16:19 <elliott> replicating the thing you did
10:19:35 -!- Sgeo has joined.
10:20:05 <oerjan> <elliott> no tunes in topic in retaliation <-- well now you are annoying _me_...
10:20:27 <oerjan> mind you, i'm in a bad mood to start with.
10:20:42 <elliott> annoyed over log bots in topics
10:21:09 <oerjan> no, annoyed over stupid "retaliation" games
10:22:12 <elliott> oerjan: you realise im not serious...................
10:22:44 <oerjan> i'm too gloomy to realize anything. HOW DO YOU WANT YOUR BAN SERVED?
10:22:58 <Patashu> have you guys ever used the spectrogram in foobar2000 or an equivalent
10:24:06 * oerjan suddenly thinks spectrogram sounds like something at the other meaning of "esoteric"
10:24:28 <oerjan> presumably the ghostbusters have one
10:25:13 <elliott> .debian.com.net.org.opengl
10:26:13 <fizzie> I'm unsure whether that was "an equivalent of foobar2000" or "an equivalent of a spectrogram in foobar2000".
10:26:13 <oerjan> elliott: my 3-cell BF fractran seems to have a snag :(
10:26:52 <fizzie> I don't know exactly what its spectrogram looks like, but I've drawn quite a lot of them with matlab and such.
10:26:59 <oerjan> i don't see how to do the equivalent of if (!a) { a = C1*b+D1; b=0; }
10:27:46 <oerjan> it's not the arithmetic that's the problem, it's actually conditioning on something being zero without clobbering when it isn't...
10:28:57 <oerjan> four cells should be fine i guess
10:29:20 <oerjan> then you can actually use a cell for a test flag
10:29:41 <elliott> monqy: ok, im going to try introducing the reactive bananas
10:30:58 <elliott> monqy: it occurs to me that this niceness of GPipe will be ah... tarnished a bit when i actually write gamey stuff
10:31:08 <elliott> and i dont htink theres an APipe.........
10:31:22 <monqy> is openal........saddening
10:31:32 <monqy> and are there no alternatives
10:31:33 <elliott> monqy: its modelled to be as much like opengl as possible
10:31:44 <elliott> and well there are alternatives but openal is cool because it offers threedee sound???
10:31:47 <elliott> i can just position sounds properly
10:31:51 <elliott> and they'll doppler properly
10:31:55 <elliott> and get quietier as you walk away
10:32:00 <elliott> they'll sound like they're behind you
10:32:14 <monqy> good thing i don't need threedee sound for what i want to do because what i want to do is twodee
10:32:41 <oerjan> <elliott> and they'll doppler properly <-- wait, as in actually consider relative velocity? :P
10:32:53 <monqy> all i know is it's twodee and it involves a very special type of graphicals which is also hard to explain
10:32:54 <elliott> oerjan: well "The rendering engine performs all necessary calculations as far as distance attenuation, Doppler effect, etc." --wikipedia
10:34:24 <fizzie> oerjan: You can even vary the speed of sound (though only globally) which affects the doppler calculations.
10:35:35 <monqy> also what i want to do is kind of bizarre
10:35:42 <monqy> which makes explaantion..h.arder.
10:36:56 <monqy> well i guess the graphicals might be described as subtley wavy or something and they vary over time??
10:37:06 <monqy> i have a vision for this but i m bad at descirbe
10:37:12 <monqy> the rest is even less concrete
10:37:13 <Sgeo> Better than yesterday, but still unwell
10:37:22 <monqy> the least concrete
10:37:30 <elliott> are the graphics triangles
10:37:38 <monqy> they are rendered using triangles
10:38:11 <fizzie> Patashu: Now I am curious as to what that spectrogram question was all about?
10:38:12 <monqy> i use triangles instead of lines because then i can vary their specifics over position and time??
10:38:29 <elliott> monqy: what is the game like,
10:38:44 <monqy> it may or may not. involve the display of text.
10:38:52 <elliott> TELL ME ABOUT THE FUCKING GAME
10:39:07 <monqy> it is not relevant to gameplay. though. it is more of fan . aesthetic.
10:39:20 <monqy> haven't really decided much about the actual
10:39:57 <elliott> reactimate :: Event PushIO (IO ()) -> NetworkDescription ()Source
10:39:57 <elliott> Output. Execute the IO action whenever the event occurs.
10:41:02 <monqy> is there any good way to do gameplay
10:41:04 <monqy> because if there is
10:41:07 <monqy> i may want to use that
10:42:15 <elliott> after you compile your event network
10:42:21 <elliott> -- register handlers and start producing outputs
10:42:24 <elliott> you ACTUATE YOUR REACTIMATIONS
10:42:38 <elliott> Deewiant: btw the library i am using... depends on your tries... you are famous...
10:42:58 <oerjan> <monqy> it may or may not. involve the display of text. <-- i am still going to assume it's pornographic until you tell what it is.
10:43:14 <elliott> Deewiant: (not reactive-banana)
10:43:40 <monqy> well it's PROBABLY NOT pornographic
10:44:01 <oerjan> at least not in _all_ countries
10:44:15 <monqy> what are the criteria for being pornographic
10:44:26 <oerjan> in denmark, it would probably be considered entirely appropriate for children.
10:45:28 <oerjan> in iran, it would probably be considered entirely appropriate as firewood.
10:45:37 <Deewiant> elliott: So you'll blame me if it doesn't work?
10:47:17 <elliott> Deewiant: (it also uses Vec which means the type errors are really confusing :( )
10:55:38 -!- monqy has quit (Quit: hello).
10:56:54 <lambdabot> Control.Concurrent killThread :: ThreadId -> IO ()
10:56:54 <lambdabot> Control.OldException throwDynTo :: Typeable exception => ThreadId -> exception -> IO ()
10:56:54 <lambdabot> Control.Concurrent throwTo :: Exception e => ThreadId -> e -> IO ()
11:01:59 <lambdabot> Data.HashTable delete :: HashTable key val -> key -> IO ()
11:01:59 <lambdabot> Data.IntMap delete :: Key -> IntMap a -> IntMap a
11:01:59 <lambdabot> Data.IntSet delete :: Int -> IntSet -> IntSet
11:02:00 <lambdabot> Data.Graph.Inductive.Monad.IOArray removeDel :: IOArray Node Bool -> Adj b -> IO (Adj b)
11:02:00 <lambdabot> System.Directory removeDirectory :: FilePath -> IO ()
11:02:00 <lambdabot> System.Directory removeDirectoryRecursive :: FilePath -> IO ()
11:06:51 <oerjan> http://holumbus.fh-wedel.de/hayoo/hayoo.html#0:obliterate
11:07:35 <oerjan> darcs and wumpus both sound appropriate
11:09:52 <elliott> obliterate is the thing that permanently removes a patch from a repository
11:10:15 <Patashu> *everyone gasps and puts hands to their mouthes*
11:10:21 <coppro> which vcs are we talking about?
11:10:29 <coppro> in perforce, obliterate removes a file, not a patch
11:10:37 <elliott> coppro: dunno, maybe you could look a single line up to find out
11:10:44 <coppro> it rewrites all the vcs history to remove all mention of that file
11:10:44 <elliott> also who the fuck uses perforce
11:10:53 <coppro> elliott: big companies
11:11:21 <elliott> i like how perforce is terrible in every way, that's a good thing about perforce
11:11:58 <coppro> Perforce is a precursor to modern dvcs
11:12:12 <elliott> bullshit, perforce is centralised
11:12:31 <coppro> that's why I said precursor
11:12:57 <coppro> I don't know about sccs specifically, but I suspect not in the sense that I mean
11:13:33 <coppro> perforce's changelists allow for easy communication of small groups of changes in a manner similar to a dvcs
11:14:03 <Taneb> Well, I've just worked out how to do lambda calculus in VB.NET
11:14:07 <elliott> other similarities perforce has to dvcses: it has files; it has commands
11:14:48 <coppro> elliott: okay I'm guessing you actually have no fucking clue how perforce works
11:15:08 <elliott> i'm guessing you're experiencing stockholm syndrome :)
11:15:36 <Patashu> so what's bad about perforce exactly
11:16:41 <coppro> Patashu: It tracks changes at a file level; it is centralized; it is proprietary
11:17:20 <oerjan> <Taneb> Well, I've just worked out how to do lambda calculus in VB.NET <-- wait, should we cheer or boo now?
11:18:10 <Taneb> You could just ignore it
11:18:19 <coppro> Taneb: not physically possible
11:18:39 <Taneb> Or wish VB.NET luck in its slow progress to becoming a useable programming language
11:19:15 <oerjan> i actually recall that some people think it does some things better than C#
11:19:33 <Taneb> It was the first programming language I learnt
11:19:36 <oerjan> mind you i don't actually know either, just following the hivemind...
11:20:03 -!- GreaseMonkey has quit (Remote host closed the connection).
11:22:07 <elliott> hi oerjan...................
11:22:16 <elliott> -- Typeable instances, yikes!
11:22:16 <elliott> -- Also, these instances are wrong, but I don't care.
11:22:16 <elliott> instance Typeable WX.EventKey where
11:22:16 <elliott> typeOf _ = mkTyConApp (mkTyCon "WX.EventKey") []
11:22:16 <elliott> instance Typeable WX.EventMouse where
11:22:17 <elliott> typeOf _ = mkTyConApp (mkTyCon "WX.EventMouse") []
11:22:57 <oerjan> that's the function which is being deprecated, isn't it
11:23:41 <coppro> elliott: also "Dr. Who" in the credits :(
11:23:48 <elliott> "My understanding is the part that will be changing in future versions of GHC is that you should use a different function, mkTyCon3, which takes the package name, module name, and type name as separate arguments."
11:24:07 <elliott> coppro: the writers and producers are much less anal about the show than the fans :P
11:24:19 <elliott> coppro: see also: every script was titled "Doctor Who and the X"
11:24:26 <elliott> oerjan: that does seem saner...
11:25:13 <coppro> they are more careful now
11:26:16 <elliott> oerjan: good news....i think i cna....extricate the glut
11:26:45 <oerjan> elliott: that sounds like a somewhat painful procedure. do you have enough anesthetics?
11:26:55 <elliott> i dont know.,, but i do have teh world
11:27:56 <oerjan> Doctor Who and the furbies
11:29:21 <oerjan> google suggest correcting it to "furies". not that that exists either.
11:29:48 <elliott> its furbys ur prlaurl wrong
11:30:26 <oerjan> "A Furby (plural Furbys or Furbies) was [...]"
11:31:37 <elliott> oh that monqy slipe aaway,
11:31:45 <elliott> help im having trouble extricating
11:35:36 <elliott> "GLFW doesn't work well with GHC threads, forkIO or threadDelay. So avoid them if you can.
11:36:18 <Patashu> so what can you use it with
11:36:21 <oerjan> it's probably the usual "must be called from the main thread" thing?
11:36:24 -!- clog has joined.
11:36:30 <elliott> (non-portable) native threads
11:36:32 <elliott> its understandable it just sucks
11:36:38 <Sgeo> http://www.reddit.com/r/science/comments/j5sdo/electrical_engineers_at_duke_university_have/c29f9o6 there should be a language called cross-talk
11:36:54 <Patashu> there's a physical board of objects
11:36:58 <Patashu> objects have to be very close to talk
11:37:12 <elliott> Whatever happened to string theory? (self.askscience)
11:37:20 -!- boily has joined.
11:37:20 <Patashu> Whatever happened to Robot Jones?
11:37:49 <oerjan> string theory is just waiting for us to develop a galactic empire powerful enough to actually _test_ it, duh
11:38:03 <Patashu> what's the collatz conjecture waiting for then?
11:38:23 <elliott> oerjan: wait, string theory has tests? :)
11:38:58 <elliott> I wish elliottcable would shut the fuck up whenever I talk in #haskell.
11:39:12 <elliott> I get it, you want my nick; you've already offered to pay me for it, and I've named a price, so pay up or shut up.
11:40:17 <oerjan> elliott: well there was a test recently which might have been relevant to _some_ string theories, about whether photons change polarization over huge cosmic distances. alas nothing unexpected was found.
11:41:03 <oerjan> that was also relevant to loop quantum gravity iirc
11:41:46 <oerjan> and of course the idea is presumably that we can find some relevant tests once we can create black holes and stuff at will...
11:42:19 <elliott> right. you get right on that, then.
11:42:20 -!- azaq23 has joined.
11:42:37 <elliott> new she version, let us all dance: \o/
11:42:39 <oerjan> elliott: soon as we got that galactic empire, 'guv
11:44:30 <Taneb> Is it possible to send messages by quantum entanglement?
11:45:13 <oerjan> Patashu: "Mathematics is not yet ready for such problems." -- Paul Erdős
11:45:23 <Taneb> Well, that sucks, in the scheme of things
11:45:43 <elliott> Taneb: Yes, the inability to go faster than light sucks a bit.
11:46:14 <Taneb> But no matter is moving faster than light!
11:46:27 <Taneb> Then we can test that paradox!
11:46:32 <Taneb> And solve the halting problem!
11:46:44 <oerjan> otoh they've found P and CP violation, why not lorentz invariance violation
11:47:42 <Taneb> Here comes the rainm
11:48:07 <elliott> Taneb: it is an incredibly common misconception that quantum entanglement can cause information to be propagated faster than the speed of light.
11:48:17 <oerjan> Taneb: you're british, that's not even news
11:48:32 <elliott> Deewiant: Man, I would be downright offended as GPipe's dependency on list-tries if I were you -- it simultaneously uses Data.HashTable!
11:48:43 <Taneb> It was a statement of truth
11:49:17 <Deewiant> Nothing wrong with using Data.HashTable if that's what you need
11:50:36 <elliott> Deewiant: I seem to recall that Data.HashTable is strongly deprecated.
11:50:47 <elliott> Deewiant: You may be thinking of the http://hackage.haskell.org/package/hashtables version.
11:50:52 <elliott> Which is not the base Data.HashTable module.
11:51:05 <oerjan> v Pravde net izvestiy, v Izvestiyakh net pravdy
11:51:10 <Deewiant> Actually I didn't even know about that
11:51:17 <Deewiant> Data.HashTable doesn't say it's deprecated
11:52:01 <elliott> Deewiant: Well, I know that people who use HashTable are yelled at :-)
11:52:14 <Deewiant> Probably because they don't have a good reason for using it
11:52:28 <elliott> http://gregorycollins.net/posts/2011/06/11/announcing-hashtables is pretty biased, obviously, but comes down to "lol the structure sucks".
11:52:51 <elliott> /home/elliott/Code/GPipe/src/Resources.hs:124:62:
11:52:51 <elliott> No instance for (Data.ListTrie.Base.Map.Map
11:52:51 <elliott> Map (ShaderKeyNode, [Int]))
11:52:51 <elliott> arising from a use of `TrieMap.lookup'
11:52:53 <elliott> Deewiant: This your fault?
11:53:17 <elliott> Gah, the GitHub commit is older than the targz
11:54:13 <oerjan> elliott: i thought the hashtable implementations had been greatly improved
11:54:23 <oerjan> but maybe it hasn't reached that module
11:55:05 <oerjan> elliott: i dunno, but why wouldn't they replace the base version if there are improvements...
11:55:50 <oerjan> oh there was this GC card marking thing, which presumably helps for all implementations...
11:56:05 <oerjan> but i guess that's old news now
12:01:33 <elliott> the hierarchical layout of this package
12:01:37 <elliott> entirely from the hierarchical packages
12:01:41 <elliott> importing and reexporting flat-hierarchy packages
12:01:46 <elliott> Graphics.GPipe.FrameBuffer
12:01:54 <elliott> with a bunch of re-exported stuff
12:03:08 -!- augur[sleep] has changed nick to augur.
12:07:25 <elliott> dear GOD this code is horrible
12:10:01 <elliott> extensions: ParallelListComp
12:10:06 <elliott> GeneralizedNewtypeDeriving
12:10:25 <oerjan> "And the LORD heard Elliott, and He smote the code with fire and obliterated it from the world. Then He got annoyed when elliott complained of his burning computer."
12:10:28 <elliott> Patashu: this has nothing to do with haskell
12:10:36 <elliott> and those are all reasonable extensions
12:10:40 <elliott> i'm complaining about the way they're being used
12:32:10 <elliott> Deewiant: OK, seriously, how the heck could cabal compile a module, but with all the same extension flags set, GHCi be unable to load it because of a missing list-tries instant?
12:33:29 <Deewiant> list-tries uses CPP, maybe that's being somehow problematic?
12:33:43 <Deewiant> Although that shouldn't cause that kind of error
12:35:01 <elliott> Deewiant: I sure hope it isn't recompiling list-tries when I load it in ghci
12:35:05 <elliott> ghc --make with the same flags also fails
12:35:34 <elliott> Deewiant: Well, I do have to do "-hide-package monads-tf", so that Control.Monad.Reader imports correctly in the module I'm compiling
12:35:44 <Sgeo> What's wrong with those extensions?
12:35:44 <elliott> But I don't think there's any way for list-tries to observe this and fail to provide an instance because of it
12:39:37 * Sgeo wonder how much that lucid dreaming sleeping mask is
12:40:01 <elliott> Deewiant: I've got a conveniently-clonable repository that proves it doesn't WFY :P
12:40:39 <elliott> git://github.com/ehird/GPipe.git :-P
12:40:51 <elliott> (src/Resources.hs, to be specific; warning: hideous)
12:40:55 * Sgeo has no desire to muffle sounds at night
12:41:04 <Sgeo> What if there's an emergency of some sort?
12:41:32 <Sgeo> http://www.sleepmaster.us one of my Google results. Also, not exactly what I'm googling for anyway
12:42:15 <Sgeo> http://www.amazon.com/Dreamer-Lucid-Dreaming-Induction-Device/dp/B003EH4V8I/ref=sr_1_2?ie=UTF8&qid=1312288764&sr=8-2 ok, that's a bit expensive
12:42:25 <elliott> well duh, it does induction
12:42:36 <elliott> as oerjan can tell you, that's very difficult.
12:44:07 -!- TeruFSX has joined.
12:44:38 <fizzie> "Proof by Engineer's Induction: Suppose P(n) is a statement. 1. Prove true for P(1). 2. Prove true for P(2). 3. Prove true for P(3). 4. Therefore P(n) is true for all n."
12:45:11 <Deewiant> Warning: This package indirectly depends on multiple versions of the same
12:45:11 <Deewiant> package. This is highly likely to cause a compile failure.
12:45:11 <Deewiant> package GPipe-1.3 requires containers-0.3.0.0
12:45:11 <Deewiant> package list-tries-0.4.1 requires containers-0.4.0.0
12:46:02 <elliott> build-depends: containers >= 0.3 && < 0.4,
12:46:25 <elliott> Deewiant: Still -- not sure how that should change my ghci results.
12:46:31 <elliott> Deewiant: I mean, it's not looking at the cabal file.
12:46:59 <elliott> And it works with the cabal compile, anyway ;-)
12:47:46 <elliott> Deewiant: So, erm, wait, list-tries' containers dependency is a bit wide-ranging
12:47:49 <Deewiant> elliott: So what was the issue, 'cabal build' works but 'ghci src/Resources.hs' doesn't?
12:47:55 <elliott> Is it meant to pull in point-three or point-four
12:48:09 <elliott> Deewiant: cabal build works but ghc --make -hide-package monads-tf (ALL THE EXTENSION FLAGS) src/Resources.hs doesn't
12:48:14 <elliott> (Similarly for s/ghc --make/ghci/)
12:48:56 <Deewiant> It's meant to pull in the latest you've got
12:49:17 <Deewiant> It worked with point-two until last september when I pulled out the workarounds for it
12:51:34 <Deewiant> Anyway, I don't know what cabal does with that multiple versions stuff
12:52:09 <Deewiant> I can imagine it building everything against 0.3 and then ghci looking only at list-tries's dependency on 0.4 (since that's what it was built against) and that not working then
12:52:34 <elliott> There is no multiple versions stuff in the source
12:52:38 <Deewiant> Like said, I don't know what it does
12:52:38 <elliott> That's purely in the cabal file
12:53:09 <elliott> This is going to make my modifications quite difficult :)
12:53:13 <Deewiant> 'cabal build' would grab whatever it thinks is fine, and I don't know what it thinks is fine if that depends on 0.3 but its dependencies on 0.4
12:53:41 <Deewiant> 'ghc'/'ghci' would look at 'ghc-pkg describe list-tries' (and for all the other dependencies) and go 'ah, 0.4'
12:53:46 <elliott> elliott@katia:~$ ghc-pkg list | grep containers
12:53:47 <elliott> WARNING: there are broken packages. Run 'ghc-pkg check' for more details.
12:53:57 <elliott> There are problems in package hashed-storage-0.5.7:
12:53:57 <elliott> dependency "binary-0.5.0.2-b471fd4ae9e6a992eed4cf652dba019b" doesn't exist
12:53:57 <elliott> The following packages are broken, either because they have a problem
12:53:57 <elliott> listed above, or because they depend on a broken package.
12:54:23 <Deewiant> But I guess it shouldn't matter since those aren't being used here
12:55:32 <elliott> There are problems in package list-tries-0.4.1:
12:55:32 <elliott> dependency "binary-0.5.0.2-67c6c6f05b738dc39b1e1d3f0e7a53aa" doesn't exist
12:55:32 <elliott> The following packages are broken, either because they have a problem
12:55:32 <elliott> listed above, or because they depend on a broken package.
12:55:56 <elliott> $ cabal install binary-0.5.0.2-67c6c6f05b738dc39b1e1d3f0e7a53aa
12:55:56 <elliott> No packages to be installed. All the requested packages are already installed.
12:55:56 <elliott> If you want to reinstall anyway then use the --reinstall flag.
12:56:17 <Deewiant> cabal install --reinstall binary-0.5.0.2 and everything that depends on it
12:56:25 <elliott> How do I know what depends on it :P
12:56:46 <fizzie> I thought there was no Cabal. :/
12:56:50 <elliott> The following packages are broken, either because they have a problem
12:56:50 <elliott> listed above, or because they depend on a broken package.
12:56:56 <elliott> Deewiant: It is missing at least hashed-storage
12:57:00 <elliott> Because of the different hash
12:57:15 <elliott> How did my packages get so broken :/
12:57:19 <Deewiant> elliott: Well, you only need to reinstall the ones that depend on the missing hash :-P
12:58:08 <Deewiant> My alternative solution that I have sometimes applied is rm -rf ~/.cabal/lib
12:58:10 <elliott> Hmm, it occurs to me that I've never used GraphViz before
12:59:35 <elliott> dot sure does fail on ghc-pkg
13:00:05 <elliott> Fifteen thousand by one thousand three hundred
13:00:08 <Deewiant> The recommendation was ghc-pkg dot | tred | dot -Tpdf >pkgs.pdf
13:00:47 <elliott> Deewiant: That helps... a bit
13:01:38 <elliott> Deewiant: There appears to be no binary on this graph
13:02:24 <elliott> Deewiant: Apparently list-tries just depends on containers and dlist
13:02:46 <Deewiant> It should depend on binary and base as well
13:03:10 * elliott tries reinstalling binary, list-tries, GPipe, GPipe-TextureLoad
13:03:17 <Deewiant> ghc-pkg describe doesn't, it seems strange that ghc-pkg dot would
13:03:27 <Deewiant> You sure it's not because of the tred
13:03:51 <Deewiant> I guess not because containers doesn't depend on binary
13:03:58 <Deewiant> tred - transitive reduction filter for directed graphs
13:04:13 <elliott> But bytestring depends on binray
13:04:23 <elliott> And I bet something that list-tries depends on depends on binary :P
13:05:05 <elliott> Now to recompile binary, hashed-storage, and darcs
13:05:15 <Deewiant> containers depends only on array and base, which don't
13:05:23 <Deewiant> dlist depends only on base, which doesn't
13:06:34 <elliott> GPipe depends on everything, though :-P
13:12:14 <elliott> There are problems in package list-tries-0.4.1:
13:12:14 <elliott> dependency "binary-0.5.0.2-67c6c6f05b738dc39b1e1d3f0e7a53aa" doesn't exist
13:12:14 <elliott> The following packages are broken, either because they have a problem
13:12:14 <elliott> listed above, or because they depend on a broken package.
13:12:22 <oerjan> <elliott> How did my packages get so broken :/ <-- sounds like augustss's (?) "butterfly" conflicts?
13:12:23 <elliott> It's literally toggling between those two as I reinstall binary
13:14:40 <elliott> Oh well, I don't have _that_ many packages installed
13:15:01 <elliott> Installing darcs, GPipe, and cid-state should get most of them
13:15:03 <Deewiant> http://cdsmith.wordpress.com/2011/01/17/the-butterfly-effect-in-cabal/ presumably
13:15:05 <oerjan> elliott: if you aren't having a conflict within a single application, you might try cabal-dev
13:15:19 <elliott> yeah I've considered cabal-dve
13:15:33 <elliott> Oh I need to install hscolor too
13:15:40 <elliott> Which needs to be done bootstrappingly
13:15:44 <Deewiant> elliott: "What [cabal] does is certainly… suboptimal. When you build twitclient, it will recompile twittertags against parsec-2.1, which will break superblog. If you then reinstall superblog to fix it, Cabal will recompile twittertags against parsec-3.1, and break twitclient… and so on, ad infinitum."
13:15:48 <elliott> Because I'm OCD enough to die if hscolor doesn't get hscolor documentations
13:15:54 <elliott> Deewiant: BUT THEY'RE THE _SAME_ _VERSION_
13:16:00 <elliott> How can the same version have two hashes????????????
13:16:15 <elliott> Dependenciesbase (<2.0), bytestring (≥0.9) or
13:16:15 <elliott> base (≥3 & <3.0), bytestring (≥0.9) or
13:16:15 <elliott> array, base (≥3.0), bytestring (≥0.9), containers
13:17:08 <elliott> Well, from Hackage, but yeah
13:17:23 <elliott> So different hashes because different dependencies
13:17:32 <Deewiant> Right, so the butterfly effect in this case is binary getting built against different stuff
13:17:34 <elliott> There's no way that one is getting selected
13:17:47 <elliott> I guess I should nuke ~/.cabal and ~/.ghc, right?
13:17:56 <elliott> And then install binary manually, I guess
13:18:05 <elliott> I don't even know why list-tries got built against different stuff
13:18:12 <Deewiant> I wouldn't nuke .cabal unless you save .cabal/config
13:18:19 <elliott> Is it because GPipe has that old containers dependency?
13:18:32 <elliott> And binary just depends on "containers"
13:18:49 <elliott> That doesn't explain anything
13:19:01 <Deewiant> It somewhat explains its dependency style
13:19:18 <elliott> GPipe pulls in list-tries (which needs containainers and is ok with point three), and also pulls in containers which MUST be zero point three; and binary gets pulled in
13:19:24 <elliott> But we can't use a binary built against containers zero point four
13:19:30 <elliott> So cabal builds a binary against containers zero point three
13:19:33 <elliott> Links list-tries and GPipe against it
13:19:56 <elliott> So if I change GPipe's containers dependency to "containers >= 0.4 && < 0.5,", everything should be fine
13:20:06 <elliott> Deewiant: Anyway if binary is old, why do you depend on it :-P
13:20:27 <Deewiant> "Hey, depend on this" and I was like "ok"
13:20:38 <Deewiant> (They wanted Binary instances)
13:20:43 <elliott> It would simplify my life were you to remove that dependency :-P
13:21:00 <Deewiant> I think a lot of people use Binary for stuff
13:21:08 <elliott> So make list-tries-binary?
13:21:23 <elliott> That's the "standard" thing, at least.
13:22:06 <elliott> There's plenty of "instance glue" packages out there
13:22:34 <elliott> Just put them in Data.ListTrie.Binary
13:22:36 <Deewiant> Aren't orphan instances supposed to be bad
13:22:47 <elliott> Deewiant: That's a controversial opinion :-P
13:23:18 <elliott> And in this case it's pretty unambiguous
13:23:27 <elliott> Because you'd only want one instance of Binary
13:24:58 <elliott> As you may have gathered I'm forking GPipe to s/GLUT/GLFW-b/
13:25:04 <elliott> And hopefully reduce the ugly Vec shit
13:25:19 <elliott> So my official opinion in that capacity is that I hate your binary dependency :-)
13:25:42 -!- Taneb has quit (Read error: Connection reset by peer).
13:26:42 <oerjan> elliott: btw i realized that i might be able to reorganize if (!a) { a = C1*b+D1; b=0; } as b = C1*b+D1; if (a) { b = (b-D1)/C1; } modulo some moving around, so the 3-cell attempt is not quite dead yet.
13:28:53 -!- oerjan has quit (Quit: Later).
13:29:43 <Deewiant> elliott: Too bad, the Set types need the instance for an unexported type
13:30:48 <Deewiant> As in: I'm not sure the instances can be defined with just the public API
13:31:02 <elliott> Then your API is not good enoug :P
13:31:35 <elliott> I mean, if someone can't implement their own alternate binary serialisation for some other package with your aPI, that kind of sucks
13:40:49 <elliott> Haha, shit, I clobbered cabal-install
14:01:37 <elliott> Deewiant: Hooray, now it works
14:08:10 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:08:56 <elliott> It is ridiculous how many maps this thing has
14:08:59 <elliott> Just to support multiple windows
14:09:02 <elliott> Does anyone use multiple windows
14:11:03 -!- MSleep has changed nick to MDude.
14:17:57 -!- Taneb has joined.
14:18:29 -!- Patashu has quit (Ping timeout: 240 seconds).
14:21:54 <elliott> Deewiant: Do you know of a Haskell reformatter tool, GPipe's code is really right-leaning and just hideous
14:30:29 <elliott> ?hoogle (a -> m ()) -> Maybe a -> m ()
14:30:29 <lambdabot> Data.Foldable traverse_ :: (Foldable t, Applicative f) => (a -> f b) -> t a -> f ()
14:30:29 <lambdabot> Data.Foldable mapM_ :: (Foldable t, Monad m) => (a -> m b) -> t a -> m ()
14:30:29 <lambdabot> Prelude (=<<) :: Monad m => (a -> m b) -> m a -> m b
14:32:08 <elliott> where takeOne a = case Map.lookup w a of
14:32:09 <elliott> Nothing -> Left $ Map.elemAt 0 a
14:34:53 -!- lament has joined.
14:42:49 <Deewiant> Does that just lookup again if the lookup failed? :-P
14:44:56 <elliott> Deewiant: I thought the (Map GLUT.Window TextureObject) would translate to (Maybe TextureObject)
14:45:18 <elliott> I would think it'd just be TextureObject, but, haha no, because it treats the Left and Right results differently there
14:45:29 <elliott> In that the Right result just sets the textureBinding but the Left result initialises everything
14:45:34 <elliott> I have no clue what it's actually trying to do
14:49:02 -!- copumpkin has joined.
14:49:08 -!- CakeProphet has joined.
14:49:08 -!- CakeProphet has quit (Changing host).
14:49:08 -!- CakeProphet has joined.
15:21:12 -!- lambdabot has quit (Ping timeout: 252 seconds).
15:32:15 <elliott> Is there a way to tell git you moved a file after-the-fact?
15:33:01 <Deewiant> What I tend to do is git rm the old location and git add the new
15:34:26 <elliott> Doesn't that make it not record it as a rename
15:34:47 <Deewiant> It should detect it, if you check git status it should say it was renamed
15:43:00 <elliott> Hmm, wonder if I should migrate it to another vector/linear algebra library
15:43:03 <elliott> vect or hmatrix or repa or something
15:47:15 -!- azaq23 has quit (Ping timeout: 252 seconds).
15:55:59 <fizzie> Move it back and then "git mv" it for reals?
15:57:09 <elliott> That's the Boering 747 solution.
15:57:40 <Deewiant> Strictly speaking that's not how you "tell git you moved a file after-the-fact"
16:04:19 <elliott> The Vec library looks like how my code ends up before I realise I've made a terrible mistake and abandon it.
16:11:04 -!- lament has quit (Ping timeout: 252 seconds).
16:11:20 -!- Nisstyre has quit (Ping timeout: 264 seconds).
16:13:46 -!- derrik has joined.
16:24:13 -!- Nisstyre has joined.
16:31:35 -!- elliott has quit (Remote host closed the connection).
16:32:18 -!- elliott has joined.
16:37:29 -!- MigoMipo has joined.
17:05:41 <elliott> copumpkin: do you have a link to that generalised static-length vector fold you linked a while ago? it was on hpaste
17:10:31 <elliott> hmm, it'd be nice if the VecFlip stuff could be abstracted out somehow...
17:12:10 <elliott> mapV f = unCev . foldrV (\x xs -> f x -: xs) (Cev V)
17:12:14 <elliott> I guess that's good enough
17:13:06 -!- augur has quit (Remote host closed the connection).
17:28:28 -!- Taneb has quit (Ping timeout: 260 seconds).
17:49:33 -!- sebbu has quit (Ping timeout: 246 seconds).
17:50:29 -!- sebbu has joined.
17:56:13 -!- sebbu has quit (Read error: Connection reset by peer).
17:56:38 -!- sebbu has joined.
17:56:39 -!- sebbu has quit (Changing host).
17:56:39 -!- sebbu has joined.
18:09:20 -!- pingveno_ has joined.
18:10:11 -!- pingveno_ has quit (Client Quit).
18:10:33 -!- pingveno has joined.
18:17:56 -!- Taneb has joined.
18:19:13 <Taneb> Well, thanks to Scandinavia in the World, I've started swearing in vilely mispronounced Finnish
18:26:32 <fizzie> Scandinavia outside the World.
18:26:50 <Taneb> I type pseudophonetically
18:27:13 <fizzie> Scandandavia, sounds funky.
18:37:36 <Taneb> I really should stop typing phonetically
18:39:09 <itidus20> http://www.artchive.com/artchive/m/magritte/telescop.jpg
18:40:47 <itidus20> next to the random place i found it on a forum someone said "Note that you can only see when you look through the glass. I saw this one in person, and it was stunning. There's something frightening about the black outside. "
18:45:18 <Sgeo> Parting channels in Quassel is a bit more aggrivating than it needs to be
19:16:26 <Sgeo> elliott, Phantom_Hoover update
19:18:28 <fizzie> So what does the updated Phantom_Hoover do that the old one didn't?
19:19:22 <Taneb> ...I read MSPA too, guys
19:20:00 <elliott> Taneb: You don't count as human, though.
19:20:27 <Taneb> THE SUSPICIOUS LACK OF IRONY IN THE UPCOMING REVALATION
19:20:38 <elliott> You misspelled revelation.
19:20:45 <Taneb> I misspell nothing.
19:21:04 <Taneb> Speech is the natural form of the language, spelling is based on speech
19:21:38 <derrik> Taneb: both are natural forms of language..
19:22:41 <derrik> your spelling may suck so bad that it cannot be considered language.. then it's not natural
19:31:39 -!- monqy has joined.
19:32:46 * pikhq_ is tempted to write a partial git implementation. Anyone think of reasons I shouldn't?
19:33:02 <Taneb> There is absolutely no reason to?
19:33:06 <monqy> how bothersome would it be
19:33:08 <pikhq_> Taneb: Aside from that.
19:33:22 <pikhq_> monqy: Actually, the core semantics of git seem utterly *simple*.
19:33:39 <pikhq_> It's just a fairly simple immutable data structure.
19:35:31 <Taneb> I'll help, if I can
19:38:00 -!- derrik has left.
19:38:19 <elliott> monqy: hi i forked gpipe into glfwpipe
19:41:55 <Taneb> However, I probably will not be able to help
19:42:09 <Taneb> I'm here to make myself feel stupis
19:43:08 -!- elliott has quit (Ping timeout: 264 seconds).
19:57:08 -!- oerjan has joined.
19:59:20 <Taneb> I feel like changing the Numberwang spec so its less easily proved Turing Complete
20:00:39 <oerjan> <elliott> Deewiant: Do you know of a Haskell reformatter tool, GPipe's code is really right-leaning and just hideous
20:00:58 <oerjan> there was a reddit thread about this just last week
20:01:06 <monqy> what does right-leaning mean help
20:01:30 <oerjan> monqy: too much nesting of indentation levels, i assume
20:02:19 <oerjan> http://www.reddit.com/r/haskell/comments/j31f4/is_there_a_haskell_code_formatter/
20:02:31 <oerjan> (includes link to stackoverflow)
20:05:02 <oerjan> <Taneb> Well, thanks to Scandinavia in the World, I've started swearing in vilely mispronounced Finnish
20:05:14 <oerjan> perkele hakkapellittä!
20:05:31 <Taneb> I'm assuming perkele isn't pronounced perk-ell-ay
20:05:53 <oerjan> (i'm not sure if that ä should be an a)
20:06:14 <oerjan> Taneb: i think that's about as close as you could expect from an englishman
20:06:32 <oerjan> well the perk might need some work
20:06:42 <fizzie> oerjan: "Hakkapellittä" -- "without a hakkapelti". ITYMM "hakkapeliitta".
20:06:53 <oerjan> fizzie: quite possibly
20:07:12 <oerjan> fizzie: but then it was supposed to be vilely mispronounced, anyway
20:07:13 <fizzie> It's not much of a swearword really.
20:07:17 <Deewiant> Taneb: http://www.youtube.com/watch?v=u1PjDNWFOAc
20:07:41 <oerjan> fizzie: maybe not, but it sounds like one to a norwegian
20:07:54 <oerjan> dæven hakke og skalpere
20:08:19 <Taneb> I managed to read that as "Does Haskell have Shakespeare?"
20:09:11 <Taneb> ...Does Haskell have Shakepeare?
20:09:38 <oerjan> except for replacing the "dæven" by a euphemism, i think that's the signature swearing style of an old norwegian comic character, "obersten"
20:10:10 <fizzie> Shakespeare's page only has C and Perl implementations, no Haskell there.
20:10:35 <Taneb> A challenge! For a better programmer than I
20:11:27 <oerjan> Taneb: i think your "than I" is actually grammatically incorrect in that position *MWAHAHAHA*
20:11:43 <olsner> you can use any finnish word as a swear word (as long as no-one knows finnish)
20:11:48 <olsner> http://www.youtube.com/watch?v=b82jMIkZMv0#t=34s for example
20:12:15 <oerjan> (it's "for me", so it should be "for ... than me")
20:12:17 <Taneb> Olen käsine! Ei, olen kaksi käsineet!
20:12:57 <oerjan> otoh you _could_ think of it as eliding a final "am". hm...
20:13:49 <Taneb> "I am a glove! No, I am two gloves!" is my standard foreign phrase
20:14:26 <fizzie> Then it's "kaksi käsinettä"; the "kahdet käsineet" variant would be "two pairs of gloves".
20:14:44 <oerjan> Eg er ein hanske! Nei, eg er to hanskar!
20:14:53 <oerjan> (there's your nynorsk)
20:15:04 <Deewiant> Or "two sets of gloves" in general, but I guess you can assume they're pairs
20:15:32 <olsner> hmm, I was about to write the swedish, but half-way through realized I was writing it in english
20:15:54 <olsner> Jag är en handske! Nej, jag är två handskar!
20:16:09 <fizzie> Though I think "hanska" is perhaps closer to "glove" maybe. Or a slightly less formal term anyway. (No points for guessing from where *that* word comes from.)
20:16:45 <Deewiant> I think it's just the more informal variant
20:17:15 <fizzie> Wiktionary translates "käsine" as "any garment used to protect a hand, such as glove or mitten", while hanska/hansikas is only "glove".
20:17:41 <fizzie> And indeed I can imagine a non-glove "käsine".
20:18:06 <olsner> swedish has "vantar" for mittens and less formal gloves
20:18:24 <olsner> less formal or technical, in case of e.g. surgical gloves
20:19:29 <fizzie> "vanttuut /pl/ 1. (dialectal) One ore more pairs of knitted mittens or mitts. Singular form vantus is only rarely used." --wiktionary. Oo, it's quite comprehensive.
20:20:05 <oerjan> vott are you talking about
20:20:43 <Taneb> Laughing at this headline: http://www.bbc.co.uk/news/technology-14370878
20:20:55 <olsner> though we actually call mittens something like thumbmittens in swedish
20:22:14 <oerjan> "The report has sparked anger from IE supporters, who have threatened AptiQuant with legal action.
20:22:48 <olsner> NihilistDandy: are you from iceland?
20:23:44 <fizzie> oerjan: Are you even allowed to quote things without following-up with a pun?
20:24:11 <NihilistDandy> I think it started when the volcano was blowing up, and I wanted to learn how to pronounce its name properly
20:25:15 <oerjan> fizzie: i cannot comment on that, i may be involved in a relevant class action suit
20:26:04 <olsner> NihilistDandy: so from there you went to learning the whole language? wow...
20:26:25 <NihilistDandy> olsner: I don't need a lot of motivation to learn a language :D
20:26:54 <Taneb> You could be the next Tolkein!
20:27:18 <Taneb> No, definitely Tolkein.
20:27:26 <Taneb> Who'd want to be Tolkien?
20:27:28 <NihilistDandy> Also, I once tried to learn Elvish when I was like 8, but I got bored.
20:27:42 <olsner> might be missing an article for the "a glove" case there, but I don't know icelandic well enough to know if they use those the same way we do
20:27:44 <oerjan> dammit i may no longer be the most awesome /// programmer
20:27:54 <olsner> looks like it's saying "I am glove"
20:28:35 <olsner> (that felt like it needed saying in all-caps)
20:28:42 <fizzie> Too glove for my shirt, like the popular song goes.
20:29:17 <Taneb> Je suis trop gants pour ma chemise?
20:30:13 <fizzie> Not just Tolkein, maybe the Tolkeist.
20:31:21 <oerjan> <NihilistDandy> Ég er hanska! Nei, ég tvær hanska! <-- isn't there an "er" missing in the last sentence?
20:32:35 <oerjan> olsner: in any case istr icelandic has no indefinite article
20:34:34 <copumpkin> NihilistDandy: if you come to the next bostonhaskell, there's an icelandic dude
20:34:46 -!- boily has quit (Ping timeout: 255 seconds).
20:35:01 <Taneb> Those leaves are getting annoying
20:35:02 <NihilistDandy> Not a lot of use for Icelandic in the middle of nowhere where I am :D
20:36:40 <olsner> I think you'd have to be in the exact same middle of nowhere as iceland to find a use for it :P
20:37:08 <olsner> oerjan: wikipedia agrees with you
20:37:23 <Taneb> Iceland has a comparitive population with Northumberland
20:39:01 <Taneb> I'd like to teach Maths
20:39:29 <oerjan> i love the lava live and it loves me
20:40:37 <Taneb> But you said you want to teach Iceland!
20:40:42 <Taneb> Iceland is not Maths!
20:41:24 <oerjan> i've been wondering if icelandic makes up its own math terms, and up to what level there are enough icelanders to do it...
20:42:22 <oerjan> copumpkin: you should ask the icelandic dude what zygohistomorphic prepromorphism is in icelandic
20:42:23 <Taneb> They may be listening in
20:43:07 <NihilistDandy> oerjan: They probably just reuse old words. There's some language purity movement to replace all loanwords with native Icelandic equivalents
20:43:28 <oerjan> NihilistDandy: well it's that purity which makes it an interesting question, duh
20:43:29 <Taneb> There's one of those for English
20:43:43 <NihilistDandy> oerjan: I'm still not clear on what zygohistomorphic prepromorphism is in English :/
20:43:48 <oerjan> copumpkin: maybe he'll make one up on the spot
20:44:16 <oerjan> NihilistDandy: "zygohistomorphic prepromorphism". hth, and congratulations on speaking a rampantly stealing language.
20:44:18 <copumpkin> oerjan: he'd probably just repeat it to me in english
20:44:37 <olsner> zygohistomorfisk prepromorfism
20:44:45 <olsner> there, "translated" into swedish
20:44:54 <NihilistDandy> Not quite what I meant, but I should have expected that
20:45:00 <oerjan> olsner: *+e and you've got the norwegian
20:46:10 <oerjan> olsner: if it gets _really_ often used, maybe we'll change the z into an s.
20:47:16 <olsner> oh, right, you do that funny respelling words the way they sound
20:47:54 <oerjan> olsner: well you changed the ph to f too
20:52:18 -!- zzo38 has joined.
20:52:33 <zzo38> Is the "clog" broken?
20:54:21 -!- GreaseMonkey has joined.
20:55:43 -!- MigoMipo_ has joined.
20:56:47 <zzo38> What about Inform 7 docs?
20:56:57 <Taneb> You just reminded me of them
20:58:25 -!- MigoMipo has quit (Ping timeout: 258 seconds).
21:00:51 <itidus20> english language would steal a word, and then if anyone else used it it would be called loaned from english
21:01:26 <Taneb> Worked out why I was reminded of Inform 7 docs
21:01:29 <Taneb> "Heatwave bone breaks clog hospital."
21:01:30 <olsner> "whaddayamean, we stole it. it's ours now."
21:23:40 -!- lambdabot has joined.
21:24:59 <Taneb> Is it too late to significantly change the Numberwang spec?
21:25:40 <olsner> yes, they've already made many episodes of mitchell and webb with numberwang, too late to change now
21:26:18 <Taneb> But I was referring to the one of the four+ esoteric programming languages by that name that I invented
21:32:22 <oerjan> well if you invented four+ esoteric programming languages named numberwang i guess it won't really matter if you make one more.
21:32:35 <Taneb> Four have been invented
21:32:46 <NihilistDandy> As long as the total number of languages remains numberwang, all is well
21:33:12 <Taneb> One is useless, and is the only one thusfar implemented
21:33:50 <oerjan> ye olde case sensitive bot
21:33:56 <Taneb> One is a rather lame BF derivative
21:34:35 <Taneb> Numberwang depends on more variables than a single number
21:35:13 <Taneb> No, but I was once in the studio audience of the show
21:45:20 <zzo38> Is it possible to use Template Haskell to implement rulebooks-based programming like Inform 7 does?
21:46:21 <zzo38> Are duplicate definitions allowed in Haskell?
21:48:35 <oerjan> um you cannot define the same identifier twice in the same scope
21:49:29 <zzo38> Even if the definitions are identical?
21:50:08 <oerjan> i don't recall it being allowed, so i would be surprised if it is supported
21:50:15 <oerjan> > let x = 3; x = 3 in x
21:52:26 <zzo38> How much do you know about Template Haskell, though?
21:52:39 <olsner> Taneb: you've seen numberwang *LIVE*!?
21:52:40 <oerjan> i know almost nothing about it
21:52:42 -!- MigoMipo_ has quit (Read error: Connection reset by peer).
21:52:57 <oerjan> as i've never used it myself
21:53:20 <oerjan> it's for compile-time metaprogramming, afaik
21:55:17 <NihilistDandy> There's probably a GHC extension that allows for conflicting definitions~
21:55:51 <Taneb> olsner: Nah, that was a joke. Wish I hadd.
21:56:38 <oerjan> there's OverlappingInstances but that's somewhat different (only applies to selecting which class instance to use for a type)
21:57:16 <oerjan> oh and there's something for records, i think? but they have to be defined in different modules.
21:57:37 <oerjan> and belong to different types.
21:57:59 <zzo38> Do you know, if it is allowed in Template Haskell, to have one $ command that will return something for use of the next $ command that is found if it can use it?
21:58:16 <zzo38> It would seem a bit difficult but I don't know much about it
21:59:09 <oerjan> maybe copumpkin knows, is the resident haskell expert now *evil cackle*
21:59:39 <zzo38> Can you compile Haskell codes into LLVM codes? I have read LLVM documentation it does suppports Haskell calling convention
21:59:52 <oerjan> (he just become a mod of reddit's haskell subreddit)
22:00:27 <coppro> zzo38: Some people have been working on it
22:00:31 <coppro> I do not know how mature it is
22:00:50 <oerjan> zzo38: haskell has an LLVM backend yes, and there's also i believe a package for using llvm's api from haskell
22:01:21 <zzo38> I am not looking for the package for using LLVM's API from Haskell, but thanks for information anyways
22:01:50 <zzo38> I do want to use LLVM's API from C, although I don't know everything about it
22:02:18 <oerjan> as for mature, i think the llvm backend is the recommended one now, and the gcc one has been deprecated
22:02:56 <zzo38> Can you use LLVM with the GHC extensions of Haskell?
22:03:14 <oerjan> well it's a backend for ghc...
22:03:49 <zzo38> Does it have any syntax for adding direct LLVM codes in a Haskell program?
22:03:50 <oerjan> i would assume it supports essentially everything ghc does
22:04:44 <oerjan> zzo38: hm i don't know if you can do that while compiling, there are so many stages
22:05:23 <oerjan> i think i saw a blog post about creating llvm code in a haskell program and then running it
22:07:58 <zzo38> Not what I am looking for, though. What it is, is if there is something for adding LLVM codes into a program similar to "asm" command in C, except using LLVM codes instead of native codes, and for Haskell instead of only with C
22:08:49 <oerjan> like inlining llvm into haskell?
22:11:11 <oerjan> well i found an old reddit thread which doesn't look _that_ promising http://www.reddit.com/r/haskell/comments/cpiwm/ghc_llvm_backend_add_support_for_inline_assembly/
22:14:09 <oerjan> given that you cannot currently even inline ghc _core_, i somewhat doubt it's possible to inline lower level stages
22:14:53 <zzo38> (Actually I would like also supporting inline LLVM codes in other programming languages too, including C and so on, is something like inline assembly codes but can be portable to different computers)
22:17:36 <oerjan> NihilistDandy: there isn't currently a _parser_ for core afaiu
22:18:39 <oerjan> when i looked, i found a badly tested ghc-api function for compiling a module from the internal core representation in ghc
22:19:23 <zzo38> Computer Modern fonts doesn't seem to have lowercase Greek letters without italic
22:19:26 <oerjan> but according to the docs, that only has been tested for a single, whole module
22:20:24 <oerjan> mind you this is coincidentally the only looking into the ghc-api i've done, so i may not be the best person to ask :P
22:21:13 <oerjan> (i kept wondering why the reflection package wasn't implemented in core rather than the ridiculously convoluted portable oleg solution)
22:22:09 <oerjan> zzo38: i guess they're not much used in math
22:22:36 <oerjan> but you'd think there was something for writing text in greek
22:23:46 <zzo38> Of course a parameter file can be written so that it is not slanted, but it would still be italic style and also would still not be a standard file.
22:24:58 <oerjan> zzo38: http://stackoverflow.com/questions/6246310/inline-assembly-in-haskell may be relevant, although that too doesn't seem to allow putting anything directly in the haskell code
22:26:57 <zzo38> Can it be done, declare an external function and then write that function in LLVM telling it to be always inline, and then put the LLVM files together?
22:27:39 -!- Patashu has joined.
22:27:48 <oerjan> hm i don't know if that will work
22:28:15 <oerjan> (as in i don't know, not that i'm doubting it)
22:28:26 -!- nooga has joined.
22:29:02 <nooga> I'm looking for some digestive papers on category theory
22:29:45 <oerjan> sorry, we only have categorical papers on digestion theory
22:30:27 -!- azaq23 has joined.
22:30:28 <nooga> and, so far, I've got some theoretical slides on digestion category
22:37:00 * oerjan learns that there exists http://hackage.haskell.org/package/derp
22:38:22 <oerjan> the backronym looks plausible, i wonder if it was intentional...
22:40:23 <Taneb> I'm going for intentional
22:41:56 <oerjan> sadly there is no herp package yet
23:05:15 -!- olsner has quit (Read error: Operation timed out).
23:07:48 -!- nooga has quit (Ping timeout: 258 seconds).
23:11:36 <oerjan> copumpkin: you're a haskell mod so clearly you must know everything about haskell. QED.
23:15:38 <copumpkin> or maybe I know everything about haskell
23:19:13 <NihilistDandy> Yeah, I don't know what all this hyphen nonsense is about. It's the Curry, Howard Isomorphism
23:34:32 -!- Taneb has quit (Quit: He's a big quitter he is.).
23:54:22 <Lymee> Do doctors carry weather control devices?
23:55:02 <oerjan> well the Doctor probably does.