00:06:44 <stepcut> tazjin: I definitely plan to use darcs bridge to mirror things onto github as soon as that is viable
00:07:32 <tazjin> Alrighty
00:08:03 <stepcut> what are your top 5 favorite things about github ?
00:08:14 <stepcut> I assume 1. you already have an account
00:08:40 <tazjin> Heh yeah, I have a private account and a paid enterprise account because we actually use it at work ;P
00:09:29 <stepcut> 2. without github, having to use git would make you cry
00:09:35 <tazjin> Indeed
00:09:46 <stepcut> what are the other 3 ?
00:09:50 <tazjin> As for my top five, definitely the way they handle forking & pull requests
00:10:18 <tazjin> issue tracking is very nifty too, plus they have apps to go with that so I can keep track of things on the go as well (probably not as important for clckwrks)
00:10:18 <stepcut> why is that better than, darcs get && darcs send ?
00:11:04 <tazjin> Because it's easier to use, you know where I work and we value ease of use and good interfaces
00:11:28 <stepcut> what makes it easier to use though ?
00:11:29 <tazjin> Also I'm not sure how well darcs works if you have >2 collaborators on a project
00:11:40 <stepcut> having to log into a website to send a patch seems like more work, not less
00:11:52 <tazjin> In most cases you
00:11:58 <tazjin> 'll be logged in constantly anyways
00:12:12 <donri> yay walled garden! ;)
00:12:14 <stepcut> but, you still have to switch windows and find the tab
00:12:23 <stepcut> darcs record -am 'foo' ; darcs send
00:12:30 <tazjin> You can just as well use the command line if you wish
00:12:46 <donri> i think git has more feature and raw power than darcs... while darcs, in what it does have, is "saner"
00:12:47 <tazjin> but every pull request has its own comment thread, you can annotate specific lines of codes, discuss them
00:12:49 <stepcut> darcs record -am 'foo' ; tab to the browser, find the right tab, find the button, submit a pull-request
00:13:14 <stepcut> you can submit pull requests directly in git ?
00:13:56 <tazjin> Yeah, I'm pretty sure that you can - they even document the command line part somewhere in their help
00:14:15 <tazjin> but I much prefer their web interface for that (even though I'm usually a terminal guy as well)
00:14:55 <stepcut> so you like that you can fork a project, and then when you submit a pull request there is a bug/comment thread automatically started?
00:15:28 <donri> can't pull-request with just git or the hub cli
00:15:31 <tazjin> Yeah, that part works really well for reviewing code
00:15:35 <donri> maybe with the github gem or somethign, duno
00:16:08 <stepcut> it's interesting that a bunch of useful information is split across git and github, vs all being in the git repository (not saying darcs does it any better)
00:16:13 <tazjin> donri: hub can do it
00:16:29 <tazjin> donri: https://github.com/defunkt/hub#git-pull-request
00:16:51 <donri> stepcut: yea, i'd like bug tracking built into darcs / darcs repos... there are things like that like "bugs everywhere" but no support in sites like github
00:16:58 <donri> maybe that's something to consider for clckwrks
00:17:10 <stepcut> donri: what do you mean?
00:17:10 <donri> tazjin: i don't see that in git help hub
00:17:26 <stepcut> tazjin: is that pull-request thing specific to github ?
00:17:33 <donri> stepcut: with BE bugs are tracked in files that can be version controlled
00:17:44 <tazjin> stepcut: I think so, though Bitbucket has probably implemented them by now as well
00:17:46 <stepcut> donri: ah
00:18:01 <donri> tazjin: hm looks like it's just missing in the docs
00:18:15 <stepcut> donri: in the same repository that tracks the code ?
00:18:27 <donri> stepcut: i guess?
00:18:39 <donri> has ups and downs
00:19:02 <donri> to mark a patch as fixing a bug, just include edits to the bugs file in the patch
00:19:15 <donri> but harder to allow others to file bugs
00:19:25 <donri> could do something like what patch-tag does for wiki pages
00:19:27 <stepcut> well, I definitely want the bugs and darcs plugins to interact, because that is going to flush out some key issues in the plugins api
00:21:13 <donri> stepcut: my notes for some ideas for darcs hosting: https://gist.github.com/28dab4bb45bf5425e47a
00:21:13 <tazjin> donri: About pull-request not showing up in your help, do you have hub installed?
00:21:40 <tazjin> ^ oh and gists are cool, because they're also small git repos with full forking/mergin/pullrq support
00:22:03 <donri> tazjin: do you ever use that feature of gist?
00:22:10 <donri> tazjin: i do
00:22:12 <donri> have hub
00:22:21 <donri> somewhat recent
00:22:41 <tazjin> donri: Yeah, sometimes. It's nice for collaboratively collecting information
00:24:39 <tazjin> donri: You've also added the hub/git alias to your bashrc/_profile?
00:24:48 <donri> yes... i do use hub a lot
00:24:56 <donri> it's just not showing up in git help hub
00:25:00 <donri> everything else is
00:25:02 <donri> and the command is there
00:25:05 <donri> just not documented
00:25:24 <tazjin> it shows up in hub --help though ;P
00:25:52 <tazjin> Well, git is a bunch of binaries thrown together afaik - kinda like LaTeX just not quite as insane
00:25:59 <donri> not for me
00:26:19 <donri> there, now
00:26:23 <donri> i upgraded hub
00:26:33 <luite> what's hub?
00:26:44 <donri> a git wrapper adding github stuff
00:26:54 <donri> git clone luite/yesod, etc
00:27:06 <luite> ah
00:27:23 <donri> defunkt/hub on github
00:27:32 <luite> can it also tickets and stuff?
00:27:34 <tazjin> You can just $ brew install hub
00:27:46 <donri> luite: don't think so, there are other things for that
00:27:59 <luite> i don't really mind using the browser though :)
00:28:11 <donri> tazjin: obnoxious osx users \o/
00:28:16 <luite> hehe
00:28:24 <tazjin> :3
00:28:35 <donri> $ brew install brew
00:28:35 <donri> bash: brew: command not found...
00:28:36 <donri> :(
00:29:08 <tazjin> ACTION pats donri
00:29:10 <tazjin> Poor you :(
00:29:39 <tazjin> luite: For github issues there's stephencelis/ghi
00:29:43 <stepcut> donri: i am going to start the darcs plugin tomorrow. First step is to use, darcs show files, darcs show content, and kate-highlighting (or something) to create a source browser
00:29:49 <donri> luite: there's pip install github-cli
00:30:06 <stepcut> though, I plan to abstract over the highlighter so that you can use different ones
00:30:18 <luite> pip, which distro is that?
00:30:20 <donri> kate-highlighting is gpl
00:30:23 <donri> luite: python
00:30:27 <luite> oh
00:30:30 <donri> highlighter is bsd3 but currently fails on ghc74
00:30:34 <donri> without my patches
00:30:51 <stepcut> donri: yes, that is one reason for making the highlighter be a plugin.. then the darcs thing can be BSD3.. except libdarcs is probably GPL too
00:31:00 <donri> luite: also gem install github
00:31:10 <stepcut> donri: the GPL allows you to write GPL plugins for non-GPL software
00:32:24 <stepcut> donri: so allowing for different highlighters is (a) useful (b) avoids the GPL virus
00:32:30 <donri> licensing is kind of like type classes... bsd is like a type class and GPL is a type... if you use gpl, all your type class uses are specialized to GPL
00:33:41 <stepcut> well, there is some trickiness there
00:33:59 <tazjin> People don't usually sue each other over type classes though
00:34:17 <donri> tazjin: no you get type errors
00:34:36 <stepcut> if there is a highlighter API, then the code that defines that API does not have to be GPL, just because some people might use a GPL plugin with it. When it comes to distributing a binary that uses the plugin -- I think it could matter how it was linked
00:34:43 <stepcut> there is some page on the FSF about this
00:34:57 <tazjin> donri: So type errors are kinda like lawsuits? Does that mean I should never run GHC without my lawyer present?
00:35:02 <donri> stepcut: i think how it works is that if you use the gpl plugin, your whole code base is considered gpl
00:35:09 <donri> stepcut: but you can opt to not use that plugin
00:35:26 <luite> stepcut: isn't that for lgpl?
00:35:39 <stepcut> plugins are tricky.. because you can write GPL plugins for closed-source software
00:35:43 <stepcut> like GPL plugins for photoshop
00:35:51 <stepcut> that doesn't make photoshop GPL'd
00:36:05 <donri> tazjin: no, ghc is like a superintelligent post-singularity AI overlord that enforces the law automatically. there is no "interpreting" the law and no need for lawyers or law suits.
00:36:34 <stepcut> the GPL affects code that is derived from GPL code.. and photoshop (for example) is not derived from the plugin
00:36:47 <tazjin> The guy who makes this haskell weekly newsletter with the quotes, does he frequent this channel? because I think what you just said belongs in there
00:37:15 <stepcut> tazjin: the quotes often come from lambdabot I believe
00:37:23 <donri> stepcut: well that's kinda what i mean. if you use the plugin in your app/configuration, that app/configuration as a whole is gpl... but individual parts may still be available as bsd.
00:37:33 <stepcut> donri: GHCi interprets the law though, right ?
00:37:58 <donri> ghci instructs the ghc overlord directly
00:38:18 <stepcut> donri: I don't think so.. adobe can distribute photoshop with GPL plugins. But they only have to distribute the source for the plugins
00:39:00 <tazjin> donri: But what about this new HERMIT framework? If you use that during GHC's Core build phase isn't that like bribing the judge, err, overlord?
00:39:54 <stepcut> ACTION checks
00:40:12 <donri> tazjin: to reach nirvana, one must first enable Safe Haskell.
00:41:05 <stepcut> oh.. according to GNU, you can't write GPL plugins for photoshop
00:41:08 <tazjin> I need to meditate over that, in bed. Good night.
00:41:23 <stepcut> those people are crazy
00:41:28 <donri> :)
00:41:51 <tazjin> stepcut: Never forget Richard Stallman, the man who eats skin from his foot in front of a live audience
00:41:59 <donri> i skimmed http://esr.ibiblio.org/?p=4386 recently and thought of stepcut
00:42:32 <stepcut> I had dim sum with ESR once
00:42:41 <donri> dim sum?
00:43:24 <stepcut> http://en.wikipedia.org/wiki/Dim_sum
00:43:58 <donri> esr is kind of wonky himself, isn't he an outspoken homo"phobe" for one
00:44:07 <stepcut> I may have also had a meal with hans reiser
00:44:16 <donri> and lived to talk about it?
00:44:34 <stepcut> well, I didn't cheat on him
00:44:38 <donri> xD
00:44:55 <tazjin> When that story came out I thought it was some elaborate joke
00:45:51 <stepcut> "Hey guys, remember that funny prank about the file system developer that killed his mail order russian bride! What a hoot!"
00:47:46 <stepcut> http://www.wired.com/threatlevel/2011/09/reiser-seeks-new-trial/
00:49:41 <tazjin> uhh, a hand written lawsuit
00:50:26 <stepcut> :)
01:09:59 <stepkut> if you call a GPL library, then your app has to be GPL. But if you write an executable around that library, and call the executable, you are ok.
01:10:24 <stepkut> and then you can recreate a new library with the original API that calls the executable
01:11:07 <stepkut> but, obviously, you could do that mechanically
01:11:11 <donri> xD
01:12:26 <stepkut> though it does require that you be able to serialize all your data structures
01:12:43 <donri> it's cuhrazy
01:13:24 <donri> i wonder when we have something stronger than agpl that requires users of api's of agpl services to be agpl
01:14:36 <stepkut> the one that says you can't have any non-GPL softwared installed on your machine at all, nor can you connect to websites that use nonGPL software?
01:14:48 <donri> hehe
01:15:13 <stepkut> also, you are not allowed to buy anything battery powered that does not have user replaceable batteries
01:15:14 <donri> and especially not websites spreading anti-gpl propaganda
01:18:34 <stepkut> hmm, almost time for happstack irregular news #2
01:18:39 <donri> \o/
01:19:13 <stepkut> it'll mention happstack-yui!
01:19:18 <donri> and reform!
01:19:24 <donri> what else is new
01:19:35 <stepkut> you'll have to wait and see
01:20:37 <donri> :)
01:21:04 <stepcut> though, in theory you have already seen everything
01:21:30 <donri> hehe
01:25:23 <luite> and you still have to write that blog post about more flexible routing!
01:35:30 <stepcut> luite: now I have time! sort-of..
01:35:40 <stepcut> luite: but I am doing one on Free monads first
01:36:07 <donri> wasn't the idea to do the flexible routing with free monads, so that is one single post?
01:37:26 <stepcut> donri: luite is talking about a different post that I started in november
01:37:52 <donri> yea i know but i thought free monads changed that :)
01:39:19 <stepcut> not yet
01:39:37 <stepcut> but.. probably
01:39:52 <stepcut> well.. it is possible orthogonal
01:39:53 <donri> hm i wonder if the rewrite rules for text literals apply to newtypes deriving IsString
01:40:12 <stepcut> no idea
16:52:01 <luite> bah jmacro doesn't support half of javascript :(
16:52:13 <donri> :)
16:52:20 <donri> luite: what are you missing?
16:52:25 <luite> at least no prefix expressions, labels, labeled breaks
16:52:33 <luite> prefix operators
16:52:57 <donri> yea this is the downside of having a parser-renderer over string interpolation
16:53:04 <donri> i'm sure patches are welcome ;)
16:53:13 <donri> what are prefix expressions?
16:53:53 <stepcut> luite: I've had great luck complaining to the jmacro developer
16:54:20 <luite> stepcut: yeah i'm already writing an email
16:54:47 <luite> donri: if (y > -x)
16:54:56 <donri> hm i need to start working on the aeson port of jmacro... i think he's holding off releasing my text port because of that
16:55:11 <luite> it supports (++x) as a statement, and -10 as an int literal, but not - as an  operator
16:55:13 <donri> luite: aha... adding parenthesis doesn't help?
16:56:13 <luite> donri: no, but actually that's not the problem, I'm just using the javascript ADTs, not the quasiquoters yet
16:56:23 <donri> aye
16:56:44 <luite> since this is an experiment with a new ghcjs backend
16:56:48 <donri> in that case maybe it would be enough to use the thing from hjsmin?
16:56:55 <donri> it's a full parser isn't it
16:57:10 <donri> or do you plan on using jmacro stuff later on
16:57:38 <luite> yeah but i think hjsmin as a bit of a limited representation of the ast
16:57:53 <luite> so you can easily make asts that are invalid
16:57:59 <donri> aha
16:58:14 <luite> i think he has a newer version that does this a bit better
16:58:24 <luite> but i'm not sure if it's released
16:58:38 <donri> i guess you mostly only need tokenization for minificationj
16:59:06 <luite> well the idea was that it would be easier to include quoted pieces of js in the ast
16:59:20 <luite> so then jmacro would be a good choice
17:16:03 <luite> oh apparently it also doesn't support continue, at all
17:17:46 <stepcut> :(
17:17:49 <stepcut> yet!
17:18:55 <luite> yeah i'm adding it to my testcase in the mail :p
17:27:03 <luite> it also converts function a() { } to a = function() { ... } which is different in meaning
17:35:36 <donri> well that's intentional and part of the lexical scoping?
17:44:10 <luite> donri: oh i mailed him an example with !a
17:44:15 <luite> where it isn't supposed to rename a
18:15:17 <donri_> luite: does it still rename it though, or just still do the var a = dance?
18:17:10 <luite> ! stops the renaming
18:18:18 <stepcut> it would be nice if jmacro had a plain-old javascript mode
18:18:35 <stepcut> where it didn't do anything clever at all but syntax check and allow splices
18:18:45 <stepcut> no extra syntax, no variable renaming, etc
18:18:59 <donri> author has hinted that he doesn't want to change language semantics, or something like that, when i suggested rendering === for ==
18:19:21 <donri> FSVO semantics, not sure which word he used
18:19:43 <stepcut> now, it is almost time for me to work on acid-state
18:19:48 <donri> so he's probably open to having some way to write a function without "var"
18:23:00 <luite> if you let it rename, it doens't use var
18:23:23 <donri> huh, that sounds like a bug
18:24:08 <luite> but there's a difference:  g = f; function f() { console.log("hello"); } g(); prints hello, but g = f; f = function() { console.log("hello"); } g();  is an exception
18:25:20 <donri> btw "fun" is short for "function !"
18:25:29 <donri> both render using "var" for me
18:25:46 <luite> oh sorry yeah it does work
18:25:59 <luite> i did something wrong
18:26:12 <donri> what's the use case such that you actually want a plain old "function foo { ... }"?
18:26:20 <donri> i thought those were massively broken in js
18:27:49 <donri> i guess if you want a global function defined from a non-global scope...
18:28:09 <donri> you can just do window.foo = \ { ... }
18:28:11 <luite> nah it doesn't make it global
18:28:28 <donri> i admit my understanding of js is limited :)
18:28:40 <donri> i thought named functions were put in global scope
18:28:56 <donri> e.g. var foo = function bar { ... } makes "foo" local and "bar" global
18:34:18 <alpounet> ACTION *hates* javascript, always did and will always do
18:34:41 <donri> i secretly think it's somewhat cute (until i have to use it)
18:35:51 <luite> donri: hmm, let me test
18:35:55 <alpounet> as a language, i find it to be so f*cked up
18:36:57 <luite> donri: nope doesn't make it global
18:37:01 <donri> oh
18:37:28 <luite> var a = function() { functio blah() { console.log("blah"); } return 0; } blah(); is exception, blah undefined
18:37:35 <luite> function blah
18:37:47 <donri> but you didn't execute a()
18:38:15 <luite> actually i did
18:38:37 <luite> that's why i get for not copypasting my whole code in the channel :p
18:38:41 <luite> what
18:40:41 <stepkut> donri: did you end up fixing maccatcher?
18:40:48 <donri> stepkut: nope
18:40:57 <stepkut> k
18:41:06 <stepkut> I am setting up darcs bridge now :)
18:41:36 <donri> luite: oh right i'm thinking of order... you can call a named function defined later but not an anonymous function later assigned to a variable
18:41:46 <donri> stepkut: cool!
18:42:18 <luite> donri: yeah, a(); function a() { ... } works
18:42:41 <donri> luite: which makes sense in haskell but not an imperative language IMO :)
18:43:12 <donri> but yea, would be nice to have a mostly pass-through variant of jmacro
18:43:54 <stepkut> donri: it's still fragile, but owst says he is going to beat it into shape in the next 6 weeks or so
18:46:09 <donri> maybe we could then also set up travis... if we can figure out how to make it usable with multi-project repos
18:46:20 <donri> even if scoutess is the goal, travis doesn't hurt in the mean time
18:46:24 <luite> donri: why not?
18:46:40 <donri> luite: it's counter-intuitive when the language is "step-oriented"
18:48:18 <luite> functions usually aren't step oriented... in C mutual recursive functions don't work if you don't declare them first, but that has more to do with the linear parser than the functions being assigned in some stepwise fashion
18:49:32 <stepkut> donri: I am not opposed to someone setting up travis
18:50:16 <donri> stepkut: + we can have github report commits here
18:51:37 <stepkut> yeah, i heard we are going to have hoards of contributors once we have a github presence :p
18:52:29 <donri> IME people are suspicious of mirrors, i guess it depends on how streamlined we make it
18:52:30 <luite> yeah it's crazy, thousands of commits a day, you'll need some full time branch managers to merge them
18:52:49 <stepkut> yeah, I already put an ad on craigslist
18:52:54 <donri> :)
18:53:23 <donri> there's not a lot of point to mirroring on github if we don't also accept pull-requests and such there
18:53:43 <donri> well, we get travis+irc commits and a pretty web interface for browsing the source
18:54:11 <stepcut> the intention is certainly to accept pull-requests
18:55:18 <donri> sounds potentially problematic to basically have two mainline repos though... "race conditions"
18:55:39 <donri> i guess it's up to you as the maintainer to do things in order ;)
18:56:27 <stepcut> don't think that will be a problem. the darcs repo is still the official one
18:56:49 <stepcut> pull requests are just two stages.. pull into the main git branch, then into dacrs
18:56:51 <stepcut> darcs
19:03:34 <donri> "clckwrks, taking the OO out of web development" ok took me forever to really get it
19:04:46 <stepcut> oh.. maybe I don't really get it then?
19:07:12 <donri> stepcut: clockworks without O and O, and OO=object oriented
19:07:23 <stepcut> hahah
19:07:27 <stepcut> ok, I totally missed that
19:07:27 <donri> also relevant http://vimeo.com/43380467
19:07:55 <donri> yea i missed it the first time, only got it the second time i read the comments for that link
19:35:06 <stepkut> it's great to be working on things I can talk about again
19:35:44 <donri> :)
19:36:19 <luite> hm, at least Gershom replies quickly to emails
19:36:21 <luite> :)
19:36:32 <stepkut> heh
19:38:08 <luite> he said he'd try to add labels in the next few days, but wasn't sure about the functions because function f() { ... } is broken
19:38:37 <luite> dunno about unary negation, he said it could cause problems with the parser...
21:28:11 <tazjin> stepcut: Got your plane ticket to Munich yet? ;P
22:21:30 <donri> stepcut: you should put hs-auth on hs.com
22:21:45 <donri> mhm we need a better acronym
22:21:54 <donri> hs = {happstack,haskell} :D
22:42:37 <stepkut> tazjin: gotta get my passport first
22:45:18 <stepkut> tazjin: but I am working on that
22:45:28 <tazjin> Hmm, mine expired as well
22:45:35 <tazjin> but I rarely leave the EU, so I don't really need it
22:45:50 <stepkut> i need it so i can get to ICFP this year
22:46:44 <tazjin> Oh, Copenhagen, nice
22:47:40 <tazjin> I'll definitely meet you there because I'll be in Copenhagen in September anyways (work :])
22:50:54 <stepcut> nice
22:51:46 <tazjin> The nicest thing about Copenhagen is their Metro imho
22:51:52 <tazjin> I have a thing for awesome and modern underground structures :3
22:52:55 <luite> stepcut: do you have a paper or demo at icfp?
22:53:13 <stepcut> luite: you'll have to wait and see!
22:53:26 <luite> i won't see because i won't be at icfp
22:53:39 <luite> everyone else is going except me :'(
22:54:07 <stepcut> :'(
23:03:13 <ragusa> luite: http://ro-che.info/ccc/13.html
23:04:12 <luite> ragusa: hehe
23:04:18 <luite> but i don't have an SO account either
23:04:30 <ragusa> aww