00:16:08 <donri> stepcut: clientsession needs testing first
00:16:52 <stepcut> I guess I better start testing then :p
00:17:02 <stepcut> or.. we could announce that it needs testing ?
00:17:17 <donri> tbh i haven't tested it *at all* in *any way* :P
00:17:31 <donri> it typechecks... but haskell is no agda :D
00:22:22 <stepcut> :)
01:15:48 <donri> stepcut: https://plus.google.com/u/0/113926289500476760879/posts/ESPYbswCMRV seen?
01:17:42 <stepcut> I have now.. not sure what I was supposed to learn though :(
01:18:54 <donri> yea duno just thought of you :D
01:19:05 <stepcut> :)
02:33:45 <donri> stepcut: have you decided "against" df-0.3?
02:34:04 <stepcut> no, I just have not had time to really try it out
02:34:26 <stepcut> it feels like a step backwards though where you have to match up the names in the html with the names in your thing that extracts the values
02:34:39 <hpaste_> donri pasted yay xml in do-notation at http://hpaste.org/67193
02:34:40 <stepcut> seems like it is only slightly more powerful than what we can already do with RqData
02:34:48 <stepcut> :)
02:35:10 <donri> well, it's certainly a good thing that it's easier to write custom views... but yes on the "string programming"
02:35:20 <stepcut> can we also now do, [jmacro| |] instead of [$jmacro| |] in trhsx files ? Or has that change not made it all the way through the system yet
02:35:42 <donri> we've been able to do that for some weeks now yes
02:36:13 <stepcut> in unrelated news I got asked today if I wanted to play cello in a quartet on a cruise ship next winter :)
02:36:16 <donri> you may need to set some constraints on src-exts yourself though because jmacro does not
02:36:21 <stepcut> that would be swell.. if I played cello..
02:36:27 <donri> i do!
02:36:44 <stepcut> well enough to play on a cruise ship?
02:36:52 <donri> well, i heard some bach, thought "that's awesome, got to learn to play that on the cello", so i did then i haven't practiced since :(
02:36:59 <stepcut> :(
02:37:15 <stepcut> I believe they are doing mostly mozart and beethoven
02:37:47 <donri> http://youtu.be/sPY7xL1JItQ
02:40:20 <stepcut> that bach dude knew what he was doing :)
02:41:00 <donri> quite!
02:41:25 <donri> mozart is overrated... some good ones, but mostly not
02:42:22 <donri> but... i think most of his music is simply too cheerful for me :P
02:42:27 <stepcut> :)
02:43:03 <donri> as evidenced by my liking his requiem :P
02:45:08 <donri> lately i've been listening to a lot of puccini :D
02:45:55 <donri> oh dear new hp:mor
03:01:44 <stepcut> I was listening to puccini earlier today while programming
03:02:00 <stepcut> now I am listening to myself
03:03:03 <donri> :)
03:03:09 <donri> ACTION just put on tosca
03:03:41 <donri> they're currently singing about mario, or as they say in latin, super mario
03:03:41 <stepcut> ACTION just put on the adaptive limiter
03:15:41 <donri> stepcut: have you talked to nibro about exact-printing in this process?
03:15:57 <stepcut> yes
03:16:21 <donri> what's the story
03:16:23 <stepcut> the exact parser/printer has not been tested much.. if it works, it should take a day, if there are bugs.. could take longer
03:16:30 <donri> ah
03:18:06 <donri> you can pass options to trhsx with -optF so perhaps it could be a switch for now?
03:19:15 <stepcut> well.. I think it either works or it doesn't ?
03:19:21 <donri> oh ok
03:19:33 <stepcut> someone just has to try it and see what happens :)
03:19:50 <donri> i thought maybe it would work but produce incorrect output for example
03:20:04 <stepcut> maybe?
03:20:09 <stepcut> I don't really know
03:20:15 <donri> nibro only knows!
03:20:38 <donri> i like how nibro looks like a lojban root word (like "donri")
03:20:47 <stepcut> :)
03:20:58 <donri> also "kibro" is our word for "cyber/internet-related"
03:22:39 <donri> the exact-printer might be cool for automated refactoring / editor tools kind of stuff
03:23:00 <stepcut> yep
03:23:04 <stepcut> I think that is the idea
03:23:14 <stepcut> that is also where the built-in type checker could be useful
03:28:55 <stepkut> well, I am off to bed now
03:29:06 <donri> good night!
15:26:16 <Ngevd> Still having problems with serveFile
15:26:37 <mekeor`> Ngevd: which problem?
15:27:04 <Ngevd> I think it's more I don't know how it works
15:27:18 <Ngevd> I've got a file on here, and I want to put it in my website
15:28:23 <mekeor`> Ngevd: are you sure that you won't add other files, too? maybe you want to use serveDirectory... anyway, go on.
15:28:38 <mekeor`> btw, i think http://hackage.haskell.org/packages/archive/happstack-lite/latest/doc/html/Happstack-Lite.html#v:serveFile is quite helpful.
15:29:50 <Ngevd> I've got the line myApp = msum [blah..., dir "jquery.js" $ serveFile (lift . asContentType "application/javascript") "./jquery-1.7.2.js", ...]
15:30:25 <Ngevd> Is that the right thing?
15:31:21 <Ngevd> (if I want localhost:8000/jquery.js to be identical to the jquery-1.7.2.js file in the same directory as the executable)
15:32:54 <mekeor`> did you try to remove 'dir "..." $' ?
15:33:39 <mekeor`> actually, personally, i'm not sure either. (i'm a quite nooby.) but anyway. i've to go now :/ -- good luck.
15:34:29 <Ngevd> I think I tried that first, but I'll try again?
15:34:34 <mekeor`> also, i still recommend serveDirectory (because you usually don't just want to serve ONE file.)
15:34:38 <Ngevd> By!
15:34:41 <Ngevd> Thanks!
15:34:56 <mekeor`> ACTION is afk
16:28:59 <donri> that lift shouldn't be there
16:30:31 <stepkut> donri: I think right now the lift does need to be there.. but it should probably be lift $ not lift .
16:32:52 <donri> stepkut: i think it should be (return . liftIO $ ...)
16:33:01 <donri> if ey's using -lite
16:33:03 <stepkut> :-/
16:33:42 <donri> wait the return isn't necessary i guess
16:33:54 <stepkut> yeah
16:33:57 <donri> :t liftIO
16:33:58 <lambdabot> forall a (m :: * -> *). (MonadIO m) => IO a -> m a
16:34:02 <stepkut> only the liftIO
16:34:24 <donri> ACTION managed to think of liftIO as unsafePerformIO
16:35:22 <stepkut> heh
16:35:41 <donri> also yay nibro fixed the infix operators
16:36:01 <stepkut> :)
19:04:41 <stepkut> ooo. cabal bench!
19:04:43 <stepkut> someone write some benchmarks!
19:05:29 <dcoutts> ACTION forgot that was new
19:05:42 <stepkut> :)
19:05:43 <dcoutts> shows it's been too long between releases
19:08:11 <stepkut> :)
19:16:12 <donri> is it only exitcode-stdio for now?
19:17:27 <donri> i think benchmarks perhaps more so than test suites would benefit from programmatic interpretation so you can do stuff like generate graphs over time
19:21:31 <dcoutts> donri: yes, the idea is to work out more interesting interfaces over time
19:21:39 <dcoutts> like with testsuites
19:21:50 <dcoutts> where we have a second interface that's nearly ready
19:23:02 <donri> great!
19:32:26 <luite> oh is there an official 1.14 release?
19:33:26 <luite> oh very cool!
19:33:32 <luite> finally, I might add ;p
19:42:13 <donri> luite: btw apparently src-exts can do what you said th does, and next hsx release will use that
19:42:37 <luite> good :)
19:42:55 <luite> I'm  hoping to contribute similar support to hamlet when i have time
19:43:16 <donri> until michael dumbs it down to just identifiers eh
19:43:19 <luite> but michael seems to be opposed to having more haskell support inside templates
19:43:29 <luite> and some snap folks seem to have the same opinion
19:43:38 <stepkut> fools!
19:43:50 <stepkut> ;)
19:43:58 <donri> i think if you have something based on haskell, dumbing that down is sort of "not getting it"
19:44:01 <luite> i personally think that as long as it's pure, having haskell in templates does no harm
19:44:12 <donri> it's something else entirely to have a whole different unrelated language like heist (xml)
19:44:23 <luite> even if it's technically "logic", you can't do anything with it
19:45:19 <stepkut> ACTION is ok with allowing any monad to be used in a template
19:45:25 <donri> though hamlet is a sort of weird beast that's neither haskell nor not haskell :P
19:45:53 <luite> donri: right, especially now that infix operators have been disabled
19:45:59 <donri> stepkut: i like doing acid-state queries from hsp templates... makes for nice "widgets" sort of thing
19:46:39 <stepkut> donri: yeah. Also, being able to use MonadRoute inside a template is nice so you can do, <a href=SomeRoute>lol!</a>
19:46:50 <luite> stepkut: i'm not sure of that yet... mightybyte already calls hamlet the php of haskell, allowing that would only make it workse ;p
19:46:53 <luite> worse
19:47:14 <stepkut> and it just uses the (EmbedAsAttr YourAppMonad (Attr String Sitemap)) instance
19:47:15 <donri> did you guys see that snap tutorial
19:47:37 <stepkut> luite: well, I call heist the m4 of Haskell so...
19:47:42 <donri> http://learnmeahaskell.blogspot.se/2012/04/haskell-newbies-guide-to-snap-part-1.html  -- or "how to use heist like php" :D
19:48:23 <luite> so what is hsx? the jsp of haskell? or is there a better one?
19:48:51 <donri> i think hsx isn't like any template engine because it's embedded in code, not the other way around
19:49:08 <stepkut> luite: no.. it is XML/HTML templating done right ;)
19:49:37 <stepkut> HSX is actually more like blaze-html than anything else
19:49:52 <donri> stepkut: quasiquoted hamlet is also similar
19:49:53 <stepkut> the tricky part is that there is a pre-processor that allows you to use alternative syntax
19:50:49 <stepkut> donri: yes.. hamlet is a less powerful version of hsx
19:50:55 <donri> hsx makes me modularize templates into many small units, much more than any templating system i've used previously
19:51:01 <stepkut> yup
19:51:20 <luite> hm, I think the same of hamlet, but I haven't used hsx yet
19:52:33 <stepkut> hamlet is probably a bit easier to grasp because it does not generate such horrible error messages when thinsg go afoul
19:52:45 <donri> quasiquoted hamlet could encourage the same pattern, though seems the preference is for hamlet-in-files
19:53:05 <donri> and files are "expensive" so people tend to modularize less if each "module" requires a file
19:53:39 <luite> donri: hmm, really? I think hamlet in files is mostly encouraged for the base of the page, default-layout etc
19:53:46 <donri> OK
19:54:07 <luite> perhaps for widgets if you have multiple things for a single purpose
19:54:17 <donri> last i read a tutorial it used quasiquotes with a note that "normally you'd put them in files"
19:54:21 <donri> or somesuch
19:54:34 <luite> hmm, could be
19:54:50 <luite> I think it's generally perceived to be easier on designers if they edit separate files
19:55:23 <luite> but lots of yesod library things use small snippets of quasiquoted hamlets, for example form and form field renderers
19:57:38 <donri> stylesheet url = <link rel="stylesheet" type="text/css" href=url/>  -- do you commonly do things like this with hamlet?
19:59:43 <luite> well, not directly
20:00:40 <luite> you'd use a Widget for that, which is a collection of html elements, along with other data, like stylesheet urls or styles
20:01:10 <donri> true, so bad example :P
20:07:14 <donri> how do you deal with stuff like, container divs where you want multiple levels?
20:07:26 <donri> do you tend to repeat the divs every time or refactor them out somehow?
20:07:41 <donri> blaze-style combinators are even better than hsx for that sort of thing
20:08:03 <stepkut> donri: ?
20:08:50 <donri> stepkut: you can use composition for nesting... container = div ! class_ "outer" . div ! class_ "inner" . div ! class_ "container"
20:09:08 <donri> heck you can refactor common attributes like class_
20:09:27 <donri> e !. c = e ! class_ c
20:09:34 <donri> container = div !. "outer ...
20:10:03 <luite> donri: hm, can you give an example? if it's too difficult to express in hamlet, then blaze would work
20:10:20 <luite> I haven't done nested stuff so far so I don't really know
20:10:49 <donri> luite: see "container" above
20:11:22 <donri> like, units on a grid
20:11:28 <stepkut> container x = <div class="outer"><div class="inner"><div class="container"><% x %></div></div></div> ?
20:11:47 <donri> stepkut: sure. just saying it's easier with combinators because you get haskell stuff like composition
20:11:50 <luite> hmm, I don't really understand... you could usually do:
20:11:58 <luite> let myInnerWidget = ....
20:12:10 <stepkut> donri: sure.. that is why we need to update hsx-xhtml to be hsx-html5
20:12:14 <donri> +1
20:12:25 <luite> and then [hamlet| blah blah blah ^{container myInnerWidget} |]
20:12:34 <luite> where container :: Widget -> Widget
20:13:48 <luite> container inner = [whamlet| <div class="outer">^{inner} |]
20:14:14 <luite> sorry had to keep te nesting to one level because of the whitespace sensitive nature of hamlet :p
20:14:30 <donri> can't you nest on one line if you write the >
20:14:42 <luite> yeah but then you have to close the tags
20:14:50 <donri> huh
20:15:43 <luite> > is required now btw
20:15:43 <lambdabot>   Not in scope: `is'Not in scope: `required'Not in scope: `now'Not in scope: ...
20:15:58 <luite> oh and I should've said <div .outer>^{inner}
20:16:04 <luite> shortcuts ftw ;)
20:16:33 <donri> sure, except with hsx/blaze we get to invent our own shortcuts ;)
20:17:17 <luite> for attributes, you can make your own if you use hamlet and *{attrs}, which adds a bunch of attributes
20:17:27 <donri> aha
20:18:09 <donri> hsx has <elem [attr := value..]>
20:18:26 <donri> that's an actual list
20:18:28 <luite> kind of an ad hoc syntax addition possibly, was added to support more customizable form fields
20:19:11 <donri> but again, combinators lend themselves more naturally to such extensions
20:20:07 <luite> I think the point of hamlet is to do the 95% of "basic" stuff, the rest can be handled with blaze
20:21:04 <donri> yea... it's directly compatible with blaze right?  i.e. [hamlet||] produces blaze Html
20:21:17 <luite> yes, and you can just insert blaze html with #{}
20:22:06 <luite> I think it's a function that takes a url rendere and produces blaze html though
20:22:11 <luite> +r
23:49:04 <tazjin> Hm, I'm still playing with web-routes a bit. Set up the skeleton of an app (all handler functions as undefined + all appropriate routes etc.) and then tried testing my routes
23:49:44 <tazjin> everything worked well, I committed to my testing repo, tried to compile it again and suddenly received an error. I've used hg diff against the source and there were literally no changes, yet I get this now: http://pastebin.com/cTDHhGke
23:53:39 <donri> tazjin: do you have Web.Routes.Happstack imported?
23:53:55 <tazjin> Yep
23:54:25 <tazjin> I'm trying to re-checkout the repository in a different folder and see if it works again, what's confusing me is that I literally changed nothing and one moment it worked, the next it doesn't ;O
23:55:10 <donri> something could have changed, such as mtime ;)
23:55:32 <tazjin> Strange, now it works again.
23:55:37 <tazjin> I blame Spiderman
23:55:37 <donri> :)
23:55:43 <stepcut> :-/
23:56:37 <donri> maybe it's becauses you're using ghci to reload
23:57:30 <tazjin> Unless it happens again I'll probably never know