←2011-08-01 2011-08-02 2011-08-03→ ↑2011 ↑all
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:20:29 <NihilistDandy> It's a funny question, at least
00:41:57 <NihilistDandy> http://www.reddit.com/r/askscience/comments/j66uq/is_it_possible_to_heat_the_planet_via_burning/
00:42:00 <NihilistDandy> Ha
00:45:03 -!- Phantom_Hoover has quit (Quit: Leaving).
00:52:05 <elliott> Hey who plays DF here.
00:52:17 <monqy> should i play df
00:52:36 <NihilistDandy> I played a couple of times
00:52:48 <NihilistDandy> I never remember the damn key bindings
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:16:53 <elliott> wasnt it on pastebin
01:17:24 <NihilistDandy> Someone's shameless self-promotion on #erlang
01:17:24 <NihilistDandy> http://amtal.github.com/2011/07/19/unix-pipes-pointless-functional-programming.html
01:17:29 <bsmntbombdood> pastebin.ca appears to be defunct
01:17:29 <NihilistDandy> Thoughts?
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:03 <NihilistDandy> bsmntbombdood: TO THE LOGS
01:18:12 <bsmntbombdood> NihilistDandy: i've been grepping to no avail
01:18:16 <NihilistDandy> elliott: I don't doubt it.
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:50 <elliott> or uh varargs functions
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:23 <elliott> that's it though
01:21:37 <monqy> what did bsmntbot do
01:21:49 <bsmntbombdood> monqy: everything AWESOME
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:27:35 <elliott> why is opengl so bad :(
01:27:56 <NihilistDandy> Bad developers?
01:28:26 <elliott> no the api
01:28:38 <monqy> opengl has the worst api
01:28:46 <monqy> is there anything worse
01:28:51 <elliott> death??
01:28:54 <monqy> oh no
01:28:58 <pikhq> monqy: Glib
01:29:02 <NihilistDandy> Being drawn and quartered
01:29:07 <monqy> I will try to stay away from glib
01:29:33 <elliott> pikhq: no way
01:29:46 <elliott> you can avoid gobject almost entirely when using glib
01:29:48 <elliott> opengl
01:29:49 <elliott> the horribleness
01:29:51 <elliott> is everywhere
01:30:22 <monqy> last night I tried to opengl again and I just couldn't do it
01:30:31 <elliott> :(
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:41 <monqy> i was too
01:30:41 <elliott> its worse
01:30:45 <elliott> because
01:30:51 <elliott> upon exposure to the opengl
01:30:52 <elliott> haskell goes
01:30:53 <elliott> :(
01:31:10 <elliott> monqy: were you doing it with sdl too, are you actually me
01:31:25 <monqy> yes
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:31 <elliott> SDL's api is really nice
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:32:59 <NihilistDandy> SURPRISE
01:33:03 <elliott> NihilistDandy: GLFW-b is different
01:33:05 <elliott> it's an alternate binding
01:33:08 <NihilistDandy> Ah
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:22 <pikhq> Win32.
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:40 <pikhq> *summon
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:21 <monqy> it's all 2d too
01:34:24 <monqy> if that matters
01:34:24 <elliott> oh
01:34:30 <monqy> by sucks I mean
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> ptr <- mallocBytes size
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:52 <elliott> return (idx+1)) 0 xs
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:03 <elliott> just a few sample lines
01:35:07 <monqy> i died
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:40 <monqy> is gpipe bad
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:08 <elliott> lol
01:36:33 <elliott> haha
01:36:36 <elliott> it depends on Deewiant's trie library
01:37:30 <NihilistDandy> Deewiant wrote GLUT?
01:37:33 <NihilistDandy> TIL
01:37:39 <elliott> yeah totally that is what i said
01:37:48 -!- cheater_ has quit (Excess Flood).
01:37:53 <monqy> im attest
01:37:55 <NihilistDandy> I was only paying half-attention
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:03 <elliott> mine dont even pspin :(
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:14 <monqy> without spinning
01:39:40 <elliott> this is so advantacesd
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:57 <elliott> what is that
01:40:59 <monqy> at least i hope i used preservingMatrix properly
01:40:59 -!- cheater_ has quit (Excess Flood).
01:41:05 <elliott> im dont even know
01:41:25 <monqy> o
01:41:31 -!- cheater_ has joined.
01:41:37 <elliott> i need ur wisdom in my life
01:41:39 <elliott> or i cannot opengl,ever,
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:12 <elliott> wow;
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:29 <monqy> cosT???
01:42:33 -!- evincar has joined.
01:42:39 <elliott> for access to its AMZING, POWERS
01:43:20 <NihilistDandy> cosT = 1/secT
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:03 <elliott> monqy: AT WHAT COST MONQY
01:45:07 <monqy> ihhhh
01:45:08 <elliott> HOW FAR WILL YOU GO
01:45:09 <monqy> its fre?
01:45:27 <elliott> :OOOOOOOoooooooooooooooooooooooooooooo
01:45:30 <elliott> you are so generous
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:49 <monqy> it's like
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> {- do
01:46:03 <elliott> -- ???
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:21 <NihilistDandy> I can't stop laughing
01:46:51 <monqy> i forget what rotate even does
01:46:55 <monqy> bsides rotate
01:47:16 <elliott> monqy: ur people need youuuuuuu
01:47:19 <elliott> ur people = me
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:48:42 <evincar> Three, even.
01:49:11 <elliott> evincar: its,,,,,,, life
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:32 <elliott> monqy: is ur upt tit,clen
01:52:35 <elliott> yay
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:32 <monqy> square width
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:42 <monqy> square width
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:53:50 <monqy> vt w w
01:53:52 <monqy> vt w (-w)
01:53:55 <monqy> vt (-w) (-w)
01:53:57 <monqy> vt (-w) w
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:15 <evincar> Apparently.
01:54:18 -!- cheater_ has joined.
01:54:39 <evincar> So, why "do"?
01:54:48 <elliott> monqy: dont you have any other GL functions in the program
01:54:50 <elliott> i have a lot of
01:54:52 <elliott> light initialisiation
01:54:53 <elliott> things
01:54:54 <elliott> :(
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:17 <elliott> with no cloaes
01:55:27 <elliott> http://www.klein.com/dvk/photos/birds/golden_pheasant.jpg me
01:55:30 <elliott> note lack of cloaes
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:56:09 <elliott> evincar: you need cloaes
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:37 <monqy> well
01:58:38 <elliott> oh
01:58:41 <monqy> a lto of it
01:58:41 <elliott> none at all???????????:(
01:58:41 <monqy> but
01:58:44 <monqy> most is GLFW
01:58:44 <elliott> im basically just
01:58:46 <elliott> without a clue on anything
01:58:48 <monqy> except ofr this really nasty bit
01:58:49 <elliott> that starts with "GL."
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:38 <monqy> GL.loadIdentity
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:00:31 <elliott> i just use a fixed size,
02:00:47 <monqy> i should do that
02:00:57 <monqy> but
02:01:00 <monqy> a bad thing
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:25 <monqy> so
02:01:37 <monqy> if i use SDL...no problem??
02:01:50 <monqy> i really should stop dieying, finish porting....myabe later
02:02:38 <evincar> Myabe indeed.
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:43 <elliott> I AM TORN ASUNDER
02:05:50 <elliott> THIS PRISON OF SHAME I CAN NEVER ESCAPE
02:05:56 <monqy> oh god'e
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:11:41 <elliott> monqy: ur a vitcim
02:11:42 <elliott> of society
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:16 <elliott> monqy: hahahaha
02:15:19 <elliott> is it really called thing
02:15:26 <monqy> :(
02:15:32 <elliott> monqy: did you write that just now when cleaning it up or was it actually already there
02:15:36 <elliott> ?pl b >>= flip when m
02:15:36 <lambdabot> flip when m =<< b
02:15:40 <monqy> help
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:16 <monqy> whjat is that
02:16:31 <elliott> monqy: you asked ed for helpes
02:16:43 <monqy> is that.....thing's name>????????????????????????
02:16:54 <elliott> <monqy> help
02:17:16 <monqy> i have to think of a half decent name right now they are thing and notThing
02:17:44 <elliott> monqy: whenM?
02:17:50 <monqy> i uh
02:17:52 <monqy> have a conefesion
02:17:55 <monqy> that was its
02:17:56 <monqy> former name
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:06 <monqy> with whenM
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:49 <elliott> monqy: well um
02:18:56 <elliott> monqy: I'd just have (flip when) as something
02:18:58 <elliott> and (flip unless)
02:19:00 <elliott> so you could say
02:19:15 <elliott> GLFW.initialize >= orM $ fail "failed to initialize"
02:19:16 <elliott> maybe???
02:19:20 <elliott> orM/andM
02:19:22 <elliott> i dunno
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:20:58 <elliott> letse, ask haskel
02:21:13 <monqy> #haskell?
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:21:34 <elliott> im become you
02:21:43 <monqy> thanske youe
02:22:26 <elliott> <kmc> elliott, *shrug* ugly how?
02:22:26 <elliott> <kmc> uglier than mapM, filterM, zipWithM, etc?
02:22:28 <elliott> he;lp monqy
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:29 <elliott> monqy: well with those
02:23:30 <elliott> :t mapM
02:23:31 <lambdabot> forall a (m :: * -> *) b. (Monad m) => (a -> m b) -> [a] -> m [b]
02:23:32 <elliott> :t filterM
02:23:33 <lambdabot> forall a (m :: * -> *). (Monad m) => (a -> m Bool) -> [a] -> m [a]
02:23:34 <elliott> :t zipWithM
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:28:01 <monqy> ok i think its
02:28:02 <monqy> ready
02:28:39 <elliott> monqy: im
02:28:40 <elliott> rady
02:28:41 <elliott> (mentally)
02:30:39 <monqy> http://dl.dropbox.com/u/13786158/help.tar.bz2 shoulde be eit
02:30:51 <monqy> kindly, compressed
02:31:29 <elliott> kindley,
02:32:16 <elliott> this is, a work of great beuty,
02:32:23 <elliott> asterisk booty
02:32:40 <monqy> i tepyed it all with ym....posteriour
02:32:50 <elliott> a posteriori
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:14 <elliott> o
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:34:24 <elliott> im, dont know yet,
02:34:29 <elliott> im try glfw-b tfrist,
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:26 <elliott> wowee is, the best game,
02:35:37 <elliott> also it, is using all my cpu ?
02:35:55 <monqy> i didnt borhter throtelying the framerate oops
02:36:07 <elliott> oops,
02:36:16 <monqy> next time....
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 <NihilistDandy> --glabol
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:26 <elliott> monqy: im truly ages,
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:26 <monqy> months....
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:12 <monqy> :'(
02:39:16 <elliott> frp is, fraught, with problems, for, reasons,
02:39:21 <elliott> reason onE, space laeak
02:39:25 <monqy> oh no
02:39:32 <NihilistDandy> bananabananabanana
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:46 <monqy> ho no
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:24 <NihilistDandy> I've heard good things
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:07 <monqy> demand
02:41:08 <monqy> is the d
02:41:30 <monqy> there was a webpage,,,but i forgrot everything it said
02:41:34 <monqy> oops
02:41:46 <elliott> reactive demand pugs
02:44:43 <elliott> monqy: ok i,
02:44:44 <elliott> installed gpipe,
02:44:46 -!- Fenhl has left.
02:44:47 <elliott> how does it not, work for you?
02:44:52 <monqy> it uh
02:44:53 <monqy> i forget
02:44:57 <monqy> i think itwas the examples
02:44:59 <monqy> that didfnt'e compile
02:45:04 <monqy> and i kind of
02:45:05 <monqy> gave up then
02:45:07 <monqy> oops
02:45:36 <monqy> the
02:45:39 <monqy> gpipe-examples
02:45:41 <monqy> i think
02:46:12 <elliott> i will try or nyou
02:46:16 <elliott> cabal: unrecognised command: intsall (try --help)
02:46:19 <elliott> help
02:46:24 <monqy> try...install
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:18 <elliott> monqy: me too,
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:03 <monqy> georcete what
02:48:07 <monqy> i meant
02:48:08 <monqy> correct
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:48:59 <monqy> didn't work
02:49:08 <elliott> lets, find out whats in the box
02:49:16 * elliott looks at, the box
02:49:23 <elliott> oh my god
02:49:28 <elliott> monqy: look at demonHead :: [CUChar]
02:49:34 <elliott> it's a fucking gigantic list
02:49:35 <monqy> demonHead
02:49:39 <elliott> look at it
02:49:41 <monqy> og hod
02:49:42 <elliott> get gpipe examples and just look at it
02:49:43 <elliott> the second one
02:49:48 <elliott> jesus
02:49:55 <elliott> who thought that wwas a good idea
02:50:07 <monqy> ogh od
02:50:23 * elliott control c
02:50:25 <monqy> poor
02:50:27 <monqy> ghc
02:50:29 <elliott> monqy: gpipe examples, bad examples,
02:50:31 <elliott> but maybe gpipe, not bad,
02:50:33 <elliott> but
02:50:37 <elliott> foo :. bar :. ()
02:50:38 <elliott> bad, because ugly,
02:50:45 <monqy> yeah i dislike it too
02:50:45 <elliott> but maybe, wrappable
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:24 <monqy> where there
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:32 <monqy> good;e lucke
02:52:37 <elliott> -- windopening
02:52:40 <elliott> i like, your comnets
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:17 <monqy> or......
02:53:19 <monqy> the BEST????
02:53:35 <elliott> http://hackage.haskell.org/packages/archive/SDL/0.6.2/doc/html/Graphics-UI-SDL-Time.html
02:53:37 <elliott> should,,, i use this,
02:53:48 <monqy> is it
02:53:49 <monqy> a godo thing
02:53:55 <elliott> "SDL_GetTicks() tells how many milliseconds have past since an arbitrary point in the past.
02:53:56 <elliott> "
02:54:00 <elliott> maybe????
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:54:42 <elliott> just alpha bit depth,
02:54:48 <monqy> alpha bit depth
02:54:50 <monqy> yes
02:54:53 <monqy> i thingk
02:54:54 <monqy> at least
02:56:31 <elliott> -- using angle for things other than rotation like a TOTAL LOSER
02:56:32 <elliott> oh
02:56:40 <monqy> i
02:56:43 <monqy> didn't kwnoe
02:56:45 <monqy> what todoo
02:56:49 <monqy> so i had to
02:56:51 <monqy> discipline myself
02:56:52 <monqy> in coments
02:57:01 <elliott> im dont like how you leave a blank line after all your imports
02:57:02 <monqy> ;_;
02:57:17 <elliott> like, so there is,
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:06 <monqy> what is this
03:00:07 <monqy> gnu theng
03:00:27 <monqy> Did you mean:
03:00:28 <monqy> Nu THAng
03:00:28 <monqy> GUn THIng
03:00:30 <NihilistDandy> I can't remember if this came from this channel
03:00:30 <monqy> helep
03:00:30 <NihilistDandy> http://www.reddit.com/r/explainlikeimfive/comments/j4ohk/explain_the_pnp_problem_li5/
03:00:39 <NihilistDandy> monqy: GNU metal
03:01:24 <monqy> i do not feel comfortable with form feeds
03:01:25 <monqy> they are
03:01:27 <monqy> too powerful
03:01:37 <elliott> monqy: ok, im, almost done convertheing it
03:02:12 <monqy> is it
03:02:14 <monqy> beaugtufle
03:03:51 <elliott> monqy: more, beautifuler,
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:45 <monqy> oh
03:04:47 <monqy> is glfloat
03:04:48 <monqy> better
03:04:54 <elliott> monqy: also i take it, your things are all separate IORefs, because of glfw,
03:05:00 <monqy> yes
03:05:01 <monqy> :(
03:05:05 <elliott> you should, probably use ReaderT, with MVars,
03:05:11 <monqy> probalby,
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:42 <elliott> what is theta,
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:10 <elliott> oh game loops
03:06:13 <elliott> um
03:06:15 <elliott> game busyloops
03:06:15 <elliott> lol
03:06:21 <monqy> yeah :(
03:06:36 <monqy> theta was the rotation angle but then other stuff happened
03:06:38 <monqy> like translation
03:06:39 <NihilistDandy> For the sake of curiosity, whose mannerisms are you mimicking right now?
03:06:42 <monqy> and
03:06:46 <elliott> NihilistDandy: ours
03:06:57 <monqy> it became averything
03:07:05 <NihilistDandy> Oh, fun.
03:07:10 <elliott> monqy: its ok, im going to, give it a proper game loop
03:07:12 <elliott> lovingly
03:07:16 <elliott> bye bye, quitter thing,
03:07:20 <monqy> bye bye
03:07:23 <monqy> i will not, miss you
03:07:48 <elliott> monqy: so what is theta exactly
03:07:52 <elliott> just like
03:07:53 <elliott> a game counter
03:07:56 <monqy> ther eis no exact meaning
03:07:58 <elliott> at this point??
03:08:02 <elliott> it's like ticks isn't it
03:08:03 <monqy> check render for usage
03:08:04 <elliott> and do you like
03:08:06 <elliott> ok
03:08:08 <monqy> no ticks goes in time
03:08:14 <monqy> er
03:08:16 <elliott> modifyIORef theta (+ (delta * 10))
03:08:17 <monqy> time goes in time
03:08:19 <NihilistDandy> check render for ticks
03:08:21 <elliott> does theta ever decrease
03:08:32 <monqy> no
03:08:34 <elliott> monqy: ok so basically time is time, theta is ticks, which happen to be used as angle
03:08:37 <elliott> right??/////
03:08:44 <monqy> maybe??
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:04 <monqy> i kind of
03:09:05 <monqy> forget
03:09:06 <monqy> why
03:09:08 <monqy> i have it
03:09:10 <monqy> oops
03:09:13 <elliott> oops
03:09:37 <monqy> maybe it s historical cruft i never removed
03:09:38 <monqy> probalby
03:09:41 <monqy> this is my answer
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:47 <elliott> too, arbaojrbtary,
03:14:49 <evincar> I stopped paying attention because of your shenanigans.
03:14:55 <elliott> our shannigans
03:14:56 <elliott> are good
03:14:57 <elliott> ok
03:14:57 <elliott> racist
03:15:19 <evincar> You're the first one to say anything about race. Now who's the racist?
03:15:23 <elliott> raciest
03:15:26 <elliott> monqy: also, does your key stuff trigger on key up, or key down
03:15:30 <evincar> Mrowr.
03:17:16 <elliott> monqy: also, you indent, by one too many spaces,
03:17:18 <elliott> :(
03:18:14 <monqy> im back. hi
03:18:22 <elliott> monqy: how many ticks per second do you do,
03:18:23 <elliott> i cannot figure it out,
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:24 <monqy> or something
03:19:37 <monqy> as for ticks per second, uhh, what's a tick
03:19:47 <elliott> monqy: your, delta thing
03:19:53 <monqy> oh
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:43 <elliott> monqy: uh I mean theta
03:20:46 <monqy> oh
03:20:47 <elliott> how many times does theta increase per seconds
03:20:50 <elliott> per second
03:20:56 <monqy> uhh
03:20:56 <elliott> oh
03:20:58 <elliott> ten times per second?
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:12 <monqy> but
03:21:18 <monqy> the amount it increases per second
03:21:21 <monqy> is 10 i think
03:21:27 <monqy> i hope
03:21:43 <monqy> i probably
03:21:44 <monqy> uh
03:21:47 <monqy> screwed it up somewhere
03:21:49 <elliott> right
03:22:00 <monqy> (ages ago)
03:22:34 <monqy> ugh why are all these things iorefs stop being iorefs
03:22:42 <elliott> :t whileM
03:22:43 <lambdabot> Not in scope: `whileM'
03:22:45 <elliott> monqy: im making them MVars,
03:22:50 <elliott> MVars are nice, they are, concurrency-friendly
03:22:52 <elliott> ?hoogle whileM
03:22:53 <lambdabot> No results found
03:22:59 <monqy> whats' whileM
03:23:03 <NihilistDandy> Cannot be true
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:03 <NihilistDandy> @hoogle IfElse
03:24:03 <lambdabot> No results found
03:24:42 <monqy> is whileM like..... forever.... but guarded by a when
03:24:44 <monqy> except
03:24:46 <monqy> different
03:24:48 <monqy> because
03:24:51 <monqy> it's not when
03:24:51 <monqy> it's
03:24:54 <monqy> uh
03:24:59 <monqy> something more like whenM??
03:25:46 <elliott> start <- SDL.getTicks
03:25:47 <elliott> SDL.delay (ticksPerSecond * millisecondsPerSecond)
03:25:47 <elliott> end <- SDL.getTicks
03:25:47 <elliott> forM_ [0 .. (end - start) `div` ticksPerSecond] $
03:25:47 <elliott> im good practices,,,,,
03:26:02 <elliott> monqy: the only gamestate you have is the ticks increasing isn't it
03:26:03 <elliott> haha
03:26:11 <monqy> :'(
03:26:24 <monqy> it was not a real game it was a
03:26:25 <monqy> uh
03:26:30 <monqy> i forget what it was
03:26:31 <monqy> oh right
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:09 <monqy> except
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> Expected type: IO ()
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:34:26 <monqy> monad stacks...:(
03:35:22 <elliott> ?hoogle mask
03:35:23 <lambdabot> No results found
03:35:28 <monqy> mask?
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:44 <elliott> oh
03:35:45 <monqy> callbacks in io are gross too :(
03:35:55 <monqy> what does mask do
03:36:05 <monqy> oh
03:36:13 <elliott> <monqy> callbacks in io are gross too :(
03:36:14 <elliott> whats not gross
03:36:22 <monqy> hgel p i i dopnt knwo :_;
03:36:23 <elliott> thats the true question :(
03:36:36 <monqy> maybe if
03:36:38 <monqy> (magic here)
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:31 <monqy> probalby
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:14 <NihilistDandy> is i said!
03:38:51 <elliott> i bet...conal doesnt like banan
03:39:14 <monqy> oh no
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:41:34 <NihilistDandy> conal elliott fruit
03:41:38 <NihilistDandy> Google it
03:41:54 <NihilistDandy> He's all over FRP, it seems
03:42:08 <elliott> NihilistDandy: i know
03:42:09 <monqy> didn't everyone knew that
03:42:11 <NihilistDandy> Also, fruit leather, apparently
03:42:19 <elliott> but on his blog, he is all,
03:42:22 <elliott> "oops, it is all the wrong path,"
03:42:24 <NihilistDandy> I'll bet you didn't know *that*
03:42:25 <elliott> and then eh is like
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:42:38 <elliott> :(
03:43:05 <monqy> :(
03:43:16 <NihilistDandy> (:
03:43:24 <NihilistDandy> Turn that frown upside down
03:43:32 <elliott> monqy: now, it has,
03:43:33 <elliott> blackness,
03:43:39 <elliott> oh
03:43:45 <elliott> monqy: i think it is painting once ever y second
03:43:45 <monqy> blac kense
03:43:49 <monqy> oops?
03:43:50 <monqy> ??>?
03:43:52 <monqy> ?
03:44:00 <elliott> SDL.delay (ticksPerSecond * millisecondsPerSecond)
03:44:01 <elliott> oh,
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:28 <evincar> Approximately.
03:45:29 <elliott> it is hilarious
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:04 <NihilistDandy> If you mirror it horizontally, it's still a frown
03:46:07 <monqy> source fiels???
03:46:12 <NihilistDandy> What I really mean is "transpose that frown"
03:46:14 <elliott> monqy: but then you could, figure out, the hilarity,...
03:46:22 <NihilistDandy> :( -> (:
03:46:22 <monqy> i will not look,,,untill i see
03:46:34 <monqy> a...conandrum?
03:46:46 <elliott> ok,
03:50:08 <monqy> og hod whats hapenming
03:50:13 <elliott> monqy: love,
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:44 <elliott> monqy: its not going fast
03:50:46 <elliott> its actually going too slow
03:50:51 <elliott> its painting the screen really slowly
03:50:52 <monqy> what
03:50:55 <monqy> i
03:50:56 <elliott> like
03:50:58 <elliott> ten times a second only
03:51:01 <elliott> or something
03:51:04 <elliott> so it's really jerky
03:51:12 <NihilistDandy> evincar: Morphine heals all wounds
03:52:02 <elliott> oh wtf
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:52:39 <elliott> erm per real tick
03:52:41 <elliott> monqy: um
03:52:42 <elliott> dunno
03:53:01 <elliott> oh
03:53:03 <elliott> now the boxes just sit there...
03:54:18 <elliott> monqy: soon, it will be rperfect
03:54:50 <elliott> umm
03:54:57 <elliott> what's (ten ticks per second) in (milliseconds per tick)
03:55:01 <elliott> help,
03:55:16 <Zwaarddijk> 100
03:55:24 <elliott> thank you,
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:13 <monqy> :o
03:57:36 <elliott> SDL_AddTimer -- Adds a timer which will call a callback after the specified number of milliseconds has elapsed.
03:57:36 <elliott> oh
03:57:38 <elliott> sdl has real timer things
03:57:44 <monqy> are they
03:57:45 <monqy> good
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:57:57 <evincar> Yes, they work fine.
03:58:03 <elliott> where are they in the haskell bindgfindignins......
03:58:08 <elliott> and do they force using io
03:58:11 <elliott> (my bett: yes)
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:33 <elliott> ugh
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:23 <elliott> monqy: i have, a plan,
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:00 <monqy> or smaler
04:02:01 <monqy> or
04:02:03 <monqy> soemthinger
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:41 <elliott> cool
04:03:43 <evincar> Nope.
04:03:49 <evincar> You just can't predict the future.
04:03:52 <evincar> That's all.
04:03:59 <evincar> And you shouldn't try.
04:04:05 <elliott> what
04:04:12 <monqy> what;e
04:04:12 <NihilistDandy> MY DETERMINISM
04:05:13 <evincar> Time begins. First frame is rendered. Time has elapsed. Next frame is rendered based on elapsed time.
04:05:28 <evincar> That's all I'm saying.
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:02 <elliott> does such a thing exist
04:10:12 <monqy> uhhhh
04:10:15 <monqy> i;ve no clue
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:35 <monqy> wooho
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:12:28 <monqy> :(: :(* :(* :(
04:14:39 <elliott> help: user error (RTS doesn't support multiple OS threads (use ghc -threaded when linking))
04:14:41 <elliott> evincar: im dum
04:14:42 <elliott> oops
04:14:43 <elliott> i mean monqy
04:14:51 <monqy> oops
04:15:10 <monqy> does that
04:15:11 <monqy> fix it
04:15:12 <monqy> good
04:17:37 * quintopia climbs up the event handline
04:18:44 <elliott> monqy: it is, getting good,
04:18:54 <monqy> yes.....sssss
04:19:55 <elliott> monqy: but, there is bad things, with your modules,
04:19:59 <elliott> i think, maybe,
04:20:01 <elliott> hmm, probably not
04:20:03 <monqy> oopse.
04:20:04 <monqy> oh.
04:20:08 <monqy> oopse??
04:20:46 <elliott> also
04:20:47 <elliott> resizing
04:20:49 <elliott> segfaults it??
04:20:59 <elliott> i think what happens is
04:21:00 <elliott> like
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:36 <monqy> :'(
04:33:46 <monqy> how do you mange to segfault...haske.L??
04:33:51 <elliott> with opengl
04:33:56 <monqy> <:I
04:34:01 <monqy> did you
04:34:03 <monqy> poke
04:34:04 <monqy> peointers
04:34:05 <elliott> no
04:34:10 <elliott> monqy: should i, port this, to gpipe,
04:34:22 <elliott> maybe that is
04:34:23 <elliott> the ultimat esolution
04:34:24 <monqy> is gpipe,,,,,,,,owrking-good???
04:34:28 <elliott> maybe it is
04:34:33 <elliott> there is only one way to find out,,,,,,,,,
04:34:58 <monqy> an good idea???/
04:35:15 <elliott> monqy: im will maybe make this less ugly first though...
04:35:22 <monqy> ok
04:38:31 <elliott> monqy: with
04:38:32 <elliott> MY
04:38:32 <elliott> MAGIC
04:39:03 <monqy> what did You DO
04:39:31 <monqy> did you bananana it ....
04:40:06 <elliott> no,
04:41:36 <elliott> monqy: apart from the segufalts inthis is better...
04:41:55 <monqy> sounds like a good
04:42:27 <elliott> huh, gpipe is a bit old
04:42:31 <elliott> last updated september
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:46:32 <elliott> would that be bad
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:07 <monqy> oh..,
04:49:14 <monqy> what about
04:49:17 <monqy> jus t part of it
04:49:26 <monqy> or how long will it take to
04:49:27 <elliott> ok,,,maybe
04:49:29 <monqy> completely done
04:49:32 <elliott> a long time
04:50:20 <monqy> ;----;
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:55:46 <evincar> Approximately. Maximum.
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:30 <elliott> Of course not.
04:57:39 <elliott> start <- SDL.getTicks
04:57:39 <elliott> SDL.delay (millisecondsPerSecond `div` ticksPerSecond)
04:57:39 <elliott> end <- SDL.getTicks
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:09 <elliott> Yes.
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:03:52 <Lymee> > 1000/60
05:03:53 <lambdabot> 16.666666666666668
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:04:51 <elliott> [asterisk]than enough
05:06:02 <elliott> monqy: it sads me that gpipe depends on glut :(
05:06:42 <monqy> sads me too:((((
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:09:49 <elliott> monqy: what do you mean
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:11:56 <elliott> Lymee: ?
05:12:05 <elliott> monqy: i dont like, forking things, because always worse than rewriting,
05:12:18 <monqy> :(
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 <Lymee> @hoogle a -> b
05:15:16 <lambdabot> Unsafe.Coerce unsafeCoerce :: a -> b
05:15:16 <lambdabot> Prelude ($) :: (a -> b) -> a -> b
05:15:17 <lambdabot> Prelude ($!) :: (a -> b) -> a -> b
05:15:37 <Lymee> :t undefined
05:15:38 <lambdabot> forall a. a
05:15:57 <Lymee> :t \x -> undefined
05:15:57 <lambdabot> forall t a. t -> a
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:31 <elliott> but ugh glut
05:16:34 -!- jimtendo_ has joined.
05:16:57 <monqy> is there any way to remove glut from gpope
05:17:02 <elliott> yes by modifying it
05:19:26 <Lymee> :t (,,) 1
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:19:53 <Lymee> Eh?
05:19:54 <monqy> you did???
05:19:56 <elliott> but i...forgot....
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:01 * elliott famous
05:20:05 <elliott> got an whole two points
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 <pikhq> :t 1
05:20:22 <elliott> monqy: it was an anti-bonch comment so yes...
05:20:23 <lambdabot> forall t. (Num t) => t
05:20:25 <elliott> Lymee: What?
05:20:32 <Lymee> <Lymee> :t (,,) 1
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:39 <elliott> he is
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:01 <elliott> full of hatred and death
05:21:11 <pikhq> monqy: "Derp malloc is fast"
05:21:21 * elliott read shis user page
05:21:24 <elliott> ok now he is anti-idra
05:21:24 <elliott> who is
05:21:26 <elliott> some starcraft playe
05:21:27 <elliott> r
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:02 <NihilistDandy> wut
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:13 <elliott> monqy: canat use quads :(
05:25:27 <monqy> what about trianglestrips
05:25:43 <elliott> yes there is that....
05:25:50 <monqy> my amazing secret project only needs trianglestrips
05:25:58 <elliott> oh wait hmmmm
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:27:27 <elliott> also describe it :{
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:35:08 <NihilistDandy> How cute
05:35:09 <elliott> help
05:35:38 <elliott> help help help
05:36:10 <elliott> help
05:36:15 <elliott> ;__;
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:40:30 <elliott> help
05:40:35 <monqy> qhwats that
05:40:36 <monqy> helwp
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:53 <elliott> Lymee: i dont know
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:20 <monqy> :(
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:52 <elliott> im doing sauqraes
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> > where
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:45:14 <elliott> halp monqy
05:45:16 <elliott> coppro: duh
05:45:18 <elliott> oh god lambdabot
05:45:19 <monqy> helpe
05:45:27 <coppro> lol
05:46:06 <monqy> elliott: thats gpipe? whats it doing
05:46:15 <elliott> monqy: i dont know........
05:46:19 <elliott> transforming a cube
05:46:23 <Lymee> elliott, that type definition scares me.
05:46:24 <elliott> BUT NOT IN A SIMPLE WAY
05:46:31 <elliott> Lymee: there's no type definition there.
05:46:37 <Lymee> I mean the one you posted.
05:46:43 <elliott> oh
05:46:44 <elliott> right
05:46:46 <elliott> yeah
05:46:48 <monqy> the hellish monad stack?
05:46:51 <elliott> no
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:47:00 <monqy> oh
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:37 <quintopia> no
05:49:42 <quintopia> one strip period
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:52:05 <quintopia> i tried
05:53:41 <elliott> <interactive>:1:24:
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:53:44 <elliott> help
05:54:00 <fizzie> Those are some wonderful types you have there.
05:54:05 <elliott> fizzie: its Vecs fault
05:54:13 <Lymee> .........................................
05:54:25 <Lymee> That is a joke right
05:54:49 <Lymee> :. = two tuple?
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:58:55 <elliott> :-)
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 <elliott> what?
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:11 <elliott> monqy: im cry
06:01:32 <monqy> elliott: ;_+;
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:05:40 <monqy> :(
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:07:39 <elliott> now to make it proper...
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:27 <elliott> asdpogidgjofkhljdpoghklm
06:16:34 <elliott> monqy: this is complicated :(
06:16:48 <elliott> like in this tutorial...
06:16:51 <elliott> they're doing cubes like
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:17:50 <elliott> [ (-0.8):.0.8:.0.0:.(),
06:17:50 <elliott> 0.8:.0.8:.0.0:.(),
06:17:50 <elliott> 0.0:.(-0.8):.0.0:.() ]
06:17:51 <elliott> this is more like it...
06:19:00 <monqy> snazzey
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:24:41 <monqy> im hapey
06:25:19 <elliott> monqy: can i have a five
06:25:29 <monqy> 5
06:25:34 <elliott> thx
06:26:18 -!- derrik has quit (Quit: gone).
06:27:36 <elliott> monqy: it segfault :(
06:27:40 <monqy> :'(
06:37:28 <elliott> monqy: it no segfault
06:37:31 <elliott> but im having troubles
06:37:32 <monqy> :')
06:37:33 <elliott> but i will prevail
06:37:35 <monqy> :'(
06:37:37 <monqy> :')
06:37:40 <elliott> and probably make the resulting program like 900 times larger and slower
06:37:41 <elliott> but OH WELL
06:37:45 <monqy> :'(
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:34 <elliott> But you were WRONG
06:40:44 <elliott> Or wait.
06:40:46 <elliott> fizzie: Did you say TriangleStrip
06:41:21 <fizzie> TriangleStrip, yes.
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:42:47 <elliott> SUERLY IT CANT BE SO HARD
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:01:50 <monqy> uhh
07:01:53 <monqy> i dunno maybe
07:01:59 <monqy> wait no
07:02:00 <monqy> that uh
07:02:06 <monqy> was half the width in pixels, if anything
07:02:22 <elliott> monqy: oh rigth
07:02:24 <elliott> monqy: but it's like...
07:02:29 <elliott> now i have something that takes a float as the width and....
07:11:18 <monqy> yep
07:12:04 <elliott> monqy: and what do i.... do..
07:12:07 <elliott> to make it pixel again
07:12:23 <monqy> what haepend what bborke ;_;
07:12:31 <elliott> <elliott> monqy: oh rigth
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:24 <monqy> floats
07:13:28 <elliott> yes
07:13:29 <elliott> so
07:13:33 <elliott> i want to turn it into something taking pixels again
07:13:34 <elliott> help?
07:13:38 <monqy> oh
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:51 <elliott> things
07:13:51 <monqy> oh
07:13:55 <monqy> what is this things
07:14:06 <elliott> things
07:14:11 <monqy> 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:10 <elliott> again??
07:15:40 <monqy> it basically isolates matrix transformations
07:15:46 <monqy> contains them
07:15:47 <monqy> it's real nice
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:03 <elliott> monqy: what
07:17:05 <elliott> ok
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:12 <elliott> pixelwise
07:17:15 <elliott> rather than screen percentage wise
07:17:16 <monqy> uhh
07:17:17 <monqy> no
07:17:18 <elliott> then
07:17:19 <elliott> how
07:17:19 <elliott> that
07:17:20 <elliott> :(
07:17:22 <monqy> it's how I turn and transform them
07:17:23 <monqy> uhh
07:17:24 <elliott> ive never had pixelwise in my opengl programs
07:17:26 <elliott> it
07:17:28 <monqy> what
07:17:28 <monqy> i
07:17:30 <elliott> :(
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:17:58 <elliott> what was that
07:18:00 <elliott> oh
07:18:00 <monqy> uhh
07:18:01 <elliott> right....
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.loadIdentity
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:10 <monqy> uhh
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:26 <monqy> this is
07:21:27 <monqy> my analysis
07:21:30 <elliott> ok... but what does that do that's not default
07:21:31 <elliott> like
07:21:32 <elliott> what do you do
07:21:33 <elliott> get
07:21:35 <elliott> if you do none of that
07:21:37 <elliott> ???
07:21:41 <monqy> ????
07:21:47 <elliott> :(
07:21:49 <elliott> maybe fizzie knows
07:21:58 <fizzie> The default projection matrix is the identity matrix.
07:22:02 <elliott> ok
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:22 <elliott> oh SO
07:22:23 <elliott> is the reason
07:22:29 <elliott> that (-one,one) like fills my screen
07:22:30 <elliott> because
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:11 <elliott> well yeah but i mean
07:23:13 <elliott> the ortho stuff in general
07:23:21 <fizzie> For that you'd want a perspective projection matrix.
07:23:27 <elliott> oh
07:23:32 <elliott> what would an orthographic thing do
07:23:33 <elliott> in threedee
07:23:34 <fizzie> Those tend to take the FOV quite directly.
07:23:42 <fizzie> It would do an isometric-style thing.
07:23:47 <elliott> :DDD omg
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:24:52 <elliott> :DDD
07:25:55 <Patashu> oh hey, haskell opengl bindings
07:26:13 <elliott> they suck (thats why im (using gpipe :') ))
07:26:20 <elliott> well they don't suck
07:26:22 <elliott> but opengl sucks in general
07:26:29 <monqy> so what does gpipe do
07:26:30 <monqy> i mean
07:26:32 <monqy> about this stuff
07:26:36 <elliott> what do you mean
07:26:53 <monqy> deal with opengl's matricies and stuff
07:26:58 <elliott> it just
07:27:00 <elliott> transforms them into functional matrices
07:27:02 <elliott> with a bunch of like
07:27:04 <elliott> toGPU stuff
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:02 <elliott> ao um,
07:37:07 <elliott> asterisk so
07:37:14 <elliott> monqy: im going to, totally gpipe it up
07:37:19 <monqy> oh man
07:37:31 <elliott> r u, PREPARED,
07:37:52 <monqy> per haps
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...
07:54:17 <elliott> i think???
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:46 <elliott> Right.
08:04:49 <fizzie> But I suppose you can nowadays opt for doing all geometry with programmed shaders.
08:04:52 <fizzie> Maybe.
08:06:08 <elliott> fizzie: It does convert things to shaders automagically, yes.
08:06:19 <elliott> It's a little SPOOKY.
08:07:03 <Patashu> I didn't learn shaders in my opengl class :(
08:07:07 <Patashu> they sound cool though
08:07:18 <elliott> i need an 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:39 <monqy> crayze
08:07:39 <elliott> yes
08:07:42 <elliott> its
08:07:45 <elliott> monqy: they're written in like
08:07:48 <elliott> opencl language
08:07:49 <monqy> is it good langauge
08:07:53 <elliott> it's based on C
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:01 <elliott> float2 data[16];
08:08:01 <elliott>
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:07 <elliott>
08:08:07 <monqy> ewwww
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:21 <elliott> C is too high-level
08:08:23 <elliott> see Checkout
08:08:25 <elliott> monqy: ... but with gpipe it like does your haskell all symbolic and compiles it to a shade
08:08:27 <elliott> r
08:08:31 <elliott> automagically
08:08:35 <elliott> monqy: (http://esolangs.org/wiki/Checkout)
08:08:49 -!- Taneb has joined.
08:08:54 <elliott> god ais can't write
08:08:57 <monqy> ah right
08:09:02 <monqy> walls of text
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:23 <elliott> lmao
08:09:25 <elliott> xchat
08:09:27 <elliott> cut that off
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:09:36 <elliott> there you go....
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:10 <elliott> makes bad assumptions :|
08:11:15 <monqy> right but I mean
08:11:33 <monqy> by appropriate, not high- or low-level but
08:11:35 <monqy> right-level
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:32 <elliott> :D
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:15 <elliott> "what about LOLCODE?"
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:14:43 <monqy> what about snack
08:14:52 <elliott> no,
08:16:03 <monqy> i wonder what
08:16:08 <monqy> snack's creator genius
08:16:09 <monqy> was thinkign
08:16:13 <monqy> when making
08:16:14 <monqy> snack
08:16:30 <elliott> probably "im smart"
08:16:38 <elliott> in five days snack is a month old
08:16:56 <itidus20> obviously not cakes and chips
08:17:01 <elliott> and one day (warning: scary story ahead)
08:17:05 <NihilistDandy> Fucking lolcode
08:17:05 <elliott> it will be a hundred years old
08:17:08 <elliott> people will say
08:17:11 <monqy> a month? two months?
08:17:13 <elliott> how can we make our langauges last a hundred years
08:17:14 <elliott> like snack has
08:17:22 <elliott> and they decide
08:17:28 <elliott> "there is only one way
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:49 <elliott> what
08:17:56 <monqy> wasn't it a june lnaguage
08:18:08 <elliott> holy shit
08:18:10 <elliott> i love how
08:18:15 <elliott> monqy: oh right
08:18:16 <elliott> i love
08:18:16 <elliott> how
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:40 <monqy> what does it mean
08:18:52 <monqy> well he documented 5 of them
08:18:52 <Patashu> who's SmallBug
08:18:54 <monqy> that's a start
08:18:56 <monqy> a bad person
08:18:59 <itidus20> LOL
08:19:08 <monqy> is smallbug you, itidus20
08:19:31 <elliott> are you implying itidus20 is a bad erson
08:19:32 <elliott> :|
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:07 <itidus20> (google translated)
08:20:07 <monqy> the int
08:20:08 <NihilistDandy> Ceci n'est pas une snack
08:20:09 <monqy> is called stack
08:20:11 <elliott> yes
08:20:16 <itidus20> Dandy =))
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:20:52 <monqy> snack's
08:20:54 <monqy> snack
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:12 <Taneb> Hello
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:22:59 <monqy> then eat
08:23:04 <monqy> you will have eaten...negative people
08:23:09 <Patashu> O_O
08:23:12 <NihilistDandy> Do eet
08:23:41 <Lymee> pikhq_, what does that mean?
08:23:53 <pikhq_> Lymee:
08:24:06 <NihilistDandy> This is not a "This is not a "This is not a..."
08:24:11 <pikhq_> Lymee: This is not a “This is not a “This is not a...
08:24:52 <NihilistDandy> Monospaced font made that awesome
08:24:57 <Lymee> > fix ("Ceci n'est pas une “++)
08:24:58 <lambdabot> <no location info>:
08:24:58 <lambdabot> lexical error in string/character literal at end o...
08:25:02 <Lymee> :<
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:20 <elliott> Lymee: wrong quote type
08:25:25 <Lymee> > recurse ("Ceci n'est pas une “"++) "Ceci n'est pas une “
08:25:26 <lambdabot> <no location info>:
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:31 <lambdabot> Not in scope: `recurse'
08:25:31 <elliott> t pas une “++)
08:25:32 <elliott> god
08:25:33 <elliott> look at it
08:25:35 <elliott> “++)
08:25:36 <elliott> that's not a "
08:25:38 <Lymee> Blah.
08:25:40 <NihilistDandy> srsly
08:25:43 <Lymee> Doesn't show up in my editbox.
08:25:52 <Lymee> i hate you edit box
08:26:09 <NihilistDandy> > fix ("Ceci n'est pas une "++)
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:23 <NihilistDandy> > fix ("\"Ceci n'est pas une "++)
08:26:24 <lambdabot> "\"Ceci n'est pas une \"Ceci n'est pas une \"Ceci n'est pas une \"Ceci n'es...
08:26:30 <NihilistDandy> Uglier, but closer
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:00 <Patashu> sour
08:27:26 <NihilistDandy> We should write an ugly-printer
08:27:32 <Lymee> > cycle "”"
08:27:33 <lambdabot> "\8221\8221\8221\8221\8221\8221\8221\8221\8221\8221\8221\8221\8221\8221\822...
08:27:40 <pikhq_> Like a Perl compiler?
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:27:59 <NihilistDandy> itidus20: Haha. Good on me :D
08:28:14 <NihilistDandy> pikhq_: Well, yes, but with a nicer user interface
08:28:32 <Patashu> LOL lymee
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:03 <NihilistDandy> ...
08:29:29 <elliott> 0.999999999...0 =/= one dumbtarjsds
08:29:33 <Lymee> pikhq_, well.
08:29:36 <Lymee> The program doesn't cheat!
08:29:36 <Patashu> lolll
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 <elliott> .com.com.com
08:30:49 <Lymee> > last $ (fix ("Ceci n'est pas une “"++)) ++ (cycle "”")
08:30:53 <lambdabot> mueval-core: Time limit exceeded
08:30:53 <elliott> .com
08:30:54 * Lymee runs
08:30:58 <elliott> do you remember .com
08:31:02 <elliott> .com
08:31:05 <NihilistDandy> elliott: Well, that's true, in that's it's meaningless
08:31:06 <elliott> .xomc.om.cm
08:31:09 <elliott> .com
08:31:13 <pikhq_> elliott: com.com? God that was a stupid thing.
08:31:19 <elliott> .com
08:31:20 <elliott> .comcomcom
08:31:25 <elliott> .com.com.com.com.com
08:31:31 <elliott> www.ww.w.com
08:31:37 <NihilistDandy> Apparently com.com redirects to cnet
08:31:45 <elliott> ..........q;come
08:31:46 <elliott> come
08:31:47 <elliott> .com
08:31:49 <elliott> .sompdf.com
08:31:52 <elliott> some.come
08:31:54 <elliott> pony.com
08:32:07 <Taneb> dotat.at
08:32:07 -!- asiekierka has joined.
08:32:08 <asiekierka> hi
08:32:10 <asiekierka> long time no see! D:
08:32:11 <Taneb> Hello
08:32:18 <elliott> you were in here days ago
08:32:21 <pikhq_> NihilistDandy: Yes, they used to maintain a hierarchy of sites under com.com.
08:32:24 <asiekierka> but didn't really talk
08:32:26 <pikhq_> NihilistDandy: I am not fucking kidding.
08:32:31 <elliott> so you're going to talk
08:32:37 <NihilistDandy> pikhq_: That depresses me on an existential level
08:32:43 <Taneb> Ve have ways of making you TALK!
08:32:43 <asiekierka> much to your disappointment, possibly, elliott
08:32:49 <NihilistDandy> And that's saying something
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:12 * asiekierka pokes back
08:33:18 -!- GreaseMonkey has joined.
08:33:33 <NihilistDandy> Also, what the shit, FURscript
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:31 <NihilistDandy> pikhq_: My heart hurts
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:28 <coppro> lolcnet
08:35:31 <NihilistDandy> Damnable 90s and their non-exhausted IPv4 space
08:35:56 <pikhq_> It's not like having a bunch of domains uses up IPv4 space.
08:36:02 <NihilistDandy> I know
08:36:09 <NihilistDandy> I'm not talking about domains :D
08:36:22 <NihilistDandy> I'm complaining about yesteryear
08:36:29 <NihilistDandy> Yesterdecade
08:36:31 <NihilistDandy> Whatever
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:02 <NihilistDandy> The fools
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:37:53 <NihilistDandy> Vacua and nuclear ovens are the future damn it!
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:10 <NihilistDandy> I'm aware -_-
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:50 <NihilistDandy> Those wacky Europeans
08:38:54 <pikhq_> The World Wide Web was also a wiki protocol.
08:39:02 <coppro> pikhq_: HTTP
08:39:05 <pikhq_> Erm, HTTP.
08:39:07 <pikhq_> Yeah.
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:41 <Taneb> It kinda is
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:09 <elliott> patch is new............
08:41:11 <elliott> it was invented last year..........
08:41:16 <pikhq_> elliott: Srsly?
08:41:19 <elliott> yes.............
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:32 <elliott> PATCH Method for HTTP
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:41:50 <elliott> pikhq_: i am.............
08:42:11 <Taneb> Oh god
08:42:15 <pikhq_> Still, PUT.
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:58 <elliott> oh ok
08:42:59 <monqy> what do 8 years old do now anyway
08:43:12 <elliott> monqy: irc
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:57 <elliott> me too
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:00 <elliott> except i know it
08:44:01 <elliott> :(
08:44:01 <NihilistDandy> With a robot body, you can be!~
08:44:04 <Taneb> I was an idiot who thought he was the best at everything
08:44:20 <NihilistDandy> I have IRC logs from when I was 8...
08:44:33 <elliott> thankfully,
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:57 <NihilistDandy> Been expunged from the judicial record?
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:24 <monqy> cyber
08:45:27 <elliott> u be haskell, ill be brainfuck, i put on my robe and type theory hat
08:45:30 <NihilistDandy> elliott: These things are isomorphic
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:01 <NihilistDandy> I'm still not ready to sixteen
08:47:10 <NihilistDandy> And I already sixteened
08:47:11 <elliott> Taneb: help, its going to fast,
08:47:14 <elliott> make it stop,
08:47:21 <pikhq_> elliott: Congrats, you're 61.
08:47:26 <Taneb> You can't stop it
08:47:31 <Taneb> You can only make it go faster
08:47:38 <elliott> Taneb: how, is it meth,
08:47:40 <elliott> (i think its meth)
08:47:45 <pikhq_> Taneb: Well, you can stop the flow of time.
08:47:50 <Taneb> brb
08:47:55 <pikhq_> Just fine a nearby event horizon.
08:48:05 <NihilistDandy> Easy as pie
08:48:12 <coppro> `/win 7
08:48:16 <HackEgo> No output.
08:48:27 <coppro> HackEgo: that's cause you suck
08:56:25 <Taneb> Back
08:56:35 <Taneb> Or maybe it hates Windows 8
08:56:39 <Taneb> s/88/7/
08:56:43 <Taneb> s/88/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:35:45 <elliott> ok
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:40:58 <elliott> ah
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:44:30 <elliott> why not simples
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:17 <elliott> hmm
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> fizzie:
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:15 <elliott> -> Mat44 a
09:51:17 <elliott> but then
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:48 <elliott> fizzie: Ah.
09:52:49 <elliott> ?src when
09:52:49 <lambdabot> when p s = if p then s else return ()
09:52:58 <elliott> :t when
09:52:59 <lambdabot> forall (m :: * -> *). (Monad m) => Bool -> m () -> m ()
09:53:01 <elliott> oh wait
09:53:02 <elliott> nm
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:31 <elliott> GL.loadIdentity
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:21 <elliott> oh
09:57:21 <elliott> right
09:57:24 <elliott> blame monqy
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:18 <monqy> im blamed
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?
09:59:58 <elliott> What about the viewport?
10:00:00 <elliott> ortho thing also handle that?
10:00:02 <elliott> I suppose so.
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:01:44 <monqy> whats the -ish
10:02:07 <elliott> Well things.
10:02:11 <elliott> I need to make it actually move for instance.
10:02:16 <monqy> segfaults
10:02:20 <monqy> oh
10:02:31 <monqy> and banana?
10:03:35 <elliott> monqy: yes.
10:03:36 <elliott> im so banana
10:05:09 -!- clog has quit (Ping timeout: 252 seconds).
10:05:48 <elliott> rip
10:05:48 <elliott> clog
10:07:26 -!- oerjan has joined.
10:07:30 <elliott> hi oerjan
10:07:31 <elliott> bye clog
10:07:35 <oerjan> hello
10:07:38 <oerjan> argh
10:08:39 <elliott> oerjan: codu,,,
10:08:40 <elliott> learn it,,,
10:09:35 <oerjan> oh i do. btw it was removed from topic.
10:10:07 <elliott> fuk quintopia
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:12:55 <elliott> ok
10:13:01 <monqy> congarts
10:14:35 <elliott> monqy: http://i.imgur.com/FQdnB.png
10:14:46 <monqy> blue
10:14:49 <monqy> adn greene
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:03 <monqy> nothing fancy
10:16:13 <elliott> it is
10:16:14 <elliott> im just
10:16:19 <elliott> replicating the thing you did
10:16:21 <monqy> oh
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:20:47 <elliott> the oerjan life
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:24:35 <fizzie> Ghostrogram.
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:19 <Patashu> latter
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:01 <elliott> oerjan: :{
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:15 <elliott> four cells??
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:29:51 <monqy> oh man oh man
10:29:59 <elliott> BE PREPARED FOR POTASSIUM
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:01 <elliott> because I need OpenAL too
10:31:07 <monqy> :(
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:36 <elliott> (seriously)
10:31:38 <monqy> ew
10:31:44 <elliott> and well there are alternatives but openal is cool because it offers threedee sound???
10:31:45 <elliott> so like
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:31:56 <elliott> and if you turn around
10:32:00 <elliott> they'll sound like they're behind you
10:32:01 <elliott> and stuff
10:32:05 <elliott> it's cool................
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:23 <elliott> what do you, want to do,
10:32:29 <monqy> i dont
10:32:30 <monqy> quite
10:32:30 <monqy> know
10:32:35 <elliott> but, try, to explain,
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:33:03 <elliott> oerjan: so i think so
10:33:08 <oerjan> heh
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:39 <elliott> what is it........
10:35:42 <monqy> which makes explaantion..h.arder.
10:35:46 <elliott> try,
10:35:49 <monqy> im cant
10:35:54 <monqy> ;_:
10:36:05 <elliott> try,
10:36:56 <monqy> well i guess the graphicals might be described as subtley wavy or something and they vary over time??
10:37:03 * Sgeo feels unwell
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:16 <elliott> what is, gameplay,
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:37:47 <elliott> so is evrything
10:37:53 <Sgeo> Captai Obvios
10:38:08 <Sgeo> n
10:38:10 <Sgeo> nnnn
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:12 <elliott> u
10:38:13 <Sgeo> uuuuu
10:38:25 <elliott> monqy: ok?
10:38:29 <monqy> ok.
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:49 <elliott> oh
10:38:52 <elliott> TELL ME ABOUT THE FUCKING GAME
10:38:59 <elliott> >:{
10:39:03 <elliott> im must know........
10:39:07 <monqy> it is not relevant to gameplay. though. it is more of fan . aesthetic.
10:39:12 <monqy> i uh
10:39:20 <monqy> haven't really decided much about the actual
10:39:21 <monqy> gameplay
10:39:21 <monqy> yet
10:39:25 <monqy> if anything
10:39:26 <monqy> at all
10:39:33 <elliott> >:(
10:39:57 <elliott> reactimate :: Event PushIO (IO ()) -> NetworkDescription ()Source
10:39:57 <elliott> Output. Execute the IO action whenever the event occurs.
10:40:00 <elliott> REACTIMATE....
10:40:05 <monqy> reactimate
10:41:02 <monqy> is there any good way to do gameplay
10:41:04 <monqy> because if there is
10:41:06 <Deewiant> reactimate :-D
10:41:07 <monqy> i may want to use that
10:42:07 <elliott> Deewiant: its FRRRPY
10:42:12 <elliott> and then
10:42:15 <elliott> after you compile your event network
10:42:16 <elliott> with reactimations in it
10:42:18 <elliott> you do
10:42:21 <elliott> -- register handlers and start producing outputs
10:42:21 <elliott> actuate network
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:15 <monqy> oh dear
10:43:40 <monqy> well it's PROBABLY NOT pornographic
10:43:46 <oerjan> O KAY
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:46:55 <elliott> Deewiant: yes
10:47:01 <Deewiant> Great
10:47:06 <elliott> Deewiant: (its GPipe)
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 <elliott> ?hoogle ThreadId -> IO ()
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:58 <elliott> ?hoogle delete
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 <elliott> ?hoogle remove
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:02:38 <fizzie> ?hoogle exterminate
11:02:38 <lambdabot> No results found
11:02:40 <fizzie> :(
11:02:48 <oerjan> ?hoogle eviscerate
11:02:48 <lambdabot> No results found
11:05:09 <Patashu> ?hoogle obliterate
11:05:10 <lambdabot> No results found
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:09:58 <elliott> scary stuff :)
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:08 <elliott> coppro: i know
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:38 <elliott> then so is sccs
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:15 <elliott> also, it uses an alphabet
11:14:22 <elliott> total precursor
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:19 <coppro> ... what
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:20 <oerjan> INCONCEIVABLE
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:18 <elliott> which function
11:23:25 <oerjan> mkTyConApp
11:23:30 <elliott> huh, why?
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:23:49 <elliott> ah
11:23:56 <oerjan> yep
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:24 <coppro> elliott: "were"
11:24:26 <elliott> oerjan: that does seem saner...
11:24:41 <elliott> coppro: they're anal now?
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:28:50 <elliott> im a furby
11:29:21 <oerjan> google suggest correcting it to "furies". not that that exists either.
11:29:25 <oerjan> *s
11:29:48 <elliott> its furbys ur prlaurl wrong
11:29:57 <oerjan> oh
11:30:26 <oerjan> "A Furby (plural Furbys or Furbies) was [...]"
11:30:33 <elliott> SHUT UP IM EXPERT
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:35:37 <elliott> "
11:35:37 <elliott> ugh
11:36:14 <Patashu> seriously?
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:48 <Patashu> 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:36:58 <Patashu> ???
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:38 <myndzi> |
11:42:38 <myndzi> >\
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:44:59 <elliott> Taneb: No.
11:45:03 <elliott> Taneb: No. No. No. No.
11:45:03 <elliott> Taneb: No.
11:45:07 <elliott> Taneb: No. No. No.
11:45:08 <elliott> And,
11:45:10 <elliott> Taneb: No.
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:10 * elliott forks GPipe.
11:46:14 <Taneb> But no matter is moving faster than light!
11:46:22 <Taneb> Only information!
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:08 <elliott> it is not so.
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:48:46 <Taneb> Rather than news
11:48:51 <oerjan> O KAY
11:48:52 <Taneb> Olds, if you will
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:18 <elliott> oerjan: in base?
11:54:20 <elliott> i was unaware
11:54:23 <oerjan> but maybe it hasn't reached that module
11:54:28 <Deewiant> elliott: Don't think so, no
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:30 <elliott> hahahaha wow
12:01:33 <elliott> the hierarchical layout of this package
12:01:34 <elliott> is constructed
12:01:37 <elliott> entirely from the hierarchical packages
12:01:41 <elliott> importing and reexporting flat-hierarchy packages
12:01:42 <elliott> like
12:01:46 <elliott> Graphics.GPipe.FrameBuffer
12:01:47 <elliott> is just
12:01:50 <elliott> import OutputMerger
12:01:54 <elliott> with a bunch of re-exported stuff
12:01:56 <elliott> from that module
12:02:00 <elliott> beautiful
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:02 <elliott> MultiParamTypeClasses
12:10:02 <elliott> NoMonomorphismRestriction
12:10:02 <elliott> ScopedTypeVariables
12:10:02 <elliott> FlexibleContexts
12:10:02 <elliott> FlexibleInstances
12:10:04 <elliott> EmptyDataDecls
12:10:06 <elliott> GeneralizedNewtypeDeriving
12:10:08 <elliott> TypeFamilies
12:10:11 <Patashu> wtf is that shi
12:10:12 <elliott> TypeOperators
12:10:14 <elliott> are you kidding me
12:10:14 <Patashu> fuck haskell
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:32:11 <elliott> instance
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:33:44 <Deewiant> So beats me
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:37:40 <elliott> Sgeo: Nothing.
12:39:21 <Deewiant> elliott: WFM
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:14 <Deewiant> Darn
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:04 <elliott> Sgeo: wat
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:42:59 <Sgeo> lol
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:10 <Deewiant> elliott:
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:45:27 <Deewiant> (cabal configure)
12:45:39 <elliott> Deewiant: Hmm.
12:45:58 <elliott> Oh, duh.
12:46:02 <elliott> build-depends: containers >= 0.3 && < 0.4,
12:46:03 <elliott> Bad.
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:25 <quintopia> elliott: wai
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:24 <elliott> Heh
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:12 <Deewiant> Or something
12:52:25 <elliott> Eurgh
12:52:29 <elliott> But why would it do that
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:47 <elliott> containers-0.4.0.0
12:53:47 <elliott> containers-0.3.0.0
12:53:47 <elliott> ah hm
12:53:57 <elliott> $ ghc-pkg check
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:53:58 <elliott> hashed-storage-0.5.7
12:54:00 <elliott> darcs-2.5.2
12:54:01 <elliott> ah hm
12:54:04 <elliott> what is going on ;_;
12:54:06 <Deewiant> That helps as well :-D
12:54:22 * elliott installs that binary...
12:54:23 <Deewiant> But I guess it shouldn't matter since those aren't being used here
12:55:31 <elliott> $ ghc-pkg check
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:32 <elliott> list-tries-0.4.1
12:55:34 <elliott> GPipe-1.3
12:55:36 <elliott> GPipe-TextureLoad-1.0.2
12:55:38 <elliott> Deewiant: help
12:55:42 <elliott> Hmm
12:55:44 <elliott> help :D
12:55:47 <Deewiant> :-D
12:55:56 <elliott> $ cabal install binary-0.5.0.2-67c6c6f05b738dc39b1e1d3f0e7a53aa
12:55:56 <elliott> Resolving dependencies...
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:02 <elliott> ok it wants
12:56:03 <elliott> two different hashes
12:56:05 <elliott> of the same library
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:29 <Deewiant> ghc-pkg check ;-P
12:56:46 <fizzie> I thought there was no Cabal. :/
12:56:48 <elliott> Weeeeeeeeeeeeeeeeeeeeeell
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:50 <elliott> list-tries-0.4.1
12:56:50 <elliott> GPipe-1.3
12:56:50 <elliott> GPipe-TextureLoad-1.0.2
12:56:56 <elliott> Deewiant: It is missing at least hashed-storage
12:57:00 <elliott> Because of the different hash
12:57:02 <Deewiant> Or 'ghc-pkg dot' if you like
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:32 <elliott> Wow
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:12 <Deewiant> Did you run tred?
13:00:21 <Taneb> Who turned red?
13:00:30 <Deewiant> elliott soon, if not already
13:00:47 <elliott> Deewiant: That helps... a bit
13:01:38 <elliott> Deewiant: There appears to be no binary on this graph
13:01:53 <elliott> Oh, there it is
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:02:57 <elliott> Well, it doesn't :-)
13:03:00 <elliott> I guess base is omitted
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:35 <elliott> Might be
13:03:38 <elliott> What does tred do
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:04:25 <elliott> Or GPipe
13:04:26 <elliott> I don't know
13:05:05 <elliott> Now to recompile binary, hashed-storage, and darcs
13:05:07 <Deewiant> base doesn't
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> $ ghc-pkg check
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:14 <elliott> list-tries-0.4.1
13:12:16 <elliott> GPipe-TextureLoad-1.0.2
13:12:18 <elliott> GPipe-1.3
13:12:20 <elliott> JESUS FUCKING CHRIST
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:29 <elliott> oerjan: got a link?
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:35 <elliott> Argh
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 (≥2.0 & <2.2) 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:16:16 <elliott> Argh
13:16:17 <elliott> That's how
13:16:18 <elliott> FML
13:16:34 <Deewiant> What's that, Binary.cabal?
13:17:08 <elliott> Well, from Hackage, but yeah
13:17:23 <elliott> So different hashes because different dependencies
13:17:26 <elliott> Although, wait
13:17:30 <elliott> "≥3 & <3.0"
13:17:31 <oerjan> Deewiant: right
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:38 <elliott> I guess it's bytestring
13:17:41 <elliott> Argh
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:17:59 <elliott> Argh
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:23 <elliott> containers (0.3.*)
13:18:32 <elliott> And binary just depends on "containers"
13:18:38 <Deewiant> binary is old :-P
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:34 <elliott> Right?
13:19:56 <elliott> So if I change GPipe's containers dependency to "containers >= 0.4 && < 0.5,", everything should be fine
13:20:02 <Deewiant> Sounds plausible
13:20:06 <elliott> Deewiant: Anyway if binary is old, why do you depend on it :-P
13:20:17 <Deewiant> Somebody sent me a patch
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:17 <Deewiant> With the instances? :-P
13:21:19 <elliott> Yes.
13:21:23 <elliott> That's the "standard" thing, at least.
13:21:33 <Deewiant> Howso
13:21:56 <elliott> Deewiant: Whaddya mean
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:22:54 <elliott> They work fine
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:23:32 <elliott> And it'd be "blessed"
13:24:37 <Deewiant> Fair enough I guess
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:27:00 <elliott> oerjan: woot
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:24 <elliott> Deewiant: Eh?
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:03 <elliott> enough :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:09:05 <elliott> Even with GLUT
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:32:09 <elliott> Just t -> Right t
14:32:09 <elliott> Sigh
14:34:53 -!- lament has joined.
14:42:49 <Deewiant> Does that just lookup again if the lookup failed? :-P
14:43:11 <Deewiant> Oh, no, 0
14:44:56 <elliott> Deewiant: I thought the (Map GLUT.Window TextureObject) would translate to (Maybe TextureObject)
14:45:00 <elliott> Apparently not
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:33:16 <Deewiant> Maybe there's a better way
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:37:48 <elliott> Okay
15:37:57 <elliott> Stupid heuristics
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:05:58 <copumpkin> foldr is easy to write
17:06:01 <copumpkin> foldl is tougher
17:06:06 <copumpkin> should be on hpaste though
17:06:20 <copumpkin> http://hpaste.org/41453
17:07:02 <elliott> thanks
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:32:31 <Phantom_Hoover> OK, the Museum of Scotland is RUINED FOREVER.
17:45:54 <Phantom_Hoover> Although it turns out that antimony is really pretty.
17:46:03 <Phantom_Hoover> Why do I only fall for highly toxic elements?
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:20 <Deewiant> s/in/and/
18:26:32 <fizzie> Scandinavia outside the World.
18:26:50 <Taneb> I type pseudophonetically
18:26:55 <Deewiant> s/s\/in/s\/\\<in/
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:18 <Taneb> Nice
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:11 <Phantom_Hoover> Backflips.
19:19:22 <Taneb> ...I read MSPA too, guys
19:20:00 <elliott> Taneb: You don't count as human, though.
19:20:10 <Phantom_Hoover> EXILES
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:24:11 <Phantom_Hoover> Taneb, welcome to the English language!
19:25:33 <NihilistDandy> ohai
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:38:22 <elliott> also bye
19:39:26 <monqy> :o
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:42:20 <Taneb> s/stupis/stupid/
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:01:44 <Taneb> Fascist?
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:05 <olsner> perky-lay
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:08:22 <Taneb> Don't ask how
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:42 <Deewiant> s/et!/ttä!/
20:12:53 <fizzie> Or "kahdet 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:21 <Deewiant> "vanttuut"
20:18:24 <olsner> less formal or technical, in case of e.g. surgical gloves
20:18:46 <fizzie> Vanttuut ja lapaset.
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:21:36 <NihilistDandy> Ég er hanska! Nei, ég tvær hanska!
20:22:14 <oerjan> "The report has sparked anger from IE supporters, who have threatened AptiQuant with legal action.
20:22:16 <NihilistDandy> For you Íslendingar
20:22:17 <oerjan> "
20:22:48 <olsner> NihilistDandy: are you from iceland?
20:22:52 <NihilistDandy> Not even a little
20:22:57 <NihilistDandy> I just studied it for a while
20:23:40 <NihilistDandy> I quite like it, though
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:25:30 <NihilistDandy> My translation's probably a bit off, really :|
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:03 <NihilistDandy> Tolkien, even
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:35 <NihilistDandy> Taneb: What with him being dead? Not me.
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:04 <olsner> I AM GLOVE
20:28:08 <olsner> I AM TOO 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:15 <NihilistDandy> IIRC articles are a bit different in Icelandic.
20:29:17 <Taneb> Je suis trop gants pour ma chemise?
20:30:03 <NihilistDandy> I'm too gloves for my shirt. lol
20:30:13 <fizzie> Not just Tolkein, maybe the Tolkeist.
20:30:56 <olsner> Tolkzwei?
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:00 <NihilistDandy> Ég er of hanska fyrir skyrtu mína.
20:32:35 <oerjan> olsner: in any case istr icelandic has no indefinite article
20:34:03 <NihilistDandy> oerjan: Good point
20:34:12 <NihilistDandy> And I probably should have used tvö
20:34:31 <NihilistDandy> Maybe. I can barely remember, anymore
20:34:34 <copumpkin> NihilistDandy: if you come to the next bostonhaskell, there's an icelandic dude
20:34:41 <NihilistDandy> copumpkin: Shweet
20:34:44 <NihilistDandy> I'll have to brush up
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:38:51 <NihilistDandy> Iceland's awesome. I'd like to teach there
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:22 <NihilistDandy> Taneb: Me, too
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:19 <Taneb> Sshh..
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:37 <NihilistDandy> oerjan: :/
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:45:17 <olsner> -morfisme?
20:45:21 <oerjan> yeah
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:48:13 <olsner> true
20:52:18 -!- zzo38 has joined.
20:52:33 <zzo38> Is the "clog" broken?
20:53:10 <Taneb> It's clogged
20:53:15 <olsner> maybe it's too glove
20:53:26 <Taneb> Hang on..
20:53:26 <NihilistDandy> I'm too glove for this clog
20:53:42 <Taneb> Inform 7 docs?
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:57:11 <zzo38> OK.
20:58:25 -!- MigoMipo has quit (Ping timeout: 258 seconds).
21:00:13 <itidus20> lol
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:01:46 <Taneb> Finders keepers
21:23:40 -!- lambdabot has joined.
21:24:59 <Taneb> Is it too late to significantly change the Numberwang spec?
21:25:27 <copumpkin> 7
21:25:40 <olsner> yes, they've already made many episodes of mitchell and webb with numberwang, too late to change now
21:25:55 <Taneb> Fair enough
21:26:18 <Taneb> But I was referring to the one of the four+ esoteric programming languages by that name that I invented
21:26:51 <olsner> it is never too late
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:37 <Taneb> One by me
21:32:45 <oerjan> ah
21:32:46 <NihilistDandy> As long as the total number of languages remains numberwang, all is well
21:32:56 <Taneb> One is undefined
21:33:12 <Taneb> One is useless, and is the only one thusfar implemented
21:33:20 <Taneb> !Numberwang 20
21:33:43 * NihilistDandy is checking his home game books
21:33:50 <oerjan> ye olde case sensitive bot
21:33:54 <NihilistDandy> That's not numberwang
21:33:56 <Taneb> One is a rather lame BF derivative
21:34:10 <Taneb> !numberwang 20
21:34:12 <EgoBot> That's numberwang!
21:34:16 <NihilistDandy> Lies
21:34:35 <Taneb> Numberwang depends on more variables than a single number
21:34:56 <NihilistDandy> Have you ever played the home edition?
21:35:13 <Taneb> No, but I was once in the studio audience of the show
21:35:34 <NihilistDandy> http://www.youtube.com/watch?v=swV3E3HPQC4
21:42:10 <Taneb> I want
21:44:44 <NihilistDandy> ikr
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:47:50 <Taneb> I believe so
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:50:16 <lambdabot> Conflicting definitions for `x'
21:50:17 <lambdabot> Bound at: <interactive>:1:4
21:50:17 <lambdabot> <in...
21:50:59 <oerjan> so, no.
21:51:51 <zzo38> OK.
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:55:59 <olsner> meh
21:56:17 <NihilistDandy> joke == lie
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:58:43 <oerjan> zzo38: i don't know
21:59:09 <oerjan> maybe copumpkin knows, is the resident haskell expert now *evil cackle*
21:59:16 <oerjan> *he is
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:08:56 <NihilistDandy> So you want inlining
22:09:43 <zzo38> Yes
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:15:22 <NihilistDandy> Aww, you can't inline Core?
22:15:25 <NihilistDandy> sadface
22:17:36 <oerjan> NihilistDandy: there isn't currently a _parser_ for core afaiu
22:17:56 <NihilistDandy> Ah
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:28:28 <nooga> hi
22:28:35 <oerjan> hi nooga
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:30:50 <oerjan> ic
22:37:00 * oerjan learns that there exists http://hackage.haskell.org/package/derp
22:37:20 <Taneb> How appropriate
22:38:22 <oerjan> the backronym looks plausible, i wonder if it was intentional...
22:40:23 <Taneb> I'm going for intentional
22:40:30 <Taneb> I'da called it DP
22:41:56 <oerjan> sadly there is no herp package yet
22:42:54 <Taneb> Heroic parsing?
23:05:15 -!- olsner has quit (Read error: Operation timed out).
23:07:48 -!- nooga has quit (Ping timeout: 258 seconds).
23:10:59 <copumpkin> oerjan: what?
23:11:36 <oerjan> copumpkin: you're a haskell mod so clearly you must know everything about haskell. QED.
23:15:28 <copumpkin> oh, duh
23:15:29 <copumpkin> yeah
23:15:38 <copumpkin> or maybe I know everything about haskell
23:15:42 <copumpkin> and am therefore a mod
23:16:12 <oerjan> it's an isomorphism!
23:17:30 <NihilistDandy> Just like Howard Curry would have wanted~
23:18:22 <copumpkin> oh, was that his name!
23:19:13 <NihilistDandy> Yeah, I don't know what all this hyphen nonsense is about. It's the Curry, Howard Isomorphism
23:19:16 <NihilistDandy> Jeez
23:21:46 <oerjan> hyphen hype
23:34:30 <Taneb> Good morning
23:34:32 -!- Taneb has quit (Quit: He's a big quitter he is.).
23:37:16 <quintopia> hypehen
23:53:13 <Lymee> !sanetemp 110
23:53:13 <EgoBot> 43.3
23:53:14 <Lymee> help
23:53:49 <oerjan> better call a doctor
23:54:22 <Lymee> Do doctors carry weather control devices?
23:55:02 <oerjan> well the Doctor probably does.
←2011-08-01 2011-08-02 2011-08-03→ ↑2011 ↑all