[14:48]  * gmb goes to get a brew pre-meeting
[15:00] <barry> #startmeeting
[15:00] <barry> ha ha
[15:00] <barry> hello and welcome to this week's ameu launchpad reveiwer's meeting
[15:00] <barry> who's here today?
[15:00] <bigjools> fail :)
[15:00] <flacoste> me
[15:00] <bigjools> me
[15:00] <bac> me
[15:00] <gmb> me
[15:00] <bigjools> moo
[15:01] <schwuk> me
[15:01] <allenap> me
[15:01] <salgado> me
[15:01] <intellectronica> ME
[15:02] <intellectronica> whoops
[15:02] <BjornT> me
[15:02] <barry> allenap, danilos ping
[15:02]  * gmb tries to persuade a rather persistently stupid wasp to leave the office
[15:02] <allenap> me
[15:02] <EdwinGrubbs> me
[15:02] <barry> EdwinGrubbs: welcome!
[15:02] <EdwinGrubbs> thanks
[15:03] <statik> me
[15:03] <barry> statik: ping
[15:03] <barry> :)
[15:03] <sinzu1> me
[15:03] <sinzui> me me
[15:03] <barry> == Agenda ==
[15:03] <barry>  * Roll call
[15:03] <barry>  * Next meeting
[15:03] <barry>  * Action items
[15:03] <barry>  * Queue status
[15:03] <barry>  * Mentoring update
[15:03] <barry>  * Review process
[15:03] <barry> next meeting week += 1?
[15:03] <barry> anybody know you won't be here or will be sprinting?
[15:04] <flacoste> sinzui and I will be sprinting
[15:04] <flacoste> but we should be able to attend
[15:04] <barry> cool, thanks
[15:04] <barry>  * Action items
[15:05]  * barry is teh suck this week
[15:05] <barry>  * barry drive to decision about multiline sequences
[15:05] <barry>  * barry to solicit ideas to better handle review scheduling and workload
[15:05] <barry> not done, but i will do them this week
[15:05] <barry>  * gmb to add lpreview to sourcecode and hack rf-setup to link it in
[15:05] <gmb> It's in sourcecode.
[15:05] <gmb> Thanks to mthaddon
[15:06] <mthaddon> de rien
[15:06] <gmb> I'll get the rf-setup change reviewed and landed today.
[15:06] <barry> gmb: excellent.  will that link in our ~/.bazaar/plugins directory?
[15:06] <gmb> Yep.
[15:06] <barry> fantastic
[15:06] <barry> thanks!
[15:07] <barry>  * gmb to prod mwh again about the 800-line limit patch
[15:07] <gmb> I emailed him last nigh
[15:07] <gmb> But since he's sprinting I suspect we won't hear back until next week.
[15:07] <gmb> barry: Let's leave this on the agenda for next week
[15:07] <gmb> Lest I forget again :)
[15:08] <barry> gmb: cool.  will do.  we'll leave the lpreview one on too, until the rf link branch lands
[15:08] <gmb> Sure.
[15:08] <barry> gmb: thanks
[15:08] <barry>  * sinzui to update js style guide page with helpful resources
[15:08] <sinzui> Not done
[15:08]  * sinzui has time on Thursday to do it
[15:08] <barry> sinzui: we'll just continue this one then, right?
[15:08] <flacoste> barry: didn't you took a decision about multiline sequences?
[15:08] <sinzui> barry: yes please
[15:09] <statik> sinzui: possibly relevent, there is a new douglas crockford book coming out called javascript: the good parts
[15:09] <barry> flacoste: oh, you're right.  i even updated the python style guide.  jeebus, where is my brain?
[15:09] <bigjools> that won't be very big then
[15:09] <intellectronica> statik: beware of ﻿crockford's advice, though. it's not always good
[15:10] <sinzui> statik: I nice *small* book about modern and compatible ECMAScript would be nice.
[15:10] <statik> yeah, I hope this one is tiny
[15:11] <barry>  * sinzui or flacoste to add sampledata check to lpreview or make lint
[15:11] <flacoste> i suck
[15:11] <flacoste> completely forgot about that
[15:11] <flacoste> i can at least file a bug :-)
[15:11] <barry> flacoste: cool, that would be great
[15:12] <barry>  * Queue status
[15:13] <barry> queue looks pretty good to me.  the only pink branch is our old favorite bazillion year old stub branch
[15:13] <barry> any comments on the queue?
[15:14] <gmb> Can't that branch be made w-i-p?
[15:14] <gmb> I mean, it's ossifying there at the top of the queue.#
[15:14] <barry> gmb: i tried to do that once but jamesh didn't want me to
[15:14] <barry> gmb: but i will push for that again at the next asiapac
[15:15] <gmb> Okay.
[15:15] <barry>  * Mentoring update
[15:15] <barry> any word from mentors or mentorees?
[15:15] <barry> EdwinGrubbs: how's it going?  getting some branches to review?
[15:16] <EdwinGrubbs> barry: no, I haven't reviewed anything since salgado's oncall day
[15:16] <gmb> EdwinGrubbs: That's a Thursday, right?
[15:16] <barry> EdwinGrubbs: that's okay, i'm sure you'll get some tomorrow
[15:16] <EdwinGrubbs> of course, I haven't checked PendingReviews to see if anything is assigned to me
[15:17] <barry> EdwinGrubbs: that reminds me.  i've been using bac's cron script.  i highly recommend it
[15:17] <barry> when there's no change to my queue, it stays quiet, but i get the occasional email when there's an update to my queue.  it works really well. you should all check it out
[15:17]  * barry thanks bac
[15:18] <bac> np
[15:18]  * sinzui ponders a dbus message from PR
[15:18] <barry> :)
[15:18] <EdwinGrubbs> bac: where is that cronscript? I just have your getreview.py script.
[15:18] <bac> that would be cool
[15:18] <bigjools> XMPP message
[15:19] <schwuk> twitter!
[15:19] <bigjools> eugh
[15:19] <bac> EdwinGrubbs:  bzr+ssh://devpad.canonical.com/code/bac/launchpad/pr_notify
[15:19] <gmb> sinzui: Put it through libnotify / notify-bin
[15:20] <schwuk> bigjools: luddite
[15:20] <barry> bac: is there a link to that from TipsForReviewers?
[15:20] <statik> easily integrated with intellectronica's twit.py
[15:20] <sinzui> gmb: yep
[15:20] <bac> barry: no, but i'll add one
[15:20] <barry> bac: thanks
[15:20] <schwuk> statik: ?
[15:20] <bigjools> schwuk: communication junkie
[15:21] <barry> any other mentoring news?
[15:21] <barry>  * Review process
[15:21] <barry> there's just bac's proposed item...
[15:21] <barry>  * Discourage use of 'hasattr' (bac)
[15:22] <barry> bac: the floor is yours
[15:22] <flacoste> hasattr is evil because it catches exceptions
[15:22] <bac> i wasn't aware of the problem with hasattr until the discussion today.
[15:22]  * sinzui 'attr' in obj.__dict__:
[15:22] <bac> so should we put that on our check list or PSG
[15:22] <flacoste> we should define a safe_hasattr in lazr.utils and uses that instead
[15:22] <bac> flacoste: +1
[15:23] <intellectronica> sinzui: that doesn't always work, does it?
[15:23] <barry> flacoste: i think people should just be trained to use getattr(foo, name, None) instead
[15:23] <flacoste> it doesn't with decoarators
[15:23] <flacoste> intellectronica: ^^
[15:23] <sinzui> intellectronica: I was being sarcastic
[15:23] <flacoste> or any other descriptors
[15:23] <flacoste> barry: i think if safe_hasattr(obj, 'attr'):
[15:24] <flacoste> is easier to udnertsand
[15:24] <bac> i did a quick look and we're using hasattr 24 times in our codebase
[15:24] <flacoste> than if getattr(obj, 'attr', None) is not None
[15:24] <barry> flacoste: yeah, but then i have to look up safe_hasattr() to see what it actually does ;)
[15:24] <flacoste> barry: c.'mon :-)
[15:24] <barry> otoh, if it's this instead, then i can get behind it:
[15:24] <barry> missing = object()
[15:25] <intellectronica> maybe you should call it can_getattr :)
[15:25] <barry> return getattr(obj, name, missing) is missing
[15:25] <flacoste> barry: yes, that was my plan
[15:25] <barry> er, is not missing
[15:25]  * flacoste realized that he just got himself anothe action item
[15:25] <allenap> Why not just catch the AttributeError explicitly ourselves, and ban hasattr?
[15:25] <barry> intellectronica: maybe i_can_haz_attr()
[15:25] <flacoste> i should just shut-up
[15:25] <intellectronica> barry: :)
[15:25] <flacoste> allenap: the problem is that it catches all exceptions
[15:26] <barry> i'd like to understand more why we're using hasattrs
[15:26] <barry> maybe some of those 24 uses are bogus?
[15:27] <intellectronica> i think in many cases where we use ...attr methods we don't really have to, or could refactor the code so that we don't have to
[15:27] <intellectronica> just today salgado found one place where we used setattr without having to and fixed it
[15:28] <salgado> intellectronica, it was jamesh who found it, btw. :)
[15:28] <intellectronica> maybe the instruction should be more general, and include looking for ...attr in the code, check that it's really necessary, and iff it is, make sure that it's correct
[15:28] <barry> intellectronica: +1
[15:29] <barry> would someone like to update TipsForReviewers to be on the lookout, and question, uses of setattr()
[15:29] <bac> i will
[15:29] <barry> and also update PythonStyleGuide to watch out for hasattr() because of the exception swallowing behavior
[15:29] <barry> bac: mind doing both?
[15:30] <intellectronica> barry: why setattr specifically?
[15:30] <bac> yes i'll do both
[15:30] <bac> barry: why shouldn't both place caution about hasattr and setattr?
[15:30] <barry> intellectronica, bac nope, you're right. sorry
[15:31] <flacoste> what's the issue with setattr?
[15:31] <intellectronica> flacoste: just that we sometimes use it without having to
[15:32] <intellectronica> flacoste: and then we rely on strings, don't get lint errors, and unnecessarily complicate the code
[15:32] <flacoste> how often does it come up?
[15:32] <flacoste> i mean, there is a lot of things we do that we don't need to
[15:32] <intellectronica> flacoste: it came up today :)
[15:32] <flacoste> launchpad is full of cargo cult
[15:32] <sinzui> true
[15:32] <flacoste> lint doesn't catch unexisiting attributes
[15:33] <flacoste> i don't think we should call out setattr specifically
[15:33] <intellectronica> heh, true
[15:34] <barry> i can go either way on that.  we're all agreed about questioning and discouraging hasattr though
[15:36] <barry> that's it from me.  anything else not on the agenda?
[15:37] <bigjools> a quick point
[15:37] <bigjools> my email about cleaning PR up was not very effective
[15:37] <bigjools> so I think we should remind people in review replies
[15:38] <barry> bigjools: good idea
[15:38]  * bigjools removed 6 old branches from his queue just yesterday
[15:38] <sinzui> can bac's script be adapted to send an email to offender?
[15:39] <bac> sinzui: no
[15:39] <bac> jamesh's would be a better candidate
[15:39] <sinzui> I clear my queue when I start my on-call day
[15:39] <bigjools> yeah
[15:39] <flacoste> sinzui: that could be considered spamming :-)
[15:40] <bigjools> you can flog them some viagra while you're at it
[15:40] <flacoste> lol
[15:40] <sinzui> It is spelt V|4gra
[15:41] <bigjools> :)
[15:41] <barry> i think we're done :)
[15:41] <barry> #endmeeting
[15:41] <barry> ha ha
[15:42] <barry> thanks everyone!
[15:42] <bigjools> #fail