12:58:37 <donri> st3pcut: did you try higgsset? it doesn't build for me
17:44:27 <stepkut> Lemmih: some acid-state questions in this thread, http://www.reddit.com/r/haskell/comments/p75ko/introduction_to_using_acidstate_ixset_and/
17:55:36 <donri> #hello
17:55:43 <donri> guess not eh, synthea?
17:56:28 <stepkut> donri: when I redo the site :)
17:56:52 <stepkut> synthea is the basis of the ircbot code, but in the new version she will be based on the ircbot code :p
17:56:53 <donri> i'm having fun viewing the hdiff for recent ircbot releases ;)
17:56:59 <donri> http://hdiff.luite.com/cgit/ircbot/
17:57:13 <donri> skipped a version eh
17:57:26 <stepkut> yeah, I noticed that
17:57:41 <stepkut> I probably updated the version and then updated in again before committing
17:57:43 <donri> now you must release a 0.2.4 to fix the skipped version
17:58:47 <stepkut> :-/
17:58:54 <donri> ;)
19:38:38 <Lemmih> One, two, done.
19:41:33 <alpounet> stepkut, hey
19:41:34 <alpounet> i'm Alp
19:41:46 <alpounet> we talked quite much about ircbot/acid-bot
19:42:19 <alpounet> i may bring a few fun / useful parts soon
19:42:24 <stepkut> nice!
19:42:42 <alpounet> i'll try to adapt some code i wrote a year or two ago for an irc bot i have around
19:42:45 <stepkut> is that new getUserNickName working out ?
19:42:59 <alpounet> haven't had the time to try it out yet
19:43:19 <alpounet> but i still have the problem of what to do once a user gets identified
19:43:20 <stepkut> if you are feeling really inspired there is also, Agdabot ;) http://patch-tag.com/r/stepcut/agdabot/home
19:43:29 <stepkut> oh ?
19:43:38 <alpounet> since we don't have anything to carry around yet
19:43:46 <alpounet> to carry this around*
19:43:50 <stepkut> ah
19:44:07 <stepkut> you mean, they get identified.. but then there is nothing useful to do ?
19:44:18 <alpounet> no
19:44:23 <alpounet> rather, how could the other parts know it
19:44:26 <stepkut> ah
19:44:38 <stepkut> yes
19:44:42 <stepkut> that is a problem
19:44:46 <alpounet> 'cause for now, "identified" means "has successfully given the correct password matching some username to the bot"
19:44:47 <alpounet> and that is all
19:45:03 <stepkut> right
19:45:15 <alpounet> i mean in the Auth part, i have smth to register an user to the bot, and another piece of code to identify itself to the bot
19:45:50 <alpounet> that's it
19:46:13 <alpounet> (i'm succesfully using acid-state to store these stuffs though, it's insanely simple to use!)
19:46:29 <stepkut> yup
19:48:28 <stepkut> so, the other parts would make a call like, query acidAuth (IsIdentified nickName), but they would need access to the acidAuth handle?
19:49:22 <alpounet> yeah i guess we could carry around another acid-state to store the identified users
19:49:34 <alpounet> and pass it to parts
19:49:38 <alpounet> smth like that
19:49:46 <alpounet> problem is that it would imply modifications to the core parts
19:49:54 <alpounet> which are not supposed to depend on acid-state
19:53:31 <donri> you could let the user of your botpart do the query and you providing a Bool -> BotPart for IsIdentified :P
19:57:35 <stepkut> alpounet: I think authentication/identification is probably something that belongs in acid-bot, not ircbot? For example, for happstack.com the authentication will be linked with their user accounts on happstack.com.. ?
19:57:54 <stepkut> so.. i would probably need to use a different authenication/identification part anyway?
19:58:20 <alpounet> well
19:58:25 <donri> yea, should keep ircbot simple and could release a separate package for a more complete "opinionated" bot
19:58:35 <alpounet> stepkut, we would then need to register parts differently for acid-bot
19:58:42 <alpounet> 'cause the usual parts just take a "target"
19:58:58 <donri> e.g. ircbot as a framework, acid-bot (or whatever) as "app" built on that framework
19:59:24 <stepkut> donri: exactly
19:59:39 <donri> alpounet: currying? :)
20:00:16 <donri> https://github.com/dag/kibr/blob/master/src/Network/Kibr/Irc.hs#L25
20:01:40 <alpounet> hm
20:01:45 <alpounet> yeah right we can do that
20:03:00 <stepkut> alpounet: the channelPart does something similar
20:03:13 <stepkut> though if we can come up with something better. that wouldbe nice too :)
20:03:29 <donri> ACTION needs to figure out how to put the channels to join in acid-state
20:03:36 <alpounet> i'll work on this later tonight
20:04:06 <donri> well, actually, i know how to do that
20:04:29 <donri> but shouldn't i mutate something in the channelsPart if I add channels at runtime?
20:04:51 <donri> i suspect it's otherwise lost on reconnect-but-not-restart?
20:05:25 <donri> ah there's a joinChannel which handles that for me
20:05:29 <donri> neat
20:05:30 <stepkut> donri: the part right now only stores the channels it is in in a TVar, so on restart that information will be lost
20:05:46 <donri> ok, then what is the point of storing it?
20:05:49 <stepkut> if you want to store the channel-list across restarts that requires acid-state or something, so that is more of a acid-bot type thing
20:06:14 <stepkut> if the bot gets disconnected and reconnects it will rejoin the channels it was last in
20:06:33 <donri> that's why i said "reconnect-but-not-restart"; assuming ircbot handles reconnecting on unexpected connection lost etc?
20:06:55 <donri> yea, exactly :) but joinChannels solves it for me
20:07:06 <donri> -s
20:07:53 <stepkut> don't you mean 'restart but not reconnect' ?
20:08:53 <donri> what i meant was that if i made my custom @join command that updated the acid-state, and i read that state on startup when i set up channelsPart, @join would not persist when the bot reconnects because of a lost connection
20:09:16 <stepkut> ah
20:09:29 <donri> because it would use the channelsPart i set up before issuing that @join, and unless i use joinChannel the tvar isn't up to date
20:10:03 <stepkut> yeah, as long as you use joinChannel it should work
20:10:08 <stepkut> we need a leaveChannel as well
20:10:14 <donri> true
20:10:23 <donri> partPart? :D
20:10:38 <stepkut> :p
20:10:42 <stepkut> just partChannel
20:11:08 <alpounet> by the way stepkut
20:11:10 <stepkut> in acid-bot we should have a part that allows admin users to modify the list of channels to add/join
20:11:27 <alpounet> when i tested my Auth part
20:11:31 <alpounet> i first tried in private
20:11:38 <donri> yea i meant for my @part command (and possibly acid-bot) ;)
20:11:45 <stepkut> donri: yeah
20:11:51 <alpounet> and the bot basically ignored my commands
20:12:08 <donri> alpounet: if you're on an old version you need to prefix with "botnick: "
20:12:15 <donri> i got confused by that too
20:12:21 <donri> and stepcut has changed it since
20:12:25 <alpounet> oh ok
20:12:42 <alpounet> well my ircbot version is like a week old or something
20:12:44 <stepkut> ACTION checks what actually happens right now
20:16:07 <donri> alpounet: are you using the commandPrefix in PM?
20:16:45 <alpounet> yeah
20:17:29 <alpounet> #
20:17:55 <donri> and you're looking for botPrefix in the botpart?
20:19:33 <alpounet> well, i was just wondering why i didn't react the same way in private as it did on a channel
20:19:35 <stepkut> hmm, I may have broken something
20:19:38 <stepkut> this used to work
20:19:47 <stepkut> one moment
20:20:06 <donri> yep, you have
20:20:10 <donri> not working for me either
20:20:11 <stepkut> I did
20:20:12 <donri> :)
20:20:19 <stepkut> it is getting the message but sending it to the wrong target
20:22:08 <stepkut> actually, I can't see how this ever worked, but I swear I remember testing it
20:22:29 <alpounet> hah
20:23:14 <donri> it worked before for me
20:23:44 <stepkut> 'target' is really the wrong name for what it is doing now
20:23:52 <stepkut> 'receiver' is really what it is
20:24:27 <stepkut> if the receiver is a channel, then replying to the same receiver is fine. But if the receiver is the bot, then it needs to reply to the sender
20:24:52 <stepkut> i think..
20:24:58 <stepkut> the IRC rfc is not very illuminating
20:25:08 <donri> yea, that's how irc is
20:25:10 <stepkut> so that is just what I have inferred by looking at the raw messages
20:25:46 <stepkut> I am not clear if there is ever a case where I could receive a message that was not addressed directly to me or to a channel that I am in..
20:26:39 <stepkut> maybe I should change the Parsec parts to not take a target at all
20:27:01 <stepkut> instead I can add a general, 'replyTo' function and the parts can use that if they want to reply
20:27:28 <donri> sounds good
20:28:25 <donri> would also make it possible to handle that differently e.g. prepend target nick in channel and not pm
20:28:55 <donri> and have it be configurable
20:30:31 <stepkut> the confusing part is that a PrivMsg can have multiple receivers
20:30:33 <alpounet> would be nice yeah
20:31:27 <donri> stepkut: are you getting that from the rfc? i suspect that's for network bots/admins
20:31:39 <stepkut> probably
20:33:17 <stepkut> "PRIVMSG is used to send private messages between users. <receiver> is the nickname of the receiver of the message. <receiver> can also be a list of names or channels separated with commas."
20:33:40 <donri> "privmsg is used to send private messages to public channels" oh irc :)
20:33:46 <stepkut> perhaps received privmsgs will only have one receiver, but sent ones can have multiple
20:34:22 <donri> yes, possibly
20:44:20 <stepkut> is there a function like this in the standard libraries, (MonadPlus m) => Maybe a -> m a
20:47:37 <stepkut> now.. here is a question
20:47:49 <stepkut> should you have to use the # prefix when talking directly to the bot?
20:48:15 <stepkut> right now you do
20:48:34 <stepkut> or it just ignores you
20:49:43 <alpounet> i'd say yes
20:50:17 <stepkut> could make it optional if you address the bot directly
20:52:13 <alpounet> oh you mean like "awesome-bot, google monad"
20:52:49 <alpounet> not in private
20:52:52 <alpounet> i misunderstood
20:53:52 <stepkut> no I mean, in private chat should you still have to do #hello instead of hello
20:54:24 <alpounet> oh ok then i'd say yes
20:55:12 <stepkut> I think I want to allow either in private chat
20:55:16 <stepkut> make it optional..
20:56:57 <alpounet> hm
20:57:06 <alpounet> do it
20:57:14 <alpounet> i guess at least some people will appreciate it
20:57:22 <alpounet> and the others can still use the prefix
20:57:31 <alpounet> so there's no problem here
20:58:28 <stepkut> I find it confusing when I directly msg the bot and get no reply at all
21:00:38 <donri> @hoogle (MonadPlus m) => Maybe a -> m a
21:00:38 <lambdabot> Control.Monad mfilter :: MonadPlus m => (a -> Bool) -> m a -> m a
21:00:38 <lambdabot> Control.Monad mplus :: MonadPlus m => m a -> m a -> m a
21:00:38 <lambdabot> Control.Monad msum :: MonadPlus m => [m a] -> m a
21:01:50 <donri> stepkut: agreed on botPrefix, if that could be done nicely
21:03:30 <donri> but i want to be able to use parsecPart independent of botPrefix too. I'm going to have @ as prefix for arbitrary commands and then some shortcuts with other punctuation...
21:03:33 <stepkut> done
21:03:38 <stepkut> uploaded ircbot 0.3.0
21:03:40 <stepkut> and updated acid-bot
21:03:54 <stepkut> parsecPart is independent of botPrefix now
21:04:31 <stepkut> parsecParts now get run anytime a PrivMsg is received by the bot
21:04:43 <stepkut> and the part gets to decide what to do
21:04:43 <donri> yea i just meant, don't break that trying to solve the PM issue :)
21:05:02 <stepkut> you have to explicitly call, botPrefix now in your part
21:05:23 <alpounet> ok
21:06:05 <stepkut> so, if you could a bot that looked at all channel messages and responds to certain phrases
21:06:19 <stepkut> like, a part that kicks people for using banned words
21:06:22 <stepkut> assume the bot has ops
21:06:47 <stepkut> or, a part that watches #haskell for people asking about haskell web frameworks ;)
21:08:38 <alpounet> haha
21:08:44 <alpounet> i've tried happs for the first time a few days ago
21:08:55 <alpounet> i actually tried happs, yesod and snap
21:08:59 <stepkut> happs or happstack?
21:11:09 <alpounet> happs
21:11:15 <alpounet> already tried happstack a few days before that
21:11:36 <alpounet> i'm basically discovering the haskell-for-webapps world
21:11:44 <donri> you realize happs isn't really maintained anymore
21:11:55 <alpounet> yeah
21:12:12 <stepkut> which did you like better happs or happstack?
21:12:18 <stepkut> ACTION is hoping we haven't gotten worse
21:12:50 <alpounet> but i saw a few old mails on -cafe about happs which led me to trying it out
21:13:00 <alpounet> hah
21:13:30 <alpounet> i think the one that i like the most is happstack really
21:13:39 <alpounet> yesod and snap are awesome, but a bit "too much" for what i want to do
21:14:41 <alpounet> should the logged in users be marked as such in the already existing userlist acid-state or should i create a new one for that ?
21:14:44 <stepkut> what features should we borrow from yesod and snap?
21:15:28 <alpounet> stepkut, honestly?
21:15:38 <stepkut> alpounet: yes
21:15:40 <alpounet> yesod's routing system is really nice to work with
21:15:48 <stepkut> alpounet: can't make happstack better if we don't know what people want
21:15:51 <alpounet> this implies having TH all over the place
21:16:00 <alpounet> but that's really so nice
21:16:07 <donri> it's even nicer with web-routes-boomerang IMO
21:16:14 <stepkut> donri: :)
21:16:29 <donri> but i like to make everything batshit insane pure haskell combinators
21:16:43 <donri> not that boomerang is batshit
21:16:56 <stepkut> heh
21:17:37 <donri> stepkut: i'm having some inconsistent behavior in new ircbot
21:17:54 <stepkut> alpounet: there is a web-routes-quasi library that provides yesods TH routing combinators for web-routes.. though it probably needs to be brought up to date because snoyman stopped maintaining it..
21:18:13 <donri> stepkut: parse errors are not sent in PM
21:18:15 <alpounet> donri, hey, looks good!
21:18:15 <stepkut> alpounet: though, I do thing web-routes-boomerang is a nicer approach
21:18:18 <donri> but in channel
21:18:20 <stepkut> donri: !
21:18:47 <stepkut> donri: I see.
21:18:51 <stepkut> donri: let me fix that
21:20:08 <stepkut> donri: hmm
21:20:13 <alpounet> donri, stepkut, i find web-routes-boomerang much nicer than the approach given in the crashcourse
21:20:27 <stepkut> alpounet: yeah, I need to document it in the crash crouse
21:20:39 <donri> i think it is?
21:20:45 <stepkut> donri: wait.. you send a PM, but the parse error was in the channel?
21:20:52 <donri> http://happstack.com/docs/crashcourse/WebRoutes.html#web-routes-boomerang
21:21:13 <donri> stepkut: no, no error at all in PM. error when issuing command *from* channel (reply in channel too)
21:21:16 <alpounet> oh well, i was using what's given here: http://happstack.com/docs/crashcourse/RouteFilters.html#route_filters
21:21:43 <donri> ah.
21:21:51 <alpounet> stopped reading after chapter 4
21:21:55 <stepkut> alpounet: yeah, those are the 'untyped' routing combinators
21:21:57 <alpounet> decided to write my first happstack app
21:22:05 <stepkut> alpounet: perhaps I should link to the web-routes section in there now that it is written
21:22:22 <donri> well, there's primarily two ways to use web-routes: web-routes-th, which generates routes for you based on the name of the types, and web-routes-boomerang which allows you to describe the routes with combinators.
21:22:32 <alpounet> stepkut, yeah, definitely! like "hey, that approach is cool, but for a much nicer one, see the web routes chapter"
21:23:31 <stepkut> donri: oh. you get errors messages when you make a mistake in the channel. But not when you make a mistake in private..
21:24:01 <donri> the former is IMO more convenient than yesod's quasi routing, the latter more powerful
21:24:15 <donri> yesod's approach has the benefit of being somewhere in the middle between convenient and powerful
21:24:27 <stepkut> donri: but not easily extensible..
21:24:38 <donri> yes, as i said, less powerful :)
21:25:07 <stepkut> donri: i think it is difficult to make a router that parses /foo/2012-10-12 into a 'Day'
21:25:21 <stepkut> (with the yesod qq stuff)
21:25:43 <stepkut> you basically just have to get the Text "2012-10-12" and then use some other parser to parse it
21:25:44 <donri> didn't snoyman show you on reddit how to do that
21:26:02 <stepkut> no.. something related
21:26:23 <stepkut> i think
21:26:28 <stepkut> I dunno, I have notes on all this
21:27:21 <donri> anyway you don't need to convince me; just speculating in why some people favor yesod
21:27:42 <stepkut> donri: i need facts, not speculation :)
21:27:51 <donri> pff!
21:28:04 <alpounet> ACTION is gonna experiment with that web-routes-boomerang package
21:28:10 <donri> there are no facts in personal preferences :)
21:28:51 <stepkut> there sure are..
21:29:05 <donri> true: my opinion is objectively right.
21:29:20 <stepkut> people may not use facts to choose their personal preferences, but there are certainly facts about why people choose things
21:30:45 <donri> sure
21:30:48 <stepkut> ircbot 0.3.1 should fix the problem with parse errors
21:31:45 <alpounet> stepkut, donri, do you think someone should be able to identify to the bot with another nickname than the one he's registered with ?
21:32:26 <donri> i think identification should be handled automatically by talking to nickserv
21:32:35 <stepkut> alpounet: well.. i do tend to use two different nicks on irc since I work from two different computers
21:33:00 <alpounet> donri, uh? can the bot have access to that kind of informations ?
21:33:13 <donri> sure, it's all in /whois
21:33:21 <donri> don't even need to talk to nickserv actually, i think
21:34:16 <donri> stepkut: it works!
21:34:19 <donri> thanks
21:34:27 <stepkut> donri: my pleasure!
21:34:38 <alpounet> so you're suggesting that if someone is identified wrt nickserv, it should be identified wrt the bot too automatically -- assuming he's registered in the bot's user db
21:34:55 <alpounet> i actually created two "user levels"
21:34:59 <alpounet> admin and regular
21:35:10 <alpounet> that would be made obsolete
21:35:17 <alpounet> and we should only consider admin users i guess
21:35:18 <donri> you can tell from a WHOIS if someone is "registered with services" or something like that; in that case you can trust the nick alone
21:39:39 <stepkut> assuming you only care about freenode or other networks thath use NickServ
21:39:50 <stepkut> personally I only care about freenode
21:39:58 <donri> me too, and most use nickserv
21:40:02 <stepkut> haven't been on efnet or dalnet in years
21:40:12 <donri> should be possible to add support for other services anyway
21:40:21 <alpounet> donri, so someone would have admin rights if and only if in the admin database and identified wrt nickserv ?
21:40:44 <stepkut> alpounet: that sounds right to me
21:40:48 <donri> alpounet: yes e.g. have to nick donri and be identified with nickserv
21:41:00 <alpounet> right
21:41:06 <alpounet> and i only care about freenode too yeah
21:41:13 <alpounet> so for now i guess i'll just do this
21:46:13 <donri> stepkut: http://twitter.github.com/bootstrap/ might be even better than that skeleton thing. i'm personally a little OCD and not sure about these things (<i/> for icons?)
21:46:29 <donri> you've probably heard of bootstrap before, but they recently rewrote it and released 2.0
21:47:19 <stepkut> donri: neat!
21:48:12 <stepkut> donri: I am working on putting together a mockup now... but it would be great to have help turning it into a solid theme
21:48:23 <stepkut> not just a hack job ;)
21:48:54 <donri> i'm only talented enough for simple themes, which i guess is what we want anyway
21:50:14 <donri> that is however what i do like about bootstrap/skeleton: they make the defaults look good, without being fullblown ready-to-use theme templates
21:50:23 <stepkut> donri: I want the baby of geocities and myspace conceived after crack/meth bender!
21:50:38 <donri> http://yvettesbridalformal.com/
21:51:07 <donri> brb aspirin
21:51:10 <stepkut> exactly@!
21:51:29 <alpounet> hahaha donri
21:52:01 <alpounet> do they just compute a random position and write the text there for all the elements of the page?
21:59:02 <thetallguy1> Roy said estate planning typically is a normal reason for adult adoptions, but says adopting a significant other is almost never seen.
21:59:08 <thetallguy1> I like the 'almost never'
22:02:16 <donri> stepkut: i have two web-routes sitemaps with different prefixes and need to be able to generate URLs for both from the serverparts in one of them. that means i need to implSite the second under the first, but then it'll get the prefix of the first too? argh.
22:03:12 <thetallguy1> oops, wrong window, obviously
22:03:29 <stepkut> donri: yeah.. I am planning to look at that exact problem very soon
22:03:44 <donri> (one is for "assets" aka. css/js, the other for multiple i18nized subsites. i'd like to have assets separate so the URLs don't change for each subsite)
22:03:48 <donri> ok cool
22:04:27 <stepkut> you can't do, data Top = Assets AssestURL | SubSites Foo ?
22:04:45 <stepkut> "no" is an acceptable answer :)
22:05:05 <donri> hm, possibly
22:05:29 <stepkut> but what you really want is a 'showURL' that can work with multiple different URL types, not just a single URL type?
22:05:47 <donri> i'm actually not using RouteT/showURL
22:06:06 <donri> just mkSitePI and take the url function directly and put in my reader environment
22:06:19 <stepkut> then.. you could stick multiple url functions in your reader?
22:06:34 <donri> if I put everything in a Top type, don't I need to repeat the language in every subsite URL?
22:06:41 <stepkut> one for assets and one for subsites?
22:06:52 <donri> yes but I can't *get* the function without being "inside" mkSitePI
22:06:57 <donri> and that means being prefixed with /assets
22:07:00 <stepkut> ah
22:07:15 <stepkut> yes I ran into that issues as well recently
22:07:23 <donri> good - for me ;)
22:09:06 <stepkut> my work around is something like this:
22:09:08 <stepkut> http://hpaste.org/57343
22:09:24 <stepkut> where the show and parse functions are now available in SitePlus
22:09:34 <stepkut> I need to fix that in web-routes somehow
22:10:05 <donri> yea, would be nice to be able to hook into that
22:10:37 <stepkut> that code I pasted might be usable standalone
22:13:44 <donri> i guess i could do it by putting the assets in the root and dir "assets" in the route function for those, and manually prepend "/assets"::Text in my environment assetURL function
22:13:56 <stepkut> :-/
22:14:00 <donri> feels hacky :D
22:14:19 <stepkut> that is kind of what implSite does anyway with one arguments
22:14:26 <stepkut> with the path prefix
22:14:42 <donri> aye
22:15:32 <stepkut> I need to look closely at the issues that arise when you try to combine, plugins + web-routes + https
22:15:47 <donri> you mean happstack-plugins?
22:16:07 <stepkut> no, I was about to say 'plugins' in the general sense, not happstack-plugins
22:16:18 <stepkut> though happstack-plugins does add additional issues too
22:16:18 <donri> yea, suspected so
22:16:29 <stepkut> if you want to use it to dynamically add new plugins to a running server..
22:16:44 <donri> need that even more for ircbot ;)
22:16:51 <stepkut> yup
22:16:57 <donri> more painful to restart than webserver
22:17:04 <stepkut> there is definitely a lot of overlap there
22:17:21 <donri> ...which was sort of the point of happs being an "application stack" i guess
22:17:30 <stepkut> yeah
22:18:13 <stepkut> but, it would be great if acid-bot supported distributed state and you could add/remove plugins on the fly
22:18:37 <donri> although it tends to be bad to put everything under one name like "happs[tack]" when not needed (e.g. happstack-state vs acid-state)
22:19:02 <stepkut> yes
22:19:09 <stepkut> things used to be a lot more interdependent
22:19:13 <donri> so probably shouldn't rechristen ircbot to happstack-irc ;)
22:19:35 <stepkut> in happstack 7, happstack-server will be the root
22:19:47 <stepkut> and the other happstack-* packages will be things that require happstack-server
22:19:54 <donri> you mean, the happstack package itself? or that is gone?
22:19:55 <stepkut> and things like acid-state and ixset don't mention happstack at all
22:20:04 <stepkut> the happstack package itself may go away
22:20:09 <stepkut> I have too see what is still left in there
22:20:21 <donri> or could put some scaffold thingy in "happstack"
22:20:47 <donri> i think that's what both yesod and snap do, with their -server being called -core
22:20:49 <stepkut> there is a lame scaffold thingy in happstack already
22:20:55 <stepkut> would be nice if someone could fix that
22:22:27 <stepkut> in HAppS there was no top-level HAppS package. (And the packages all had their own repos).
22:22:53 <stepkut> there were also a lot more interdependencies
22:23:12 <stepkut> one of the early happstack projects was severing all the ties between the packages
22:23:17 <donri> i wonder if happstack could lead innovation in that regard too... scaffolds tend to be rather lame. I'd like to see dynamic scaffolds e.g. mix-match templates for adding different dependencies and integration code... ability to add more later to existing apps... not sure how feasible.
22:23:20 <stepkut> as much as possible
22:23:40 <stepkut> it could if someone wanted to be in charge of that
22:23:44 <donri> ;)
22:23:48 <donri> i've been thinking about it
22:23:57 <donri> but will have to think a bit more
22:24:30 <stepkut> the current system is basically just a call to 'cp -a'. It doesn't even rename anything for you
22:24:47 <donri> maybe it can be done by treating templates as patches ...
22:24:58 <stepkut> I was going to move it into happstack-scaffold and then deprecate it until someone wants to take it over
22:25:27 <stepkut> actually, there is a happstack-scaffold package as well
22:25:29 <stepkut> already
22:25:35 <donri> heh
22:25:44 <stepkut> http://src.seereason.com/happstack-scaffolding/
22:26:56 <stepkut> I've never used it.. though I did write a lot of the code in it ;)
22:27:04 <donri> haha
22:34:04 <donri> well that's rather offensive, jasper.
22:34:34 <donri> good thing i'm on zoloft instead and don't need to take offense.
22:47:15 <donri> wait can i really do my proposed asset solution
22:47:20 <donri> wtf does "dir" even mean inside an implSite
22:47:44 <donri> it'll be at the end rather than start?
22:49:12 <st3pcut> :-/
22:49:23 <donri> (didn't actually try yet)
22:49:26 <st3pcut> in the implSite function we use 'dir' before we get the remainder of the path and decode it
22:49:39 <st3pcut> if you have already decode the path.. then there is probably nothing left for dir to get
22:50:48 <donri> i'll just wait for you to figure out a clean solution :) and leave the asset links hardcoded for now
22:52:06 <st3pcut> :)
23:03:32 <alpounet> ooooookay
23:03:41 <alpounet> there's nothing for sending whois requests right now
23:04:10 <donri> have a look at how existing commands are implemented
23:05:26 <stepcut> add a command to Network.IRC.Bot.Commands
23:05:31 <stepcut> it is by no means complete :)
23:12:04 <alpounet> yeah stepcut i saw that
23:12:43 <stepcut> ircbot mostly only contains the things I have needed so far
23:14:21 <stepcut> it would be nice if it had a proxy mode
23:15:08 <stepcut> so I could run a copy on a server, and then connect to it from multiple clients and get channel history, and have only one apparent irc nice
23:17:09 <donri> i don't understand
23:17:37 <donri> @hackage ircbouncer
23:17:37 <lambdabot> http://hackage.haskell.org/package/ircbouncer
23:17:43 <donri> doesn't that solve it?
23:18:44 <tazjin> Hey, Happstack beginner here :) I want to use an own guard in my routing function that takes a string from lookCookieValue, passes that string on to a function of String -> Bool and ends with mzero if the second function returns True. Does that make sense?
23:19:01 <donri> tazjin: guardRq?
23:20:00 <donri> or just "when" or "unless" in a serverpart
23:20:47 <tazjin> donri: Yeah, this is my first try: http://klaud.tazj.in/DryX (which is kind of like guardRq)
23:21:22 <donri> isn't it working?
23:21:30 <tazjin> I'm not really sure how to use it
23:21:33 <donri> btw better @hpaste text rather than screenshot
23:21:36 <donri> @hpaste
23:21:36 <lambdabot> Haskell pastebin: http://hpaste.org/
23:21:50 <tazjin> Screenshots are quicker though, but okay :D
23:22:10 <donri> for future reference, don't need to hpaste that there
23:22:41 <tazjin> okay, so this is my current routing function: http://hpaste.org/57345
23:22:54 <tazjin> Which works the way I want it to. How would I use my guardSession function in there now? ;o
23:22:55 <donri> do session <- lookCookieValue "blah"; guardSession session
23:23:22 <donri> or just: guardSession =<< lookCookieValue "blah"
23:23:49 <donri> but actually
23:24:12 <donri> i'm not sure how monadplus works
23:24:16 <donri> try it :)
23:24:42 <tazjin> Your version sounds reasonable, wait a second
23:25:09 <tazjin> It compiles, now for testing ..
23:25:29 <tazjin> it works! Thanks :)
23:25:36 <donri> np
23:30:05 <donri> note that mzero might result in a 404 unless another handler matches
23:30:09 <donri> which may or may not be what you want
23:41:17 <donri> bedtime