/srv/irclogs.ubuntu.com/2009/04/29/#launchpad-meeting.txt

=== Ursinha is now known as Marvin_
=== mrevell is now known as mrevell-lunch
=== mrevell-lunch is now known as mrevell
=== salgado-afk is now known as salgado
barry#startmeeting15:01
MootBotMeeting started at 09:01. The chair is barry.15:01
MootBotCommands Available: [TOPIC], [IDEA], [ACTION], [AGREED], [LINK], [VOTE]15:01
barryhello and welcome to this week's ameu reviewer's meeting.  who's here today?15:01
bacme15:01
abentleyme15:01
gary_posterme15:01
rockstarme15:01
marsme15:01
al-maisanme15:01
adeuringme15:01
BjornTme15:01
henningeme15:01
noodles775me15:01
bigjoolsme15:01
gmbme15:02
barrycprov: ping15:02
barrydanilos: ping15:02
danilosme15:02
barryEdwinGrubbs: ping15:02
cprovme15:02
EdwinGrubbsme15:03
barryintellectronica: ping15:03
intellectronicame15:03
barrysalgado: ping15:03
barry[TOPIC] agenda15:03
MootBotNew Topic:  agenda15:03
salgadome15:03
barry * Roll call15:03
barry * Don't forget your OCR slot15:03
barry * Action items15:03
barry * Mentoring update15:03
barry   * need a volunteer to mentor noodles15:03
barry * Peanut gallery (anything not on the agenda)15:03
barry   * JS coding guidelines (mars, intellectronica)15:03
barry   * ampersands-in-urls (abentley)15:03
barry[TOPIC]  * Don't forget your OCR slot15:04
MootBotNew Topic:   * Don't forget your OCR slot15:04
barryi've heard some rumors that folks sometimes miss their ocr slot.  just wanted to ask that you please try to fill them.  we all count on each other to get branches reivewed and landed15:05
barryi know we're all busy, but think of the team!15:05
barryif you really can't fill your slot for some reason, please let me or your fellow reviewers know, and try to find a backup if possible15:05
barryand remember, we have sabbaticals if you're burned out for a while15:06
barrythat's it from me!  any thoughts?15:06
cprovyeah, I feel guilty.15:06
al-maisanI will be on secondment to the foundations team for the next 3 months15:07
abentleybarry: Perhaps, let everyone know if you15:07
fjlacosteme15:07
abentley're sick and can't find a replacement.15:07
bigjoolsal-maisan: Ubuntu Foundations, to be precise15:07
barryabentley: +115:07
al-maisan..and hence not in a position to review on Tuesdays15:07
abentley(rather than just reviewers)15:07
barrya quick email to the ml would help15:07
al-maisanbigjools: thanks for the correction :)15:07
cprovfjlacoste: is this nick the dutch version for 'flacoste' ?15:08
barryal-maisan: cool, we'll need to shuffle ocr schedule around15:08
al-maisanbarry: thanks!15:08
barryal-maisan: i'll mark up ReviewerSchedule.  tuesdays aren't too bad, with gmb in euro and bac & rockstar in west15:09
al-maisanOK .. that's good.15:09
danilosI am off this Thursday (swap day)15:09
daniloswhich means, no euro coverage tomorrow unless someone wants to take over15:09
cprovdanilos: err, me too, I was counting on you ...15:09
* bigjools has a 10k branch coming soon as well, what a shame15:10
danilosany candidate willing to take Thursday out of my hands is welcome to15:10
bigjools10k LOC, that is15:10
barrydanilos: ouch!  no coverage for tomorrow?15:10
rockstarThis meeting probably isn't a good venue to share when you'll miss OCR15:10
cprovbarry: it's already bad now that I'm on EU timezone.15:10
danilosrockstar: well, if we are reminded how we need to find a replacement, it might be a good place to find one15:10
daniloscprov, barry: ok, let's take this outside the meeting15:11
gmbbigjools: Good luck with that ;)15:11
rockstardanilos: at the expense of the other things on the agenda?15:11
* cprov nods15:11
bigjoolsr=gmb!15:11
al-maisan:)15:11
gmbAHAHAAHAHANo.15:11
danilosrockstar: if it's easy, yes... since nobody has volunteered, it's not, so let's move on15:11
barrycprov: we can move you to euro slot and we can split up bac/rockstar or salgado/barry15:11
barryi will now skip around15:12
barry[TOPIC] mentoring update15:12
MootBotNew Topic:  mentoring update15:12
barry   * need a volunteer to mentor noodles15:12
barrywe need a mentor for noodles, preferrably in euro timeslot15:12
cprovI can do it.15:12
noodles775Thanks cprov :)15:13
barrycprov: awesome thanks15:13
cprovIt's my pleasure.15:13
barrycprov, noodles775 we'll discuss off line where we can slot you guys in15:13
noodles775Yup15:13
cprovokay15:13
henningeoff-line? like writing letters?15:13
henninge;)15:14
rockstarhenninge: yes.  Support your local post.15:14
barryhenninge: pigeon (not pidgin :)15:14
barryhenninge: any word on your mentoring?  how's it going?15:14
abentleyrockstar: In soviet canada, posts support you.15:14
rockstarabentley: :)15:14
henningebarry: very well, thank you15:14
henningebarry: very well, thank you15:15
henningebarry: adeuring is doing a good job15:15
barryi knew he would!  good to hear, thanks15:15
barryany other mentoring issues?15:16
adeuringwell, I'd say, no complaints with henninge's work :)15:16
henningeadeuring: ;)15:16
barryadeuring: i hope you're cracking the whip!15:17
barry:)15:17
adeuringbarry: from time to time ;)15:17
barry:-D15:17
barry[TOPIC] action items15:17
MootBotNew Topic:  action items15:17
barry * gary_poster to take importfascist and rSP() discussion to ml15:18
gary_posterh'ain't done it.  Intend to do it today.15:18
barrygary_poster: cool15:18
barry * allenap to look into storm/sqlobject result set compatibility15:19
barryoops, he's not here15:19
gmballenap's away this week15:19
barry * flacoste to work on API reviewer cheat sheet15:19
gmbI suspect he didn't get very far though15:19
fjlacostei didn't15:19
barrygmb: nod15:19
barryfjlacoste: keep it on the list? :)15:19
fjlacostesure15:20
bigjoolshe changed his nick this week out of embarassment maybe15:20
fjlacostelol15:20
barrycool15:20
barry[TOPIC]  * Peanut gallery (anything not on the agenda)15:20
MootBotNew Topic:   * Peanut gallery (anything not on the agenda)15:20
barryactually, there were two items we didn't get to from last week15:20
barry   * JS coding guidelines (mars, intellectronica)15:20
fjlacostemthaddon: can we close merge to devel?15:20
barrymars, intellectronica can either of you talk about this today?15:21
gary_posterfjlacoste: wrong room :-)15:21
intellectronicai don't remember raising this. mars?15:21
marsbarry, yep15:21
barrymars: the floor is yours15:21
intellectronicaperhaps just to remind about testing with devmode off as part of the review15:21
marsso this is a question to the JavaScript coders in the room15:21
marsin Python, we are always explicit in comparisons: if x is not None15:22
marsinstead of: if !x15:22
=== fjlacoste is now known as flacoste
barrymars: does js have the same expanded notion of trueness/falseness as python, or is it more strict like java?15:23
marsso Tom and I were debating doing the same in JavaScript.  I prefer the coercive form, he prefers explicit15:23
marsbarry, the types aren't as clean15:23
intellectronicabarry: it's even more lax, and very confusing, with coercing to boolean15:23
rockstarI prefer the explicit, but it's not always possible.15:23
marsbarry, in JavaScript, null == undefined == 0 == false15:23
rockstarEr, not always clean.15:24
intellectronicamy position was that i like the explicit version, having learned to appreciate it coding (and reading) python15:24
marsright15:24
rockstarintellectronica: I tend to agree with you.15:24
barryrockstar: why is it not always possible?15:24
marsand mine was that because JavaScript can throw 'undefined' at you, you need the coercive form15:24
intellectronicarockstar: both options are possible technically. it's just a matter of style15:24
gary_postermochikit has a whole equivalence framework in part because of the JS bool mess (but there are other nastinesses as well)15:24
marsgary_poster, yech15:24
marsdidn't know that15:25
rockstarbarry: intellectronica: I've been bitten by bugs in cases of empty strings evaluating to true.15:25
barryew15:25
EdwinGrubbsI just worry about all tests having to be (x === null or x === undefined) which is unweildy.15:25
bigjoolsoof15:25
marsbarry, and [] and {} are also true15:25
intellectronicarockstar: well, that's exactly why you'd want to compare explicitly15:25
barryew ew15:25
rockstarI feel like === means we're back to php land.15:25
rockstarintellectronica: so you're saying I should have used if x != ''15:26
intellectronicarockstar: yup15:26
barryremember that in our python style guide, we're allowed to use "if not foo:" when foo can be of several types (e.g. None or [] for example)15:26
intellectronicarockstar: or use foo.length15:26
barrywe just require a comment explaining that the simpler choice was deliberate15:26
rockstarWe kinda lose the loose typing at that point.  :/15:26
intellectronicaexplicit comparison is an easy rule to follow. just compare explicitly to anything you might expect be in the value15:26
flacosterockstar: if x !== ''15:26
marsbarry, ok, in JavaScript, you sometimes still want explicit comparison, if null is a flag value15:27
rockstarflacoste: yea, I know.  Was in a hurry.15:27
barrymars: yep15:27
abentleybarry: Even so, I find "if foo == [] or foo is None" shorter than "if not foo" plus a comment.15:27
marsbarry, so in my mind the question more revolves around the 'wandering undefineds' problem15:27
rockstarOkay, I think we should be explicit, and anywhere we aren't requires some serious 'splainin.15:28
intellectronicarockstar: loose typing is sometimes great, and sometimes it makes the code hard to read. if you have loose typing it's up to you to protect against getting values you don't expect15:28
barryabentley: well, if len(foo) == 0 or foo is None, but it /is/ more explicit15:28
rockstarintellectronica: yes, this is true.  Python really is awesome at its typing.15:28
barryaren't unexpected undefineds a sign of buggy code?15:29
marsso, is "if (!config) {}" hard to read?15:29
barrymars: not hard to read, hard to know the intent15:30
marsintellectronica, rockstar, because 'config' could be null, if the user explicity said "I don't want this parameter", or "undefined", if the user just passed in some_config_obj.some_attr15:30
intellectronicamars: it is, yes, harder than if (config !== null && config !== undefined)15:30
rockstarmars: yeah, I agree with intellectronica15:30
marsok.  I should ask what you guys thing of trinary operators too, because that is the other place where I use coercion15:31
intellectronicatrinary operators? as in condition ? then-expr : else-expr ?15:31
marsvar bar = cfg ? cfg.foo : 0;15:31
* barry looks at his own first pathetic attempt at js and realizes he needs to fix his code ;)15:32
marsbut I guess the intent there is clear15:32
marsand it's idiomatic, so no issue?15:32
intellectronicamars: thses should be used sparingly, but when you do, there's no reason why you can't use the verbose version15:32
intellectronicathe case above is quite idiomatic15:32
barrymars: i would love to see parentheses after the = and before the ;15:32
rockstarmars: let us avoid them.  Clarity in code, and optimization when the javascript is "compiled"15:32
intellectronicabut following a simple rule is so much easier than making exceptions for idioms or whatever15:33
rockstarintellectronica: +115:33
barryintellectronica: +115:33
gmb+115:33
noodles775+115:34
barrydo we need to vote?  mars?15:34
marsyou guys would have a great time browsing the jquery source code then :)15:34
intellectronica:D15:34
marsbarry, ^ that looks like a vote to me15:34
rockstarmars: :)15:34
marsa majority vote, rather15:34
barryyep15:34
rockstarDONE!15:35
barry[AGREED] explicit is better than implicit in javascript comparisons15:35
MootBotAGREED received:  explicit is better than implicit in javascript comparisons15:35
barry   * ampersands-in-urls (abentley)15:35
barryabentley: i don't remember the details on this, do you?15:35
abentleybarry: We didn't talk much.15:35
barryabentley: the floor is yours15:36
abentleyEveryone knows that ampersands must be provided as entity references in HTML, right?15:36
abentleye.g. &15:36
abentleyEveryone knows that this applies when the ampersand is part of a URL in an attribute, right?15:37
marsyes :)15:37
abentleye.g. <a href="example.ort?a=b&amp;c=d">15:37
marsno, I didn't know that15:37
abentleymars: It is very common to do otherwise, but it's not valid HTML.15:38
marswould the w3c validator catch that?  Or our linter?15:38
intellectronicaabentley: i think the nest solution for that is to build your URL in python, using a formatter15:38
intellectronicait's quite rare that you'll have a fixed URL with GET parameters you can include in a template directly15:38
abentleymars: I think the wc3 validator would.  I can report back if you like.15:39
barryabentley: wouldn't that be example.ort?a=b%26b&b=c ?15:39
abentleyintellectronica: That's kinda where I'm going to.  Should we be calling "escape" on URLs that we provide to TAL as part of a structure?15:39
marsabentley, we first need to answer a larger question - it is valid HTML, but do we actually feel the need to adhere to it strictly?15:40
rockstarbarry: yea, that is right.15:40
marsabentley, I ask because I don't know if we absolutely ensure we have valid markup throughout Launchpad15:40
marsabentley, or if it is a "nice to have"15:40
rockstarmars: it's a goal we should aspire to.15:40
abentleybarry: No, that would make the value of a "b&"15:40
abentleybarry: I think.15:40
intellectronicaabentley: i think we need to go further, and have a function that builds the url for us from base url and a two-tuple of query parameters15:40
marsrockstar, agreed15:41
barryth evalue would be 'b&b'15:41
barrywas that not the intent?15:41
abentleybarry: no.15:41
barryer, sorry, 'b&'15:41
abentleyThe intent was a=b, c=d15:41
rockstarWell, in the case that brought this up, I was just using canonical_url, so maybe canonical_url would be good to escape these things.15:42
BjornTrockstar: canonical_url is used in other places than html templates15:42
abentleyrockstar: If canonical_url html-escaped the URLs, they would not be valid URLs.  They would be the HTML-escaped forms of valid URLs.15:43
barryintellectronica: well, urlllib.urlencode() is more or less what we should be using i think15:43
rockstarBjornT: okay,  I was just throwing it out there.15:43
barryand we may already be using it15:43
abentleybarry: The unescaped URL is "example.ort?a=b&c=d" and the escaped version is "example.ort?a=b&amp;c=d"15:44
intellectronicabut if canonical_url would accept query parameters, all we need is for fmt:url to escape the result15:44
intellectronicaor maybe i'm talking nonsense, because how would you pass the parameters to fmt:url :-/15:45
barryabentley: how does a url parser know that your second example doesn't map to {'a':'b', 'amp;c':'d'} ?15:45
abentleyintellectronica: Right.  TAL can DTRT if we let it.  But if we pass it as a structure, we have to take care of it ourselves.15:45
abentleybarry: A URL parser should not see the escaped version, because the HTML parser should have already decoded it.15:46
intellectronicaabentley: so i guess just 1. make canonical_url accept query_parameters. 2. add a wrapper around it that escapes the result15:46
rockstarintellectronica: +115:46
barrywell, the html parser then.  seems ambiguous syntax to me15:46
abentleybarry: & always introduces an entity reference.  Where's the ambiguity?15:46
flacosteabentley: you are saying that all urls containing & to separate query parameters in HTML should be escaped?15:47
BjornTintellectronica: why do we need a wrapper, instead of using escape() on the result?15:47
barrywell not always.  it doesn't in the a=b&c=d case (even if that's not standard, its widespread common practice)15:47
intellectronicaBjornT: one less function to call. but i agree, it doesn't matter that much15:47
abentleyflacoste: Yes.15:48
flacoste<a href="?param1=value1&amp;param2=value2">?15:48
flacostethe above would be correct?15:48
BjornTflacoste: you could simplify that by saying that all urls in html should be escaped15:48
flacostebut nobody does that!15:48
abentleybarry: The spec is unambiguous.  Browsers have to be more careful.15:48
flacostethat's non-sense15:48
flacosteall of the web is broken15:48
flacostei mean even gmail doesn't escape it's URLs15:48
abentleyflacoste: Okay, so your vote is to ignore the parts of HTML that we don't like?15:48
flacosteyes15:49
barryabentley: maybe, but in that case, it's all guesswork15:49
flacosteespecially if it's a part that nobody cares about15:49
BjornTintellectronica: well, using escape means one less function to maintain. it also seems that passing query parameters to canonical_url is quite rare; usually we have specific views we pass the parameters to15:49
marsflacoste, yes, same goes for CSS IE hacks - it generates invalid CSS, but pragmatism justifies it15:49
rockstarflacoste: that sounds very Microsoft of you.  :)15:49
abentleybarry: That's right.  Wouldn't it be nice if more sites provided valid HTML so they didn't have to?15:49
barryabentley: sure.  but it'll never happen :)15:49
flacosteabentley: did you try HTML escaping a URL in an href?15:49
barryabentley: can you tell me, are you trying to solve a real problem (i.e. is there an open bug)?15:50
abentleyflacoste: I've done it in the past.  I didn't do it specifically for this meeting.15:50
flacosteabentley: and the browser submitted the right thing?15:50
barryabentley: i'm not being facetious.  i'm really curious if we have users who are affected by this15:50
abentleybarry: It's not related to a bug.  It's something that came up in a review.15:51
barryabentley: ah, ok, thx15:51
abentleyflacoste: Yes.15:51
barryabentley: i'm sorry, we've run out of time again.  and apologies for going late today.  perhaps we can take this to the ml?15:51
BjornTflacoste: gmail's front page does escape &. at least the links i looked at15:51
flacostereally!15:52
BjornTflacoste: also, we usually do it in launchpad as well, because tal does it for us15:53
abentleyflacoste: On this page, the "wish I were an asshole" link is escaped: http://aaronbentley.com/music/news/myspaced-11-09-200615:53
flacosteand amazon too, look at that!15:53
flacosteyou learn something new everyday!15:54
abentleybarry: No worries.  I'm not sure it's worth ML discussion, even.15:54
barrywe should do this by not doing this <wink>.  iow, whatever code we use to inject these urls into html pages should do it for us15:54
barryabentley: ok.  let's cut this off then, since we're 10 minutes over15:55
BjornTbarry: that's how it works today, except that you can turn it off by using structure15:55
barryBjornT: so structure should dtrt!15:55
barryanyway, we can take this up again next week or go to the ml15:56
abentleybarry: I think that would involve AI...15:56
barry#endmeeting15:56
MootBotMeeting finished at 09:56.15:56
intellectronicathanks barry15:56
barryapologies for going over today15:56
abentleythanks barry15:56
barryabentley: thanks for bringing this up!15:56
=== salgado is now known as salgado-lunch
=== salgado-lunch is now known as salgado
=== Marvin_ is now known as Ursinha
=== Ursinha is now known as Marvin_
=== salgado is now known as salgado-afk
mwhudsonbarry: hello23:31
barry#startmeeting23:32
MootBotMeeting started at 17:32. The chair is barry.23:32
MootBotCommands Available: [TOPIC], [IDEA], [ACTION], [AGREED], [LINK], [VOTE]23:32
barrymwhudson: hi23:32
barryjml: hi23:32
barrythumper: hi23:32
barryjml, thumper ping?23:32
jmlhi23:32
barry[TOPIC] agenda23:33
MootBotNew Topic:  agenda23:33
barry * Roll call23:33
barry * Action items23:33
barry * Peanut gallery (anything not on the agenda)23:33
barry   * JS coding guidelines (mars, intellectronica)23:33
barry   * ampersands-in-urls (abentley)23:33
barryany word from thumper?23:33
jmlhe said he was going to attend.23:34
mwhudsoni'm sure he'll read this eventually :)23:34
barryok, we'll just start anyway :)23:34
thumperhereish23:34
barry[TOPIC] update from ameu23:34
MootBotNew Topic:  update from ameu23:34
barryso a couple of things from the ameu meeting...23:35
barryal-maisan will be on load to ubuntu foundations for the next 3 months so won't be doing reviews23:35
barrycprov moved to euro timezone and will be mentoring noodles23:35
mwhudsonubuntu foundations ?23:35
barryi'll need to juggle the ocr schedule a bit23:35
barrymwhudson: apparently so!23:36
mwhudsonwhich team is that again? cjwatson's?23:36
jmlwell, Robbie's the manager, but yes.23:36
barrydanilo_ and cprov are off tomorrow, lots of people are off on friday (not us nose-to-the-grindstone americans tho)23:36
barrydunno what he'll be working on23:36
mwhudsonok23:37
barrywe talked about javascript coding guidelines for true/false comparisons and decided that our js code should follow python's eibti rules23:37
barryi.e. if (foo === undefined) over if (!foo)23:38
mwhudsonokay23:38
* thumper hopes if (!foo)23:38
jmlsure. as long as it works.23:38
barrywe also had a long discussion about escaping & in url query strings, without any resolution23:38
barrythumper: sorry, nope23:38
mwhudsonare our javascript coding guidelines written down anywhere?23:39
thumper:(23:39
barrythumper: mars was the lone holdout23:39
jmlI can't spot the question being responded to23:39
marsmwhudson, http://dev.launchpad.net/JavaScriptReviewNotes23:39
barrymwhudson: such as they are: https://dev.launchpad.net/JavaScriptReviewNotes23:39
barrymars: hi!  this reminds me: can you capture this decision on that page?23:40
marssure23:40
mwhudsonmars, barry: thanks23:40
barrymars: thanks23:40
barrythat's it from ameu23:40
barry[TOPIC] action items23:40
MootBotNew Topic:  action items23:40
barryno action items for asiapac23:41
barry[TOPIC] mentoring update23:41
MootBotNew Topic:  mentoring update23:41
barrynone for you guys ;)23:41
barrythat's really all i have, so...23:41
barry[TOPIC] peanut gallery23:42
MootBotNew Topic:  peanut gallery23:42
barrydo you guys have anything you want to bring up?23:42
jmlnothing from me. there's not been any code to review :)23:42
mwhudsonheh yeah23:42
mwhudsonintegration iz us23:42
barryyou guys are welcome to join me friday america time :)23:42
barrywell, if there's nothing else...23:43
jmlstill no.23:44
barryokay!23:44
barry#endmeeting23:44
MootBotMeeting finished at 17:44.23:44
barrythanks guys23:44
mwhudsonthanks barry23:44

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!