12:37:04 <donri> it's a little worrying that they disproved two category laws for pipes-core and his answer is basically "oops, shrug, must be an implementation bug", which is basically what tekmo has been saying his responses have been all along when he's disproven laws
16:05:47 <alpounet> stepcut, we can now add pipes-core and pipes-extras in scoutess.cabal i guess
17:00:52 <stepcut> alpounet: I already did add those..
17:01:01 <stepcut> donri: yup
17:02:43 <stepcut> donri: they should model it Agda first :p
17:05:01 <donri> :)
17:05:11 <donri> point being, that seems to be what tekmo is doing, sorta
17:06:15 <stepcut> :3
17:06:27 <stepcut> hopefully tekmo will make a new release soon
17:06:34 <donri> in deed!
17:06:54 <donri> and hopefully no one will show that he has failed to solve the core issues with resource finalization etc
17:06:58 <stepcut> yeah
17:07:18 <donri> then we can all have a pony
17:08:15 <stepcut> :]
18:39:44 <stepcut> KorriX: hello!
18:39:49 <KorriX> hello
18:40:57 <KorriX> i have read about HaskellDB
18:41:26 <KorriX> but signature: IO [Record (RecCons Id Int (RecCons Name [Char] RecNil))] is not what i want :D
18:43:14 <KorriX> what did you fixed through this weekend ?
18:51:39 <stepcut> :)
18:51:47 <stepcut> I used to do work on HaskellDB
18:51:57 <stepcut> but then I decided I would rather just use happstack-state/acid-state
18:52:12 <KorriX> happstack-state is great
18:52:57 <KorriX> i wait for Data and Typeable instances for HashMap from unordered containters
18:53:27 <stepcut> yeah
18:54:27 <donri> ACTION would like to see some sql lib in the spirit of happstack anyway FWIW
18:55:11 <donri> by which i mean something that uses raw SQL via syntax-checked quasi quoting and somehow adds type safety to that
18:55:33 <KorriX> i want too. At this day templating results from database is quite hard
18:56:28 <donri> i'm not sure what i suggest is possible though...
18:56:53 <donri> the former is already done, and the latter is done without the former
18:57:22 <donri> but i don't think you can infer at compile time the type of result a raw sql query would give
19:04:42 <stepcut> donri: you would need to know the schema at the very least.. and if you are using stored procedures..
19:05:07 <stepcut> (and QQ/TH to parse the SQL query, of course)
19:05:15 <stepcut> well, parse the query and do the type checking
19:28:57 <Lemmih> A persistent SQL structure would be fun.
19:34:16 <stepcut> Lemmih: what do you mean ?
19:34:47 <stepcut> Lemmih: a SQL-like layer for acid-state? or something else ?
19:36:00 <stepcut> the real problem with HaskellDB .. is that it would be a lot cleaner if it was written in Agda I think
19:38:36 <stepcut> KorriX: this weekend I mostly worked on the haddock generator for scoutess. It works enough to generate docs for the website for now.. but what I also learned is that scoutess needs working virtual environments first
19:38:40 <stepcut> to do it right
19:39:35 <stepcut> strongly-type relational algebra would be nice.. I think it is pretty difficult to abuse the GHC type checker to make it happen though (as is shown by HaskellDB)
19:39:42 <KorriX> i hate unicode in haddock
19:39:55 <stepcut> oh ?
19:40:02 <donri> stepcut: at some point the whole point of doing raw sql is lost because you're just doing an sql dsl that happens to use sql syntax :p
19:40:03 <stepcut> the haddock documentation is pretty poor in many respects as well
19:41:16 <KorriX> i need to cat $$f | recode -d ..html | sed "s/oacute/#243/g" | sed "s/Oacute/#211/g" | sed "s/&lambda;/l/g" > _tmp/$${f##src/}; \
19:41:29 <KorriX> to generate good looking haddock
19:42:07 <stepcut> donri: the category law violations are supposedly fixed now, https://github.com/pcapriotti/pipes-core/commit/68089b9ed11835c1a3934a35db0396cc9127c7e5
19:42:37 <stepcut> KorriX: lovely!
19:42:47 <KorriX> also - http://hpaste.org/65168 - this is very usefoul script from my makefile
19:43:11 <KorriX> it generates graph of imports using graphviz
19:43:20 <donri> cool, let's see what tekmo says
19:43:29 <stepcut> donri: indeed :)
19:44:12 <stepcut> donri: I have worked with both of them on some pipes related projects.. and they both have their strengths.. definitely trust tekmo more when it comes to the category laws
19:44:48 <Lemmih> stepcut: sqlQuery :: SQL -> Db -> [Result]; sqlUpdate :: SQL -> Db -> Db
19:45:09 <Lemmih> Something like that.
19:45:17 <stepcut> Lemmih: so that is essentially all dynamically typed then?
19:45:36 <Lemmih> Yep.
19:45:58 <stepcut> Lemmih: that is pretty easy then :)
19:46:21 <stepcut> I have implemented some like it for querying debian control files
19:46:49 <stepcut> dql
19:47:40 <stepcut> was pretty nice, you could do things, select (name, version) from packages.bin where version > 1.0
19:47:47 <Lemmih> Put it on hackage, then. And please support all of SQL-92 (:
19:48:11 <stepcut> also supported joins and Dependency following
19:48:16 <Lemmih> Or SQL3 but it isn't necessary.
19:48:40 <stepcut> the hard part of a SQL database is worrying about all the data that is on the disk :p
19:49:01 <Lemmih> Don't worry about that.
19:49:07 <Lemmih> There, hard part is gone.
19:49:21 <stepcut> all that fancy query planning, etc, is just trying to figure out how to minimize disk seqs
19:49:29 <stepcut> if you don't have those, then it is easy
19:49:47 <Lemmih> You keep saying easy but I don't see it on hackage yet...
19:49:50 <stepcut> you just got, joins, projections, selections, sub-selections, and a few other things
19:50:11 <stepcut> well, I want something type-safe.. that is not easy
19:50:30 <Lemmih> Bah, not necessary.
19:50:40 <Lemmih> Typesafe layer can come later.
19:51:06 <Lemmih> Untyped SQL + acid-state would blow people away.
19:51:52 <stepcut> k
19:51:54 <stepcut> one moment
19:52:04 <Lemmih> And it would provide a great testbed for HaskellDB.
19:52:17 <donri> why would you want to use sql for acid-state
19:52:24 <donri> as opposed to something like ixset
19:52:28 <donri> or am i misunderstanding?
19:52:45 <stepcut> donri: ixset is not relational by itself.. ixset is like a single table
19:52:46 <Lemmih> Ixset is horrible.
19:53:01 <Lemmih> Yeah, and what stepcut said too.
19:53:07 <stepcut> Lemmih: that too!
19:53:10 <donri> "something like" :)
19:53:17 <stepcut> Lemmih: HiggsSet looks interesting
19:53:44 <Lemmih> donri: HiggsSet is difficult to build and isn't relational.
19:54:12 <donri> it builds fine now?
19:55:50 <Lemmih> It has weird dependency constraints which makes it difficult to build.
19:55:57 <Lemmih> The code itself builds fine.
19:57:01 <Lemmih> But an untyped persistent SQL structure (based on the same principle as HiggsSet) would kick so much ass.
19:57:42 <Lemmih> (Persistent as in not-mutable)
20:13:54 <Lemmih> ACTION will head back to his apartment without internet.
20:14:01 <stepcut> :,(
20:14:07 <stepcut> :,(
20:15:23 <Lemmih> No internet is a small price to pay for Haskell work (:
20:15:50 <Lemmih> See ya.
20:19:05 <stepcut> :)
21:24:23 <tazjin> Hey, I'm trying the AcidState tutorial in the Happstack Crash Course - considering it as an alternative to the CouchDB I currently use for my blog
21:24:45 <tazjin> I've set up all my types, records and IxSet instances - but deriveSafeCopy doesn't work. Code and error are here: https://gist.github.com/2018257
21:24:49 <tazjin> Any ideas?
21:25:02 <stepcut> one moment
21:25:36 <stepcut> you need to do deriveSafeCopy for the Session, User, and Entry types as wel
21:25:59 <stepcut> deriveSafeCopy is not recursive
21:26:35 <stepcut> in theory it could automatically handle sub-types that do not have SafeCopy instances.. but that  would make migrations a big headache
21:27:23 <tazjin> Uhh, I feel stupid now. Thanks :3
21:27:23 <stepcut> so, it is better to do the work up (aka, line extra line per type) and create explicit SafeCopy instances for all types instead of just the top-level type
21:27:28 <stepcut> no worries
21:27:48 <stepcut> the deriveSafeCopy code could, in theory, see the problem and provide a clearer error message
21:28:15 <stepcut> but someone would need to think it was important enough to dedicate a couple hours to the task
21:30:07 <tazjin> Which it probably isn't
21:31:13 <donri> once you get used to reading ghc errors it's somewhat clear already though
21:31:30 <stepcut> I think it is important.. but not the most important thing that *I* could doing on acid-state right now
21:31:56 <stepcut> honestly, the best thing someone could do for acid-state right now is to figure out how to reduce the ram that hackage2 server uses
21:32:05 <stepcut> that would be extremely valuable in multiple ways
21:40:04 <tazjin> Hackage is running on acid-state?
21:41:01 <donri> hackage2 is
21:41:03 <stepcut> Hackage is running on perl or something horrible. Hackage 2 is happstack+acid-state
21:41:34 <stepcut> but, hackage 2 uses far for RAM than it ought to
21:42:00 <stepcut> like 10x more than it should
21:42:02 <stepcut> IMO
21:42:34 <stepcut> acid-state needs some good tools for doing (static) analysis of RAM usage
21:43:11 <donri> is ram usage a blocker for hackage2 migration?
21:43:11 <stepcut> would be nice if there was a function like $(deriveRamUsage ''SomeType) that would examine the type and then create an infographic which showed how much RAM each copy of that instance would use
21:43:16 <stepcut> donri: sort of
21:43:30 <stepcut> donri: it makes it difficult for developers to contribute in some cases
21:43:52 <donri> well you don't need to import all data for a dev machine?
21:44:13 <stepcut> if it use less RAM in the short term, that would give us more time to explore ways to smartly cache the data to disk under memory pressure
21:44:30 <stepcut> you do not need to.. but it is nice to.. and requires some work to not import all the data
21:44:57 <donri> doesn't a full import take hours
21:45:01 <stepcut> no
21:45:15 <donri> took them hours to set up the mirror?
21:45:21 <stepcut> a full rsync of all the .tar.gz for a mirror takes hours
21:45:27 <donri> ah
21:45:37 <stepcut> but to run hackage 2 you only need to import the index.tar (and, optionally, the upload log)
21:45:46 <stepcut> so, that only takes a few minutes to download
21:46:00 <stepcut> though, it does take surprising long to load it all into ram
21:46:34 <alpounet> the memory usage was cmccann's main concern 2 or 3 weeks ago
21:46:59 <stepcut> one easy way to save RAM is not not store the raw .cabal files and the parse .cabal files all in RAM.. which it currently does
21:47:15 <stepcut> I have a hacked up version that does not do that and it saves 50% memory I think
21:47:34 <stepcut> but I really need to get Happstack 7 out, and do some other things, before I can submit a patch for that :-/
21:47:42 <stepcut> though, someone else is welcome to submit a patch :)
21:48:15 <alpounet> stepcut, so, what's left to do for the Happstack 7 release?
21:48:16 <alpounet> :)
21:48:46 <stepcut> alpounet: mostly.. writing about how awesome happstack 7 is
21:49:12 <stepcut> and removing happstack-state, happstack-data, happstack-util, and happstack-ixset from happstack.cabal
21:49:32 <stepcut> alpounet: and a few minor tweaks to the the haddock building stuff
21:49:45 <alpounet> did you write a new website for it?
21:49:47 <stepcut> the haddock building stuff needs some major changes.. but that does not block 7
21:49:50 <stepcut> alpounet: yes
21:50:01 <alpounet> neat
21:50:17 <stepcut> alpounet: there is a little work there too as well.. I need to move the logbot into the new site
21:50:19 <alpounet> $(deriveWebsite 'happstack)
21:50:25 <stepcut> alpounet: but since we fixed ircbot already, that is easy :)
21:50:49 <alpounet> heh alright
21:50:54 <alpounet> so H7 will be out in a few days
21:50:55 <stepcut> ever since we fixed the ircbot library, synthea has been staying connected without any manual intervention
21:50:59 <stepcut> alpounet: I hope so
21:51:17 <stepcut> alpounet: mostly, it already is out :)
21:51:40 <stepcut> alpounet: aside from updating the .cabal files, all the code is already on hackage
21:52:12 <alpounet> there's just the main happstack package to upload
21:52:14 <alpounet> and bam
21:52:15 <alpounet> H7.
21:52:18 <stepcut> alpounet: so the release of 7 is more about marking the start of working 8 than anything else
21:52:24 <alpounet> hah
21:52:27 <donri> stepcut: apparently you can also have packages unlisted in hackage, but still kept available. perhaps do that for happstack-state etc.
21:52:39 <stepcut> well, I will probably bump the version number of happstack-server as well (but not happstack-state, etc)
21:52:42 <donri> seems you have to email the hackage guy though
21:53:01 <stepcut> donri: yes. I will mark those as deprecated. I have done that before for other packages
21:53:16 <donri> ok
21:55:32 <stepcut> then the real fun begins
21:55:39 <stepcut> well. some of the real fun
21:56:14 <stepcut> post 7, we are going to work on making it easier to contribute, easier to follow development, and improve the overall infrastructure -- which is where scoutess comes in
21:56:23 <stepcut> (and the new site)
21:56:39 <stepcut> then we can get do fun stuff like look at new backs, finally make dir/path/etc monadic, etc
21:57:08 <stepcut> and work on making acid-state more pratical for more people
21:58:03 <alpounet> stepcut, how do you intend to achieve "making it easier to contribute, easier to follow development"
21:58:05 <donri> yay
21:58:09 <donri> bedtime
21:58:14 <stepcut> good night!
21:58:18 <donri> *cough* github *cough*
21:58:18 <stepcut> dream of happstack!
21:58:32 <stepcut> donri: yes, github mirroring.. is a high priority
21:58:35 <donri> :)
22:52:03 <alpounet> ACTION likes having a "hackage" variable
23:00:05 <tazjin> Is there still a "Stability" flag in Hackage2?