Camelia, the Perl 6 bug

IRC log for #darcs, 2010-12-17

| Channels | #darcs index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:01 iago :S
00:01 iago I don't how to do it
00:02 lispy iago: darcs changes | head
00:03 lispy iago: better yet, darcs changes --last 1
00:04 iago lispy, ?
00:04 iago trackdown '... & darcs changes --last 1' ?
00:04 lispy iago: yeah
00:04 lispy iago: well
00:05 lispy iago: I haven't tested it, but roughly that
00:06 iago darcs failed:  Not a repository: . (./_darcs/inventory: openBinaryFile: does not exist (No such file or directory))
00:06 iago :P
00:06 sm darcs trackdown 'darcs changes --last 1' doesn't work unfortunately because it's just a temporary working copy, not the repo
00:06 sm see: darcs trackdown 'pwd; ls -l'
00:07 lispy has trackdown always worked that way?
00:07 sm trackdown seems pretty darn cool, yet this is a pretty major hole
00:07 * sm doesn't know.. there's gotta be a way
00:08 lispy I figured trackdown did a --lazy clone
00:09 twb lispy: it only copies the working tree
00:10 lispy oh, trackdown is linear and it prints the patches as it visits them
00:10 lispy Or at least, it used to be linear
00:10 sm well I don't see how the manual's examples work.. it'll print "Success!" and then you're back where you were
00:10 lispy Was it changed to bisection?
00:10 sm true, it prints the patches. I guess that's all it does
00:10 sm http://darcs.net/manual/node7.ht​ml#SECTION007114000000000000000
00:11 lispy "While the test command exits with an error return code, darcs ``unapplies'' one patch from the version controlled files to retrieve an earlier version, and repeats the test command. If the test command finally succeeds, the name of the hunted down patch is found in the output before the last test run."
00:12 sm iago: so the answer is, look for the last patch it prints before success
00:12 isaacd joined #darcs
00:16 sm hmm.. darcs failed:  Bad patch (during trackdown --bisect):
00:16 sm ./hledger/Hledger: renameFile: inappropriate type (is a directory)
00:16 sm mac case insensitivity perhaps
00:16 alexsuraci joined #darcs
00:17 alexsuraci left #darcs
00:17 lispy sm: or possibly a bug report :)
00:17 alexsuraci joined #darcs
00:18 sm used my darcs bug reportin' budget today!
00:18 alexsuraci sm: made some nice changes to darcsden+ssh last night, working on more now
00:18 sm yay alexsuraci
00:19 lispy sm: this makes me wonder (in general) about using trackdown with randomly generated histories to find bugs in things like apply/commute
00:19 alexsuraci no more Crypto dependency, and fixed a bunch of ssh stuff (pull over ssh, the scp fallback works now, and a few other harder-to-reproduce things)
00:19 lispy sm: seems like it should exercise those code paths fairly well
00:19 sm lispy: it's pretty cool, now that I know (how) it actually works I'll be looking for things to do with it
00:20 sm alexsuraci: very nice
00:20 sm alexsuraci: oh I keep thinking darcsden is on hackage, and looking there
00:20 iago sm, print nothing
00:20 alexsuraci i'd really like to remove the HsOpenSSL dependency from ssh, as it's only used for relatively inconsequential parts
00:20 iago sm,
00:20 iago $ darcs trackdown 'grep FlattenPos src/Darcs/Test/Patch/QuickCheck.hs'
00:20 iago Tracking down command:
00:20 iago grep FlattenPos src/Darcs/Test/Patch/QuickCheck.hs
00:20 iago data TreeWithFlattenPos p C(x) = TWFP Int (Tree p C(x))
00:20 iago -> (WithStartState RepoModel (TreeWithFlattenPos Prim) C(x) -> t)
00:20 lispy alexsuraci: oh is darcsden written in Haskell?
00:20 iago -> (WithStartState RepoModel (TreeWithFlattenPos Prim) C(x) -> t)
00:20 iago instance Show2 p => Show (TreeWithFlattenPos p C(x)) where
00:20 iago instance Show1 (TreeWithFlattenPos Prim) where
00:20 iago instance Arbitrary (Sealed (WithStartState RepoModel (TreeWithFlattenPos Prim))) where
00:20 iago Success!
00:21 iago that's all
00:21 alexsuraci lispy: yep, its ssh server is too
00:21 sm I'm still wishing for anonymous browsing a list of darcsden.com's repos.. just sayin
00:21 lispy alexsuraci: oh interesting, the ssh server is in Haskell?
00:21 alexsuraci i'll look into why /browse is broken, that should be what you want
00:21 iago I don't see any info about any patch
00:21 alexsuraci lispy: yep, it's on hackage
00:21 sm iago: because that command  succeeds with head, it doesn't have to undo any patches
00:21 alexsuraci i wouldn't grab it yet unless you like Crypto dependency hell
00:21 lispy alexsuraci: How much of it is pure haskell and how much uses some existing implementation in C or otherwise?
00:22 alexsuraci lispy: almost all of it is pure haskell. the parts that count, anyway. it uses HsOpenSSL for a few minor things, which I'd like to eradicate.
00:22 iago uhm
00:22 lispy alexsuraci: which package is it on hackage?
00:22 alexsuraci "ssh"
00:23 sm with --bisect it actually says "Test does not fail on head.", but otherwise not
00:23 lispy alexsuraci: cool
00:23 alexsuraci lispy: i'll have a new version up soon
00:23 sm "oh is darcsden written in haskell ?"
00:23 sm lispy: are they not letting you out much ?? :)
00:23 sm darcs hacker that you are !
00:23 * alexsuraci really needs to fix his irssi theme to show the username for highlights
00:24 iago sm, ok sure, I have added -v, though what Darcs returns is the whole content of the file
00:24 lispy sm: The rock I live under doesn't get any news :)
00:26 alexsuraci man, my local ghc setup is all sorts of screwy
00:27 sm "don't allow any tomfoolery with the scp path"
00:27 sm nice, nice
00:29 * alexsuraci wonders why installing ghc6-doc tries to use /usr/local/lib/ghc-7.0.1/haddock, which doesn't exist
00:29 sm brr
00:30 sm which platform is that ?
00:30 alexsuraci ubuntu 10.10
00:30 alexsuraci i installed ghc 7 but later switched back to ghc 6, no idea where that's sticking around
00:30 alexsuraci wish ghc came with a "make uninstall" :|
00:31 sm aha
00:31 twb sm: checkinstall?
00:31 twb Sorry, bad completion
00:31 sm well, apt-get purge <ghc pkgs> ?
00:31 lispy alexsuraci: ghc, ghc-pkg, runhaskell, runghc are usually the most important symlinks to fix
00:31 sm I have found ghost data left being in /var/lib/ghc-xxx as well
00:31 sm left behind
00:31 alexsuraci looks like a bunch of stuff stuck around in /usr/local/bin
00:32 alexsuraci and that probably took priority in my $PATH
00:32 sm that'll do it
00:32 * alexsuraci still wishes "make uninstall" was required by law
00:33 alexsuraci there we go!
00:33 twb I don't
00:33 twb If you want package management, use a bloody package manager
00:33 twb "make uninstall" is optimistic at best
00:34 alexsuraci if make install installs it, it should know how to remove it, or at least try
00:34 alexsuraci most things do, it's the ones that don't that constantly cause problems. if it was in my package manager i wouldn't be compiling it.
00:36 twb Indeed; the right solution is thus to get it into your package manager
00:37 iago please help...
00:37 iago I need to know some patch name
00:37 iago I need to review record message
00:38 iago must be some way to do that
00:38 iago otherwise trackdown looks a bit non useful for me
00:39 sm iago: did you get what I said before ? the test you pasted succeeds in HEAD
00:39 iago sm, yep, but I change it by "grep -v"
00:39 iago what I see is that Darcs now prints me the content of the file, just before that change were introduced
00:40 iago but I'm not interested in the content but in the record message
00:40 sm I see what you mean. Is the -v being picked up by the main command ?
00:40 iago Tracking down command:
00:40 iago grep -v FlattenPos src/Darcs/Test/Patch/QuickCheck.hs
00:40 iago Success!
00:40 iago yeah
00:41 iago and indeed I search the given content and FlattenPos does not appear
00:41 sm aside: you might find that easier by searching the output of darcs changes -v --only src/Darcs/Test/Patch/QuickCheck.hs
00:42 sm oh, and also you probably wanted grep -vq
00:42 iago well, that command just gives me two patches
00:42 iago none of them is what caused the change
00:43 iago uh8mm
00:43 sm and also, that grep will always succeed with or without -v
00:43 iago ok, sorry, I make a mistake
00:44 jutaro joined #darcs
00:45 jutaro left #darcs
00:45 iago sm, thanks a lot!
00:45 iago though I wonder why trackdown does not gives you more useful info
00:45 sm no problem.. I'm still trying to do what you're trying
00:46 sm that darcs changes command shows me all the patches, including one with TreeWithFlattenPos
00:46 iago yep
00:46 iago I grep for "data TreeWithFlattenPos"
00:47 iago I want to know which patch introduces that data type and all related stuff
00:47 sm ah
00:47 sm I don't grep that command, I do it in an emacs shell buffer and search
00:48 iago well, I do it in a "less buffer"
00:48 iago just say "grep" for no specific reason
00:49 iago I was doing a grep when using trackdown
00:49 iago so I continue to talk about grep.. well, does not matters a lot
00:49 sm ok
00:50 secorp joined #darcs
00:50 sm I haven't figured out a command to exit with failure if grep succeeds, but I'm sure there's one
00:50 sm there's also annotate
00:52 sm oh I guess annotate would not answer your question
00:52 sm it was ganesh's "shrinking of conflictor pairs" in 2007, wasn't it
00:53 iago yep
00:53 iago not very useful record message indeed
00:56 iago well, maybe TWFP was introduced as a way to improve shrinking
00:58 sm hm. It might sound excessive, but I think every data type should have a haddock explaining it
00:58 iago it is excesive
00:58 iago but every non-trivial data type should have a haddock explaining it
00:58 iago :P
00:59 twb The trivial ones can have an explanation "-- this is trivial"
00:59 twb >duck<
00:59 sm obviously that's subjective, I'm not sure the overheard of haddocking "trivial" types is a real problem
00:59 sm true enough
00:59 iago sm, well, I think it is quite "objective"
00:59 iago Perhaps is trivial
00:59 iago RealPatch is not
01:00 Igloo iago: For future reference, this seems to work for me: http://paste.debian.net/102582/
01:00 sm well look, Heffalump thought TreeWithFlattenPos was trivial, and here you are years later burning up time trying to figure it out :)
01:00 iago maybe you should define what the brackground of a Darcs reader should be, pointing some specific documents to read before that adventure
01:00 iago I can expect Prim to be trivial
01:00 iago given that any Darcs reader should read a brief introduction to patch theory first
01:01 Igloo But personally I'd have just searched the "changes -v" output
01:01 iago Igloo, thanks
01:02 iago sm, well, when I comment code I figure out what is trivial for others
01:02 iago "if I only know X, is that trivial?"
01:03 sm do you know what's trivial and what's obscure for me when I read darcs code ? not really .. why not just document every type, it's not hard
01:03 iago well, a matter of taste
01:03 iago for me Perhaps data type is trivial
01:04 sm exactly, many different folks will be reading darcs code
01:04 iago you usually find something to be trivial after commenting it and realize you are literally duplicating info
01:05 iago anyway, I agree with you
01:05 iago given the current state of Darcs, improve commentaries is a need
01:05 lelit left #darcs
01:05 iago today I was seeing some studies about software quality in open-source projects
01:06 sm well I agree with you too. :) I just wonder if that simple rule had been in place from the beginning, it might have been a bit tedious and it might have been ignored sometimes, but wouldn't we be in better shape today ?
01:06 iago best quality implied more productivity
01:06 iago you should give it a try
01:07 sm I do my best
01:07 iago well, I think you should impose some rules
01:08 sm http://hledger.org/code-doc/ <- pretty much all types haddocked
01:08 iago companies are considered chaos until they state how things are done
01:08 iago not just over-document processes
01:08 sm ok wait a minute, that's what I started by suggesting and you were arguing against me damnit :)
01:08 iago no, I'm not arguing against you
01:08 iago lool
01:10 iago most code I see was Heffalump or David Roundy job, AFAIK
01:10 iago well, I don't check every record, and I don't intention to do it
01:11 sm oh yes ? it would be interesting to get stats on code authorship, linewise
01:11 iago well, if you actually have good comment discipline
01:12 iago you shouldn't be the author of the code I was reading last weeks
01:16 iago sm, can I know why do you understand I was arguing against you?
01:18 sm iago: well, I said "hm. It might sound excessive, but I think every data type should have a haddock explaining it", you said "it is excesive" and said only non-trivial types should be covered
01:18 sm and we debated from there
01:21 iago well, I partially agree
01:22 iago or I agree in the fundamental idea (==> coment more, specially clearly non trivial stuff)
01:29 iago anyway I misunderstood you, I though you was saying that I was criticizing you
01:29 sm iago: no, we were just arguing in a friendly constructive way
01:30 sm and then I thought you switched and it made me laugh :)
01:31 sm I appreciate the work you're doing on the darcs code. Since we're here, can I ask you what's going on here: data Tree p C(x) where ... ?
01:31 iago I switched?
01:31 sm yes, but why don't we drop it :)
01:32 sm my perception is not reality
01:32 sm I must admit
01:32 iago sm, what is your question about Tree ?
01:32 iago what is wrong?
01:32 sm well, it's a tree where the node value is p ? (a patch I presume, though unspecified)
01:33 sm and what's C(x) ? some kind of constructor, or associated type, or.. ?
01:33 iago are you giving me examples of thing to comment
01:33 iago or just asking because you don't get it
01:34 sm I really don't get it
01:34 iago ok
01:34 lispy sm: C(x) look like a CPP macro around a type variable x
01:34 iago Tree is a "tree of patches", think that branches are indeed repo branches
01:34 lispy sm: That's the whole type witnesses bit, it's actually documented in several places
01:35 sm I looked at TreeWithFlattenPos first, to see how "trivial" it is for me. It wasn't at first. It is more so now that I see it just adds an int to Tree. Now I'm trying to understand Tree - not trivial for this wanna be darcs coder
01:35 sm ok
01:35 iago sm, lol
01:35 sm I can see indeed how you wouldn't want to document type witnesses again in every new type
01:36 iago to understand treewithflattenpos you have to read arbitrary instances of Tree
01:36 iago and then commutePairXXX
01:36 iago sm, when I read this code I understand what Tree is
01:36 iago what I don't understand is WHY
01:36 iago didn't*
01:37 iago I think some Darcs code is "easy to understand" but are implicit design decisions that are hard to understand
01:37 sm yes
01:37 iago for instance, I know what TreeWithFlattenPos does, but I don't know WHY you need it
01:37 lispy I think Heffalump wants to remove the use of C(), but I actually think it helps a little bit at this point just to clearly distinguish which types are type witnesses
01:38 lispy Make them distinct from the rest of the types flying around
01:38 iago sm, for Tree, x represents the initial state of the tree, I don't know if it clarifies something
01:38 iago I usually ignore C(...) stuff
01:38 iago only cares when coding
01:39 sm here's the haddock I wrote: -- ^ A Tree plus an integer indicating its "flatten position".
01:39 sm :)
01:39 iago :P
01:39 sm it's a start
01:39 iago I would write
01:39 iago TreeWithFlattenPos indicates which pair of patches get after flatten the tree
01:39 iago since with Tree, you always pick the last pair
01:40 sm I see
01:40 iago but to know that you need to careful read all QuickCheck code
01:40 iago which is bad
01:40 iago :�
01:40 iago :|
01:41 * sm nominates iago to lead the test code haddockization strike force
01:41 Igloo :-)
01:42 sm actually, I think more code docs would be so useful that I submitted a haddock patch to report coverage stats
01:43 sm but it just reports on the console.. not yet in the web docs which is where you need it to motivate folks
01:44 iago motivate...
01:44 iago :P
01:44 iago in 2010 we have to motivate people to comment code?
01:45 sm of course you do. Nothing happens without motivation
01:45 iago well, I don't know
01:45 sm if we want better code and a more effective community, we should line up the right incentives
01:45 iago I though it was well-known the importance of commenting
01:46 lispy You could be commenting it right now instead of talking about it? ;)
01:46 * lispy has to run
01:46 iago lispy, me?
01:46 lispy sure :)
01:46 lispy Or do you need more motivation :)
01:46 * lispy is going to stop making jabs
01:46 lispy have a nice evening!
01:46 lispy left #darcs
01:46 sm well I did get that far, but I think it might be more productive to get buy-in on the idea than chip away one haddock at a time myself, given that those patches may never be accepted
01:47 sm nor even reach a darcs committer, judging by past experience :/
01:47 iago I see a problem the day Heffalump stops to work on Darcs
01:48 iago (or some other developers)
01:48 iago but that is a Darcs-team problem
01:48 sm sometimes a developer leaving opens up space for new blood
01:48 sm not you Heffalump :)
01:48 iago new blood that takes complex code without any useful comment
01:49 iago and get bored about it and left the project before start
01:49 iago or just keep that code without change
01:49 iago because he can't change nothing since he does not understand it
01:50 iago i.e. just talking about the non-written knowledge that will be lost
01:50 iago just to give a concrete example
01:50 iago I have to improve Darcs testing
01:51 sm well we're in agreement here. I'd like to see the knowledge you've dug up, with help from others, documented in a form that won't rot
01:51 iago but.. can I throw away that TreeWithFlattenPos? I don't know... Ganesh doesn't know... who knows??
01:53 iago I understand what TWFP does, but I don't get why do you need to pick pairs from other positions
01:53 iago is this decision based on test coverage? <-- I think not, test coverage was very bad
01:53 iago and then?
01:59 iago wel, too late, time to go bed
01:59 iago sm, I will document my final result
01:59 iago I'm not documenting that code right now because I will rewrite some of them
02:00 sm fair enough
02:00 iago good night all
02:00 iago see you
02:00 sm so TWFP is to allow commuteExamples to select a specific commute pair
02:00 iago uhm
02:00 iago yes
02:01 sm I don't know why either, but you've made it interesting to me, I don't know how :)
02:01 sm maybe we'll find out tomorrow
02:01 iago another interesting thing
02:02 iago is that Unit2 check properties with both Tree and TWFP
02:02 iago someone added TWFP as improvement but does not removes use of Tree ?
02:02 sm what do you mean by Unit2 ?
02:02 iago Darcs.Test.Patch.Unit2
02:02 sm ah
02:02 iago testProperty "Checking recommute using QuickCheck Tree generator"
02:02 iago (isNothing. (unseal $ commutePairFromTree $
02:02 iago (recommute commuteReals))),
02:02 iago testProperty "Checking recommute using QuickCheck TWFP generator"
02:02 iago (isNothing . (unseal $ commutePairFromTWFP $
02:02 iago (recommute commuteReals))),
02:02 iago why?
02:03 iago the only difference is how you pick pairs
02:03 sm have you already annotated all those lines to find the author ? is it Heffalump ?
02:03 iago no, I don't
02:03 * sm tries
02:03 iago but AFAIK the main author was Heffalump
02:03 iago though David Roundy also makes changs
02:04 sm that Heffalump knows more than he's saying.. let's slip him a few beers tomorrow
02:04 iago lol
02:04 iago maybe he is boring of my questions
02:05 iago sm, check commutePairFromTree
02:05 sm may be.. hard to give good answers when you're at work and minding a kid too
02:06 iago and say me the name is not the best
02:06 iago in the past, was a right name (I just quickly take a look to the "past"), then code changes but name no
02:06 sm aha
02:07 sm well, all that Unit2 TWFP stuff was added by "break Darcs.Test.Patch.Unit up to facilitate witnessing", ganesh
02:08 iago yep
02:08 iago I saw it
02:08 sm well I'd better eat and work, and you probably want to sleep
02:08 sm thanks for the chat iago
02:09 iago thanks you
02:09 iago good nigh
02:09 iago or good afternoon for you
02:09 sm good night
02:09 iago good night so
02:09 iago see you
02:09 iago left #darcs
02:24 ManateeLazyCat joined #darcs
03:06 * alexsuraci created http://bugs.darcs.net/issue2019
03:07 alexsuraci wasn't sure what milestone to put there
03:12 intripoon_ joined #darcs
03:15 intripoon left #darcs
03:44 ManateeLazyCat left #darcs
04:36 twb What's the status of table support in gitit?
04:36 twb Er, in the rst backend specifically
05:01 alexsuraci yay, submitted a patch (hope I did that right)
05:43 Heffalump "break Darcs.Test.Patch.Unit up to facilitate witnessing" is a recent refactoring, you'd have to look at where it came from and keep reading the history of that
05:43 Heffalump (bring on hunk move!)
05:53 Heffalump reading the patch "shrinking of conflictor pairs", it does indeed seem that the intention of TWFP is to improve shrinking. I would guess that, experimentally, I discovered that it was effective.
05:54 Heffalump I can't quite see the logic right now, because changing the flatten position actually seems like quite a fundamental change to the resulting pair.
06:00 Heffalump oh, I guess that complicated merges at the end of the tree tend to be at least as complex as merges earlier on in the tree
06:00 Heffalump so sometimes it's best to look further back
06:11 Heffalump if anyone sees iago, point him at the logs from now
07:25 twb left #darcs
07:28 etarasov joined #darcs
07:29 jeltsch joined #darcs
07:30 ketil joined #darcs
07:51 exlevan left #darcs
07:55 etarasov left #darcs
07:55 etarasov joined #darcs
08:01 darcscommitbot left #darcs
08:02 darcscommitbot joined #darcs
08:03 darcswikibot joined #darcs
08:11 raichoo joined #darcs
08:20 jutaro joined #darcs
08:23 jutaro left #darcs
08:33 lelit joined #darcs
08:43 isaacd left #darcs
09:07 jutaro joined #darcs
09:16 gh_ left #darcs
09:26 kowey joined #darcs
09:29 kowey morning
09:47 lelit left #darcs
09:48 lelit joined #darcs
09:54 lelit left #darcs
09:55 lelit joined #darcs
10:03 kowey oh, hmm, always running into the dilemma of "should I ask them to file a ticket, or is it better to do it myself?"
10:04 kowey I think in the long term it's supposed to be better to ask, so here goes :-)
11:21 balor__ joined #darcs
11:50 jutaro left #darcs
11:56 gbeshers joined #darcs
12:40 kowey inkscape makes it easy to steal colours from http://marklodato.github.com/v​isual-git-guide/index-en.html
12:41 kowey hoping to represent patches as little squares (colour coding them for patches in common, source repo patches, target repo patches)
13:11 raichoo1 joined #darcs
13:12 raichoo left #darcs
13:48 etarasov left #darcs
14:14 balor__ left #darcs
14:14 balor__ joined #darcs
14:19 balor__ left #darcs
14:29 exlevan joined #darcs
14:42 kowey comments? http://imgur.com/Uaeas.png
14:47 int-e . o O ( now add a conflict between t4 and s7 )
14:48 int-e I'd try to hilight the selected patches differently. The circles look a bit odd and too thin to me.
14:48 kowey hmm, let's see...
14:49 int-e And it wasn't immediately clear what the circles denoted, but I guess there'll be some text going with the diagram.
14:49 kowey yeah, so http://wiki.darcs.net/Using/Model (re merging) is hard to read because it breaks things down into too many possible scenarios
14:49 kowey and this image tries to pack more scenarios into one
14:49 kowey yeah, maybe more text
14:50 * kowey has made his peace with Inkscape
14:50 kowey I resent having to watch a video to figure out how to use this thing, but once you get the hang of it, it's actually quite good
14:55 balor__ joined #darcs
14:58 kowey is this an improvement? http://imgur.com/plJUW.png
14:58 int-e yeah inkscape takes some getting used to (and I still can't use grids effectively)
14:58 int-e that's clearer.
14:59 int-e The circles have a gap at the bottom now, is this a glitch in inkscape?
14:59 kowey thanks for the help! I'll see if I can fit this into the tutorial (more ideas always welcome)
14:59 kowey I'm a bit puzzled by that gap
14:59 kowey I don't see it in inkscape... also my svg file has this huge black blob on it, as though partially redacted
15:00 sm you don't have a mac there kowey I suppose
15:01 kowey I'm an OmniGraffle user, normally
15:01 sm aha.. I just learned that and found it good
15:01 kowey I like inkscape for its native svg format, though
15:01 sm true enough
15:01 kowey OmniGraffle is much easier to just pick up and run with, although maybe less powerful
15:01 kowey and solving a slightly different problem?
15:03 kowey that said, my first attempts at diagramming darcs in OmniGraffle look like ass: http://en.wikibooks.org/wiki/Under​standing_Darcs/Working_with_others
15:06 sm meaning aside, I think those look pretty nice .. OG gives you those nice dropshadows etc.
15:07 sm what a pity it doesn't also talk SVG
15:08 kowey the pro version does
15:08 kowey not that well, I found (years ago)
15:08 kowey more attempts at diagramming darcs: http://en.wikibooks.org/wiki/Un​derstanding_Darcs/Patch_theory
15:08 kowey always felt a dissatisfaction with those, dunno why
15:09 sm they look quite nice
15:09 kowey the drop shadows are a bit of liability if you're using latex
15:09 kowey I forget why
15:21 kowey #inkscape were most helpful, the "redacted" black bar in http://imgur.com/bOLDH.png was due to a 0-character flowed text object lurking around
15:22 kowey tabbing through the objects until I saw "Flowed Text" (there is a way to hunt for them) allowed me to hunt-seek-kill
15:24 sm yay
15:25 sm last I looked, inkscape seemed a very well-run project
15:41 Igloo Hmm, the shopping list idea is nice in the sense that inserting and deleting things makes sense, but unfortunately order doesn't really matter, so the need for commuting is harder to motivate
15:44 etarasov joined #darcs
15:45 kowey oh! hadn't considered it from that perspective
15:45 kowey gh_'s "all the seats were occupied" example may be much better for that
15:46 Igloo "all the seats were occupied"?
15:46 kowey a sentence broken up with unlines . words
15:46 kowey so you get fun little patches like "actually they were rooms" conflicting with patches like "actually they were tables"
15:46 kowey and just by reading the patch name, you understand the intention
15:46 kowey brilliant
15:46 Igloo Ah. That can be a bit fiddly with finding edits that make sense
15:47 * Igloo is wondering about directions, where you can add and remove things like "past the church"
15:48 Igloo Although having lines be single words is also an davantage. Hmm.
15:48 kowey yeah, directions itself well to inserting and deleting things and still has a sense of order
15:49 raichoo1 left #darcs
15:49 kowey directions would be less artificial/contrived looking
15:50 kowey it may not have the same property of patches being intuitive/obvious, but may be obvious enough to still work
15:51 Igloo I can't think of a good reason for pulling only selected changes to directions, though. Nor shopping lists for that matter
16:01 jeltsch kowey: Hi, did you notice my mail on the darcs users list?
16:01 kowey I haven't checked my mail recently, sorry
16:02 * kowey is trying to unlearn that compulsion :-)
16:02 kowey oh, no new mail since my reply?
16:04 kowey http://wiki.darcs.net/Using/Mod​el#merging-with-cherry-picking <-- now on the wiki
16:04 kowey I hope widespread SVG support is something I can count on
16:05 kowey otherwise, I suppose I could write a plugin for the wiki to do some kind of magic...
16:05 jeltsch kowey: I mean the e-mail from ca. 18 hours ago.
16:06 kowey encoding problems in darcs 2.5? <1292539069.1409.109.camel@townsend>
16:07 kowey if so, I believe I've commented on it (not very helpfully, I regret)
16:07 jeltsch I haven’t received any answer so far. :-(
16:07 kowey oh dear
16:07 jeltsch Ah no.
16:07 kowey http://lists.osuosl.org/pipermail/da​rcs-users/2010-December/025933.html
16:07 kowey I might have neglected to reply-all
16:08 jeltsch You sent it to the list *and* to myself. If this happens, the mail doesn’t get into my darcs ML folder, which is where I looked for it.
16:08 jeltsch So I missed it.
16:08 jeltsch I’ll have look at it.
16:09 kowey I see
16:09 kowey I tend to do that to account for people who aren't subscribed
16:09 kowey it just says "err... more research needed!"
16:11 kowey I mean... it seems like if we're going to output something we internally think of as being Unicode text, we should either systematically output it in a Unicode-capable encoding, or just use the locale
16:11 kowey (and somehow degrade gracefully)
16:12 kowey but there's the question then of what to do with these bytestrings (which we can only assume to be UTF-8 for metadata)
16:12 kowey I suppose the policy then should be that all darcs metadata must be converted to Unicode text before we output it, no bytestrings for IO for metadata
16:12 jutaro joined #darcs
16:12 kowey bytestrings only for data
16:14 sm kowey: speaking of mail.. fyi I sent a patch yesterday, apparently delivered to patches@darcs.net. I think alexsuraci did too
16:14 kowey hmm
16:15 kowey oh that's funny
16:15 kowey OH!
16:15 int-e kowey: on SVG: firefox doesn't render svgs in img tags. object tags work. (but noscript seems to classify SVGs as scripts by default. mumble. probably because of the object tag.)
16:15 * kowey rushes to log in
16:16 kowey doh
16:16 int-e http://e.metaclarity.org/52​/cross-browser-svg-issues/
16:17 kowey wednesday afternoon UTC, I was working on the BTS a bit
16:17 int-e (apparently the state of the art is to put an img tag into an object tag.)
16:17 kowey and I dutifully set my avoid_test_spam flag
16:17 kowey which I created out of guilt for all the "test message" spam I keep generating
16:17 int-e (with the img tag refering to a plain bitmap (png, whatever))
16:17 kowey only this time, I forgot to unset it
16:18 kowey so now by trying to avoid noise but not paying enough attention to what I was doing, I ended up causing more trouble, wah!
16:18 raichoo joined #darcs
16:27 kowey int-e: thanks... think I'll just use png and include the svg source
16:39 exlevan left #darcs
16:39 darcswikibot left #darcs
16:39 darcscommitbot left #darcs
16:39 jeltsch left #darcs
16:40 int-e left #darcs
16:40 vsync_ left #darcs
16:41 exlevan joined #darcs
16:41 darcswikibot joined #darcs
16:41 darcscommitbot joined #darcs
16:41 jeltsch joined #darcs
16:41 int-e joined #darcs
16:41 vsync_ joined #darcs
16:51 alexsuraci oi, haskell.org down once again
16:53 alexsuraci /etc/hosts fix: http://hpaste.org/paste/42​369/haskellorg_ips#p42382
16:54 jeltsch left #darcs
16:57 sm lord.. I could do a better job of running h.o
16:57 balor__ left #darcs
16:57 sm it's not that hard to keep a site up people
16:57 sm rent a linode for heaven's sake
17:05 alexsuraci gasp! "cabal configure" without a billion lines of dependency conflicts!
17:05 int-e sm: the server is fine this time. it's DNS trouble.
17:06 alexsuraci had to build darcs with mtl 2.x and HTTP 4000.1.x for that
17:06 int-e namely the .org root servers claim that the name servers for haskell.org are ns{1,2}.pendingrenewaldeletion.com.
17:07 alexsuraci er... http://hpaste.org/42384/wait_what
17:07 * alexsuraci bangs head on desk
17:07 sm_ joined #darcs
17:07 exlevan left #darcs
17:08 exlevan joined #darcs
17:08 alexsuraci hell hath no fury like a cabal scorned
17:09 int-e alexsuraci: yes, I love when it does that. with passion. and by love, I mean hate.
17:09 int-e alexsuraci: sometimes running cabal configure -v4 gives some clue at what's going wrong.
17:10 alexsuraci i can't even figure out what would lead to that. even with "mtl >= 2.0" in darcs' .cabal.
17:10 alexsuraci cabal configure works fine, it's cabal install that fails
17:11 sm_ fun
17:11 sm left #darcs
17:11 sm_ is now known as sm
17:11 sm I mentioned a similarly amusing failure the other day and dcoutts pointed me to item 1 on the cabal faq
17:12 sm http://www.haskell.org/cabal/F​AQ.html#dependencies-conflict
17:12 sm there's a -v4 ? really ?
17:13 int-e it's an arbitrary number, I think.
17:13 alexsuraci it said only 0..3 is valid when i tried that
17:13 int-e ok
17:21 isaacd joined #darcs
17:27 alexsuraci sm: updating darcsden for the latest darcs atm
17:27 alexsuraci er, that wasn't meant to be a tab completion but whatever, maybe you're interested :P
17:33 isaacd left #darcs
17:35 raichoo left #darcs
17:40 jeltsch joined #darcs
17:42 raichoo joined #darcs
17:44 kowey hmm, this conflict diagram probably needs work, http://wiki.darcs.net/Using/Mode​l#conflicting-patches-cancel-out
17:44 kowey but this is actually not so hard to do, thanks to layers
17:44 * kowey hurries home to avoid getting stuck in snow
17:44 kowey left #darcs
17:52 int-e hmm, except it's done on a hunk-wise basis. so some parts of the patches remain. hard to illustrate though.
17:54 jutaro left #darcs
17:58 lispy joined #darcs
18:00 lispy sm: the problem is a DNS problem this time around
18:00 lambdabot lispy: You have 1 new message. '/msg lambdabot @messages' to read it.
18:06 iago joined #darcs
18:09 sm sure, doesn't matter
18:09 sm sign up with a quality registrar like dyndns, set up proper expiry alerts, manage at linode
18:10 sm oh, it's all so easy I tell you
18:10 lispy sm: it's already in a quality VPS
18:12 balor__ joined #darcs
18:22 lelit left #darcs
18:23 iago if someone cares inverCommute code is duplicated in cleverCommute
18:24 iago to be honest I don't know why don't just define invertCommute in terms of Commute class
19:10 secorp left #darcs
19:13 lispy iago: patches welcome :)
19:13 lispy iago: and if you don't have time for that, http://bugs.darcs.net or keep a list of tidy up stuff on the wiki
19:36 Heffalump iago: http://irclog.perlgeek.de/​darcs/2010-12-17#i_3097996 has a few comments on the conversation about TWFP etc
19:54 iago lispy, feature ?
19:55 iago (Priority field)
19:55 secorp joined #darcs
19:56 iago Heffalump, thanks
20:02 lispy left #darcs
20:03 lispy joined #darcs
20:07 iago lispy, please add "code improvement" priority or something :P
20:16 lispy iago: I don't manage the bug tracker
20:16 lispy iago: file a request or email the list
20:19 Heffalump just make up some other priority for now
20:36 Heffalump iago: if you could mark the patches you'd like in screened as 'needs-screening' I'll take a look at them nowish
20:38 iago just add that text to ChangeNote?
20:38 iago oh sorry I see
20:38 iago a priority
20:42 iago an status
20:42 iago ... I need holidays
20:46 arjanb joined #darcs
20:52 kowey joined #darcs
20:53 iago lispy, don't you see a bit strange that mapFL return type is [] ?
20:54 kowey hmm, is this a question about naming? because there's mapFL_FL if I remember correctly
20:56 iago yes
20:56 iago in some way
20:56 iago for me is a bit like the "identity" stuff
20:56 iago I read map, and FL
20:56 iago and I expect mapFL to preserve structure
20:56 kowey Igloo, one thought which occurred to me on way home is that advantage of one-word lines is compactness
20:57 kowey also, it occurred to me that recipes might also work, instead of directions... although it may be a bit harder to modify recipes
20:57 kowey iago: yeah, I kind of tripped up on that when I first saw it
20:58 Heffalump I don't like the naming much either
20:58 Igloo kowey: Oh, recipes is a nice one
21:01 Igloo Is mapFL similar to the currently-proposed chop?
21:01 Heffalump no
21:01 Heffalump (FORALL(a b) p C(a b) -> t) -> FL p C(x y) -> [t]
21:02 lispy iago: Not sure what you mean, [] is a value
21:03 Heffalump it's a type constructor too
21:03 lispy a value or a type constructor
21:03 Heffalump iago thinks that mapFL should be what we actually call mapFL_FL
21:04 lispy oh yeah, mapFL is for mapping over an FL
21:04 lispy but that doesn't mean it has to return an FL
21:04 iago lispy, well, sounds strange
21:05 iago map is supposed to preserve structure
21:05 iago you are using a naming that treats the normal as strange and the strange as normal
21:06 kowey when I first saw it, I never said anything because I just assumed my elders were wiser than me
21:07 iago kowey, well, I usually don't care who does something
21:07 kowey good thing somebody finally spoke up!
21:07 iago I know genius do stupid things
21:08 lispy iago: it's not called map, it's called mapFL
21:08 lispy iago: for the reason you cited
21:09 lispy mapFL_FL would be the one with the weird name
21:10 iago well, for me mapFL means, "the map of FL"
21:10 lispy iago: But, map is hard to reuse because it's in the prelude.
21:10 iago I don't know what your rules are for inferring meaning
21:10 lispy also, droundy doesn't like reusing well known names.  So he asked me not to do that
21:11 lispy I have no problem with having Data.FL.map
21:11 iago well
21:11 lispy and Data.ByteString.map
21:11 iago after see code fro droundy
21:11 lispy But, I have to work with other people
21:11 iago I don't consider him an authority in this field
21:11 iago >P
21:12 iago but that's ok
21:12 iago just mentioning something strange for me
21:12 Heffalump I keep writing a Functor2 type class and then dropping it because it turns out I don't actually need it then.
21:12 lispy iago: make a list :)  Document it
21:13 lispy Heffalump: IMO, we should have a bit of a library with mirrors of the standard stuff, but I was asked not to do it and so never did :)
21:13 Heffalump you could replace mapFL_FL with fmap2 then, at the cost of more ambiguity
21:13 lispy I kind of agree
21:13 lispy I'm not fond of mirror things just to deal with kinds
21:14 lispy I guess I mean type indexed data types
21:14 Heffalump given the existence of Data.Bytestring.map, FL.map makes sense, but then we'd have to import Darcs.Witnesses.Ordered as FL
21:14 Heffalump so we'd probably want to break it up further first
21:14 Heffalump anyway, I don't have the energy :-)
21:15 lispy I couldn't recall the full name so I said FL, but Darcs.Witnesses.Ordered.map seems okay-ish.
21:16 lispy But, we'd want FL/RL maps
21:16 iago lispy, sometimes you have to understand I can't do, I just mention, if that is important for you, you should do
21:16 iago after all, you are darcs devs
21:17 iago I mean, I am not
21:17 iago and I could simply say nothing
21:18 lispy iago: you are a darcs dev.  But, you also have to meet us half way if you want it done.  The half-way point that I would like, are lists (on wiki, bug tracker, wherever makes sense) that document the changes.
21:18 lispy iago: irc is too easy to lose
21:20 iago well I think first I have to "discuss" it with you, sometimes I see stuff but I haven't got the time to go deeper
21:21 iago so I think it is better just mention it
21:22 lispy iago: could you maintain a list and then email darcs-users/darcs-devel at the end of your programming session?
21:23 iago ok, I will try to do it
21:23 iago but in the end we will talk if that matters or not
21:25 lispy thanks
21:26 lispy iago: my stance is that the feedback is important, let's not lose it.
21:26 lispy iago: That's my biggest concern here.
21:27 iago ok, I just create a FEEDBACK text file
21:27 iago :D
21:28 lispy iago: great
21:28 iago kowey, were you talking about TDD few days ago?
21:32 Heffalump we've discussed it. I think it'd be good if people chose to use it. We don't want to impose it.
21:33 iago maybe I don't understand open source projects made by volunteers
21:33 iago but in any other context that is considered bad
21:33 Heffalump what is considered bad?
21:34 Heffalump FYI, darcs works in a fairly similar way to most commercial work I've done.
21:34 iago don't have A WAY of doing things
21:35 lispy iago: what do you mean by a WAY?
21:36 iago well, the first symptom of maturity is that everybody knows how things are done, and they are done in a single and specific way
21:36 iago maybe parametrized
21:36 lispy iago: You're on the team (Yay!).  Now you are allowed to edit our wiki, our bug tracker, send email to the list, contribute patches, initiate discussions, make suggestions, contribute to discussions, etc.
21:37 lispy We do have some formalized processes.
21:37 iago Heffalump, "darcs works in a fairly similar way to most commercial work I've done." <-- that means something?
21:37 iago most commercial work is a chaos, we could look many analysis concluding that
21:37 Heffalump most of the commercial projects I've worked on have had a similarly disorganised approach to commenting, development and have a big legacy
21:38 iago lispy, wow ...
21:38 Heffalump there's a trade-off between imposing process that just annoys people and using a process to improve quality
21:39 iago well, people should learn why X is better
21:39 iago that's one of the first steps to impose quality :P
21:41 * kowey returns to keyboard
21:41 iago lispy, I have two usernames (if kowey don't remove one of them), iago?
21:41 lispy iago: have you seen for example: http://wiki.darcs.net/BugTracker/PriorityStatus
21:41 lispy iago: and these: http://wiki.darcs.net/Development#processes
21:42 kowey iago: oh yeah, sorry still didn't do that
21:42 kowey we do try to document what cultural norms we have
21:42 kowey I'm not a big believer in Process-ising or turning things into rules
21:43 iago lispy, I didn't sorry
21:44 iago now I took a quickly look
21:44 iago that's good
21:44 iago kowey, it is the only way to improve
21:45 iago very expert people after many years studying soft development conclude that
21:45 iago well, to be more concrete, many groups of very expert people..
21:45 iago working independently...
21:46 kowey what's the only way to improve? formalising processes?
21:46 iago it helps up to some point of course, it is not "the only key"
21:46 iago the only way to improve how do you do things, is to formalise how things are done
21:46 iago (first)
21:46 kowey yeah, Karl Fogel actually says a little something to that effect, in a bit softer language
21:47 kowey I'm not very well read (producing OSS and mythical man-month + prag prog)
21:47 kowey so I tend to refer to Producing OSS a lot
21:48 iago I had to study CMMI and ISO 9001:2000
21:48 lispy iago: have you looked in details at the CMMI stuff?
21:48 iago I don't know what ProducingOSS states
21:48 lispy iago: It's a bit dated at this point, for example
21:49 iago lispy, no!
21:49 lispy iago: But we definitely use a revision control system (one of their recommendations :)
21:49 iago I don't know (just as raw data in my memory) all CMMI levels and its key points
21:49 kowey ah here's what Karl says about it: http://producingoss.com/en/written-rules.html
21:49 lispy iago: It's more important to figure out why they recommend things (what they contribute, why, and when not appropriate) and tailor things than it is to define a list of "stuff" to do
21:50 iago lispy, version control is a point of a bigger topic called SCM
21:50 iago lispy, quality norms rarely say how you must do things
21:50 kowey so far, a lot of what we try to document are things that have to be a certain way for automation purposes
21:50 iago specially ISO
21:51 iago who is intented to be fully generic
21:51 kowey or things we've either scratched our heads or disagreed about before coming to a sort of consensus, eg. what to do about GHC versions
21:51 lispy The only process change I want to see at the moment is more testing, but that seems to be changing for the positive at the moment :)
21:51 iago they say things like: "you should evaluate that the product satisfies client needs"
21:51 kowey http://wiki.darcs.net/Development/Policy
21:52 iago there are very well paid people who goes to your org and says you "do it in that way"
21:52 kowey and a lot of our changes (eg. testing) arise from lots of negotiation and also people just doing stuff
21:52 kowey like people who want more testing trying to improve the test infrastructure so tests are easier to write
21:53 lispy iago: A big important thing to keep in mind, is that our pool of performers are volunteers.  We can't really force them to do anything.  We just encourage and try to set norms.  Enforcement is tricky.
21:54 kowey well, you *can* use a little coercion, and at times it may be appropriate
21:54 iago lispy, I know
21:54 kowey in the sense of if you'd like to volunteer for us, great, but here are our expectations
21:55 kowey but it doesn't seem appropriate yet (and I'm too fluffy to coerce, so somebody else would have to do it)
21:55 iago kowey, lot of projects restrict stuff
21:55 iago and they receive many contributions
21:55 * kowey nods
21:55 kowey right, setting standards is not necessarily a barrier
21:55 Heffalump they don't limit their contribution pool by using Haskell in the first place :-)
21:55 lispy To be clear, we do restrict stuff.
21:56 jutaro joined #darcs
21:56 iago for instance
21:56 iago seems incredible Darcs do not enforce a coding style
21:56 iago is one of the most basic stuff
21:56 iago is really hateful see mixed styles
21:56 kowey maybe this isn't very relevant, but Evidence Based Teaching says that in order for people to learn effectively, they need (1) challenging goals (2) good feedback
21:57 lispy iago: One thing we try to do, is get people involved at their current level of contribution and then work with that person to raise the bar
21:57 kowey so I tend to think of high standards the same way I'd think of "challenging goals"
21:57 kowey yep, what lispy says is sort of an ideal
21:57 kowey I find that difficult (for me) to do
21:58 iago Heffalump, :P Haskell is by far the most "cool" functional language
21:58 iago think in positive
21:58 kowey for what it's worth, I think for "light" things like coding styles
21:58 kowey it actually makes sense to have standards
21:59 iago I know you have some stuff in the wiki
21:59 iago as the use of camelCase
21:59 kowey (analogy: some linguists think it's stupid to enforce grammar, because grammar is something that comes naturally... but that it makes perfect sense to enforce spelling standards, because writing is based on convention)
21:59 iago though not something very specific
21:59 kowey well, camelCase is something we pushed towards, no?
22:00 kowey oh, sorry wasn't reading very carefully
22:01 kowey wasn't there a good coding style guide for Haskell out there?
22:01 iago don't ask me please
22:01 iago not something as javacon at least
22:01 kowey there's Igloo's http://urchin.earth.li/~ian/style/haskell.html but I remember seeing something else too
22:02 lispy kowey: check the h.o wiki, I seem to recall stuff.  But, I've never really been passionate about the stuff I read there
22:02 kowey well, yeah, so I don't think you really need to convince us to adopt something like a coding style
22:02 kowey in the sense that I don't think anybody is actively resisting the idea
22:02 kowey it's just nobody has yet had the gumption to push it through
22:03 kowey ah this: https://github.com/tibbe/haskell-style-guide
22:03 Heffalump most software projects develop organically. What's appropriate for a small project is different from what's appropriate for a large one.
22:04 iago Heffalump, large projects are an error
22:04 iago large teams are an error
22:04 iago first law in project management
22:04 iago so, that's not a problem
22:04 iago well, "first" because I want, just a law
22:05 lispy kowey: interesting.  I don't use that style, no do I see it here at Galois.  Not really excited about it either, FWIW
22:05 Heffalump iago: so the linux kernel is an error?
22:06 iago I don't know how they work
22:06 iago small project doesn't mean small code base
22:06 Heffalump it has a large number of contributors
22:06 iago yeah, but very small real team
22:07 iago (I think)
22:07 Heffalump depends how you define tean
22:07 iago anyway as I said, I don't know nothing about OSS projects
22:07 Heffalump team
22:07 lispy kowey: mainly, I think the indentation and newline creation is a bit..weird
22:07 Heffalump how much experience do you have of commercial software development?
22:07 iago I don't see why they should be governed by very different rules
22:07 iago Heffalump, nothing! but I don't think if that is good or bad
22:08 iago I know how you should work, and I know work myself or with a team
22:08 secorp left #darcs
22:08 kowey lispy: hmm, out of interest, how would you indent things?
22:08 kowey more generally, I'd say that this is the sort of thing that lends itself to bikeshedding
22:08 Heffalump you might be in a better position to make pronouncements about what's right and wrong if you did have some :-)
22:08 iago though I didn't work for a company, that's right
22:08 iago Heffalump, well, AFAIK most companies do that in the wrong way
22:09 Heffalump how do you know it's wrong?
22:09 lispy kowey: oh definitely.  I don't really think it's healthy to worry too much about coding standards :)
22:09 kowey so it *may* be helpful to just impose it (I mean making sure there's nothing disastrously inappropriate for our needs)
22:09 iago Heffalump, beucase I study that topic
22:09 kowey well, no the point is that you pick something and then just stick with it so it never becomes an item for discussion
22:09 kowey see what I mean?
22:09 iago Heffalump, my knowledge comes from others
22:09 Heffalump theory and practice are often closer in theory than in practice :-)
22:10 iago usually better than not knowledge at all
22:10 kowey (as opposed to leaving people to wonder, because some people do)
22:10 lispy kowey: so this is the code I've written most recently that is publicly available: http://code.haskell.org/~dagi​t/boab/src/Data/BPlusTree.hs
22:10 lispy kowey: so that shows my current style
22:10 iago and, anyway, I develop software
22:10 iago LOT OF
22:10 iago and I'm bored of work in team
22:11 iago doing it in the context of a company is another stuff
22:12 kowey the Go language approach is to just enforce style in the language
22:12 kowey using a standard reformatter, if I understand correctly... end of discussion
22:13 iago experience doing things wrong doesn't seem to be very relevant either
22:14 Heffalump you don't think it might give an insight into what improvements would be worthwhile?
22:14 iago kowey, enforce style means you need a tool to check that style
22:14 iago usually they are integrated with compiler
22:15 iago so compiler does not compile if style is wrong
22:15 Heffalump iago: kowey is saying that with Go the tool actually does the reformatting too
22:15 iago I know
22:15 kowey dunno if it's actually part of the language per se
22:15 kowey so I'm mis-speaking or speaking very slopilly
22:15 Heffalump hlint is a good start, anyway
22:15 kowey all I know is that it's not something that's left to the coder's discretion
22:16 kowey so I'm happy for us to just pick something with only as much deliberation as we need
22:17 kowey maybe have some tests on some of our pre-existing code to see if it makes sense, and not tolerate too much but-I-like-that-way discussion
22:17 kowey *anyway* iago started this discussion by asking about TDD?
22:17 iago I'm not sure I started it
22:17 iago but yes, I asked about TDD
22:18 kowey yes, TDD is an interesting situation here
22:18 iago actually I would like to ask you what the notion of TDD is
22:18 kowey I think you saw me attempt to summarise the situation?
22:18 iago I though TDD means write tests firsts
22:19 kowey I don't really know, not being a TDD practitioner myself... my sort of head-picture is that the every action the programmer undertakes
22:19 iago implies could be a better word
22:19 kowey begins with tests
22:19 kowey which *seems* to mean unit tests
22:19 iago to be honest I don't think you should take the most cool "word" in test world
22:19 kowey well, of course not
22:20 iago testing while programming, check coverage, etc
22:20 iago is good
22:20 kowey look, it's not about following some fad or fashionable methodology
22:20 iago and it is not TDD
22:20 kowey the way zooko puts it is "not accepting patches unless they come with tests"
22:20 iago I don't know if you can call it TDD
22:20 kowey fine
22:21 iago not an expert anyway
22:21 kowey so I need a term I can use
22:21 iago kowey, testing
22:21 kowey because "testing while programming" is too vague
22:21 iago :P
22:21 kowey "testing" is too vague
22:21 kowey what darcs currently does could be called testing
22:21 iago NO
22:21 iago well, yes...
22:21 kowey I need something to indicate the sort of hyper-aggressive testing people are calling for
22:22 kowey I mean, "testing better" maybe
22:22 kowey but that's too soft to act as a mental anchor
22:22 kowey that's why I (ab)used the word TDD, because it acted as some Thing in my head, that Thing-We-Dont-Do-Yet
22:23 iago TDD implies you write tests while designing
22:23 iago before actually write code
22:23 iago you think tests BEFORE
22:23 iago bad thing: do tests before ALL code is done
22:24 iago for example, do tests just for RC version
22:24 iago common good thing: test while programming
22:24 iago TDD: before programming
22:24 kowey this tweet on testing seemed insightful
22:24 kowey http://twitter.com/#!/wfale​r/status/15762116757684224
22:24 kowey iago: yeah...
22:25 exlevan left #darcs
22:25 lispy kowey: yeah, this is why i've started saying "evidence based correctness"
22:25 kowey iago: but from a patch maintainer's point of view, I can't tell what the patch submitter actually did
22:25 kowey iago: so I can only use the existence of a test as a precondition to the code existing as an approximation
22:26 kowey "testing as precondition"
22:26 iago just imagine this case
22:27 iago X submits a patch which introduces stuff that need be testing
22:27 iago X receives a msg "if you don't test then go hell"
22:27 iago that is
22:28 iago testing as precondition, ... I don't know
22:28 * kowey sticks with his sloppy use of TDD until we work out a more appropriate term
22:28 iago actually, lot of patches won't need new tests
22:29 * lispy agrees with kowey
22:29 kowey I think there's enough fuzziness here that reaching for some sort of linguistic precision is not that helpful
22:29 kowey but I could be mistaken
22:30 iago well I don't care
22:30 iago just asking if you are actually talking about TDD
22:30 kowey perhaps from the perspective of people who do get testing, the failure to make certain key distinctions is detrimental to understanding the issue well enough to make progress on it
22:30 iago I know what do you mean now
22:30 kowey I mean something that is a sort of collective-TDD
22:30 kowey ie. not that individuals do TDD necessarily
22:31 kowey but that if Darcs were a single organism
22:31 kowey and if you stepped back far enough, you could arguably saying that the Darcs-creature was doing TDD
22:31 kowey even if its various cells were not
22:31 iago Heffalump, one point, google agrees with my view of small projects and small teams
22:31 iago if that makes you trust more in my theoretical point
22:32 iago I just recall it as an example of a company following that ideas
22:32 Heffalump small teams are clearly more efficient. But it's not always realistic to keep to small teams.
22:33 iago Heffalump, divide and conquer
22:33 iago small teams working on small projects could end constructing very big software
22:33 Heffalump again, not always realistic
22:34 Heffalump yes, a good principle to follow
22:37 kowey one issue with testing is that the people who feel strongly that we should be more aggressive about testing aren't in a position to Lead by Example [no time] - A
22:37 kowey people who are test-curious and feel that it may be a positive thing lack the skills/experience to actually weigh in (can't say TDD-or-whatever is good because I never do it) - B
22:38 kowey whereas people in the trenches, doing the most of the hard work, feel that there are more effective ways of improving our code quality/stability than testing - C
22:39 kowey so A talking to C isn't all that effective, because C just says to A "well, if you feel so strongly about it, why don't you submit patches?"
22:39 kowey but A can't!
22:39 kowey B isn't going to be much help because B only has a vague notion what A is going on about and C's arguments seem plausible too
22:40 iago Heffalump, I have the "metric" for real patches --> no nested conflicts
22:41 Heffalump cool
22:41 iago well, maybe I'm something wrong
22:42 iago something inconsistent
22:42 iago kowey, curiosity
22:43 iago what are the ways C people argue may help more?
22:43 kowey (so for the situation to make progress, afaict, either we need As acting more like Cs and/or we need B to learn more about the A way of things through practical experience)
22:43 kowey (so for example, what I will attempt to do is is include in my patch reviews a bit of hypothetical "if I were to test this code, how would I go about it" musing)
22:44 kowey (but that's not a promise, because it may cause my brain to fry)
22:44 * kowey looks up the discussion...
22:45 lispy Someone was telling me yesterday about a paper where the author argued that hindley-milner type systems are at the sweet spot for preventing bugs.  dependent types find even more, but require exponentially more effort.
22:45 lispy I wonder if TDD is in an analogous sweet spot
22:45 iago lispy, well
22:46 iago yesterday I had a talk of a guy from Software Improvement Group and I could say their opinion is YES
22:46 iago but not for TDD, for good testing
22:46 iago to be clear
22:46 kowey oh btw, iago, I figured out your patch500 mystery
22:47 kowey it's because roundup cleverly avoids sending mail when the message body is empty (which I think you predicted)
22:47 * kowey still hunting.. I thought I'd managed to capture the C pov in a relatively succinct sentence sometime
22:48 iago kowey, :)
22:48 kowey ah, http://irclog.perlgeek.de/​darcs/2010-12-04#i_3056706
22:48 kowey it's a bit vague, sorry
22:48 iago I don't know why, but I have very good luck finding bugs
22:48 iago lol
22:48 kowey :-)
22:49 kowey but that's not really the part about the C pov that answers your question... it's a much older discussion I'm thinking of
22:49 iago of course
22:50 Igloo The only thing I can remember is refactoring
22:50 iago improve quality is a need
22:50 iago though I understand Ganesh point
22:50 kowey something about making the library not crazy
22:50 sm "domain name was seized by Network Solutions".. yikes
22:50 iago some code is a mystery
22:51 iago refactoring is not the only key
22:51 iago and should be done with care
22:52 kowey ok, lower bound is 2010-09-06
22:52 iago I see some strange stuff surely result from a refactoring
22:52 kowey searching shouldn't be *that* hard...
22:52 Heffalump sm: it's sorted now, right?
22:53 sm Heffalump: dunno, I expect so
22:58 kowey ah-ha! http://irclog.perlgeek.de/​darcs/2010-08-31#i_2766701 <-- iago
22:59 kowey you can go up from there (found by searching for 'correctness' in the IRC log search ui, _ilbot++)
22:59 lispy yeah, #takusen and #isabelle use _ilbot and it's great!
23:00 kowey ooh, that bit of conversation had an "if only lispy were here" and now you are!
23:00 * lispy has to go to a meeting
23:00 lispy bye
23:00 kowey see ya
23:02 iago ok I see, mornfall is part of C
23:03 kowey to recap C, effort spent on testing is effort not spent on improving interfaces in darcs library
23:03 kowey (opportunity cost argument?)
23:04 iago effort spent improving interfaces is not effort adding features..
23:04 iago effort spent writing tests
23:04 iago a) let you to modify code without fear
23:04 kowey no that C dislikes testing [C writes tests too] but that C thinks of cleaning up the library as being the bigger contributor to quality/stability
23:04 * kowey hopes he's wearing his C cap right
23:04 iago b) detect bugs earlier, fix them is cheaper
23:05 kowey A's point as articulated by zooko is that the notion of cost in testing needs to treated more carefully
23:05 iago and why not: 1. proper splitting into modules 2. unit testing on each module ???
23:05 kowey eg. what if whatever you'e doing, testing actually makes you go faster?
23:05 kowey hmm, I think I meant ie
23:06 iago kowey, well, I think zooko point is conditioned by python, ie dynamic types
23:06 jeltsch left #darcs
23:06 iago I found some "dynamic" people arguing they don't need type system because they write tests while coding
23:06 * kowey nods
23:07 kowey we also have static-typing-As around, mind
23:07 kowey but I don't know if they would use the zooko argument
23:07 iago anyway, we could agree that find a "empty list" error message
23:07 iago while you are writing the function that cause it
23:07 iago is much more cheaper than find it later when calling "darcs record"
23:08 iago I think it is the most important point
23:08 iago bugs are cheaper when detected as early as possible
23:08 iago so you need to code a bit, test a bit ...
23:09 kowey yes, which is why anything that sounds like it might push bug detection up front intrigues me
23:09 kowey (hence the B camp)
23:09 kowey because B understands the A argument in the sort of look-at-the-big-picture sense
23:10 iago I think no special skills are needed to write common tests
23:10 iago you may need some specific people assuming more important work
23:10 kowey and in the sense of you perceive the cost of writing tests, so resist them
23:10 iago as writing generators in the case of quickcheck
23:10 kowey but you don't perceive the savings from bugs not even hapenning in the first place (which is unfortunate)
23:11 kowey so you tend to undervalue the latter because you never experience a non-event
23:11 kowey iago: I would like some hand-holding perhaps
23:11 * kowey plans to review patch458 tomorrow morning
23:11 kowey shall we discuss testing some more then when I have something specific in front of my eyes?
23:12 sm writing a test for darcs is not that easy right now, making it easier is a good way to get more of them
23:12 Heffalump yeah, that'd be really helpful
23:13 Heffalump it's not obvious to me how to make it easier though
23:13 * Heffalump goes to bed
23:13 iago kowey, sorry because my English is not very good to express myself as I would like
23:13 iago though the main two reasons I would argue are what I have said
23:13 sm seeing the current test results is also not that easy, making that easier would get more of them
23:14 iago 1) you can CHANGE code without fair, you know there is a set of tests with very good coverage ready to detect bugs
23:14 Igloo By "test", are you thinking of QC-like things, or shell scripts?
23:14 iago 2) you detect bugs earlier and then they are cheaper
23:14 iago so, even if you don't detect bugs in first place, they are good by 1)
23:14 iago I think we are talking about unit testing
23:14 kowey I don't really understand 1)
23:15 iago kowey, in 2007 Ganesh write one module
23:15 Igloo s/fair/fear/ in 1)
23:15 kowey but I'm really sleepy now, and I think there is some value in having tests as insurance for future code
23:15 iago yeah
23:15 iago fear, sorry
23:15 kowey oh, then I understand 1), thanks!
23:16 iago anyway, I feel your current tests are a mixture
23:16 iago you test primitive patches with real patches
23:16 iago and you call it unit testing
23:16 kowey right, but you see that this is just another sort of A argument that B likes but doesn't actually make concrete progress, right?
23:16 kowey because B knows why testing is a good idea in principle because A is very persuasive
23:16 kowey basically, sm has the right idea
23:17 kowey it's all about getting B to deeply understanding what testing entails
23:17 iago kowey, maybe working on a specific example
23:17 kowey and/or lowering all the little silly technical barriers
23:17 iago a case study
23:17 iago take X small part of Darcs and work on it
23:17 kowey basically B doesn't need to be convinced that testing is a good idea, that problem is solved
23:17 iago to show how
23:18 kowey yeah, that's the spirit
23:18 kowey A should not be trying to convince B
23:18 kowey A should be trying to teach B
23:18 kowey so that B can perhaps have a chance at convincing C (well ok, it's not that tidy)
23:18 iago ok, so A do that and write a small report
23:18 kowey and this B is going to bed,... good night and thanks!
23:18 iago good night
23:19 kowey left #darcs
23:19 sm any tips for: Configuring darcs-2.5...
23:19 sm setup: ghc version >=6.4 is required but the version of /usr/local/bin/ghc
23:20 iago I had no problems with 6.12.1
23:20 Igloo Well, first, I think the test needs to be updated to require a newer GHC than 6.4...
23:20 iago I expect that to not be very helpful
23:20 Igloo What version is /usr/local/bin/ghc ?
23:20 sm Igloo: 6.12.3, as usual
23:21 sm I guess this is something in Cabal, invoked by our Setup.hs ?
23:24 * Igloo can't see where that test is
23:24 Igloo Looking at HEAD, which may be different
23:26 sm doh.. I should add a -v3 instead of these trace statements
23:27 sm ("/usr/local/bin/ghc",["--numeric-version"])
23:27 sm /usr/local/bin/ghc returned ExitFailure 3295469
23:27 sm works fine at the command line of course
23:30 sm Igloo: hm, I boiled it down to https://gist.github.com/745899 - wonder if that's relevant
23:31 Igloo sm: What platform?
23:31 sm mac. I have process-1.0.1.4 also installed, though it was hidden
23:32 Igloo Ah, that's probably the problem, then
23:32 sm and what do you know.. after forcibly unregistering it, I can configure again
23:33 sm is process special, then ? having two versions installed is a bad idea ?
23:36 Igloo It's not particularly special, but it includes C code
23:36 Igloo I recommend avoiding having multiple versions of any package installed
23:39 sm seriously ? hmm, that means some adjustment to my practices
23:40 sm I'm not sure it's possible, given the range of things I use from hackage; I'd probably need separate cabal/ghc metadata dbs
23:44 sm alexsuraci: I'm building with mtl 2 like you.. did you get a src/Darcs/Patch/Choices.hs:269:13:  Not in scope: data constructor `State' error ?
23:45 sm I should try your patch eh
23:45 sm where is it ?
23:46 raichoo left #darcs

| Channels | #darcs index | Today | | Search | Google Search | Plain-Text | summary