#launchpad-yellow 2011-02-21
<bac> hi francis -- i just got email inviting me to budapest for the canonical summit
<bac> normally i know i wouldn't go to UDS this time.  but since i'll be there should i plan to stay for all or part?
<bac> oops
#launchpad-yellow 2011-02-22
<danilos> hey-hey
<gary_poster> hey benji, since the board is full with three features, I wanted to highlight that I made the work we talked about that would be shared across the mail unsubscribe story and the structural subscription edit page a card in the unsubscribe story, since it is active right now.  I put your name on it.
<benji> sounds good
<gary_poster> bac benji danilos : mubvle/kanban in 2
<gary_poster> or 1
<bac> ok
<benji> "mubvle" today Gary has a Russian accent
<gary_poster> :-)
<bac> https://dev.launchpad.net/JavaScriptBuildSystem
<gary_poster> thank you
<bac> gary_poster: my participation in UDS is still not settled.  i will be going to the canonical summit.
<gary_poster> ack
<bac> francis is going to talk to elliot to see if they want me to stick around for at least a few days of UDS to amortize the cost of the plane ticket
<danilos> bac, thanks
<danilos> bac, (I mean, useful for me as well :)
<bac> danilos: what are you referring?
<danilos> bac, UDS discussion
<bac> danilos: are you going for sure?
<danilos> bac, btw, maybe we can organize a sprint in Belgrade right after that, or you can join me for some pair hacking because it's very close :)
<danilos> bac, nope
<bac> danilos: that would be great!
<gary_poster> hey danilos, you have time for a mid-imp call?  I'm struggling with where to put stuff
<danilos> gary_poster, sure thing
<gary_poster> thanks
<gary_poster> http://typewith.me/TzRISL1FRM
<gary_poster> danilos
<gary_poster> I hear you
<gary_poster> just got new mumble
<gary_poster> 2 sec
<danilos> did you unwrap the plastic?
 * benji lunches.
#launchpad-yellow 2011-02-23
<gary_poster> for anyone following along like I am: mrevell reports that he should have the results from the user testing of Graham's most recent mockups later today.  The summary is that they went over well but simplifying the English would be good.
<benji> sounds promising
<gary_poster> yeah
<gary_poster> bac benji danilos mumble/kanban in 1-ish
<danilos> gary_poster, oh, another thing I did even though I didn't plan to: I sent a quick email about problems I noticed with ubuntu monospace font and cyrillic and Paul Sladen started throwing questions on IRC so I spent some more time than I planned on that
<gary_poster> danilos :-) ok cool
<gary_poster> danilos, you available for pre-imp?
<danilos> gary_poster, sure thing
<gary_poster> http://typewith.me/k9gzJDYSRS
<gary_poster> lunch
<gary_poster> bug 723999 :-(
<_mup_> Bug #723999: structural subscriptions taking 4.8 seconds during nomination editing POST <story-better-bug-notification> <timeout> <Launchpad itself:Triaged by yellow> < https://launchpad.net/bugs/723999 >
#launchpad-yellow 2011-02-24
<gary_poster> hey danilos I still have one more part of the pre-imp that I'd particularly like to talk about (because it involves choosing among what I consider non-wonderful options).  You available in five or ten minutes, or maybe after the team call?
<danilos> gary_poster, yeah, available now
<gary_poster> ok cool will ping in just a few min.  ty
<danilos> gary_poster, k
<bac> benji: let's talk.  i can push my updates when you're ready
<benji> bac: is this the plan: you push ~bac/launchpad/accordionoverlay, I merge from it to fix any conflicts, I push my branch and you merge from it?
<bac> benji: or i can push to the shared yellow branch, you merge, and push back to the shared yellow branch.
<bac> s/~bac/~yellow/
<benji> that sounds good
<bac> in your url above
<bac> ok, let me do so now.  it still acts funky but it isn't going to get any better.  first, i have to merge in huw's changes.
<benji> k
<bac> benji: have at lp:~yellow/launchpad/accordionoverlay
<benji> thanks
<gary_poster> https://pastebin.canonical.com/43866/
<benji> ok bac: I had to fix some relatively minor conflicts and do some testing by hand, but lp:/~yellow/launchpad/accordionoverlay/ has been updated
<benji> I'm very interested in your thoughts on the structure of the JS I added.
<bac> benji: ok
<danilos> gary_poster, anyway, my branch is up for review, ready whenever you are
<danilos> actually, bb in a minute :)
<bac> benji: i'm just scanning through it now and it looks good.
<benji> cool
 * danilos : back
<bac> benji: i found one thing that appears to be a regression, possibly a merge issue
<benji> what's that?
<bac> / XXX Should this be part of config instead of hard coded?
<bac>     add_subscription_overlay.render('#add-subscription-container');
<bac> in my branch i was using a config variable for that
<bac> i had it so there were no external dependencies on magic names
<benji> bac: I've not plumbed the depths there yet, but the original code didn't work, I /think/ it's a difference between the way FormOverlay and PrettyOverlay work.
<bac> benji: ok.  your comment is correct, though, and we need to get back to a place where the id comes from the config
<benji> yep
<bac> your comment in the code, i mean
<bac> benji: i'm still fighting the open/close stuff
<bac> benji: would you be able to look at actually populating the accordion?
<benji> bac: I certainly can.  I wonder about scheduling issues, i.e., Gary seems keen on me starting on the edit functionality because the other line of development needs it too.
<bac> benji: just a suggestion for you and gary_poster to decide
<gary_poster> I'm fine with either. collaboration +1
<benji> gary_poster, bac: I'll work on popultating the accordion widget then.
<gary_poster> cool
<benji> bac: does this seem like a sane approach? http://pastebin.ubuntu.com/571806/
<benji> I'm a little annoyed at duplicating the contents of the importance vocabulary, I guess I could add that data to what's provided when the page loads.
 * benji lunches
<bac> benji: that is annoying
<benji> I'm working on the smuggle-vocabulary-data-from-the-server approach now.  If it works out we can use it for the other bits too.
<bac> benji: we might also try including a hidden div on the page and just referencing it
<bac> benji: i think the items inside the accordion can just be a node
<bac> i'm not sure that's any better than your smuggling, though
<benji> yeah, I have a slight preference for moving data from the server to the client instead of HTML; it's an odd sensation for a web app developer ;)
<gary_poster> bac, call?
<bac> yep
<gary_poster> benji, preview question from our call because my curiosity burns, it burns!  Did Huw ever get bac to you about your email about the twisty usage/placement?
<gary_poster> eh, sorry Brad :-P.  "back"
<benji> gary_poster: I was thinking about that this morning.  Not a peep yet.
<gary_poster> :-/
<gary_poster> benji, could you retry?  Maybe this time include jml in the CC and see if that changes anything.
<benji> I'll write down a to do to ping him again.
<gary_poster> thanks
 * gary_poster stares at "a to do to" and contemplates the wonder of it all
<gary_poster> bac or benji, do you happen to know if we have an existing way to generate a short unique resolvable identifier to arbitrary LP model objects--or at least those that might be a bug target?  The best I can think of is a url, but that's significantly longer than I need--I need, say, an integer or something I can compress to 8 chars or less.
<benji> The only think I can think of would be the name and type (e.g., "firefox", "p" (for project)).
<gary_poster> benji, yeah, or the id and type, but I assume we don't have an existing type mapping-ish thing
<gary_poster> which is kind of the trick :-/
 * gary_poster misses that Zope 3 ZODB thing with the integer ids for everything
<benji> you could also use URI and a shorthand for the vairous prefixes, p/firefox would expand to https://launchpad.dev//api/devel/firefox
<gary_poster> that's an interesting idea.  sort of a traversal-y approach
<benji> on a related note, they finally got around to doing an int ID utility that doesn't generate as many conflicts: http://pypi.python.org/pypi/zc.intid/1.0.0
<benji> (the IDs are stored in the object instead of in the int ID utility)
<benji> gary_poster: where are you doing the generation of IDs and expansion of IDs?
<gary_poster> OIC--you remove one of the two big btrees?
<benji> exactly
<gary_poster> benji, I was thinking I could use just ids and a few types until I realized that targets could be a variety of types, so this was just in, say, bugs/mail and bugs/scripts.  I'm still at the sketching step, sadly
<benji> gary_poster: it wouldn't be hard to do a pair of utility "URI shortener/expander" utilities; you could even make them leave the URI alone (and maybe log a warning) if they don't know how to shorten the input
<gary_poster> benji, I don't have a picture for how this would work yet--unless you mean it has a new table that maps ids to URIs?
<gary_poster> That doesn't seem to be what you mean, which is good, 'cause that seems problematic :-P :-)
<benji> I was thinking the mapping would be in code, but you could store it in the DB if that made more sense
<benji> oh, no, I meant that the shortener would have a set of *prefixes* it recognized and replaced with one character shortcuts
<gary_poster> If you were to create a mapping in code, might it make more sense to map ids to classes?  That's what I was thinking
<benji> could be, I'm not entirely clear on what you'll be using the short IDs for
<gary_poster> sure
<gary_poster> I'll putz around on it and talk to you about it on our call if we have time benji :-)
<benji> cool
<benji> bac: I just pushed checkbox generation for importances and statuses, using server-side data from the proper enums to generate them; they're not yet saved in the resulting filter object yet though
<bac> nice
<benji> gary_poster: I'll be ready in a couple of minutes
<gary_poster> ack benji, thanks.  I'm listening so just talk on mumble and I'll figure out how to unmute and then say hi. :-)
<gary_poster> https://dev.launchpad.net/LEP/BetterBugSubscriptionsAndNotifications/Testing/EditingRound2
#launchpad-yellow 2011-02-25
<danilo> gary_poster, hey-hey, welcome :)
<gary_poster> hey danilo :-)
<danilo> gary_poster, people want to remove our BSFs we just added, and I've been fighting for them to stay :)
<gary_poster> danilo, I was just reading your replies
<gary_poster> ok cool, danilo.  I guess we need to drop everything and look at this.  I'll be ready after the "delivery" meeting, if that works for you--have you had lunch yet?
<danilo> gary_poster, nope, not yet
<gary_poster> heh ok
<danilo> gary_poster, should I? :)
<danilo> "it's going to be a loooong call" :)
<gary_poster> heh.  well, this is a bit of a short lunch for you.
<gary_poster> you think you can give me something to do while you have lunch after the call?
<danilo> yeah, you can probably check if removing LEFT JOIN (and doing a regular JOIN, since we have BSFs for every SS now) will help with the query at all
<gary_poster> ok cool
<gary_poster> that will probably take all of 10 min, yeah? :-)
<danilo> gary_poster, you could also try just hand-crafting equivalent query without subselects and seeing how it performs (especially since staging now has all the BSFs production does)
<danilo> gary_poster, yeah, probably :)
<gary_poster> heh ok
<gary_poster> I actually don't have a strong opinion about not removing the BSFs temporarily.  It seems like it would be easy to remove them (the ones that are empty) and easy to add them back.  Is it more annoying than I think?
<danilo> gary_poster, the other one is probably going to take a bit longer and will still end up being a long query with many ORs, but at least it will not be repeated inside the single select
<gary_poster> We also could rethink the plan of "vanilla structural subscriptions must have an empty BSF"
<gary_poster> But that's a stop-gap, or something like it
<danilo> gary_poster, yeah, that's only help in the short-term, if we actually want people to use filters :)
<danilo> gary_poster, that's why I am holding out on landing my linking-table branch, because if we rethink that, maybe we'll need a StructuralSubscription reference in there
<danilo> gary_poster, so yes, I see it as an option as well
<gary_poster> I see
<gary_poster> short term: right.  I'm not clear on how bad the short term is.
<gary_poster> 5000 timeouts in the past week on this seems like a lot
<danilo> yeah, it does
<danilo> but that code will need fixing anyway, im(ns)ho
<gary_poster> sure
<gary_poster> this gives us time while letting people not have the timeout problem
<gary_poster> which doesn't seem all bad
<danilo> yep, agreed, so let's just do it
<danilo> gary_poster, the only thing we need to be careful about is not to remove any non-empty BSFs :)
<gary_poster> yeah
<gary_poster> I was thinking that the SQL ought not not be too bad for that, but that's coming from someone with rusty SQL
<gary_poster> danilo, are you willing to update the bug with our plan?
<gary_poster> 1) figure out some SQL to revert the empty BSFs
<gary_poster> 2) see how much better we can make the SQL with empty BSFs
<gary_poster> 3) consider allowing empty BSFs
<gary_poster> I mean removing
<gary_poster> that really does still seem wonky :-/
<gary_poster> but the rule would not be too bad I guess
<gary_poster> danilo, since I don't hear from you, I'll do it.  Stop me if you've started :-)
<danilo> gary_poster, I didn't, sorry
<gary_poster> np
<danilo> gary_poster, want me to figure out the SQL (before the call)?
<gary_poster> danilo, +1 thanks
<danilo> gary_poster, SQL up at https://pastebin.canonical.com/43954/, is it time for the call? :)
<gary_poster> bac, benji, danilo, sorry, was trying to handle the bug and missed our call time.  mumble/kanban now-ish
<danilo> heh, good timing, thanks :)
<bac> ok
<gary_poster> :-)
<gary_poster> bac, do you have some time for another call?  I want to give you the high-bandwidth version of my talk with Francis, then I'll broadcast the team with it in a mail
<bac> yes
<danilo> gary_poster, hi, I am ready whenever you are done with bac :)
<danilo> gary_poster, SQL done on production
<gary_poster> thank you danilo
<danilo> gary_poster, oh, btw, we haven't decided if I go and land my branch for the linking table between BugNotification and BugSubscriptionFilters?
<gary_poster> danilo, because the downside is that we are not sure anymore if we want BSFs for everyone, right?
<danilo> gary_poster, right, so we might need StructuralSubscription in the table as well (to be able to properly link to "generic" StructuralSubscriptions... or, maybe we can figure those out relatively painlessly as well?)
<danilo> gary_poster, there's probably no harm done in landing this, and if needed, we can introduce StructuralSubscription in there later, how does that sound?
<gary_poster> danilo +1 I was working myself there :-)
<danilo> gary_poster, heh, ok, that's what I'll do
<gary_poster> bac, fwiw, dav glass has agreed to continue his support contract, so canonical-javascripters@... [yui-support] is a great option
<bac> gary_poster: ok
<gary_poster> danilo, wow; that SQL is *really* redundant.  I have something I'm going to try.  staging is the right db, yeah?
<danilo> gary_poster, yep
<gary_poster> ok one sec
<gary_poster> danilo, I think lines 1-29 are equivalent: http://pastebin.ubuntu.com/572256/
<gary_poster> Getting output to compare now
<gary_poster> this runs in about 160 ms
<gary_poster> so roughly factor of 10
<gary_poster> when I say "I suspect logic of BugSubscriptionFilterTag is wrong" I mean in the original and this one--both.  Not something I introduced
<danilo> gary_poster, yeah, looks about right except that it'd have to be distribution=1 _OR_ distroseries=6 (that's how SSs work, with their constraint on only one being defined)
<gary_poster> danilo something like http://pastebin.ubuntu.com/572257/
<danilo> gary_poster, yep
<gary_poster> k, comparing
<danilo> gary_poster, btw, the tags clause is likely to be correct as well (since the builder only adds clauses that would potentially match the bug, maybe it has no tags or something [whatever would make sense for them not to be added])
<gary_poster> danilo, results are identical (modulo ordering, which is not sorted so to be expected)
<gary_poster> the original took 1230.808 ms
<gary_poster> so danilo, now what do I do :-P
<gary_poster> should we have another call so I can be edumacated?
<danilo> gary_poster, oh, now you just fix it all :)
<danilo> gary_poster, a call is fine :)
<gary_poster> :-) ok thanks
<benji> I somehow induced a conflict in shipit and naively nuked the directory and ran rocketfuel-get to get it back; it's taking forever (but making progress).
<benji> I guess I'll take lunch and hope it gets done soon.
<danilo> gary_poster, fwiw, the test in lib/lp/translations/tests/test_translationtemplatescollection.py can give you an idea how to start testing this stuff, though set-up is going to be wildly different :)
<danilo> enjoy the weekend all, bye
<bac> gary_poster: I have talked to sidnei, posted to canonical-javascripters, and posted to the gallery-accordion forum.  hopefully i'll get some hints.
<gary_poster> bac, cool.  I hope we get some bites.  Sidnei did not have anything immediately helpful, I take it?
<gary_poster> Ah, I see the report ("could not get their suggestions to work") in the email
<bac> gary_poster: not really.  he suggested i investigate the 'contentUpdate' event but it seems to be firing appropriately and adding redundant fires had no effect
<gary_poster> ok
<gary_poster> too bad
