00:04:18 <HugoDaniel> oh
00:05:18 <donri> nooo, don't leave us!
00:05:20 <donri> we need you!
02:36:02 <stepkut> what is one (easy) change we could make to the clckwrks.com site to make it look nicer
02:36:17 <stepkut> page slugs are pretty high on the list.. but maybe not easy
08:37:34 <alpounet_> alright, cleaned up my haskell install on the server
08:37:38 <alpounet_> installing clckwrks now
08:41:41 <alpounet_> by the way stepcut, why don't yiou just store the javascript libraries in your repo?
08:55:57 <alpounet_> dammit
08:56:02 <alpounet_> i just entered cabal  hell
08:58:21 <alpounet_> when installing happstack-authenticate i get
09:02:36 <alpounet_> http://circle.servebeer.com/happstack-authenticate-error
09:02:46 <alpounet_> (removed warnings and stuffs for clarity)
11:28:30 <stepkut> alpounet: because I would have to think about license issues
11:28:51 <stepkut> alpounet: but.. if you get that pure-haskell version of the downloader working, we could add a --fetch-javascript option or something
11:29:37 <stepkut> you have multiple versions of authentication and/or http-conduit installed, and are trying to build against multiple versions of them at the same time
11:29:58 <stepkut> something in your chain needs to be rebuilt against the latest http-conduit and/or authenticate
11:31:01 <stepkut> I would like to get all the javascript dependencies on CDNs, which will yield better performance anyway, and then make a simple way to download the javascript for offline/local development
11:34:49 <alpounet_> that would be great yeah
11:35:18 <alpounet_> stepkut: the problem with what you said re. my build issue is that i just issued cabal install clckwrks from a clean platform install
11:35:21 <stepkut> jstree is the only holdup
11:35:43 <stepkut> alpounet_: run, ghci, then do :set -v
11:35:47 <alpounet_> yeah, i'm wondering about what we should do re. zip handling
11:36:04 <stepkut> it will dump out a big list of conflicts
11:36:29 <stepkut> perhaps I need to bump something in happstack-authenticate
11:36:36 <alpounet_> none of the ones mentionned in my build log though
11:37:23 <alpounet_> http://circle.servebeer.com/ghci-setv
11:37:28 <stepkut> and neither authenticate nor http-conduit are installed in the global package database, nor are they installed more than once?
11:38:28 <stepkut> I wonder if that random is causing issues
11:38:35 <alpounet_> i have    http-conduit- and    authenticate-
11:38:42 <alpounet_> both in the user pkg db
11:39:10 <alpounet_> but really, i litterally reinstalled platform and issued cabal install clckwrks right after
11:39:23 <alpounet_> and i had wiped out ~/.cabal and ~/.ghc before that
11:39:36 <stepkut> looks like the only out of date dependency for happstack-authenticate is containers
11:40:00 <stepkut> I wonder if everything in happstack-land builds out of the box with
11:40:26 <alpounet_> container doesn't seem to be the problem here though
11:40:30 <stepkut> yeah
11:40:50 <stepkut> well.. this is exactly the reason why we need scoutess :)
11:41:04 <alpounet_> yeah
11:41:23 <alpounet_> so i'm unable to use clckwrks neither on debian nor win7
11:41:26 <alpounet_> uh :(
11:42:26 <stepkut> I am using authenicate- and http-conduit-
11:43:03 <stepkut> does cabal install -v yield more information like the error message says it will ?
11:43:35 <stepkut> i see this error all the time, but you ruled out all the cases that I usually see it already :-/
11:44:41 <stepkut> clckwrks will eventually have its own platform installer :p
11:44:57 <stepkut> likely generated by scoutess =)
11:47:52 <allpounet_> alright so i get
11:47:53 <allpounet_> World file is already up to date.
11:47:59 <allpounet_> right after the error
11:48:01 <allpounet_> when using -v
11:51:09 <allpounet_> which is unrelated
11:59:08 <stepkut> did it say anything else new ?
12:07:13 <allpounet_> don't think so
12:07:20 <allpounet_> except from the detailed calls to ghc
12:07:21 <allpounet_> etc
12:14:54 <stepkut> might have to ask on #hackage
12:14:59 <stepkut> it should be working!!
12:21:25 <allpounet_> yeah will do...
12:24:55 <stepcut> if you do, :set -v, in ghci, and then do, :m + Web.Authenticate.OpenId,  does that work/yield new information ?
12:47:53 <allpounet_> stepcut: it works
12:50:23 <allpounet_> e.g :browes yields a bunch of functions
12:50:34 <allpounet_> :browse*, obv.
13:02:45 <stepcut> allpounet_: :(
13:04:36 <donri> we should port clckwrks to happstack-yui, solves all the dep issues ;)
13:05:06 <stepcut> donri: that is not out of the question, i really know nothing about yui
13:05:36 <stepcut> and I have no real love for jquery aside from it being better than nothing
13:05:58 <stepcut> does it have a good module for dealing with drag-and-drop tree editting?
13:06:06 <stepcut> for editing menus+sub-menus?
13:11:14 <donri> not sure
13:11:22 <donri> jquery has tons more plugins
13:12:03 <donri> no core module that i can see; from the gallery i can find http://jafl.github.com/yui3-gallery/treeble/ and http://goonieiam.com/treeview/treefrommarkup.html
13:13:03 <donri> there's a core module for drag and drop, but i don't know how well/easily it works with those treeviews
13:13:53 <donri> gallery isn't bundled in happstack-yui though, so if you want things to work offline we're back to square one
13:14:08 <donri> it's cdn hosted though
13:15:21 <donri> http://yuilibrary.com/yui/docs/dd/list-drag.html may also be relevant?
13:16:23 <stepcut> lists are not enough.. need trees
13:17:07 <donri> trees are lists of lists ;)
13:18:45 <donri> i think jquery is better if you just want to get things for free and don't want much control over it
13:19:31 <donri> whereas yui is better for implementing things yourself
13:30:52 <kstt> hi.
13:31:30 <donri> ohai
13:31:56 <kstt> acid-state / safecopy question : what is the most idiomatic way to migrate an acid-state member which is a simple enumeration of nullary constructors ?
13:32:16 <kstt> I have a "data Page = Home | Hello | Foo | Bar"
13:32:38 <kstt> Next I want to add a page so that "data Page = Home | Hello | Foo | Bar | Baz"
13:32:49 <kstt> how to perform this migration please ?
13:34:37 <donri> do you need to? i want to know too!
13:41:14 <kstt> actually I added the constructor mid-list
13:41:57 <kstt> IIUC serialization techniques, it might work silently if the constructor is added to the end of the list.
13:42:32 <kstt> also, if added mid-list, the server starts-up and load dumped state without complaining, but crashes.
13:43:24 <kstt> (it crashes when it tries to use this data)
13:46:14 <donri> if the order of the constructors matter, i would suspect that their name doesn't... so as a migration, perhaps data OldPage = OldHome | OldHello ... then write the Migrate instance to convert from it
13:52:09 <donri> in the particular case of pages, i would suggest against using acid-state with an ADT... better use web-routes to route that Page type, or, store a name in acid-state as e.g. a Text
14:51:50 <kstt> ok
14:52:05 <kstt> also, is it possible to migrate the data without migrating the types ?
14:52:26 <kstt> let's say I have a persisted list
14:52:30 <donri> i suspect you'd have to do some kind of export-import procedure for that
14:52:32 <kstt> in version 1
14:52:48 <kstt> and I want to use safecopy to say that version 2 adds an element
14:52:56 <kstt> to that list
14:53:05 <kstt> export-import ?
14:53:09 <donri> kstt: in that case, use tuples
14:53:21 <donri> lists are meant to be arbitrary-length
14:53:44 <kstt> well, I have simplified a bit the use case
14:54:04 <kstt> my case is a type that needs not to change
14:54:04 <donri> complicatify it for me, then :)
14:54:17 <kstt> but the data inside has to change
14:54:31 <kstt> and the migration must be applied once only
14:54:49 <donri> if you have a list, you can replace it with any list where the members are the same type
14:54:56 <donri> so, in effect, you can add and remove elements as you please
14:55:12 <donri> this doesn't require any migration
14:55:34 <kstt> let's pretend I have the list of all constructors of Page
14:55:39 <kstt> Persisted
14:55:43 <kstt> I add a constructor
14:55:58 <kstt> And want to add it to the list as well
14:56:12 <donri> in that case i suggest you do deriving (Enum, Bounded), then your list is simply [minBound..]
14:56:22 <kstt> that's a work around my proble
14:56:24 <kstt> :)
14:56:53 <donri> well, i suspect what you're doing is better done some other way, so...
14:56:55 <kstt> From a SQL point of view, what I want is a data-migration, such as "strip all spaces around names"
14:56:58 <donri> easier if you explain the problem concretely
14:57:20 <donri> well, that kind of migration is actually a transaction?
14:57:38 <donri> aka. makeAcidic
14:57:52 <kstt> but it should be done once only
14:58:27 <donri> yes, if you run update for such a transaction, it is logged and replayed once when you open the transaction log
14:58:46 <donri> you want it encoded in the code rather than "per deployment"?
14:58:58 <kstt> so where should I put the "AddThisPage" instruction ?
14:59:13 <kstt> where should it be performed ?
14:59:34 <donri> dynamic data should logically be runtime data
14:59:40 <donri> you're trying to encode it statically
14:59:57 <kstt> So I guess I must implement myself some sort of data migration system.
15:00:26 <donri> you'd normally have an event like, createPage :: Page -> Update PageState ()
15:00:35 <kstt> ok
15:00:41 <donri> and then some UI for adding pages, triggering such an event
15:00:48 <kstt> no, no ui for that
15:01:13 <kstt> but that does not matter much, I'll work around this issue. Thanks for your help.
15:01:16 <donri> well, *some* UI. it could be a command-line operation
15:01:22 <kstt> indeed
15:01:24 <donri> myapp --add-page home
15:02:07 <donri> you may also want to look at "dyre" for this kind of thing where you don't really want runtime-dynamic but not quite static either
15:02:09 <donri> @hackage dyre
15:02:09 <lambdabot> http://hackage.haskell.org/package/dyre
15:02:39 <donri> it allows you to have a configuration system that's actually haskell code compiled at runtime
15:02:53 <donri> so you could have a config like, pages = ["home"]
15:03:42 <donri> bad example because you could easily do that with any configuration system... dyre is nice when you want to use haskell types, or even functions, in the config
15:03:49 <donri> @hackage configurator
15:03:49 <lambdabot> http://hackage.haskell.org/package/configurator
15:04:06 <donri> if you don't need that sort of thing
15:04:35 <kstt> I'll have a look, thank you very much
17:49:36 <pooya72> sorry noob question, where does happstack look for things like css files? some frameworks need a special "resources" or "public" file.
17:59:00 <donri> pooya72: there is no default
17:59:08 <donri> pooya72: you can set it up yourself using serveDirectory
18:03:02 <pooya72> ok thanks donri