17:41:46 <bonobo> hi
17:41:47 <lambdabot> bonobo: You have 1 new message. '/msg lambdabot @messages' to read it.
17:41:53 <stepkut> hi
17:42:24 <bonobo> just read about heist
17:42:38 <bonobo> and I remeber that you did something about integrating those two
17:42:43 <bonobo> I mean hesit and happstack
17:42:46 <bonobo> heist
17:42:59 <stepkut> yeah, one moment
17:43:13 <bonobo> I'd like to less of haskell-src-exts and more of heist in my code....
17:43:15 <stepkut> https://cdsmith.wordpress.com/2010/10/05/using-heist-and-happstack/
17:43:40 <stepkut> it would be nice to get it packaged up, even though there is not much too it
17:43:50 <stepkut> happstack-heist
17:44:05 <stepkut> why less haskell-src-exts ?
17:47:05 <bonobo> where is happstack-heist?
17:47:40 <stepkut> bonobo: nowhere.. that is the problem
17:48:01 <stepkut> bonobo: someone needs to take the 10 lines of code from that blog and create a happstack-heist package from it :)
17:48:17 <bonobo> oh noooos! no more packages!
17:48:31 <stepkut> bonobo: do you want happstack to always depend on heist, hexpat, etc ?
17:48:55 <bonobo> well, right now it depends on HJScript... :)
17:49:01 <stepkut> :)
17:49:22 <stepkut> i think perhaps it should not..
17:49:31 <stepkut> unfortunately, there is no good solution
17:50:12 <bonobo> if I were me I'd go for the maximum solution: happstack depends on everything unless you give a magic flag to cabal configure
17:50:27 <bonobo> then newbees get the kitchen-sink
17:50:34 <bonobo> and others have a way to optimize
17:50:44 <stepkut> those magic flags violate cabal policy and break things
17:51:01 <stepkut> because there is no way to specificy that you depend on the version of happstack-kitchensink that has heist support enabled
17:51:10 <bonobo> really? cabal policy? in what way?
17:51:32 <stepkut> the flags are not allow to change the exported API of a package
17:51:43 <stepkut> s/allow/allowed/
17:51:58 <bonobo> really?
17:52:01 <stepkut> yes
17:52:05 <bonobo> so what are the flags for in that case?
17:53:02 <bonobo> so how about making: heistSupport = undefined in case of -f NoHeistPlease ?
17:53:43 <stepkut> bonobo: no. because cabal likes to recompile things all the time, and it might decide to recompile the package with out the heist flag
17:54:33 <stepkut> flags in cabal are weird.. basically you have lots of flags, and then cabal somewhat randomly picks flags until it can statisfy all the dependencies and compile stuff
17:54:37 <bonobo> cabal is evil
17:54:50 <stepkut> yes. but far less evil than pre-cabal
17:55:12 <bonobo> how do ruby gems or others solve the dependency problem?
17:55:24 <bonobo> pear has something like "optional dependency"...
17:55:33 <stepkut> when everything was ad-hoc Makefiles that only worked on the authors computer (sometimes including absolute references to their home directories)
17:55:52 <stepkut> bonobo: I do not know. Ask dcoutts_ :)
17:55:57 <bonobo> been there done that suffered :(
17:56:34 <stepkut> bonobo: I spent many years doing linux distribution develop, and I am tired of thinking about dependecies and dependency issues, and how it should really be done.
17:56:57 <stepkut> bonobo: I just do what the rules say now :)
17:57:42 <bonobo> aha
17:58:19 <stepkut> unfortunately, the rules leave a problem. If we put heist in happstack-heist, then we get finer granularity of dependencies. But it means that the ToMessage instance for heist will not automatically be in-scope when you import Happstack.Server
17:58:59 <bonobo> how about making decisions for the users?
17:59:03 <stepkut> so either we depend on everything under the sun (which people hate, and which causes installs to fail far more often), or we get orphan instances and have to import extra modules
17:59:21 <stepkut> we did, you get HSP and BlazeHtml by default, but heist is optional :)
17:59:23 <bonobo> I just think that heist is better that haskell-src-exts
17:59:31 <stepkut> why?
17:59:44 <bonobo> can be reloaded without restarting server
18:00:01 <stepkut> bonobo: what if hsp could be reloaded without restarting the server?
18:00:14 <bonobo> can it?
18:02:21 <stepkut> not today
18:02:39 <bonobo> so how to make it do so?
18:03:25 <stepkut> http://code.google.com/p/happstack/issues/detail?id=20
18:08:27 <stepkut> you can use hinotify to watch the HSP pages, and when they are modified, automatically rebuild and reload them into the server. Back when it was working, you would save the file and by the time you switched to the browser and hit reload it was already recompiled and reloaded
18:09:20 <stepkut> assuming that was made to work again, what reasons would you choose heist over HSP?
18:22:37 <bonobo> heist has still faster change route, I guess
18:22:49 <bonobo> what is the reason to prefer hsp over heist?
18:22:50 <stepkut> change route ?
18:23:30 <bonobo> yes, changing a thing is reflected on the web immediatelly
18:24:31 <stepkut> I like HSP because I get type safety, the full power of haskell in my templating language, and can easily embed things like formlets or web-routes in my templates
18:24:33 <bonobo> oh god, now the mtl vs monads-fd issue!
18:24:47 <stepkut> yes, mtl vs monads-fd makes me sad :(
18:25:08 <stepkut> someday happstack will switch.. but it is hard to say when the right time is..
18:25:21 <bonobo> stepkut: I'm not the one editing my templates, and THEY do not like the GHC error messages
18:25:40 <bonobo> the only time is now
18:25:49 <bonobo> what is stopping happstack from switching?
18:25:56 <stepkut> bonobo: happstack ?
18:26:03 <stepkut> oh, to mtl?
18:26:12 <bonobo> to monads-fd?
18:26:17 <bonobo> I have no idea actually
18:26:18 <stepkut> oops, that's what I meant
18:26:27 <bonobo> which one is the "correct" library?
18:26:36 <stepkut> basically, if we switch to monads-fd, then we will not work with the other things that use mtl
18:26:53 <stepkut> I think we may currently depend on some mtl using libraries
18:27:05 <bonobo> hmm
18:27:18 <bonobo> no way out...
18:27:47 <stepkut> mtl is what is in the haskell platform
18:28:05 <stepkut> when haskell platform uses monads-fd, it will definitetly be time for happstack to switch. But the right time could be earlier as well.
18:28:22 <bonobo> a cabal flag?
18:28:24 <bonobo> hahahah
18:28:26 <bonobo> but
18:28:28 <stepkut> I was abotu to say that
18:28:51 <stepkut> it is supposed to be nearly possible soon
18:28:52 <bonobo> are there some actuall issues with switching? like mtl vs monads-fd incompatibility?
18:29:21 <stepkut> I think the plan is that monads-fd is supposed to provide a mtl compatible interface so that you can just recompile agaist monads-fd
18:29:30 <stepkut> but there are some minor things that are not quite right yet
18:29:47 <stepkut> but then you end up in the same situation again, except it is monads-fd vs monads-tf
18:30:21 <stepkut> based on the threads I have seen so far, people who seem to know what is going on think it is still a bit early to switch
18:31:16 <stepkut> I am hoping someday someone will say something that will make it all clear :)
18:32:33 <stepkut> I am certainly all for using the transformers package -- when the time is ripe :)
18:33:07 <stepkut> regarding heist, I do think that having non-programmers edit templates is a valuable use case.. That is why I would like to see happstack-heist ;)
18:33:36 <stepkut> my feeling on templates is that there are many different use cases, and no single template solution can make everyone happy
18:33:56 <stepkut> so happstack should make it easy to use whatever works best for you
18:34:49 <stepkut> heist definitely appears to fill a hole in the templating spectrum
18:35:30 <stepkut> my feeling is that, BlazeHtml, HSP and heist are the most interesting html templating systems. But hamlet, HStringTemplate, etc, have their use as well
18:35:41 <stepkut> and Text.(X)Html should just die :)
18:36:02 <McManiaC> yup
18:36:17 <stepkut> in the crash course, those are the three that I am going to document first
18:42:49 <bonobo> hsp is a bit advanced...
18:42:56 <stepkut> yep
18:43:02 <bonobo> and I say it solely for ghc error messages
18:43:17 <stepkut> BlazeHtml is better if you do not intend to use any of the advanced power of HSP I think
18:46:14 <bonobo> yes
18:46:24 <bonobo> I do not think that HSP should be reloaded
18:46:32 <bonobo> if you need reloads, heist is fine
18:46:52 <stepkut> no
18:47:03 <stepkut> heist does not do many things that HSP does
18:47:57 <andey> testing
18:48:04 <andey> wtf
18:48:24 <stepkut> they each provide a set of valuable features. I see no reason to bar a feature from HSP just because heist has it..
18:48:46 <andey> can you see what im saying
18:48:49 <stepkut> yes
18:48:55 <stepkut> andey: yes
18:49:27 <stepkut> andey: see for yourself, http://www.happstack.com/irc-logs/happs-2010-10-19.txt
18:49:29 <andey> lol when i got to the #mysql channel, it says i cannot talk
18:49:37 <andey> wrong place to mention it
18:49:43 <andey> but i registered my nick
18:49:46 <andey> meh
18:49:46 <andey> err
18:49:53 <stepkut> andey: hmm
18:50:21 <stepkut> andey: usually registering with nickserv will do the trick. But maybe they let even fewer people talk..
18:50:48 <andey> k thanks
18:52:02 <bonobo> stepkut: hsp has its place in the code, as type-checked xml
18:52:19 <bonobo> heist as external template, more design oriented
18:52:23 <stepkut> righ
18:52:24 <stepkut> t
18:52:56 <bonobo> in case of hsp no reload required (too tight in the code), in case of heist no types needed (too far away from code)
18:53:58 <stepkut> but HSP reloading is very useful -- especially during development. Having to kill your server, recompile, relink, and reload it everytime you make a small change to the page is really slow and annoying
18:54:47 <stepkut> being able to just save and hit reload gives you the development speed of using external templates, but you still get static type checking, the expressive template language (aka, Haskell), etc
18:54:59 <stepkut> why wouldn't you want that ?
18:55:05 <stepkut> (if you were using HSP)
18:56:33 <bonobo> maybe
18:56:41 <bonobo> but it is not working now, is it?
18:56:48 <bonobo> where is MonadPlus defined?
18:57:10 <stepkut> Control.Monad
19:01:20 <bonobo>    Failed to load interface for `Control.Monad':
19:01:22 <bonobo>      It is a member of the hidden package `base-'.
19:01:23 <bonobo>      Perhaps you need to add `base' to the build-depends in your .cabal file.
19:01:33 <bonobo> uh? I depend on base-
19:01:43 <stepkut> you broke it!
19:01:52 <bonobo> how?
19:02:02 <stepkut> dunno
19:03:30 <bonobo> ghc bug I guess, related to PackageImports
19:04:06 <stepkut> maybe you depend on something which depends on base 3
19:06:44 <bonobo> nope
19:07:00 <bonobo> enabling PackageImports for some reason decided to use base-3 instead of base-4
19:07:15 <bonobo> import "base" Control.Monad fixed issue
19:07:24 <stepkut> weird
19:07:37 <bonobo> bug!
19:17:09 <bonobo> oh boy, it worked
19:17:18 <bonobo> it could have been quite easy if not the monads-fd mtl issue
19:17:22 <stepkut> yep
19:36:52 <bonobo> need some sleep, ciao
22:05:48 <dcoutts_> stepkut: btw, I cannot recommend PackageImports, it's almost certainly not what you want