[02:55] <lifeless> dynamic port allocation \o/
[03:21] <nigelb> lifeless: You aren't in Dublin?
[03:23] <lifeless> nope
[03:24] <nigelb> Ah.
[04:18] <lifeless> grah
[04:19] <lifeless> and it has no setup.py etc
[04:19] <lifeless> I think I'll extract code from LP
[06:49] <nigelb> lifeless: any specific reason you picked web.py?
[06:50] <lifeless> it wasn't zope, it wasn't django, and it is in lucid
[06:51] <nigelb> heh
[06:51] <nigelb> I meant among the other microframeworks
[06:51] <lifeless> so do I
[06:51] <nigelb> ah, in lucid.
[06:51] <lifeless> another option would be pastedeploy
[06:52] <lifeless> but its possibly so minimal as to not be a framework anymore
[06:52] <nigelb> Never heard of it. ::looks::
[09:36] <bac> lifeless: ping
[09:37] <lifeless> hi bac
[09:37] <bac> lifeless: abentley is trying to skype you so you can participate
[09:38] <bac> ah, nm, i hear martin connected
[09:38] <lifeless> I will irc if I have stuff to interject
[09:40] <lifeless> iron stomach, no seasickness
[09:40] <lifeless> someone tell them not to fuss to much :)
[09:40] <lifeless> I see a long corridor between people at tables
[09:40] <jcsackett> lifeless: they seem to be enjoying it; we would hate to stop their fun.
[09:40] <StevenK> It's a room!
[09:40] <lifeless> hi
[09:41] <lifeless> yes I hear you
[09:45] <lifeless> 'I can see you alll... muahhahahahahaha'
[09:46] <vila> :)
[09:46] <jml> lifeless: watching here in case you want to interject. use my nick.
[09:46] <lifeless> jml: thanks
[09:50] <lifeless> jml: looking at the room is cute; looking at the slides might be better ?
[09:50] <jml> lifeless: ok.
[09:50] <lifeless> jml: thanks
[09:51] <jml> lifeless: np. is that an ok view? (I'm not very close to your laptop)
[09:51] <lifeless> its fine
[09:52] <jml> cool.
[09:57] <lifeless> jml: at a convenient point please note 'if we are willing to spend more time on db patches, we have stakeholder goahead to make db patches go live 24 hours after landing'
[10:03] <lifeless> jml: we now have a lot of infrastructure/db work to do to to solve timeouts
[10:08] <lifeless> http://boom.cs.berkeley.edu/ is interesting (and totally unrelated to the talk going on :))
[10:17] <lifeless> jml: whats thing flacoste is saying - I can't make out the noun
[10:17] <jml> lifeless: talking about using cloud stuff, incl ensemble, for developing Launchpad
[10:18] <lifeless> ah
[10:19] <wgrant> lifeless: Any reason we shouldn't deploy today?
[10:20] <jml> one thing, not worthy of interjecting, is that anything that makes it harder for new contributors also probably makes it harder for established developers on a day-to-day basis
[10:20] <jml> e.g. imagine if we could spin up a build farm with ten machines locally using LXC
[10:20] <jml> with one command
[10:21] <lifeless> I think for adhoc stuff like that, ensemble may be a wonderful fit
[10:21] <jml> yeah, me too
[10:21] <StevenK> wgrant: Fixed.
[10:21] <wgrant> StevenK: Thankyou sir.
[10:21] <wgrant> Now I need to find wallyworld.
[10:21] <StevenK> He's behind you!
[10:22] <lifeless> jml: for the unit test suite, things like lxc (alone, nevermind layers on top of) seem to be much slower than I would like to aim at
[10:22] <jml> lifeless: interesting.
[10:25] <jml> lifeless: do you want to watch benji's talk?
[10:26] <lifeless> jml: coffeescript?
[10:26] <lifeless> no; its pretty cool stuff though.
[10:26] <lifeless> but I have stuff I need to go do.
[10:26] <jml> lifeless: ok. thanks.
[10:41] <lifeless> have a great day guys; I'm signing off.
[10:46] <lifeless> bigjools: btw, I think bug 802335 is a side effect of the new packagecopyjob table
[10:46] <_mup_> Bug #802335: DistroSeries:+queue timeouts when filtering by package name <regression> <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/802335 >
[10:47] <lifeless> bigjools: I can't talk now, but perhaps we can make 5 minutes tomorrow - *if* it is the new table, I raised the impact it would have on +queue during review - I'd like to drill into how we let this through
[10:47] <lifeless> bigjools: (I'm mentioning it now so you aren't surprised when I try to grab you tomorrow to talk about it :))
[10:48] <bigjools> lifeless: jtv changed the query significantly so grab him :)
[10:48] <bigjools> but happy to talk if you want
[10:58] <Ursinha> danilos: salinas, right?
[12:18] <NCommander> StevenK: pinbg where are you?
[12:24] <jml> lifeless: if you're around... where are the architecture values that were in your talk?
[12:26] <jml> lifeless: never mind.
 is what I was actually looking for
[12:28] <jml> since any long poll stuff we do has to comply with all of that.
[12:30] <StevenK> NCommander: I am on level 1. What's up?
[12:31] <poolie> spiv, danilos, jelmer, jtv, https://dev.launchpad.net/Projects/LiveBranches#preview
[12:50] <NCommander> StevenK: infinity found my issue (LP gave a non-helpful error message on a reject)
[12:50] <StevenK> NCommander: How unhelpful?
[12:54] <NCommander> StevenK: I did an upload to oneiric which was rejected due to a -20 existing in proposed, it complained my tarball was wrong (checksum mismatch)
[12:54] <StevenK> NCommander: Right, that isn't unhelpful. :-P
[13:35] <LPCIBot> Project devel build #840: FAILURE in 23 min: https://lpci.wedontsleep.org/job/devel/840/
[13:36] <StevenK> Hmmm
[13:36]  * StevenK pokes at Jenkins
[13:37] <StevenK> Ah ha. Gary broke it.
[14:03] <LPCIBot> Yippie, build fixed!
[14:03] <LPCIBot> Project db-devel build #671: FIXED in 5 hr 51 min: https://lpci.wedontsleep.org/job/db-devel/671/
[14:24] <jml> gmb, wgrant: http://paste.ubuntu.com/633629/
[14:25] <jml> bigjools: ^^
[14:25] <jml> storm, transaction, twisted
[14:25] <jml> txamqp
[14:26] <jml> zope.component, zope.schema, zope.interface, zope.configuration
[14:34] <jml> huwshimi: are you near deryck?
[14:35] <huwshimi> jml: I think he's about 5 metres away
[14:35] <huwshimi> jml: Certainly within throwing distance
[14:35] <jml> huwshimi: what about gary?
[14:36] <huwshimi> jml: An equal distance away
[14:36] <wgrant> Neither is on IRC :(
[14:36] <jml> huwshimi: excellent. the build is broken, and gary broke it
[14:36] <wgrant> But gary broke devel, somehow.. and it corrupts
[14:36] <StevenK> I have landed a revert
[14:36] <wgrant> corrupts the setuptools egg.
[14:37] <wgrant> buildbot is probably still broken.
[14:37] <wgrant> Because its egg is broken.
[14:37] <huwshimi> jml: Do you need me to throw something?
[14:37] <StevenK> jml: I am sitting next to deryck
[14:38] <jml> StevenK: please ask gary to fix it :)
[14:38] <StevenK> jml: Both flacoste and gary are working on it right now.
[14:38] <jml> sweet.
[14:38] <jml> StevenK: thanks.
[14:39] <flacoste> jml: we need to remove eggs/setuptools*
[14:39] <flacoste> because distribute is evil
[14:39] <flacoste> really evil
[14:40] <flacoste> most evil force in the universe
[14:53] <Ursinha> haha
[14:54] <Ursinha> matsubara: do you know if soybean oopses are synced to devpad every 10 minutes or once a day?
[14:55] <matsubara> Ursinha, I think it's every hour now for all oopses
[14:55] <Ursinha> oh
[14:55] <Ursinha> that's bad
[15:06] <jml> gmb: dependencies: storm, transaction, twisted, txamqp, zope.component, zope.schema, zope.interface, zope.configuration
[15:13] <jml> stub: http://as.ynchrono.us/2007/12/filesystem-structure-of-python-project_21.html (fwiw)
[15:19] <jml> bigjools: http://twistedmatrix.com/documents/current/core/howto/tap.html
[15:52] <allenap> wgrant, jml, stub: http://paste.ubuntu.com/633675/
[15:53] <wgrant> allenap: You are a horrible person.
[15:54] <allenap> wgrant: Thank you :)
[15:54] <StevenK> Haha
[16:00] <StevenK> abentley: O hai.
[16:00] <abentley> StevenK: Hai.
[16:01] <StevenK> abentley: Do you remember what the JS that is loaded after page load on projectseries/+setbranch does?
[16:02] <nigelb> Is it known that on the branch page, if I click diff, I see the diff. After that the links are no longer "clickable"
[16:02] <abentley> StevenK: Nothing is coming to mind.
[16:06] <jml> wgrant: http://www.cs.yale.edu/quotes.html
[16:26] <jml> bigjools: http://twistedmatrix.com/documents/current/core/howto/application.html
[16:45] <huwshimi> jcsackett: http://gfxmonk.net/shellshape/
[16:47] <nhandler> Is https://help.launchpad.net/API/SigningRequests outdated? I keep getting an error saying oath is an unsupported authentication method when I attempt to post to /+request-token
[16:51] <wgrant> huwshimi: Huh, I know him.
[16:51] <wgrant> From uni.
[16:52] <huwshimi> wgrant: Oh right
[16:56] <wgrant> Oddity.
[17:01] <poolie> nhandler: nb it's oauth not oath
[17:01] <poolie> they are both authentication mechanisms
[17:03] <nhandler> Bleh. Thanks poolie. I really shouldn't code before fully awake :)
[17:05] <poolie> not the best naming system in the world
[17:16] <jcsackett> bac: do you know if bug 705153 is still valid? it looks to me like the hover over data on subscribers has been removed outright, which might make this [wontfix|fixreleased].
[17:17] <_mup_> Bug #705153: "Subscribed by" hover is incorrect <Launchpad itself:Triaged> < https://launchpad.net/bugs/705153 >
[17:19] <bac> jcsackett: you are correct.  i've marked it invalid
[17:48] <spiv> wgrant: here's some  loggerhead code you may like:
[17:48] <spiv> def dq(p):
[17:48] <spiv>     return urllib.quote(urllib.quote(p, safe=''))
[17:56] <wgrant> spiv: Burn
[18:02]  * maxb chuckles
[18:43] <nhandler> Any ideas why I get a 'Missing Authenticate Header' client-warning in my script (OOPS-2004STAGING186) ? I have an Authroization header that follows the documentation (I already followed the guide to get a request token and then an access token)
[19:54] <Auree> Hi, I couldn't find it in the documentation, what is the limit for client applications to the Launchpad API?
[20:02] <LPCIBot> Project parallel-test build #75: STILL FAILING in 1 hr 19 min: https://lpci.wedontsleep.org/job/parallel-test/75/
[20:47] <LPCIBot> Yippie, build fixed!
[20:47] <LPCIBot> Project devel build #841: FIXED in 5 hr 49 min: https://lpci.wedontsleep.org/job/devel/841/
[21:09] <lifeless> moin
[21:10] <stub> yo
[21:10] <stub> think most people are at dinner
[21:10] <lifeless> cool
[21:12] <lifeless> how was the day?
[21:13] <stub> Seemed to go ok. Getting some traction on rabbit.
[21:14] <stub> Catching up from last week too.
[21:14] <stub> Not sure how the other groups fared
[21:15] <lifeless> I haven't filed bugs for the fast-downtime stuff yet
[21:16] <lifeless> james_w: speaking of which; ping
[21:16] <lifeless> stub: I will file a few today and assign to you so you can see them; they don't have to be worked on this week - do stuff with the folk there; (but if you do work on it its pretty exciting stuff :P).
[21:17] <timrc> wgrant, lifeless, jcsackett: thank you guys for such a quick turnaround time on our api enablement requests, greatly appreciated
[21:28] <james_w> lifeless, hi
[21:28] <lifeless> james_w: I don't recall hearing back from linaro on stakeholders about db schema downtime
[21:29] <james_w> lifeless, I haven't heard anything, I'll prod, but otherwise we can take it as "silence is agreement" and move ahead
[21:29] <lifeless> thanks
[22:49] <wgrant> lifeless: You may have seen the rabbit layer land.
[22:49] <wgrant> lifeless: We sorted out the failures.
[22:49] <lifeless> great
[22:49] <lifeless> what were they ?
[22:49] <wgrant> And ripped canonical.amqp out of landscape, into lazr.amqp
[22:49] <wgrant> Well.
[22:50] <wgrant> The problem was the config overlay is just about impossible to remove.
[22:50] <wgrant> Since it's written to disk.
[22:50] <wgrant> So we just made the layer unteardownable.
[22:50] <lifeless> that reminds me, I needed to talk with flacoste about lazr :P
[22:50] <wgrant> We didn't want to call it lazr, but it was easiest for now.
[22:50] <lifeless> wgrant: what did you want to call it ?
[22:50] <wgrant> No ide.
[22:50] <wgrant> idea
[22:50] <wgrant> Which is why it's lazr.
[22:51] <wgrant> It also currently uses the system rabbit for tests :(
[22:51] <lifeless> wgrant: unteardown makes me sad; we use config overlays on disk for librarian too, why is that different ?
[22:51] <wgrant> But I've ported it mostly to the fixture.
[22:51] <lifeless> and db
[22:51] <wgrant> lifeless: I don't quite recall.
[22:51] <wgrant> lifeless: But the tests want the config overlay to be absent.
[22:51] <lifeless> could someone file a bug? low tech-debt
[22:52] <wgrant> I suspect the librarian/db tests do not.
[22:52] <wgrant> eg. the librarian hiding thing just sets a bogus port.
[22:52] <wgrant> Also, how do I make efficient use of a fixture?
[22:52] <wgrant> ie. use .reset() between tests?
[22:52] <wgrant> Rather than restarting rabbit each time.
[22:52] <wgrant> Which is slow.
[22:53] <wgrant> (this is in lazr.amqp, so no layer)
[22:58] <jml> also
[22:58] <jml> stub was saying that zope now has a way to tear down the functional layer
[22:58] <wgrant> Yeah.
[22:58] <wgrant> We should be able to.
[22:58] <wgrant> But lazr.config needs some wrangling before we can do it for everything.
[22:58] <jml> if we get rid of that, the new unteardownable thing and wgrant gets his question answered, we could stop using layers
[22:58] <wgrant> Yay
[22:58] <wgrant> BURN
[22:58] <wgrant> etc.
[22:58] <jml> that's three things that are non-trivial before we get to do the thing we actually want to do, which is also non-trivial :)
[23:00] <lifeless> jml: there is a zope.testing.functional or something which now has a tearDown
[23:00] <lifeless> we need to test using it
[23:00] <lifeless> I don't knove if the CA has a teardown yet
[23:00] <lifeless> wgrant: .reset() exists for use between tests, yes.
[23:00] <jml> you could probably hack one up
[23:00] <wgrant> lifeless: But how do I use it?
[23:00] <jml> replace globalregistry with a new one
[23:01] <jml> wgrant: aye, and therein lies the rub
[23:01] <lifeless> wgrant: you use the unwritten testfixtures optimiser code
[23:01] <lifeless> wgrant: -or-
[23:01] <lifeless> wgrant: and I recommend this, use testresources and write a -very- shallow thunk from a ResourceManager to the fixture.
[23:02] <wgrant> Hmm. Perhaps.
[23:02] <wgrant> Thanks.
[23:02] <jml> if it's run with zope testrunner, that won't help though
[23:03] <wgrant> It is the zope testrunner at present :(
[23:03] <lifeless> if its run with zope testrunner you can use a layer
[23:03] <wgrant> True.
[23:03] <wgrant> But it also workswith trial, which I don't reallly want to break.
[23:03] <lifeless> when you said foo so no layer, I assumed a good testrunner
[23:03] <lifeless> wgrant: choose.
[23:03] <wgrant> So there's no cross-runner compatible way to do it?
[23:03] <wgrant> Sad.
[23:03] <lifeless> wgrant: there is, if you fix zope testrunner to not destroy test suites
[23:04] <lifeless> e.g. make it compatible
[23:04] <wgrant> lolz
[23:04] <lifeless> FWIW, I'd do the following:
[23:04] <lifeless>  - make testr the primary runner for it (implies trial compat)
[23:04] <lifeless>  - use testresources
[23:04] <lifeless>  - profit
[23:05] <wgrant> Possibly.
[23:06] <lifeless> you can use trial --reporter=subunit
[23:06] <wgrant> We're using zope.testrunner now because it was easy with buildout, but I gues we can just use testr with something.
[23:06] <wgrant> Aha.
[23:06] <wgrant> Handy.
[23:06] <lifeless> it doesn't have load-by-id for broken-test-iterations or parallel support
[23:06] <wgrant> :(
[23:06] <lifeless> but if you use jmls' most excellent twisted support in *testtools*
[23:06] <wgrant> Asny suggestions for something better?
[23:06] <wgrant> Ah.
[23:07] <lifeless> then you're sitting pretty
[23:07] <wgrant> I looked at that, but it said it was highly experimental and not to be used.
[23:07] <lifeless> lies
[23:07] <lifeless> we use it in Launchpad
[23:07] <lifeless> its more 'subject to change'
[23:07] <wgrant> Ah.
[23:07] <lifeless> wgrant: jml: I'm glad you guys are hacking on this.
[23:08] <wgrant> "testtools provides highly experimental support for running Twisted tests – tests that return a Deferred and rely on the Twisted reactor. You should not use this feature right now. We reserve the right to change the API and behaviour without telling you first."
[23:08] <wgrant> But I guess if you and jml tell me otherwise...
[23:08] <lifeless> wgrant: so what does lazr.amqp do?
[23:08] <jml> wgrant: we use it consistently in Launchpad
[23:09] <lifeless> wgrant: is it landscapes long poll service?
[23:09] <lifeless> wgrant: or just glue code?
[23:09] <wgrant> lifeless: Mostly a Twisted HTTP server for rabbit-based long-polling, yes.
[23:09] <wgrant> It also has a rabbit job runner.
[23:09] <lifeless> so, I think the name is totally misleading
[23:09] <lifeless> lazr.longpoll perhaps
[23:09] <wgrant> Possibly.
[23:09] <jml> it's actually more "I don't want people to complain too much if it's broken"
[23:09] <wgrant> The name is not really defined.
[23:10] <jml> txlongpoll?
[23:10] <wgrant> It was canonical.amqp, and Julian JFDI.
[23:10] <lifeless> jml: +1
[23:10] <lifeless> jml: that would be so much better
[23:10] <jml> lifeless: our main aim is to get something working end-to-end
[23:10] <lifeless> sure, cool
[23:10] <wgrant> It's not *just* long polling, as it turns out.
[23:10] <lifeless> so the reason I asked
[23:10] <wgrant> But that's one of its modules.
[23:11] <jml> lifeless: I'm very much in favour of a better name, but will only change it if I'm confident that we'll have something demonstrably functional before EOW
[23:11] <jml> (of course anyone else can change it)
[23:12] <lifeless> so, you've seen ServicesRequirements
[23:12] <jml> fwiw, I am pretty confident :)
[23:12] <lifeless> I want to highlight a couple of the implications there
[23:12] <jml> lifeless: yes, https://dev.launchpad.net/Projects/LongPollNotes links to it
[23:12] <lifeless> we shouldn't be importing *any* of the code in this project into LP itself.
[23:13] <jml> lifeless: how is that implied?
[23:13] <lifeless> https://dev.launchpad.net/ArchitectureGuide/ServicesRequirements#Test fake
[23:13] <lifeless> its not mandatory [yet]
[23:13] <lifeless> it will be soon
[23:13] <jml> ahh good. NTH.
[23:13] <lifeless> NTH ?
[23:13] <jml> and also something that can be fixed late
[23:14] <lifeless> so when I say test fake
[23:14] <jml> lifeless: nice-to-have. sorry, it turns up a lot in my notes for things.
[23:14] <lifeless> I mean 'live network service that is -fast- to startup, uses dynamic allocated ports and supports error injection
[23:14] <lifeless> I specifically do not want in-process fakes
[23:15] <lifeless> because they increase coupling and tighten version dependencies
[23:17] <jml> lifeless: why do you object to the package having its own client code & test double?
[23:18] <lifeless> I want to thoroughly decouple things
[23:19] <lifeless> we're going to be deploying entirely separately
[23:19] <lifeless> if its physically impossible to do a lockstep change to the client and server
[23:19] <lifeless> I think it will really help people avoid such disasterous changes
[23:19] <lifeless> it also works better when we rewrite a service to be in a faster language
[23:20] <lifeless> and avoids fugly around needing N clients (one for tx, one for python, one for javascript) in the same tree - or alternatively inconsistently blessing one as 'this one is in-tree, the others are not'
[23:21] <lifeless> thats the angle for client code
[23:21] <lifeless> for test double, I *do* want the service to provide its own test double.
[23:21] <mwhudson> lifeless, jml: did you know that the django test runner manages to be EVEN MORE terrible than the zope one?
[23:21] <lifeless> I just want that to be an actual network service
[23:21] <lifeless> mwhudson: thats quite an achievement
[23:21] <jml> mwhudson: no, I didn't.
[23:21] <jml> mwhudson: I didn't even know it *had* its own test runner
[23:21] <wgrant> Django manages to be pretty terrible.
[23:21] <jml> lifeless: you don't mind having multiple language implementations for a protocol in one tree :P
[23:21] <wgrant> Without the few redeeming qualities that Zope has.
[23:22] <mwhudson> lifeless: it rips apart testsuites in the same way zope's does, and has database management baked into the runner directly
[23:22] <jml> eww
[23:23] <lifeless> jml: I don't, but its been pretty awkward
[23:23] <mwhudson> i may try to convince them this is a bad idea
[23:23]  * jml nods
[23:23] <lifeless> jml: and I'm a bottleneck on changes in that project, something I want to structurally avoid for our services
[23:23] <jml> lifeless: ok. I think that's fair enough.
[23:24] <lifeless> jml: another facet here
[23:24] <lifeless> jml: we're aiming for 'crisp, clean and strongly defined layers'
[23:25] <jml> lifeless: the main thing *I* want to avoid is perfect defeating good. Would rather work towards correctness from a starting point of functionality than from where we are now.
[23:25] <lifeless> jml: anything whose contract is in python is pretty poor at that :)
[23:25] <jml> lifeless: good point.
[23:25] <lifeless> jml: have you looked at my draft microservice for gpg signature checking ?
[23:26] <jml> lifeless: no, but your email about it is flagged for reading
[23:26] <lifeless> jml: I don't mind the path taken to reach correctness! I mentioned these things so you know where I want us to aim.
[23:26] <jml> lifeless: cool.
[23:26] <lifeless> jml: I *do* mind if we try to go live with something without either reaching these things or having and explicit ack from me to waive them in this case.
[23:27] <lifeless> jml: the point about importing stuff, is that if the rabbit fixture is moved into this other-server-tree, it becomes unusable by Launchpad
[23:28] <jml> multiplying tiny projects :(
[23:28] <lifeless> yes
[23:28] <lifeless> so we put them all in ~launchpad/+junk
[23:28] <lifeless> this is something LP needs to be much better at
[23:28] <jml> well, LP doesn't even begin to help you answer the question "how the hell do I land stuff on this project"
[23:29] <jml> lifeless: I think the 'not importing' requirement should be made explicit in that doc, btw.
[23:30] <lifeless> wgrant: if there is more than long polling in the tree, exercise rm :)
[23:30] <wgrant> lifeless: s/rm/split/, I suspect.
[23:31] <wgrant> lifeless: We need to analyse tomorrow.
[23:31] <lifeless> wgrant: sure
[23:31] <lifeless> jml: I will transscribe this discussion in some form today
[23:31] <wgrant> I didn't look at the code until I was somewhat impaired.
[23:31] <lifeless> jml: after I get my slides ready
[23:31] <wgrant> Today was just spent getting it working.
[23:31] <jml> lifeless: thanks.
[23:32] <lifeless> jml: I am open to negotation on everything, but I think I have a cohesive story with interlocking supports
[23:33] <jml> wgrant: and, (I do hate sounding like a broken record here), it's not actually working yet, insofar as it isn't doing what we want.
[23:33] <wgrant> jml: Sure.
[23:34] <wgrant> Getting it working, not succeeding in that endeavour :)
[23:34] <jml> :)
[23:42] <jml> I'm off to catch some Zs
[23:42] <jml> g'night.