[00:08] <mwhudson> ugh, i'm sure apis are supposed to work in read-only mode...
[00:09] <wgrant> mwhudson: I'm seeing distribution['ubuntu'] failing.
[00:09] <wgrant> I never have before.
[00:09] <wgrant> Are you seeing something similar?
[00:09] <james_w> 503s?
[00:10] <wgrant> Yeah.
[00:10] <james_w> I've definitely seen them before
[00:10] <wgrant> For some things, sure.
[00:10] <james_w> I've not tried to correlate it to anything
[00:10] <wgrant> But never this.
[00:13] <wgrant> Ugh.
[00:14] <mwhudson> wee!
[00:14] <wgrant> c.l.d.oauth tries to use the master store.
[00:14] <mwhudson> i wonder what's happening
[00:14] <wgrant> But that hasn't changed lately.
[00:15] <mwhudson> the response is being generated by launchpad, it seems?
[00:15] <mwhudson> so there should be oopses
[00:15] <mwhudson> maybe?
[00:16] <wgrant> mwhudson: Unlikely.
[00:16] <wgrant> That probably won't generate an OOPS.
[00:16] <wgrant> But I can see the issue locally.
[00:16] <mwhudson> ah ok
[00:16] <wgrant> http://paste.ubuntu.com/565226/
[00:17] <wgrant> That's with login_anonymously
[00:34] <gary_poster> wgrant: looking
[00:35] <wgrant> gary_poster: Thanks. Although it's less critical now, since the rollout failed so we'll probably have to cowboy.
[00:35] <gary_poster> wgrant, ah :-/
[00:37] <gary_poster> wgrant, qa instructions already exist for the first: last para of description of https://code.launchpad.net/~gary/launchpad/bug548/+merge/48850
[00:37] <gary_poster> looking at the other one...
[00:38] <gary_poster> I also did the same for the other one, wgrant (https://code.launchpad.net/~gary/launchpad/bug713392/+merge/48939)
[00:38] <wgrant> gary_poster: Ah, sorry. Just about nobody does, so I stopped checking there a while ago.
[00:39] <gary_poster> wgrant, np, understood :-) .  I'm not consistent either, but I try to do that
[01:21] <thumper> so...
[01:21] <thumper> what's the status with writing new windmill tests?
[01:21] <thumper> we are supposed to?
[01:40] <poolie> spm, i sent bug mail to lp during the rollout and it does not yet seem to have any effect....
[01:52] <poolie> nm, they have come through
[02:12]  * thumper nipping out to what the girls' first touch game of the season
[02:15] <LPCIBot> Project devel build (429): STILL FAILING in 6 hr 6 min: https://hudson.wedontsleep.org/job/devel/429/
[02:15] <LPCIBot> * Launchpad Patch Queue Manager: [r=jtv][bug=714820] Ignore malformed responses when probing remote
[02:15] <LPCIBot> Bugzilla instances for XML-RPC capabilities.
[02:15] <LPCIBot> * Launchpad Patch Queue Manager: [r=adeuring][bug=181368] Gut BinaryPackageFilePublishing view.
[02:15] <LPCIBot> * Launchpad Patch Queue Manager: [r=jtv][bug=715659] Use zope.exceptions to format logged exceptions
[02:15] <LPCIBot> so that __traceback_info__ is reported.
[02:15] <LPCIBot> * Launchpad Patch Queue Manager: [r=leonardr][bug=715116] Add a big informational notice on the PPA
[02:15] <LPCIBot> pages if publishing is disabled.
[02:15] <LPCIBot> * Launchpad Patch Queue Manager: [r=lifeless][bug=713234] Remove duplicated queries issued when
[02:15] <LPCIBot> calling ArchiveView.latest_updates
[02:36] <lifeless> https://code.launchpad.net/~lifeless/launchpad/bug-704446/+merge/49167
[02:51] <poolie> hi lifeless
[02:52] <lifeless> hi poolie
[02:54] <poolie> do you have any idea whether https://bugs.launchpad.net/launchpad/+bug/716175 would be shallow?
[02:54] <_mup_> Bug #716175: api calls fail while launchpad is readonly <Launchpad itself:Triaged> < https://launchpad.net/bugs/716175 >
[03:03] <lifeless> poolie: I suspect its not, but without an oops can't really confirm (could simulate locally I guess)
[03:04] <lifeless> poolie: but I'm not hugely interested in fixing readonly mode, I don't think its a particularly good use of engineering time
[03:05] <lifeless> poolie: I'm going to reply to jam about loggerhead and try and clear up the confusion
[03:05] <lifeless> poolie: however I have a few fires to deal with first today.
[03:14] <lifeless> huwshimi: ping
[03:14] <huwshimi> lifeless: Hey
[03:14] <lifeless> huwshimi: contrast this
[03:14] <lifeless> http://bazaar.launchpad.net/~jameinel/loggerhead/merge_pqm_updates/files
[03:14] <lifeless> and
[03:14] <lifeless> http://bazaar.launchpad.net/~jameinel/loggerhead/merge_pqm_updates/changes
[03:14] <lifeless> note the former has a 'help' tab
[03:14] <lifeless> its in the lp loggerhead branch only
[03:14] <lifeless> I think it was added during the drive to have 'help everywhere' in LP
[03:14] <lifeless> but if you click on it
[03:15] <lifeless> it takes you to a sad panda wiki page
[03:15] <lifeless> I'm seeking a second opinion on just discarding that noddy tab
[03:15] <wgrant> lifeless: It's easy to replicate locally.
[03:15] <wgrant> I pastebinned the traceback earlier.
[03:15] <wgrant> I don't see how it could have ever worked, but it apparently did.d
[03:15] <lifeless> wgrant: I was not connected to irc :)
[03:15] <wgrant> Right.
[03:15] <lifeless> wgrant: feel free to annotate the bug ;)
[03:18] <poolie> lifeless, yeah, much better to just never go into  readonly mode
[03:18] <poolie> hearty +1 from me to removing the help tab
[03:18] <huwshimi> lifeless: Help that is not helpful is useless. It appears to me that that help is not really helpful. You could either remove the tab or provide some useful help.
[03:19] <poolie> those little 'help' drawers were such an awful idea
[03:19] <poolie> lifeless, in that case i might bump 716175 down to low
[03:19] <lifeless> poolie: I have done so
[03:20] <huwshimi> Useless help just results in what I like to call "help page rage".
[03:23] <huwshimi> I once worked on a massive application where all the help documentation for every form field was "This is the Foo field". The documentation guy didn't understand why this was a bad thing.
[03:24] <poolie> huwshimi, that's what we had
[03:24] <poolie> i cannot think of a better way to train people to never click on things labelled Help
[03:24] <huwshimi> poolie: Ouch.
[03:24] <poolie> if we'd kept the same mechanism but only used it when we had something important to say, it would have been half decent
[03:25] <poolie> but better to just put it inline if it's really important and you can't think of a way to make it obvious
[03:27] <huwshimi> If there is a bug that has been fixed by another bug do I change it to "Fix released"?
[03:28] <poolie> yes, or mark it as dupe, or as invalid
[03:28] <poolie> whatever you think best expresses the situation or is easiest
[03:28] <huwshimi> poolie: Cheers
[03:35] <lifeless> abentley: are you still OCR?
[03:37] <thumper> lifeless: somewhat late for abentley don't you think?
[03:37] <lifeless> yes :)
[03:38]  * thumper still feels strangely protective
[03:39] <poolie> :)
[03:42] <huwshimi> Does anyone know what research might be alluded to in this comment? https://bugs.launchpad.net/launchpad/+bug/490058/comments/7
[03:42] <_mup_> Bug #490058: Launchpad shouldn't present itself as a database <lp-web> <Launchpad itself:Triaged> < https://launchpad.net/bugs/490058 >
[03:42] <poolie> she has done some user testing sessions
[03:42] <poolie> mm
[03:43] <poolie> i don't think the title of that bug is very accurate
[03:43] <poolie> it should be something more like "Launchpad home page should show cool stuff that's happening"
[03:43] <poolie> "not presented as a database" would be more like getting away from table-type views
[03:46] <huwshimi> poolie: Hmm.. I should try and get her findings
[03:47] <poolie> she'd be a good person for you to know
[03:47] <wgrant> There were a couple of surveys last year too.
[03:47] <wgrant> I never saw anything from them; were they even distributed internally?
[03:47] <poolie> mrevell posted something, but not very prominently
[03:47] <poolie> mm
[03:48] <spm> fyi. am doing the stabby dance on the builtbot master to remove the living dead problem it's caused.
[03:48] <poolie> it's kind of connected to the timeline view concept
[04:00] <thumper> w00t: Committed revision 12345.
[04:00] <thumper> nice number
[04:00] <LPCIBot> Project db-devel build (354): STILL FAILING in 5 hr 20 min: https://hudson.wedontsleep.org/job/db-devel/354/
[04:00] <LPCIBot> Launchpad Patch Queue Manager: [rs=buildbot-poller] automatic merge from stable. Revisions: 12348
[04:00] <LPCIBot> included.
[04:54] <huwshimi> Ugh, what am I doing wrong. I updated download-cache and did an update of devel and merged it into my branch and now getting this error: http://paste.ubuntu.com/565245/ . I know there was an update to YUI that removed a whole bunch of files. Is it possible there's something else I need to update?
[04:58] <thumper> huwshimi: try a "make clean build"
[05:02] <huwshimi> thumper: Trying but really weird things are going on
[05:08] <huwshimi> thumper: That's fixed it. Thanks mate
[05:14] <huwshimi> wgrant: Did you end up finding any of those facet images?
[05:16] <wgrant> huwshimi: They should be in the history of lib/canonical/launchpad/icing.
[05:16] <wgrant> Removed in the last 18 months.
[05:17] <huwshimi> wgrant: Cheers
[05:35] <huwshimi> wgrant: Would you use bzr explorer or something to find these files?
[05:40] <wgrant> huwshimi: Try checking the directory around r10000 or so. Just create a new branch and revert to then.
[05:40] <huwshimi> wgrant: ah right ok
[05:44] <lifeless> thumper: ping
[05:45] <lifeless> thumper: I know its paste your EOD, but perhaps you could mentor Ian's review on https://code.launchpad.net/~lifeless/launchpad/bug-704446/+merge/49167
[05:54] <wallyworld> lifeless: that sql bind params review - you approved it but you also need to claim it so it can be landed https://code.launchpad.net/~wallyworld/launchpad/profile-sql-bind-values/+merge/48872
[05:54] <wallyworld> pretty please :-)
[05:56] <lifeless> roger
[06:32] <wgrant> huwshimi: Did you find the images?
[06:32] <huwshimi> wgrant: yeah got them. I remember then now
[06:33] <wgrant> Someone went through and cleaned up c/l/icing a while back.
[07:05] <huwshimi> ok time to head off
[07:19] <lifeless> stub: could I have a review on https://code.launchpad.net/~lifeless/launchpad/bug-704446/+merge/49167
[07:29] <stub> lifeless: What is the "+                    AND BugMessage.index > 0" for?
[07:29] <stub> end of the diff
[07:33] <lifeless> tunes the query for 'commented on a bug'
[07:34] <stub> oic. 0 is first comment == description
[07:34] <lifeless> https://bugs.launchpad.net/launchpad/+bug/421901/comments/10
[07:34] <_mup_> Bug #421901: Person:+bugs timeouts <lp-bugs> <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/421901 >
[07:36] <stub> approved
[07:37] <lifeless> thanks
[07:43] <lifeless> hmm
[07:43] <lifeless> bringing back fti columns seems entirely pointless
[07:43] <lifeless> jkakar: is there some way to tell storm /not/ to load a column from the db ?
[07:45] <lifeless> stub: can you compare the execution time for these on prod ? http://pastebin.com/raw.php?i=Lib9DXHz
[07:54] <stub> lifeless: second 11 seconds, first 12.7 seconds
[07:55] <lifeless> grr, really?
[07:55] <lifeless> Time: 1355.438 ms on staging
[07:55] <lifeless> [qa]staging
[07:58] <stub> http://paste.ubuntu.com/565267/
[07:59] <stub> lifeless: qastaging is patched up remember
[07:59] <lifeless> stub: this doesn't depend on any db patches
[07:59] <lifeless> oh...
[08:00] <lifeless> we haven't indexed BugMessage.index on qastaging yet.
[08:00] <lifeless> stub: can I get a plan of that second query, once hot ?
[08:02] <lifeless> stub: also please try http://pastebin.com/TeHbFEwD
[08:02] <stub> That was the second query. This is the plan of the first one: http://paste.ubuntu.com/565268/
[08:03] <lifeless> seq scan on bugmessage
[08:03] <stub> urg... that pastebin includes linenumbers in c&p
[08:03] <lifeless> http://pastebin.com/raw.php?i=TeHbFEwD
[08:04] <lifeless> stub: click on 'raw'
[08:05] <stub> I suspect there are a lot of bugs with only a single comment
[08:06] <stub> reverse that...
[08:06] <lifeless> indeed
[08:07] <stub> We have an index on (bug,index)
[08:08] <stub> http://pastebin.com/HMY6QqJd btw
[08:08] <lifeless> well, 8 seconds is better than 12
[08:09] <lifeless> I think I'll unlink the bug fro mthis branch, its going to need more work
[08:13] <lifeless> stub: do you think a separate index on (index,) is needed, or perhaps two indices (bug,) and (index,) and drop the composite index?
[08:13] <stub> I'll test a separate index in a tic. Looking at some alternative querys atm.
[08:15] <lifeless> the one in https://bugs.launchpad.net/launchpad/+bug/421901/comments/5 I think you tried already for me, but was the best I found when experimenting last week
[08:15] <_mup_> Bug #421901: Person:+bugs timeouts <lp-bugs> <timeout> <Launchpad itself:Triaged by lifeless> < https://launchpad.net/bugs/421901 >
[08:16] <stub> different indexes don't seem to help on BugMessage.index (or message,index)
[08:17] <stub> There are 177k messages from that user...
[08:18] <lifeless> probably why it shows up in the timeouts
[08:20] <stub> but I don't see a sane way to execute the query. Traversing from bug -> Message means materializing all the bugtasks with those statuses, traversing from message -> bug means materializing all 177k messages...
[08:22] <lifeless> perhaps if owner was on BugMessage
[08:22] <stub> So for that data, I'm not sure if we can beat explain analyze
[08:22] <stub> SELECT DISTINCT ON (BugTask.id) BugTask.*
[08:22] <stub> FROM BugTask, Bug, BugMessage, Message
[08:22] <stub> WHERE
[08:22] <stub>     Bug.id = BugTask.bug
[08:22] <stub>     AND Bug.id = BugMessage.bug
[08:22] <stub>     AND BugMessage.message = Message.id
[08:22] <stub>     AND BugTask.status in (10, 15, 20, 21, 22, 25)
[08:22] <stub>     AND Bug.duplicateof IS NULL
[08:22] <stub>     AND Bug.private = FALSE
[08:22] <stub>     AND BugMessage.index > 0
[08:22] <stub>     AND Message.owner = 931129
[08:22] <stub> ORDER BY BugTask.id;
[08:23] <stub> Yer - we would have to denormalize
[08:23] <stub> Or we just store a table of commenters on bugs
[08:23] <lifeless> distinct on is just more efficient, right ?
[08:24] <stub> it's a little more efficient than DISTINCT BugTask.*
[08:24] <lifeless> yeah
[08:24] <stub> But probably not noticebly faster
[08:25] <lifeless> stub: how many seconds is that ^
[08:26] <lifeless> I'm not actually sure why BugMessage is separate to Message
[08:26] <stub> 8.7 seconds
[08:26] <lifeless> hmm, I had a 6 second one
[08:26] <LPCIBot> Yippie, build fixed!
[08:26] <LPCIBot> Project devel build (430): FIXED in 6 hr 11 min: https://hudson.wedontsleep.org/job/devel/430/
[08:26] <LPCIBot> * Launchpad Patch Queue Manager: [r=flacoste][bug=716109] Update Launchpad to r202 of lazr-js,
[08:26] <LPCIBot> which includes an update to YUI 3.3.
[08:26] <LPCIBot> * Launchpad Patch Queue Manager: [r=jtv] [ui=none][bug=316694][incr] Take advantage of web_link when
[08:26] <LPCIBot> changing the URL in the browser bar,
[08:26] <LPCIBot> rather than hacking self_link into web_link.
[08:26] <LPCIBot> * Launchpad Patch Queue Manager: [r=jtv][bug=705657] Fix mirror-prober.sh wrapper script to export the
[08:26] <LPCIBot> correct config. (Fix bug 705657)
[08:26] <LPCIBot> * Launchpad Patch Queue Manager: [r=allenap][bug=710603] The new direct subscription overlay allows
[08:26] <_mup_> Bug #705657: cronscripts using production/launchpad-lazr.conf config file with REPORTIFSEEN prefix <Launchpad itself:In Progress by matsubara> < https://launchpad.net/bugs/705657 >
[08:26] <LPCIBot> subscribing,
[08:27] <LPCIBot> unsubscribing and editing subscriptions and is available to the
[08:27] <stub> BugMessage contains bug message specific data. Message contains data relevant to all messages (answer comments etc.)
[08:27] <LPCIBot> ~malone-alpha team.
[08:27] <stub> Spambot
[08:27] <lifeless> http://pastebin.com/raw.php?i=UdFwWx33
[08:28] <stub> 10s now :-) But the estimated cost is lower, and I think that is what we need to go by here.
[08:31] <lifeless> stub: the distinct on is 10 seconds?
[08:31] <lifeless> stub: whats the http://pastebin.com/raw.php?i=UdFwWx33 one ?
[08:32] <stub> They are all around the same range in seconds. The distinct on has a cost of 391000, your variant 325000.
[08:32] <lifeless> ok
[08:32] <lifeless> so I'll code up my variant next week
[08:32] <lifeless> how should we go about assessing the right denormalisation (e.g. owner in bugmessage; fold bugmessage and message togeter; have a table listing commentors)
[08:33] <stub> That last one has pretty much the same cost
[08:34] <stub> Even with denormalizing, we are going to have similar issues - materializing 170k rows. Lots of messages there.
[08:36] <stub> Doing a count of 'messages owner by 931... and index > 0' has a cost of 280k
[08:36] <lifeless> stub: if we had (bugtask.id, commentator), and updated it when adding a bugtask ?
[08:36] <stub> Bug,commentator makes more sense
[08:37] <lifeless> stub: we filter on bugtask status, and we search and report rows in bugtask; thats why i thought bugtask would make more sense
[08:37] <lifeless> -> what do I have wrong
[08:38] <stub> That user has commented on 43k distinct bugs
[08:38] <thumper> stub: is that user lifeless?
[08:38] <stub> People comment on bugs, not on bugtasks.
[08:39] <lifeless> apport
[08:39] <lifeless> actually not apport
[08:39] <lifeless> !janitor
[08:39] <stub> janitor
[08:39] <stub> who I never wanted as an actual user.
[08:40] <lifeless> apport has made the most comment
[08:40] <lifeless> and seb128 the next least
[08:40] <lifeless> what is ~janitor for?
[08:40] <stub> I think expiry and stuff
[08:41] <stub> its the launchpad system robot anyway
[08:41] <stub> so, this query makes no sense for their outliers anyway. Are we tackling the wrong problem?
[08:41] <stub> c/their/these
[08:42] <lifeless> seb128 is an outlier :P
[08:42] <lifeless> [yes, he is, I'm trolling]
[08:42] <lifeless> so there is a bug saying that the default Person:+bugs view is useless because it includes these bugs
[08:43] <stub> heh... so we can't just turn this off for robots (unless we just make it official and designate seb a robot) - he has almost as many messages in the system as the janitor.
[08:44] <lifeless> I know :)
[08:45] <adeuring> good morning
[09:18] <mrevell> Guten morgen
[09:56] <lifeless> jml: oh hai
[09:57] <jml> lifeless: hello. I got your message.
[09:57] <lifeless> great
[09:57] <lifeless> since i'm still conscious, and thinking work; do you want to chat now?
[09:57] <jml> lifeless: definitely would like to talk, but not now.
[09:57] <lifeless> ok
[10:07] <Ursinha> good morning
[10:19] <bigjools> morning Ursinha, up early again
[10:20] <Ursinha> bigjools, trying to make it a habit
[10:38] <bigjools> lifeless: totally loving the render time data at the top of the page
[10:49] <adeuring> henninge: fancy a small review? https://code.launchpad.net/~adeuring/launchpad/bug-702468/+merge/49205
[10:50] <henninge> ma kuckn
[11:02] <henninge> I am getting this error when doing "make schema" http://paste.ubuntu.com/565319/
[11:02] <henninge> Anybody can tell me what is wrong?
[11:02] <wgrant> henninge: Upgrade lp-dev-deps.
[11:02] <henninge> hm
[11:02] <wgrant> You don't have postgresql-8.4-debversion installed.
[11:04] <henninge> wgrant: I see, thanks.
[11:04] <stub> Please send more Internets. Thailand has run out.
[11:05] <stub> I'm rather surprised the scripts get that far when the debversion package isn't installed.
[11:07] <henninge> Why does it keep these packages back? Anything I might have done? http://paste.ubuntu.com/565321/
[11:07]  * henninge realizes this is probably turning into Ubuntu support.
[11:08] <wgrant> dist-upgrade instead.
[11:08] <wgrant> upgrade will try to avoid installing new packages.
[11:08] <henninge> I only get this on this machine, though. My laptop upgraded fine (using update-manager).
[11:08] <wgrant> Right, update-manager does more than just apt-get upgrade.
[11:10] <henninge> currently update-manager gives me the "Not all updates can be installed. Run a partial update to install as many updates as possible." message and offers to "Partial upgrade". Is that a dist-upgrade?
[11:12] <wgrant> henninge: Hmm, that's not good.
[11:12] <wgrant> What does apt-get dist-upgrade say? It sounds like it may want to remove stuff, which would be bad.
[11:13] <wgrant> Or there is some version skew.
[11:13] <henninge> http://paste.ubuntu.com/565323/
[11:13] <henninge> This looks about right, though.
[11:13] <wgrant> That does.
[11:13] <wgrant> Do it.
[11:13] <henninge> Doing ...
[11:16] <henninge> ... done.
[11:17] <henninge> Now it wants to reboot, of course. (kernel update)
[11:17] <henninge> But update-manager is quiet about partial updates.
[11:17] <henninge> wgrant: tanks a lot!
[11:17] <wgrant> Great.
[11:17] <wgrant> Hopefully make will be happy now.
[11:20] <bigjools> jtv: does these queries look like they'll do the same thing? http://pastebin.ubuntu.com/565325/
[11:20] <bigjools> s/does/do/
[11:20] <jtv> bigjools: looking…
[11:22] <jtv> bigjools: what's the %s in the COALESCE stand for?
[11:22] <bigjools> jtv: False
[11:23] <jtv> bigjools: NULL OR TRUE equals TRUE, so no need for that I think.
[11:23] <bigjools> jtv: see lib/lp/buildmaster/model/buildfarmjob.py -> getBuildsForBuilder()
[11:24] <bigjools> for the storm code that generated that
[11:25] <bigjools> jtv: null equals true in PG?
[11:25] <jtv> No!
[11:25] <bigjools> :)
[11:25] <jtv> But unusually for binary operators, OR has the property that (NULL OR TRUE) evaluates as TRUE.
[11:26] <bigjools> the second query is missing the coalesce
[11:26] <jtv> Rather than to NULL, as one might otherwise expect.
[11:26] <bigjools> the second is Rob's attempt to optimise the first
[11:26] <bigjools> I'm not convinced it's right
[11:27] <jtv> bigjools: I don't see the "TeamParticipation.person = 2" reflected in the new query.
[11:27] <jtv> Oh wait, found it
[11:28] <jtv> It's another % in the old query.
[11:28] <bigjools> yeah
[11:30] <jtv> bigjools: but all the nastiness, complexity-wise, is in the question of which foreign keys may be null.
[11:31] <bigjools> the nastiness is in the fact that not all build farm jobs will have a related package build
[11:31] <bigjools> ie TTBJs
[11:31] <jtv> I get an impression that this won't show jobs for public archives that the user is not an owner of.
[11:33] <jtv> No, that's not right.
[11:33] <jtv> But the other way around?  Will this respect privacy?
[11:34] <jtv> Say that Archive.private = TRUE and there's no matching TeamParticipation.
[11:36] <bigjools> looks wrong
[11:36] <jtv> There'll be no matching (PackageBuild, Archive, TeamParticipation), since those are inner-joined together on the conditions for visibility to the given user.
[11:36] <jtv> Which _sounds_ like what we want,
[11:36] <jtv> except then that tuple is being outer-joined to BuildFarmJob.
[11:36] <bigjools> it's making my head explode
[11:36] <jtv> Which means that if there is no (PackageBuild, Archive, TeamParticipation) that proves visibility to the user,
[11:37] <jtv> the outer join will just make up a (PackageBuild, Archive, TeamParticipation) of all nulls.
[11:38] <jtv> And the WHERE clause doesn't check for that, so AFAICT it'll happily return a BFJ for an archive that the user isn't supposed to see.
[11:40] <jtv> The important thing there is that with an outer join, a join condition is crucially different from a "where" condition in that the latter filters out tuples from the entire join, whereas the former may just result in a tuple of nulls where nothing matches.
[11:40] <bigjools> the problem with the original query is that it's doing a seq scan on archive
[11:40] <jtv> Use Union.
[11:40] <bigjools> right
[11:41] <jtv> This is the wide-shallow/narrow-deep pattern that we keep seeing with privacy.
[11:41] <bigjools> I'll ditch the left joins
[11:41] <jtv> Just write out separate cases for public and private archives, then factor for identical parts that you can share.
[11:42] <jtv> What should happen if there's no PackageBuild?  Should be shown anyway?
[11:42] <bigjools> yes
[11:42] <bigjools> there's no privacy outside of anything that has a packagebuild
[11:42] <jtv> So for public archives you get something like…
[11:42] <jtv> SELECT DISTINCT BuildFarmJob.*
[11:43] <jtv> LEFT JOIN PackageBuild ON PackageBuild.build_farm_job = BuildFarmJob.id
[11:43] <jtv> LEFT JOIN Archive ON Archive.id = PackageBuild.archive
[11:44] <jtv> WHERE Archive.private IS FALSE
[11:44] <jtv> UNION
[11:44] <jtv> SELECT DISTINCT BuildFarmJob.*
[11:44] <jtv> LEFT JOIN PackageBuild ON PackageBuild.build_farm_job = BuildFarmJob.id
[11:45] <jtv> LEFT JOIN Archive ON Archive.id = PackageBuild.archive
[11:45] <jtv> LEFT JOIN TeamParticipation ON TeamParticipation.team = Archive.owner
[11:46] <jtv> WHERE Archive.private IS TRUE AND TeamParticipation.person = %s;
[11:46] <jtv> If there are a lot of BFJs without PBs, you could go even further:
[11:47] <jtv> SELECT DISTINCT BuildFarmJob.*
[11:47] <jtv> LEFT JOIN PackageBuild ON PackageBuild.build_farm_job = BuildFarmJob.id
[11:47] <jtv> WHERE PackageBuild.id IS NULL
[11:47] <jtv> UNION
[11:47] <jtv> SELECT DISTINCT BuildFarmJob.*
[11:48] <jtv> FROM BuildFarmJob  -- I've been forgetting these lines, haven't I?
[11:48] <jtv> JOIN PackageBuild ON PackageBuild.build_farm_job = BuildFarmJob.id
[11:48] <bigjools> I think you need to paste
[11:48] <jtv> JOIN Archive ON Archive.id = PackageBuild.archive
[11:48] <jtv> OK, OK, I'll paste. :)
[11:49] <bigjools> I can't follow this here
[11:54] <jtv> bigjools: https://pastebin.canonical.com/43093/
[11:55] <jtv> Ahhh, there's the LIMIT/OFFSET too isn't it?
[11:55] <jtv> Need to work that in as well.
[11:55] <jtv> We can use that to solve the remaining optimization problems.  Hang on.
[11:56] <bigjools> jtv: don't worry about that, it's the batchnav
[11:56] <jtv> Doesn't mean we shouldn't worry about it.  It's actually most likely the single biggest factor in this problem.
[11:56] <bigjools> the problem is that a slow query is issued twice, once to count, the next time with the limit/offset
[11:57] <jtv> But part of the problem is that slicing happens all the way at the end, and the query planner currently has no way to push that down into the nodes for preliminary optimization.
[11:57] <jtv> Hence the seq scan on Archive.
[11:57] <bigjools> we need ordering as well
[11:58] <jtv> Yes.
[11:58] <bigjools> and, is the distinct honoured across unions?
[11:58] <bigjools> or did you guarantee they don't intersect?
[11:58] <jtv> Yes, I required that "Archive.private = TRUE" in the last query so that makes this a partitioning.
[11:58] <jtv> No overlap.
[12:04] <bigjools> jtv: the queries are also missing a BuildFarmJob.builder = XXX
[12:04] <jtv> ah
[12:04] <bigjools> but I shall experiment and see what else I can do!
[12:04] <jtv> bigjools: I'm not done either :)
[12:05] <deryck> Morning, folks.
[12:05] <jtv> hi deryck
[12:05] <bigjools> howdy deryck
[12:09] <bigjools> jtv: explain analyze on your new query shows a seq scan on archive still
[12:09] <jtv> bigjools: not entirely surprising.
[12:09] <bigjools> because there's no index on private
[12:10] <jtv> Well that's why I said index it.  :-)
[12:10] <bigjools> :)
[12:13] <jtv> bigjools: somewhat elaborate attempt here… https://pastebin.canonical.com/43094/
[12:14] <bigjools> jtv: why order each inner query and then again in the outer?
[12:14] <jtv> bigjools: to shortcut their execution when the limit is reached.
[12:14] <bigjools> order and limit in fact
[12:14] <bigjools> ok
[12:14] <bigjools> I don't know how we can control that in the batchnav
[12:14] <jtv> The backend may be smart enough to do that for itself, but not sure.
[12:15] <bigjools> one can try
[12:15] <jtv> I've seen 8.4 backends push the ORDER BY down into sub-plans, so maybe we can leave that out.
[12:15] <bigjools> well I can't do it in our current infrastructure anyway
[12:16] <jtv> OK, I'll drop that bit.
[12:16] <jtv> BTW I've been assuming that by far most archives are public… is that correct?
[12:17] <bigjools> yep
[12:18] <bigjools> 3 seq scans in that query
[12:18] <bigjools> buildfarmjob, which is ok
[12:18] <bigjools> packagebuild
[12:18] <jtv> 2 on Archive?
[12:18] <bigjools> and archive
[12:18] <jtv> Oh
[12:18] <bigjools> the good news is that it seems to return the right number of rows :)
[12:19] <jtv> We could try the TDD approach: write the absolute minimum that satisfies our tests...  SELECT %(expected_number_of_rows)d
[12:19] <jtv> Is this less elaborate version any worse?  https://pastebin.canonical.com/43095/
[12:19] <bigjools> assuming the tests are good, yes
[12:21] <bigjools> jtv: same sort of performane
[12:21] <bigjools> performance
[12:21] <bigjools> same seq scans
[12:22] <bigjools> we definitely need an index on archive.private
[12:22] <bigjools> it would help elsewhere
[12:23] <jtv> Or in this last version of the query, one on (private, owner)
[12:23] <bigjools> yeah
[12:25] <jtv> bigjools: can you see which of the two parts the packagebuild query is coming from?
[12:25] <bigjools> the seq scan?
[12:26] <jtv> Sorry, yes.
[12:26] <bigjools> the second I think
[12:27] <bigjools> there's a hash cond for archive.id above it
[12:27] <jtv> Could you paste me the plan?
[12:27] <bigjools> so prob need an index on packagebuild.archive
[12:28] <bigjools> which query? :)
[12:28] <bigjools> they're all similar but ...
[12:29] <jtv> https://pastebin.canonical.com/43095/
[12:30] <jtv> Quite possible that we need that index, yes, or on (archive, buildfarmjob) or vice versa.
[12:30] <jtv> There's a patch now for hypothetical indexes in postgres.  That'd be cool to have.
[12:30] <bigjools> http://pastebin.ubuntu.com/565348/
[12:31] <bigjools> yes, you mentioned that, it would be very useful
[12:31] <jtv> Doesn't create real indexes, but lets you say "EXPLAIN HYPOTHETICAL" and it'll explain your query as it would do it if the hypothetical indexes were real.
[12:31] <bigjools> so you do CREATE INDEX HYPOTHETICAL ... ?
[12:32] <bigjools> hmmm so packagebuild already has indexes on archive and BFJ
[12:35] <jtv> Yes, like that
[12:35] <jtv> A unified index may help.
[12:35] <jtv> So one on both columns at the same time.
[12:35] <bigjools> is that hypothetical index stuff packaged?
[12:35] <jtv> No
[12:35] <jtv> It's a patch.
[12:35] <bigjools> urgh
[12:36] <jtv> But there's a PostgreSQL eXtension Network coming.
[12:36] <bigjools> so, I am seeing the original query run quicker than your new ones right now
[12:36] <jtv> heh
[12:36] <bigjools> I suspect it's cause it only has one seq scan
[12:36] <jtv> The seq scan on archive doesn't look at all costly.
[12:37] <bigjools> rows=23596
[12:39] <jtv> bigjools: oh!  And have you tried indexing on the sort order?
[12:39] <bigjools> yeah that adds 2 seconds alone, good idea
[12:39] <jtv> Indexing slows it down?
[12:39] <bigjools> removing the ORDER BY speeds it up by 2 seconds
[12:40] <bigjools> I'll add the index on dogfood and see what happens
[12:43] <jtv> Another big cost seems to be the PackageBuild→BFJ join.
[12:44]  * jtv slowly figures out that bigjools wasn't being sarcastic with the "that adds 2 seconds, good idea" :)
[12:44] <bigjools> heh
[12:47] <bigjools> jtv: actually date_finished is already indexed
[12:47] <jtv> bigjools: but (date_finished, id)?
[12:48] <bigjools> no, but how often will date_finished need a tie breaker to ID?
[12:48] <jtv> If the sort order is completely covered, that may open up new plans.
[12:48] <bigjools> index on private makes bugger all difference
[12:48] <jtv> :(
[12:49] <jtv> Well, scanning Archive wasn't that costly.
[12:49] <bigjools> no, I mean there's still a seq scan
[12:49] <bigjools> why is it scanning :/
[12:50] <jtv> A seq scan is the most efficient thing to do unless it's clear that only a surprisingly small percentage of the table will actually be needed.
[12:50] <jtv> Think disk seeks: you can read quite a lot of data in a seq scan in the same time that it might take to seek to the next table record that an index identifies as matching.
[12:51] <bigjools> indeed
[12:51] <jtv> (Bearing in mind that the index is in key order, not tuple storage order, so likely to be very random access patterns)
[12:52] <jtv> That's also why we have bitmap scans.
[12:54] <jtv> bigjools: hang on, I just stumbled onto a major simplification
[12:54] <bigjools> adding an index on (date_finished, id) makes no difference :/
[13:01] <jtv> bigjools: boo
[13:01] <jtv> But here's another version.  I'd guess it was slower, but knowing trumps guessing: https://pastebin.canonical.com/43096/
[13:04] <bigjools> so far, a lot slower ....
[13:08] <jtv> bigjools: that's fine; it's just a stepping stone to https://pastebin.canonical.com/43097/
[13:08] <jtv> Oh, that needs a DISTINCT obviously
[13:09] <jtv> Like so: https://pastebin.canonical.com/43098/
[13:09] <bigjools> oooooo quick
[13:09] <jtv> Then presumably it's incorrect in some way, but still nice to see a bit of speed.  :-)
[13:09] <bigjools> nope, looks fine!
[13:10] <jtv> I suspect the UNION is a very effective optimization barrier.
[13:10] <bigjools> returns correct number of rows
[13:10] <bigjools> down to 2 seconds from 9
[13:10] <jtv> This makes it possible for the backend to materialize "archives this user is an owner of," which just has to be fast because so few records will be involved.
[13:10] <bigjools> it's quicksorting in memory now
[13:10] <bigjools> was using external merge on disk last time
[13:11] <jtv> The joins can't have helped.
[13:11] <bigjools> "Disk: 142912kB" - yes :)
[13:11] <jtv> The key to this is that the Archive seq scan is actually relatively cheap.
[13:11] <bigjools> it is
[13:11] <bigjools> actual time=0.011..21.494
[13:11] <jtv> So I'm materializing one, as the first part of the union!
[13:12] <jtv> That's even cheaper than previously, for some reason.
[13:12] <bigjools> bizarro
[13:12] <jtv> There was just no way to get around a seq scan on archive, unless we managed to cram enormous amounts of selectivity into the PBs first—and even then.
[13:13] <jtv> I suspect that selectivity just isn't there.
[13:13] <jtv> Which can't have helped the size of the ultimate sort buffers either, for what it's worth.
[13:14] <jtv> Also, the PackageBuild join was very slow, and an outer join didn't look very different from an inner one, so I hoisted it out of the subquery.
[13:14] <jtv> That way it gets done only once.
[13:14] <bigjools> thanks jtv, I'll Stormify this and run the tests against it
[13:14] <bigjools> now, I need food
[13:14] <jtv> OK, glad I could help.
[13:16] <bigjools> jtv: you certainly did
[13:16] <jtv> :)
[13:22] <gary_poster> bo hoo, no reviewer
[13:22] <gary_poster> boo, even
[13:32] <jcsackett> gary_poster: looking for a review for https://code.launchpad.net/~gary/launchpad/bug713382/+merge/49145 ?
[13:32] <gary_poster> yes, jcsackett ! :-)
[13:33]  * jcsackett is looking at it now.
[13:35] <gary_poster> thank you
[13:43] <jcsackett> gary_poster: in bug.py, what's the reason for working with "temp_recipients" instead of on "recipients"?
[13:43] <jcsackett> nm, reread proposal.
[13:43] <gary_poster> :-) l
[13:43] <gary_poster> k
[13:43]  * jcsackett gets more coffee while reviewing.
[13:43] <gary_poster> m
[13:43] <gary_poster> n
[14:00] <deryck> henninge, we see you connect, but never hear you
[14:06] <jcsackett> gary: r=me. i've requested follow up from sinzui. let me know if that becomes a blocker and i'll hunt him or someone else down.
[14:06] <jcsackett> gary_poster ^
[14:07] <sinzui> I can review it now
[14:07] <jcsackett> ah, i missed that you had logged on, sinzui. :-)
[14:13] <gary_poster> jcsackett: many thanks.  will be back in afternoon
[14:27] <abentley> jcsackett, thanks for your review.  You'll see that all the items I've put up for review build toward the goal of merging translations using a job.
[14:27] <jcsackett> abentley: i am indeed noticing that trend.
[14:28] <abentley> If you have any questions, I'm happy to answer 'em here.
[14:34] <henninge> adeuring: Two things about your branch.
[14:34] <adeuring> henninge: yes?
[14:34] <henninge> 1. I am pretty sure this is only supposed to work one way.
[14:35] <henninge> i.e. first "upstream" translation overwrites "Ubuntu" translation but not the other way round.
[14:35] <adeuring> henninge: right, but this is guarded by share_with_other_side
[14:36] <adeuring> this flag is always true for product and projectgroups
[14:36] <adeuring> and must be expicitly enabled for SPs
[14:36] <adeuring> so I think we don't need extra guards
[14:37] <henninge> hm
[14:37] <henninge> Where is the flag "always true"?
[14:37] <henninge> In the policy?
[14:38] <adeuring> henninge: right
[14:44] <henninge> ok, I see what you mean but AFAICT this is not the what you want.
[14:44] <henninge> s/the//
[14:44] <henninge> adeuring: ^
[14:45] <adeuring> henninge: well, I think we want upstream translations propagated to ubuntu, and that's done by share_with_other_side == True for upstreams
[14:46] <adeuring> Or am I missing something?
[14:48] <LPCIBot> Yippie, build fixed!
[14:48] <LPCIBot> Project db-devel build (355): FIXED in 6 hr 1 min: https://hudson.wedontsleep.org/job/db-devel/355/
[14:50] <henninge> adeuring: no, they are only to propagate if the Ubuntu translation is either empty or identical to the upstream one.
[14:51] <henninge> adeuring: if they are different, they stay different.
[14:52] <adeuring> henninge: well, the bug says "In the old model, providing the first upstream translation would have overwritten the Ubuntu translation, too. "
[14:52] <henninge> adeuring: yes, that is the exception to the rule I just described and which is missing from the code.
[14:52] <henninge> and which you implemented correctly.
[14:53] <henninge> But it does not work the other way round.
[14:53] <henninge> The exception, I mean.
[14:53] <adeuring> henninge: ah, so you think thatg we should restrict this feature explicitly for the flow upstream -> ubuntu?
[14:53] <henninge> exactly! ;-)
[14:54] <adeuring> even if sharing the other way round is enabled?
[14:54] <henninge> yes
[14:54] <henninge> The reasoning for this exception goes like this:
[14:55] <henninge> We import templates and translations from upstream, but there are no (or little ) translations yet.
[14:55] <henninge> Then Ubuntu translators go to work and start translating.
[14:55] <henninge> The upstream translators get going, too, and after a while we get updated upstream translations.
[14:56] <henninge> Without this exception, these upstream translations would not show up in Ubuntu.
[14:56] <henninge> We have been getting bad press about how "Ubuntu ignores upstream translations2
[14:56] <henninge> ".
[14:57] <henninge> But really, Ubuntu translations should be fed back to upstream anyway, but that is not something we can solve by code.
[14:57] <adeuring> right. But how likely is the situation that the other "sharing variant" does something wrong? I'd prefer to not make the code even more complex ;)
[14:58] <adeuring> I mean, somebody must explicitly enable this sort of "sharing flow"
[14:58] <henninge> adeuring: It needs to retain the old behavior, though. It's documented and the translators are used to it.
[14:59] <henninge> What do you mean by "enable"?
[14:59] <adeuring> well, ok, I'll add a sort of diode then
[14:59] <bigjools> jtv: so I converted your SQL into STORM syntax.  I think I might be about to faint that I got it right first time and the tests all pass.
[14:59] <henninge> adeuring: please do.
[14:59] <jtv> bigjools: congratulations!
[14:59] <adeuring> henninge: and what is the other issue?
[14:59] <bigjools> jtv: http://pastebin.ubuntu.com/565404/
[14:59] <henninge> adeuring: secondly, I would expect a test or two for this specific behavior.
[15:00] <henninge> adeuring: you adapted some tests but I guess they just failed because the incumbent message happened to be empty.
[15:01] <adeuring> henninge: hmmm, I think the test method names indicate that the incumbent message is supposed to be empty, right?
[15:01] <adeuring> but nevenr mind, i can add another test ;)
[15:01] <henninge> adeuring: hm, you may be right
[15:02] <henninge> but then perhaps a test is missing for when it is not?
[15:02] <adeuring> ok, i'll check it
[15:02] <henninge> adeuring: thanks.
[15:04] <henninge> adeuring: I fear you will run into some work with the test when you add the "diode" because I think it is designed highly symmetrical atm.
[15:04] <henninge> but it would be good to show the assymmteric behavior in the test.
[15:05] <benji> deryck: do you know of any docs about how to use LP.client.Launchpad() to interact with the web service from JavaScript?
[15:05] <deryck> benji, on call, will respond just a minute
[15:05] <benji> thanks
[15:16] <LPCIBot> Project devel build (431): FAILURE in 5 hr 33 min: https://hudson.wedontsleep.org/job/devel/431/
[15:16] <jcsackett> abentley: i'm looking at your last branch now. i'm not familiar with lazr configs--the purpose of your additions is just proper error capturing when the job runs?
[15:17] <abentley> jcsackett, no, the configuration glues it all together.  Nothing could be run without it.
[15:17] <abentley> jcsackett, It specifies the database user to use, the JobSource to use, the error handling, etc.
[15:18] <jcsackett> abentley: ah, i see. i had only looked at the first two config changes.
[15:18] <abentley> jcsackett, lazr-js is a layered configuration system, so those first two overlay the last one.
[15:18] <jcsackett> abentley: dig. thanks.
[15:29] <deryck> benji, hi, back now.
[15:29] <deryck> hmmm, so lp_client docs basically>
[15:30] <deryck> benji, I don't think we have any actually.  I've always looked at the client code itself, or followed examples in other js code.
[15:30] <deryck> sorry
[15:32] <benji> deryck: that's what I suspected; I'm writing the start of some docs that will hopefully fill the hole
[15:32] <deryck> ah nice
[15:35] <jcsackett> abentley: all branches are r=me; sinzui has already followed up on several.
[15:35] <jcsackett> really nice work.
[15:35] <abentley> jcsackett, thanks.
[15:38] <deryck> abentley or rockstar -- has the minus icon on bug pages to unlink a branch been ajax before now?  Or it always went to a confirmation page?
[15:38]  * deryck is QAing new lazr-js and not sure
[15:38] <rockstar> deryck, on bug pages? No idea.  gmb did that work.
[15:38] <abentley> deryck, unsure.
[15:39] <deryck> ah ok. gmb ^^ ?
[15:39] <sinzui> abentley: I think everything is cleared to land now
[15:39]  * gmb reads scrollback
[15:39] <abentley> sinzui, great, thanks.
[15:39] <gmb> deryck: I *think* it's always gone to a confirmation page.
[15:40] <gmb> Yet another we-only-did-half-the-work-before-moving-on.
[15:40] <deryck> gmb, ok, cool.  thanks.
[15:44] <jcsackett> deryck: assuming you're concerned about a branch that recently hit, i can confirm that as of last monday unlinking went to a page, not ajax.
[15:44] <deryck> jcsackett, indeed that is my concern.  Thanks!
[15:52] <deryck> heh, oops.  Somewhere a link from qastaging pointed to lpnet.  And now there is a dumb project on launchpad.
[15:53] <deryck> or a new team rather.
[15:53] <deryck> heh, or a project that thinks it's a team.  gah!
[15:54] <deryck> sinzui, can I or you delete https://launchpad.net/deryck-test-qa-team/, or do we need an admin for that?
[15:54] <sinzui> deryck: you cannot see the delete link?
[15:55] <sinzui> deryck: oh sorry, that is a project. the cannot be deleted. you can rename it and deactivate it
[15:56] <deryck> sinzui, ok, thanks.  I'll just deactivate it.  Sorry about that.
[15:59] <deryck> maybe I hand entered a URL and didn't realize I forgot the qastaging bit.
[16:01] <abentley> sinzui, I want to create a Job every time a Packaging is created, to merge the translations between the sourcepackage and the productseries.
[16:02] <abentley> sinzui, Packaging doesn't have a constructor, but I'm thinking of adding one, and having it call notify.  Make sense?
[16:02] <sinzui> yes it does
[16:02] <abentley> sinzui, cool, thanks.
[16:04] <abentley> sinzui, are Packagings ever modified, or just created and deleted?
[16:05] <sinzui>  abentley never modified
[16:06] <abentley> sinzui, great.
[16:06]  * sinzui wonders though if changing a ds packaging workflow calls delete?
[16:06]  * sinzui lookse
[16:10] <sinzui> abentley: definitely not modified. We create, and occasionally delete. Packaging acts as a historical record
[16:10] <abentley> Good to know.
[16:14] <jtv> jcsackett: got an MP for you!  Are you free?  https://code.launchpad.net/~jtv/launchpad/bug-711077/+merge/49242
[16:14] <jcsackett> jtv: in the middle of investigating a test failure. can look in half an hour?
[16:14] <jtv> jcsackett: if you like, though I could ask allenap first
[16:15] <jcsackett> jtv: if he's free now, sure. if not, i'll be happy to take a look at it soon. :-)
[16:15] <allenap> jtv: I'm up for a review.
[16:15] <jtv> great!
[16:15] <jtv> see mp                                                                   ^^^^
[16:30] <jtv> bigjools: it seems the parallel a-f is on qastaging… want to walk me through the Q/A process?
[16:30] <bigjools> jtv: I'm in the middle of something, happy to do so later
[16:30] <jtv> OK
[16:31] <bigjools> jtv: passing tests were some sort of weird miracle earlier, they don't actually pass and my storm expression won't compile
[16:31] <bigjools> I am starting to really detest storm syntax
[16:32] <jtv> bigjools: it can be annoying, yes.  Anything there I can help with?
[16:32] <bigjools> jtv: maybe, one sec
[16:32] <jtv> Debugging the things isn't fun either.
[16:32] <bigjools> tell me about it
[16:36] <bigjools> jtv: http://pastebin.ubuntu.com/565450/
[16:36] <bigjools> won't compile,  it doesn't like the PackageBuild.archiveID or PackageBuild.archive
[16:36] <jtv> bigjools: have you tried PackageBuild.id.is_in(Select(…))?
[16:36] <bigjools> jeez
[16:36] <bigjools> ok
[16:37] <bigjools> it would be PackageBuild.archive.is_in of course
[16:38] <bigjools> AttributeError: 'Reference' object has no attribute 'is_in'
[16:38] <jtv> Grrrr
[16:38] <jtv> Try PackageBuild.archive_id.is_in or PackageBuild.archiveID.is_in
[16:38] <bigjools> this ID vs reference stuff is seriously irritating
[16:39] <jtv> This stuff is way too hard.
[16:39] <jtv> Yes
[16:39] <bigjools> that too
[16:39] <bigjools> I suspect the _id will do it, I was using ID before
[16:39] <jtv> grrrr
[16:39] <bigjools> yay it worked
[16:39] <jtv> \o/
[16:40] <bigjools> thanks jtv
[16:40] <jtv> np
[16:40] <jtv> you were blocking my lane, had to help :)
[16:40] <bigjools> I think I knew about this, it's clearly been a while since I wrote storm
[16:40] <jtv> But you keep hoping someone will fix this stuff while you're away, don't you?
[16:43] <bigjools> now that part is fixed, I get the problem somewhere else
[16:43] <jtv> That's progress.
[16:43] <jtv> What is it now?
[16:43] <bigjools> same compile error about a Reference - but no indication of which one
[16:43] <jtv> Ah yes that one
[16:43] <jtv> it's always fun.
[16:44] <bigjools> FSVO
[16:44] <jtv> I do TLAs, not ETLAs
[16:44] <bigjools> ha
[16:44] <bigjools> OMG NFW BMX
[16:44] <jtv> BMX?  WTF!?
[16:45] <jtv> Anyway, with the Reference one at least you know you're missing a _id or ID suffix on a reference attribute.  It's not that you might have mis-spelled one.
[16:45] <jtv> (That comes later.)
[16:46] <bigjools> yes
[16:49] <bigjools> shockingly, my first guess found it
[16:49] <jtv> the gods are toying with you
[16:55] <bigjools> so is dogfood
[16:56] <jtv> "…they play with us for their sport"
[16:58] <bigjools> dogfood is doofgod backwards.
[16:59] <bigjools> mawson should be aergia it's so bloody slow
[17:01] <jtv> aegria?
[17:02] <bigjools> aergia
[17:02] <jtv> Ah, not familiar with her
[17:02] <bigjools> darn, this query is bust
[17:02] <jtv> What now?
[17:03] <bigjools> it's returning the wrong stuff - yet the tests pass
[17:09] <LPCIBot> Project devel build (432): STILL FAILING in 1 hr 53 min: https://hudson.wedontsleep.org/job/devel/432/
[17:09] <LPCIBot> * Launchpad Patch Queue Manager: [r=thumper][no-qa] Mechanical move of
[17:09] <LPCIBot> canonical.launchpad.windmill.testing to lp.testing.windmill.
[17:09] <LPCIBot> * Launchpad Patch Queue Manager: [r=allenap][bug=528367] Added alt tag to remove icons.
[17:15] <LPCIBot> Project db-devel build (356): FAILURE in 2 hr 27 min: https://hudson.wedontsleep.org/job/db-devel/356/
[17:15] <LPCIBot> Launchpad Patch Queue Manager: [rs=buildbot-poller] automatic merge from stable. Revisions: 12357
[17:15] <LPCIBot> included.
[17:16] <bigjools> jtv: hurray at last.
[17:17] <jtv> What was the problem?
[17:17] <bigjools> the history page on dogfood finally loads for adare
[17:17] <bigjools> jtv: pebkac
[17:29] <bigjools> jtv: where's your branch that you need testing?
[17:31] <jtv> bigjools: lp:~jtv/launchpad/bug-181368-view
[17:31] <jtv> That's against devel though.
[17:31] <bigjools> 'sok
[17:31] <jtv> (In fact it's already _in_ devel)
[17:32] <bigjools> I'm going to pocket copy a package to create publications in lots of places (it has 6 arch binaries)
[17:34] <lifeless> moin
[17:35] <lifeless> bigjools: glad you like it
[17:35] <bigjools> lifeless: saves a bit of ctrl-u/page-down
[17:35] <lifeless> I described it to elliot as 'tastefully IN YOUR FACE'
[17:36] <bigjools> jtv: ok, I've copied acl in maverick to maverick-proposed, with binaries.  See https://dogfood.launchpad.net/ubuntu/+source/acl/+publishinghistory
[17:36]  * bigjools runs df publisher
[17:36] <jtv> bigjools: I'm not sure what to look out for though
[17:36] <bigjools> jtv: I'll send you a log file when it's done.  You'll see that source go from pending to published
[17:38] <allenap> jtv: I'm not going to finish your review today. Do you mind if I complete it in the morning?
[17:38] <jtv> allenap: then maybe I should ask jcsackett to give it a go after all.
[17:38] <jtv> allenap: or were you already partway through it?
[17:38] <bigjools> jtv: also this publisher may not finish within the 20 minutes I have left today
[17:39] <jtv> bigjools: ah… and this is df innit?
[17:39] <bigjools> jtv: yeah I limited it to just the suite we want, but it will still take some time
[17:39] <bigjools> a full run takes *hours* :/
[17:39] <allenap> jcsackett: I am partway through it, but not that far, so I'm happy for him to take it if he is too. I have been pulled away by non-work things.
[17:39] <jtv> Oh well, have to check up tomorrow then.
[17:40] <bigjools> jtv: ah it finished
[17:40] <jtv> bigjools: so it seems to have
[17:40] <jtv> So how do we know it did something sensible?
[17:40] <jml> lifeless: good morning.
[17:41] <lifeless> jml: hi hi
[17:41] <jcsackett> jtv: you want to wait on allenap, or shall i take a look at it now?
[17:41] <jml> lifeless: now or in the next hour would be a good time for a call.
[17:41] <bigjools> jtv: I am checking the Packages files
[17:41] <lifeless> ok, I'll ping you in a few minutes
[17:41] <bigjools> jtv: how many does it kick off in parallel BTW?
[17:41] <jtv> jcsackett: I'd appreciate a look—I'm pretty much EOD, but I'm slightly ahead of allenap timezone-wise.
[17:42] <jtv> bigjools: one for each architecture (including "source")
[17:42] <jcsackett> jtv: okay, i'll take a look and ask any questions in the comments.
[17:42] <bigjools> jtv: so 6
[17:42] <jtv> bigjools: but that's the parallel run.  This branch is a different change.
[17:42] <jml> lifeless: ok.
[17:42] <bigjools> it is?
[17:42] <jtv> bigjools: yes, circumventing an awkward view.
[17:42] <bigjools> seemed quicker :)
[17:43] <jtv> Good!
[17:43] <jtv> bigjools: the parallel run is still waiting for the RT
[17:44] <bigjools> jtv: only 4 of the binaries got published, I don't know if that's right or not
[17:44] <bigjools> but the ones that did look ok
[17:44] <jtv> bigjools: hmmm for proper Q/A we'd have to know whether that was right.
[17:44] <bigjools> yes
[17:45] <bigjools> could be PaS
[17:45] <jtv> PhotoAcoustic Spectroscopy?
[17:45] <bigjools> ah I should try an arch indep, that'll not matter
[17:46] <bigjools> Package Arch Specific
[17:46] <bigjools> it's a last-ditch override file that the publisher uses
[17:47] <jcsackett> jtv: while you're still here, i note in the diff you're adding some columns, but this isn't targeted to db-devel; i assume it's not introducting change to the db, but don't really understand why not.
[17:47] <jtv> jcsackett: adding columns!?
[17:48] <jtv> jcsackett: sounds as if something went wrong with the MP… just a mo'
[17:48] <jcsackett> jtv: several adds of IntCol (branch_id), but not replacing similar statements. i may be misinterpreting.
[17:49] <jtv> jcsackett: oh, those aren't columns—they're attributes that allow me to read the FK attributes directly
[17:49] <jtv> Pretty standard stuff.
[17:49] <jcsackett> jtv: ah. i figured it was something like that, but wasn't sure. and the use of "Col" in the declaration raised alarms. :-)
[17:50] <jtv> Seems I have to go help with a little accident here.
[17:50] <bigjools> jtv: so a tentative ok, but please ask wgrant to double check since this really needs more eyes to verify it before we unleash on the distro
[17:51] <jtv> bigjools: ack
[17:54] <bigjools> jtv-afk: so meh, I forgot to notice that copy-package only copied some of the binaries, so it seems perfectly ok.
[18:00] <lifeless> jml: ping
[18:02] <lifeless> jml: skype me
[18:03] <lifeless> deryck: question for you, why are BugMessage and Message separate tables?
[18:04] <deryck> lifeless, I literally have no idea. :-)  I asked once before and didn't understand the response.  I think....
[18:04] <deryck> lifeless, it was written in a time when we imagined different kinds of messages, of which bug message was one type.
[18:04] <lifeless> there are 640 shared messages
[18:04] <jml> lifeless: k
[18:04] <lifeless> that is, one message on several bugs.
[18:05] <deryck> hmmm, I don't know why that would be.
[18:05] <lifeless> deryck: I think we could make a bunch of queries faster if we deep sixed the sharing and just copied the message when that happens
[18:05] <lifeless> deryck: email control interface controlling many bugs?
[18:05] <lifeless> deryck: in case its not obvious I mean a db migration too :)
[18:05] <deryck> lifeless, perhaps.  but I thought you could only affect multiple bugtasks, not bugs, from email
[18:06] <deryck> lifeless, yes, I think moving all that across to copies, not shared messages, is best
[18:12] <jcsackett> what's the difference between using IStore and Store.of? they seem to result in the same thing, but i'm not certain.
[18:19] <deryck> jcsackett, so IStore is what we provide to help manage connecting to the db, instead of just straight import Store from Storm.
[18:20] <deryck> jcsackett, see lib/canonical/launchpad/doc/storm.txt
[18:20] <jcsackett> deryck: thanks.
[18:20] <deryck> jcsackett, actually, I meant to point you at:  lib/canonical/launchpad/doc/db-policy.txt
[18:20] <deryck> well, either is probably ok ;)
[18:20]  * jcsackett changes which file he is opening...
[18:22] <lifeless> jml: http://gems.github.com/list.html
[18:26] <jcsackett> today has been a very busy review day...
[19:09] <jcsackett> sinzui: can i get you to look at something?
[19:09] <sinzui> yes
[19:09] <jcsackett> i'm having trouble understanding the "why" of a bit of publisher code: https://pastebin.canonical.com/43132/
[19:10] <jcsackett> it looks like it's trying to rebuild web service based requests, but i don't understand why--commenting out that code doesn't seem to hurt webservice functions.
[19:10] <jcsackett> (this is the actual culprit for the api.launchpad.net pillar aliases redirecting outside of the api)
[19:12] <sinzui> jcsackett: I confess I do not understand it
[19:12] <lifeless> jcsackett: btw
[19:12] <lifeless> jcsackett: see my last comment on https://code.launchpad.net/~jtv/launchpad/bug-711077/+merge/49242 - thats something to bear in mind
[19:12] <sinzui> my head may be filled with straw today. I can struggling to refactor what I think is a simple test
[19:13] <jcsackett> lifeless: good thought.
[19:13] <jcsackett> sinzui: yeah, after a morning filled with the largest review queue i've seen, i'm feeling pretty muddled.
[19:13] <jcsackett> (and since you follow up on them all, i'm not surprised you feel the same).
[19:14] <jcsackett> lifeless, any chance you know what's up in this bit? https://pastebin.canonical.com/43132/
[19:14] <lifeless> other than the gratuitious pass?
[19:15] <jcsackett> hm, you can ignore that--left over from when i commented out a bunch of code to see what changed.
[19:15]  * jcsackett edits paste.
[19:15] <lifeless> what file is that in ?
[19:15] <lifeless> jcsackett: have you been introduced to bzr's annotate functionality ?
[19:16] <jcsackett> lifeless: i've seen annotate used once, and heard much of it. i do not, as yet, know how to do anything useful with it. :-P
[19:16] <jcsackett> file is canonical.launchpad.webapp.publisher
[19:16] <jcsackett> it seems to rebuilding webservice requests (and in the process losing the api layer)
[19:17] <lifeless> so the comment says:
[19:17] <lifeless>  - no rootsite
[19:17] <lifeless>  - handling shipit
[19:18] <lifeless> blame says the outer if was done in rev 3564.1.43
[19:18] <lifeless> and the inner one in 7675.289.2 / 3 / 4
[19:19] <lifeless> bzr log -r 7675.289.2..7675.289.4 tells me that bug-376990 was at issue
[19:19] <lifeless> 'canonical_url() needs to return browser URLs when generating XHTML representations'
[19:19] <jcsackett> yeah.
[19:20] <jcsackett> that seems to be the inverse of the problem leonardr pointed out to me.
[19:20] <lifeless> so, it wants to get canonical urls for browser links some of the time
[19:20] <jcsackett> so, this only happens when canonical_url is called for pillars that we've gotten by alias in the webservice. i think i can just change a call up the pipe to pass the request along.
[19:20] <lifeless> this also tells us how to test it
[19:20] <lifeless> inline bug commenting
[19:22] <lifeless> but we have a stale comment or something, because the block *above* the comment was changed by tim in rev 3758.1.1
[19:22] <bac> hi sinzui
[19:22] <lifeless> jcsackett: so, what are the symptoms?
[19:23] <sinzui> hi bac
[19:23] <jcsackett> lifeless: bug 715992
[19:23] <_mup_> Bug #715992: Pillar aliases redirect outside of webservice on webservice calls <Launchpad itself:In Progress by jcsackett> < https://launchpad.net/bugs/715992 >
[19:24] <lifeless> wow, we are digging up some chestnuts
[19:24] <lifeless> this should be critical otherwise its a priority inversion
[19:25] <jcsackett> this came up because it needs to be whacked to deal with bug 623099
[19:25] <_mup_> Bug #623099: AttributeError filing a bug using the API <lp-foundations> <oops> <Launchpad itself:In Progress by jcsackett> < https://launchpad.net/bugs/623099 >
[19:25] <lifeless> yes
[19:25] <lifeless> agreed; I'm just saying bump it to critical
[19:25] <jcsackett> ah, dig.
[19:25] <jcsackett> done.
[19:25] <lifeless> because its otherwise holding a critical hostage, which wouldn't make sense
[19:26] <lifeless> so
[19:26] <lifeless> looks to me like you need to pass a request in
[19:26] <lifeless> '    If there is no request available, the protocol, host and port are taken
[19:26] <lifeless>     from the root_url given in launchpad.conf.
[19:26] <lifeless> '
[19:27] <lifeless> as leonardr says
[19:27] <lifeless> 'Possibly there's a method that needs to have the current request passed into it.'
[19:27] <lifeless> jcsackett: whats the backtrace leading into this call of canonical_url ?
[19:28] <jcsackett> yeah, i think i've found it; i just hit this block of code and was wondering what on earth it was doing.
[19:28] <jcsackett> bit of a rabbit hole, really.
[19:28] <lifeless> its guessing at the url the client used
[19:28] <lifeless> and the default is to guess 'web browser request on main site'
[19:28] <lifeless> worth enhancing the comment
[19:29] <lifeless> and adding a :param request: up in the docstring (subsuming the 'if there is no request available' prose.)
[19:29] <lifeless> ?
[19:31] <jcsackett> lifeless: yeah, i'm cleaning up the comments.
[19:34] <jcsackett> lifeless: thanks.
[19:53] <benji> deryck: I'd love any feedback or additions you might have to my first draft of "how to access webservice APIs via JavaScript": https://dev.launchpad.net/yellow/JavaScriptAPIAccessDraft
[19:54] <deryck> benji, ok, taking a look now
[19:57] <jcsackett> any chance i can get a review on https://code.launchpad.net/~jcsackett/launchpad/api-pillar-redirects-715992/+merge/49279?
[19:58] <deryck> benji, yeah, it's good.  Do you have plans to fill in more about PATCHPlugin?
[19:58] <benji> deryck: I hope to.  I have to figure out how to use it first. :)
[19:59] <deryck> benji, you can look at how the inline editor widgets and commenting use it.
[19:59] <benji> My plan is to put in everything I know so people can get a better start.  I spent way too much time figuring out what little I know thus far.
[19:59] <benji> cool, thanks for the pointer
[19:59] <deryck> benji, I can add to this too.  But I'll need pings to remind me about it.
[20:00] <benji> you can count on me
[20:00] <deryck> benji, our use of the js client as evolved over time, and we're probably named_post and named_get heavy, when we should favor patch with patch_field set true.
[20:01] <benji> interesting
[20:01] <deryck> and then setting accept to xhtml, we get back the html for the part we patched. instead of the full resource.
[20:02] <deryck> well, unless we need the entire thing.  it depends on use, I guess.  but it seems more common to do attribute patching.
[20:02] <benji> can the client understand xhtml?  why does the server not return partial JSON?
[20:03] <deryck> benji, well xhtml can be created into a node easily in YUI.  it's just a string, I think, not try xhtml.
[20:03] <deryck> s/try/true/
[20:03] <deryck> so...  var stuff = result_of_my_patch(); var my_html = Y.Node.create(stuff);
[20:04] <benji> hmm, I don't understand.  Is that for when we only patch one attribute at a time?
[20:05] <deryck> benji, yes.  which is actually common.  And the attribute will be a FK to some other object on the backend.
[20:05] <benji> ah, ok that makes sense
[20:05] <deryck> that pseudo code might not be exactly how we do it either.  Just going off sketch from memory.
[20:07] <sinzui> benji: js replies on the the DOM's engine to construct elements You can create xhtml or html using DOM nodes, but what is rendered could be the other :( I have also see cases where the code tries to place a list in a paragraph, but what is rendered is a paragraph, a list, and another paragraph
[20:07] <sinzui> s/replies/relies/
[20:08] <benji> interesting
[20:13] <thumper> morning
[20:18] <abentley> jcsackett, I have a sequel for you: https://code.launchpad.net/~abentley/launchpad/job-on-new-packaging/+merge/49285
[20:27]  * jcsackett looks
[20:42] <thumper> deryck: ping
[20:42] <thumper> deryck: do you know most about windmill tests?
[20:42] <deryck> thumper, I guess I'm your only help where windmill is concerned ;)
[20:42] <thumper> I have a question about lines like: start_url = (windmill.settings['TEST_URL'] + 'bugs/%d' % bug.id)
[20:43] <thumper> windmill.settings['TEST_URL'] is what?
[20:43] <thumper> and why?
[20:43] <thumper> and why does only the code windmill tests use it?
[20:43] <thumper> and lib/lp/testing/windmill/lpuser.py:35
[20:44] <deryck> thumper, I actually don't know what that is.
[20:44] <thumper> deryck: I think it may have to do with that wallyworld did, to do with parallelizing the test suite
[20:44] <deryck> thumper, only code tests made use of it, and I'm not sure why.
[20:44] <thumper> and not using hard coded ports
[20:45] <deryck> yeah, that would be my guess.  but that's not the way he originally mentioned about not hard coding ports.
[20:45] <thumper> deryck: I have a day of doing windmill today with three branches needing some form of windmill testing
[20:45] <thumper> deryck: I was thinking of a base class helper method
[20:45] <thumper> deryck: that uses canonical_url(obj, force_local=True)
[20:45] <thumper> deryck: and appending that to the base test url
[20:46] <thumper> deryck: there are too many uses of this already
[20:46] <deryck> thumper, why do you need windmill tests?  What are you wanting to test?
[20:46] <thumper> deryck: mumble?
[20:46] <deryck> sure
[20:46] <Ronnie> is there a python-launchpadlib that can run without compability problems on 8.04?
[20:46] <Ronnie> SWAT ^
[20:50] <jcsackett> abentley: r=me.
[20:50] <abentley> jcsackett, thanks.
[21:03] <deryck> wallyworld, windmill.settings['TEST_URL']
[21:05] <deryck> wallyworld, thumper -- client.open(url='%s/bugs/1' % BugsWindmillLayer.base_url)
[21:05] <_mup_> Bug #1: Microsoft has a majority market share <iso-testing> <ubuntu> <Clubdistro:Confirmed> <Computer Science Ubuntu:Invalid by compscibuntu-bugs> <EasyPeasy Overview:Invalid by ramvi> <GNOME Screensaver:Won't Fix> <Ichthux:Invalid by raphink> <JAK LINUX:Invalid> <The Linux OS Project:In Progress> <metacity:In Progress> <OpenOffice:In Progress by lh-maviya> <Tabuntu:Invalid by tinarussell> <Tivion:Invalid by shakaran> <Tv-Player:New> <Ubuntu:I
[21:12] <deryck> later on, everyone
[21:25] <wallyworld> thumper: http://people.canonical.com/~ianb/request-build-error.png
[21:26] <Ronnie> lifeless: wgrant ^^
[21:26] <lifeless> Ronnie: how far up are you wanting me to look ?
[21:27] <Ronnie> a few lines: (21:46:52) Ronnie: is there a python-launchpadlib that can run without compability problems on 8.04?
[21:27] <lifeless> the one we ship in 8.0.4 ?
[21:27] <lifeless> blah, 8.04
[21:27] <lifeless> checking rmadison
[21:28] <lifeless> no, nothing before karmic
[21:28] <lifeless> dapper is EOL in a few months
[21:28] <lifeless> so no plans to chane this
[21:28] <lifeless> Ronnie: why?
[21:29] <Ronnie> the ubuntu-nl server still runs on 8.04. we want in one case to communicate with launchpad (creating bug reports)
[21:29] <lifeless> if thats in the canonical datacentre, they are migrating them all to lucid
[21:29] <lifeless> just tee that up, it should be queued already
[21:30] <Ronnie> lifeless: its an own managed server
[21:30] <lifeless> ah
[21:31] <Ronnie> hoe flexible are loco's if we use canonical data centre>
[21:31] <Ronnie> can we deploy our apps ourself, are there limitations, whats the connection speed in europe etc
[21:32] <lifeless> theres a range of configs, really up to IS what and where
[21:32] <lifeless> in terms of capabilities and performance, pretty darn good; the dc is in London
[21:32] <lifeless> that said
[21:32] <lifeless> uhm, you should be able to get launchpadlib on 8.04, it will just require some work
[21:34] <Ronnie> lifeless: currently were thinking about staticcaly linking
[21:35] <lifeless> Ronnie: well, its pytho n:)
[21:36] <lifeless> you can probably backport the karmic set of packages fairly easily
[21:36] <beuno> so, is it known that the page to reqeust a merge proposal is slightly broken?
[21:37] <beuno> the "Other" option shows up as: "Other:'>"
[21:37] <beuno> which I assume is a broken template
[21:37] <thumper> beuno: yeah, I saw that today too... file a bug?
[21:37] <lifeless> there is a bug open
[21:37] <lifeless> its critical
[21:37] <Ronnie> lifeless: again about the hosting on canonical servers. how would such thing look like. if we have problems can we fix it ourself or do we have to ask canonical-isd, and what are there response times?
[21:37] <lifeless> sinzui is looking at it
[21:38] <beuno> cool
[21:38] <lifeless> Ronnie: I'm a poor source of info for this; #canonical-sysadmins is I think the channel for contact
[21:39] <Ronnie> lifeless: spel error on channel?
[21:39] <wgrant> #canonical-sysadmin
[21:39] <wgrant> No s.
[21:40] <Ronnie> thx wgrant
[21:43] <sinzui> beuno: the fix is waiting for the rollout
[21:47] <sinzui> abentley: I had a few remarks about your last branch. Maybe you have good reason to not do as I expected
[21:47] <abentley> sinzui, no, mostly copying bad ideas from existing code.
[21:52] <jam> i'm seeing an odd typo on the merge proposal page. https://bugs.launchpad.net/launchpad/+bug/716713
[21:52] <_mup_> Bug #716713: typo in propose page <Launchpad itself:New> < https://launchpad.net/bugs/716713 >
[21:52] <jam> Specifically, the "Other: "line is rendered as "Other: '>"
[21:52] <jam> Looking at the HTML it looks like invalid html
[21:52] <lifeless> sinzui: whats the bug number, so we can dup jams bug :)
[21:52] <jam> ah, beuno, you beat me to it
[21:54] <sinzui> lifeless: beuno jam: bug 714527 address the issue on the recipe and Mp pages
[21:54] <_mup_> Bug #714527: owned widget structured strings render as bits of quoted html <qa-ok> <regression> <Launchpad itself:Fix Committed by sinzui> < https://launchpad.net/bugs/714527 >
[22:01] <abentley> sinzui, thanks for your review.  I've pushed changes.  Diff still updating, though.
[22:02] <sinzui> abentley: I approved it.
[22:03] <abentley> sinzui, I saw, I just wanted to close the loop.
[22:33] <sinzui> wgrant: mumble?
[22:52] <huwshimi> sinzui: Can I get you to review the colour unification stuff I've done? Not now as it sounds like you've had a long day, but when you have a chance?
[22:52] <sinzui> huwshimi: I sure can
[22:52] <huwshimi> sinzui: Thanks heaps.
[22:52] <sinzui> I think I have done part of it already since I looked at it the other day
[22:54] <huwshimi> sinzui: OK great. Would be good if you could have a quick look at the css if you haven't already.
[22:54] <huwshimi> just putting together the mp
[22:59] <huwshimi> sinzui: For whenever you can get to it: https://code.launchpad.net/~huwshimi/launchpad/unified-colours-710446/+merge/49316
[22:59] <sinzui> thanks. I will wait for the diff to generate
[23:00]  * thumper is hacking the windmill base test case class
[23:02] <thumper> interesting.... windmill hanging on start at http://code.launchpad.dev:8085/windmill-serv/start.html
[23:03] <thumper> sometimes only...
[23:06]  * thumper wanders into the kitchen in search of food
[23:06] <huwshimi> sinzui: There's 60 or 70 lines removed from style.css which is nice
[23:09] <LPCIBot> Yippie, build fixed!
[23:09] <LPCIBot> Project db-devel build (357): FIXED in 5 hr 43 min: https://hudson.wedontsleep.org/job/db-devel/357/
[23:11] <lifeless> wgrant: the linkification of post-filing messages is nice
[23:11] <lifeless> wgrant: I'm really glad you jumped on that
[23:37] <huwshimi> sinzui: I removed that line. All ok?
[23:37] <sinzui> yes
[23:38] <huwshimi> sinzui: Thanks :)


[00:04] <realtacos> Hello, I am having issues using my external SSD (Sabrent Rocket 4 Plus in an RTL9210 M.2 NVME Adapter) since I made the change  from Ubuntu 20.04 to 22.04. When navigating it with Nautilus or Thunar, it behaves erratically, sometimes taking up to 30s to view a folder (making it a pain to navigate). When transferring a file, it takes about 30seconds to "prepare" for the transfer, then it transfers it at 500Mo/s speeds. I tried copying a c
[00:04] <realtacos> omplex folder structure of 6GB, it stays in "prepare" state for 10min, then I ran out of patience.  It behaves as expected on other machines running MacOS or Windows, and other drives behave as expected on my machine. What could be the issue or how could I find the issue ?
[01:58] <BinarySavior> hello, when trying to use stable-diffusion-web-ui I am getting a python error: https://bpa.st/NSCX4
[01:58] <BinarySavior> in #qt they said it could be mismatch with OS
[01:59] <BinarySavior> oh, they said to check with devs for stable diffusion ui
[02:00] <rbox> so check wit the stable diffusion devs...
[03:48] <oerheks> yes
[05:07] <asdfadsf> On 23.04, how can I get rid of pipewire and go back to pulse without also uninstalling my desktop?
[05:08] <asdfadsf> (which is what happens if I go through with `apt remove pipewire`)
[05:09] <rbox> if the dependencies say X depends on Y, and you want to keep X, you cannot remove Y
[05:10] <asdfadsf> So Gnome cannot exist without pipewire now?
[05:10] <rbox> thats how dependencies work
[05:10] <rbox> if the package says it depends on somethign
[05:11] <rbox> i dunno if gnome can't exist, but if the dependency is there, then it has to be installed
[05:11] <asdfadsf> Out of curiosity, where can I find the accouncement of so drastic a hard change?  Is it a Gnome thing? An Ubuntu thing?
[05:12] <NickH> Try "sudo apt install pulseaudio". You'll likely just loose some gnome metapackages.
[05:12] <rbox> accouncemnt?
[05:12] <rbox> announcement*
[05:12] <NickH> Eg gnome, gnome-core, task-gnome-desktop
[05:12] <asdfadsf> If this is the case, it seems extremely drastic
[05:13] <NickH> Removing metapackages is no "drastic".
[05:13] <asdfadsf> Suddenly only pipewire for Gnome, period, forever, all of a sudden, seems like a big thing
[05:13] <asdfadsf> If that is the case
[05:13] <asdfadsf> So yes, "announcement"
[05:14] <NickH> Do you understand what a metapackage is?
[05:14] <asdfadsf> Any hard documentation that this is a thing that has happened
[05:14] <rbox> most peopel dont care...
[05:14] <rbox> the package is the dcouemtnation
[05:14] <asdfadsf> A changelog, anything
[05:14] <rbox> the package...
[05:16] <NickH> It's just becuase the gnome-core metapackage depends on pipewire-audio.
[05:16] <asdfadsf> Is that just in Ubuntu, or "upstream" or whatever in Gnome?
[05:17] <alkisg> asdfadsf: pipewire is also used for video streaming, xdg portals, screen sharing etc, it's understandable that gnome switched to it. It's an upstream gnome change
[05:17] <lotuspsychje> +1
[05:18] <alkisg> You should be able to continue using pulseaudio for a while, but if you don't have an actual issue with pipewire, you shouldn't...
[05:18] <NickH> Is there some underlying problem that you are trying to solve by not using pipewire?
[05:19] <asdfadsf> I do have an actual issue with pipewire, is the thing.  A horrible crackling/stuttering that multiple days of fucking with it have not been able to fully banish
[05:19] <asdfadsf> Never had a problem with pulse
[05:19] <NickH> How do you know it is pipewire that is causing this problem?
[05:20] <alkisg> asdfadsf: OK, if you have the stomach for it, you could try to reproduce it in other distributions, and if it's an upstream pipewire thing, you could report it there
[05:20] <alkisg> Otherwise, sure, go back to pulseaudio and wait in case it gets fixed when others report it
[05:20] <asdfadsf> It was not a problem, then I upgraded ubuntu to a version where pipewire is forced on me, and now it is a show-stopping problem that manifests constantly
[05:20] <NickH> This reminds me of when pulse was first introduced and many people jsut wanted alsa :-)
[05:21] <asdfadsf> I thought this channel just got done talling me that I *cannot* remove pipewire withotu also removing gnome
[05:21] <alkisg> Pipewire is binary compatible with alsa, pulse and jack, so it should be better in that regard
[05:21] <lotuspsychje> check the recent pipewire bugs here too; https://launchpad.net/ubuntu/+source/pipewire/+bugs?orderby=importance&start=0
[05:21] <NickH> I'll repeat, gnome and gnome-core are just metapackages.
[05:22] <asdfadsf> I have no idea what that means
[05:22] <asdfadsf> Can I or can I not uninstall pipewire without also uninstalling gnome
[05:22] <NickH> They don't actually contain anything, they just depend on other packages.
[05:24] <alkisg> asdfadsf: just use some askubuntu answer, e.g. https://askubuntu.com/questions/1407885/how-to-uninstall-pipewire-and-go-back-to-pulseaudio
[05:26]  * alkisg is using mate so can't test on gnome currently
[05:26] <NickH> The gnome and gnome-core packages will be removed, but all the components of the gnome desktop *except* for pipewire will remain.
[05:26] <asdfadsf> $ sudo apt remove pipewire
[05:26] <asdfadsf> [...]
[05:26] <asdfadsf> The following packages will be REMOVED:
[05:26] <asdfadsf>   gdm3 gnome-shell pipewire pipewire-pulse ubuntu-desktop ubuntu-session wireplumber [etc]
[05:27] <alkisg> Getting gdm3 removed isn't good, don't do it
[05:27] <NickH> Don't run that. Run "sudo apt install pulseaudio"
[05:27] <asdfadsf> Is it possible to do a thing where all the gnome things do not appear in this list, is my question, to which I am getting conflicting answers
[05:28] <NickH> You are not getting conflicting answers.
[05:29] <asdfadsf> So is what I should be trying to do here be to have both pulseaudio and pipewire installed, and somehow disable pipewire while leaving it installed and enable pulseaudio? Is that a thing that is possible?
[05:29] <NickH> No, they conflict.
[05:30] <NickH> Thats why installing pusleaudio will remove pipewire.
[05:31] <asdfadsf> Okay so "Otherwise, sure, go back to pulseaudio and wait in case it gets fixed when others report it" which someone else said was in error?
[05:32] <NickH> That does not mean having them both installed at the same time.
[05:33] <asdfadsf> So I can't have them both installed at the same time, and I can't remove pipewire. So how do I actually accomplish "Otherwise, sure, go back to pulseaudio and wait in case it gets fixed when others report it"?  Or, was that said in error?
[05:33] <asdfadsf> Do you see my reason for further confusion here?
[05:34] <NickH> You remove pipewire by installing pulseaudio.
[05:35] <asdfadsf> Okay, apt install pulseaudio suceeded and I still have a desktop.  What steps do I take to go from this state to using pulseaudio and not pipewire while still hvaing a desktop?
[05:36] <NickH> sudo apt install gnome
[05:37] <asdfadsf> Okay done
[05:37] <NickH> Installing the gnome meta package get you back to pipewire
[05:38] <asdfadsf> So...
[05:38] <asdfadsf> I am not following here
[05:38] <asdfadsf> You told me to do a thing
[05:38] <asdfadsf> I did it
[05:38] <NickH> I give up.
[05:39] <alkisg> asdfadsf: is that ubuntu (gnome) 22.04?
[05:40] <asdfadsf> That's fine, thank you for trying, but for one last point of clarification:
[05:40] <asdfadsf> was
[05:40] <asdfadsf> you: sudo apt install gnome
[05:40] <asdfadsf> me: Okay done
[05:40] <asdfadsf> you: Installing the gnome meta package get you back to pipewire
[05:40] <asdfadsf> Me somehow doing something wrong, or you realizing that your initial suggestion wouldn't help?
[05:41] <asdfadsf> alkisg: I believe I am on 23.04
[05:41] <alkisg> Well, tested on an Ubuntu GNOME 22.04 VM, and additionally with ubuntu-desktop-amd64.iso, pulseaudio was preinstalled there
[05:42] <asdfadsf> 23 vs 22
[05:42] <asdfadsf> Can/should I downgrade to 22.04?
[05:42] <alkisg> Let me check on 23.04. Was your 23.04 updated from older versions? Which one was the first one?
[05:42] <alkisg> I have an 23.04 VM too, wait...
[05:42] <asdfadsf> Yes upgraded from an initial install of I don't even remember what version like 4 years ago
[05:45] <alkisg> Indeed pulseaudio isn't preinstalled in 23.04, like it is in 22.04
[05:46] <alkisg> sudo apt install pulseaudio, installs some packages, and removes pipewire-alsa pipewire-audio, without purging any meta-packages like ubuntu-desktpo
[05:47] <alkisg> So after installing pulseaudio, try to follow https://askubuntu.com/questions/1407885/how-to-uninstall-pipewire-and-go-back-to-pulseaudio
[05:47] <alkisg> You don't need to uninstall pipewire, just disable it
[05:47] <asdfadsf> Which part of that
[05:48] <alkisg> The answer part
[05:48] <asdfadsf> Because that was my first stop many days ago, and following the first answer was my first experience with having my desktop completely nuked
[05:48] <alkisg> "The following commands helped me:". ..
[05:48] <alkisg> Do not do the removing pipewire part
[05:48] <asdfadsf> That answer ends with "sudo apt remove pipewire-audio-client-libraries pipewire"
[05:48] <asdfadsf> Okay
[05:48] <alkisg> As that answer is for 22.04 and not your 23.04
[05:49] <asdfadsf> So if I paste in multiple lines people get mad at me, I presume it results in multiple messages rather than one message that has newlines in it?
[05:50] <asdfadsf> https://dpaste.com/DMMBR7XHG
[05:50] <asdfadsf> Is that the correct etiquette here?
[05:55] <alkisg> Yes for pasting more than 3 lines you should be using a pastebin like you did
[05:55] <alkisg> asdfadsf: are you on vanilla ubuntu gnome 23.04, or on something like linuxmint?
[05:56] <alkisg> (or popos, or whatever...)
[05:56] <asdfadsf> Vanilla 23.04, as upgraded from whatever the default desktop install was several years ago
[05:56] <alkisg> And you ran sudo apt install pulseaudio, and yet it says the service doesn't exist? I just tested it on 23.04 and it worked ifne
[05:56] <asdfadsf> Yes
[05:57] <asdfadsf> Ah, I did that before and it went through fine
[05:57] <asdfadsf> If I try to run it again: "The following packages will be REMOVED:  gnome gnome-core pipewire-alsa pipewire-audio"
[05:57] <asdfadsf> No idea what changed
[05:57] <alkisg> ...that's by just running apt install pulseaudio ?
[05:58] <asdfadsf> Yes
[05:59] <alkisg> Since you do have a somewhat messed up system, I'd suggest a clean installation (22.04 preferred). If the crackling doesn't happen there in a new system and a new user, then the problem was somewhere in your upgraded system and upgraded user settings
[06:00] <asdfadsf> Thanks for trying. Yes I've been trying to avoid a clean install for years because of some organizational issues in my backups I don't want to deal with
[06:00] <asdfadsf> Definitely going nixos, shoudl avoid precisely this type of problem which I've had way too many times over the years
[06:01] <alkisg> You can still check if disabling/enabling the units gave you pulseaudio back. But your system feels a bit unreliable to me
[06:01] <alkisg> Note that when upstreams make decisions, switching distributions won't really help much
[06:02] <alkisg> nixos is supposed to have a nice packaging system, but I'm afraid that one too doesn't take all use cases into account
[06:02] <asdfadsf> Yeah but the last 2 days of throwing the kitchen sink at configs and having no idea what changed where, the system getting into an aparently inconsistent state, every time I kill my desktop having to remember to do 5 different things to fix other problems after I reinstall
[06:02] <asdfadsf> Absurd mess
[06:05] <asdfadsf> disabling/enabling units fails, "Job for pipewire.service canceled" and "Failed to enable unit: Unit file pulseaudio.service does not exist."
[06:09] <alkisg> Yeh it sounds like indeed your system is in an inconsistent state if you installed pulseaudio and yet don't have the service
[06:10] <asdfadsf> Well, I installed pulseaudio 15 minutes ago, and it seemed to succeed, and then I tried to install pulseaudio 5 minutes ago and it said that would remove gnome, is the worse inconsitency
[06:10] <asdfadsf> Anyways yeah seems doomed thanks for trying fuck linux audio forever
[06:22] <ppw> maybe check out Fedora Silverblue
[06:29] <asdfadsf> ppw: the appeal of NixOS here is configuration.nix, not whatever Silverblue is offerring which I don't quite get (unless it is also operating on an equivalent to configuration.nix)
[06:29] <ppw> I thought you wanted an immutable OS
[08:13] <weedmic> Please provide a terminal command to install Qt_14 - I used "sudo apt-get install qt4-default", but that just said I had the newest default.  tab at qt5 - does not offer any versions.
[08:13] <Bogwitch> Hi All - I'm struggling nmcli
[08:13] <Bogwitch> NAME                UUID                                  TYPE      DEVICE
[08:13] <Bogwitch> Hotspot             b5761fbf-e863-47e7-9c35-2543c0686f41  wifi      --
[08:13] <Bogwitch> Wired connection 1  fbd9d4f0-f3cb-3e66-8353-23130b3ee9f7  ethernet  --
[08:14] <Bogwitch> sudo nmcli con up Hotspot
[08:14] <Bogwitch> Error: Connection activation failed: No suitable device found for this connection (device wlx1cbfce90db08 not available because device is not available).
[08:14] <Bogwitch> This has worked when I first set up the profile - any ideas why it's upset now?
[08:14] <weedmic> use a paste programme and provide link
[08:15] <weedmic> I need either Qt_5.14 or 5.15
[08:17] <weedmic> yes, something is not being seen Bogwitch - did you do nmcli c s (to show the possible connection), then sudo nmcli device status (to see if they are working/accessible) and then sudo nmclie c delete gsm* (*=duplicates that are causing confusino)?
[08:19] <Bogwitch> Hmm... device status is showing 'unavailable'
[08:21] <weedmic> correct - that is why
[08:21] <weedmic> did you switch devices - like insert a different sim?
[08:23] <Bogwitch> No changes apart from possible updates and a reboot.
[08:26] <weedmic> is the device a pi like thing?
[08:26] <weedmic> i meant the host
[08:26] <weedmic> and what is the device a sim?
[08:28] <Bogwitch> Running on a standard Intel box, ubuntu 22.04. It's a standard WiFi device
[08:28] <Bogwitch> Just trying to set it up as a hotspot.
[08:28] <weedmic> and the source of the signal is on?
[08:29] <Bogwitch> Not sure I understand the question...
[08:29] <weedmic> just start over, but don't proceed until the line about availability turns green and says connected
[08:29] <Bogwitch> OK, I'll wipe out the previous config - I'll report back :)
[08:29] <weedmic> Anyone know a command to installt eh qt5 version I want and not the default?
[08:30] <weedmic> I don't think that is necessary, just readd the device, and proceed from there.
[08:31] <weedmic> I can't do it from memory, but did almost 1k pi devices with sims, the times it failed were - no activated sime, or no signal from provider.  in once case, the pi device needed the io's turned on.
[08:34] <waveform> weedmic, apt install qtbase5-dev-tools (on jammy that should get you 5.15)?
[08:36] <waveform> (slightly surprised tab at qt5 didn't offer anything useful -- are bash completions working at your prompt?)
[08:36] <weedmic> oic - that's quite a different pakcage name - probably the walll i dented my head from - ty
[08:36] <weedmic> is jammy similar to synaptic?
[08:37] <waveform> sorry, I should've said 22.04 (jammy :)
[08:37] <waveform> (I was assuming you're on the current LTS, which is 22.04 -- jammy jellyfish)
[08:38] <weedmic> oic, jammy is the codename for 22.04
[08:38] <waveform> there's also qtbase5-dev which you probably want also (I forget which includes qt5-qmake, but one of them doesn't include it for some bizarre reason)
[08:40] <weedmic> it seems to me that 5.12.8 is the newest - yet pebear requires 5.14 or 5.15 - i need to re read things perhaps they mean something else :(
[08:44] <weedmic> :D found the odler version first try on make :D - so much for putting dependencies first
[08:45] <weedmic> waveform: you up?  i can review the man page now
[09:13] <weedmic> apt-file search libc.so.6 - searches repositories or local storage?
[09:22] <ogra> weedmic, it recursively searches your local package cache (the thing you update with "apt update") ... so it searchs bot actually ... but you have to keep the cache up to date yourself indeed
[09:22] <ogra> *searches both
[09:27] <Bogwitch> @weedmic - Embarrassing! Wifi adapter was disabled in the GUI - I re-enabled and now my hotspot is happy again. :)
[09:29] <ogra> FWIW ... if you are used to the GUI, using nmtui instead of nmcli on the commandline is often helpful
[09:38] <Bogwitch> @ogra - I'm usually happy on the CLI, I use a log of headless systems. In this case, it appears that the GUI was competing - I'm not used to the GUI :D
[09:40] <waveform> weedmic, sorry was out at an appointment -- if you're on 22.04 (which you can confirm by running "lsb_release -a") you should have qt 5.15 available (if you run "apt policy qtbase5-dev" you should see a couple of available versions, one release version (5.15.3+dfsg-2) and one -updates version (5.15.3+dfsg-2ubuntu0.2)
[09:46] <ogra> Bogwitch, well, if you have not seen it, nmtui is still worth a look ... 🙂 (it would have told you about the disabled interface i think)
[09:47] <Bogwitch> Yes, that's useful - thanks!
[10:23] <Jakov> how to explicitly close all terminal windows?
[10:30] <ogra> Jakov, right click on the icon in the dash ... pick the "close all windows" option ...
[10:55] <Jakov> it asks to click to close each window, how can avoid that and close all with lesser clicks?
[11:00] <weedmic> ogra - i was hoping it searched both
[12:06] <BluesKaj> Hi all
[12:20] <jnd> Hello guys, I feel like a total moron but I cannot find any package which I could create .lzh archive with. Does somebody here has any experience with this? I have found lha package  but can work only with already exiting archives.
[12:21] <ravage> jnd: 7zip should be able to handle lzh
[12:22] <thrice> or lhasa ?
[12:22] <thrice> according to:  https://manpages.ubuntu.com/manpages/trusty/man1/lhasa.1.html
[12:22] <thrice> sorry, https://manpages.ubuntu.com/manpages/lunar/man1/lhasa.1.html  (same thing)
[12:23] <jnd> thrice: Yeah that's what I was talking about :) "The current version does not allow the creation of new archive files."
[12:23] <thrice> oh, sorry, I misread, and thought you wanted to extract
[12:23] <jnd> ravage: Thank you! I'm gonna give it a try.
[12:24] <weedmic> I knew nothing about, but read this - 1988 - is very very old - :o https://en.wikipedia.org/wiki/LHA_(file_format) (jnd)
[12:25] <weedmic> are you making some dos games like 8-bit guy?
[12:28] <weedmic> fyi, jnd, in man:tar, there is the "--lzip" option, but I don't know if it is the same as lzh
[12:29] <weedmic> man:zip also mentions lzh directly, but it was too english for me to understand it fully.
[12:35] <SteelRose> Hi all! anyone versed in ZFS? I need some advice... Thanks !
[12:42] <jnd> weedmic: gonna take a look ;)
[12:43] <weedmic> let's say it works, how do you test it before you rely on it?
[12:47] <alkisg> SteelRose: it's better to ask the question rather than ask to ask. Some may know some zfs; no idea if what you want is in their knowledge base
[12:50] <Jakov> i have loop in terminal application in Ubuntu, can I stop using some short cut as I do with Windows terminal?
[12:57] <alkisg> Jakov: do you mean to press Ctrl+C to stop the running application in the terminal?
[13:00] <ogra> Jakov, yeah, what alkisg said, ctrl-C is the common keystroke to stop things in terminals since the 1970s on unix-like systems ...
[14:29] <Bardon> Hello, I am installing a x11vnc server. It works fine but I'd like to create a unit file so it may be started from systemd. I am using this line to start the x11vnc server: `/usr/bin/x11vnc -display :0 -rfbauth /home/myuser/.vnc/passwd -forever -auth /var/run/sddm/*`, but it seems like systemd doesn't like this '*'.
[14:29] <Bardon> This is the only way I found to start the x11vnc server without being logged in as the user sharing their session ("myuser")
[14:30] <Bardon> But the file in /var/run/sddm/ changes after a reboot so I can't specify it in the command..
[14:30] <Bardon> How can I work this out?
[14:31] <leftyfb> Bardon: /run/user/1000/gdm/Xauthority
[14:33] <Bardon> leftyfb: There is no gdm directory :s. But this is lubuntu so it might be a different dm
[14:34] <leftyfb> maybr sddm? I'm not sure about lxde
[14:35] <Bardon> there is no *dm in /run/user/1000/ :s
[14:35] <Bardon> But I see a ~/.Xauthority file
[14:35] <Bardon> I'll try linking that
[14:39] <Bardon> It seems to be working fine :)
[14:39] <Bardon> Thanks a lot!
[14:58] <MadLamb> Why ubuntu bluetooth management is so horrible? Out of nowhere my pixel buds pro starts to not be able to play a simple video on youtube without breaking up all the time. If I move away 1m from the computer it also starts to freak out. It was working normally until today.
[15:03] <MadLamb> when I switch the output device I get "kernel: Bluetooth: hci0: corrupted SCO packet" in the journal
[15:05] <ogra> did you get any updates ? here all my BT devices work fine in a default 22.04 install
[15:06] <ogra> such stuff usually doesnt happen out of the blue ... either you changed someting or an updated package has a regression ... or there is a hardware issue (battery low on the buds for example)
[15:06] <ogra> war, please turn off public away messages in this channel, thanks
[15:54] <Guest14> Hi
[15:54] <Guest14> i am trying to install ubuntu 20.04 desktop on lenovo laptop
[15:55] <Guest14> lenovo is advising to install
[15:55] <Guest14> # sudo apt-get install linux-image-oem-20.04
[15:55] <Guest14> # sudo apt-get install linux-headers-oem-20.04
[15:56] <Guest14> to install wifi driver but at the moment there is no internet connection to apt-get install xxxx
[15:56] <Guest14> what is manual way to install linux-image-oem in ubuntu?
[15:58] <Guest14> anyone can help?
[15:59] <ravage> probably a cable
[15:59] <Guest14> hmm no ethernet port
[15:59] <Guest14> only wifi in laptop
[15:59] <ravage> connect your phone via usb tethering
[16:05] <MadLamb> ogra:
[16:05] <MadLamb> ogra: I have not changed anything in the last days. I am on 23.04.
[16:07] <MadLamb> ogra: I was the one having that issue the other day with deleting bluetooth libraries and having the whole system destroyed. You helped me to restore it by downloading the library in another machine and getting the networking manager working again.
[16:07] <MadLamb> ogra: the whole point I deleted bt in the first place was because it was also behaving weirdly. It has been fine since that day, but today it decided to behave again.
[16:08] <MadLamb> ogra: I am sure the issue does not come from the Pixel Buds, they work fine on my phone.
[16:10] <Guest14> ravage: Thanks a lot!! didnt think about that option
[16:31] <ocx32> hi all, i am trying to figure a way to take a webcam snapshot when a user tries to login to my pc and gets an authentication error, any idea how to do that?
[16:47] <ogra> ocx32, first hit on google ... https://askubuntu.com/questions/253189/can-i-make-the-webcam-take-a-picture-when-an-incorrect-password-is-entered
[17:10] <joo> did anybody solve the nautilus problems in the most recent ubuntu 23? using file save dialog trying to save something to my dropbox takes almost a whole minute to load the folder
[17:16] <jasongodev> is Ubuntu Pro available for Kubuntu?
[17:17] <jasongodev> there is no GUI and ubuntu-advantage-tools is not installed by default...but can be installed...
[17:18] <jasongodev> I wonder if kubuntu and its kde packages are covered
[17:31] <joo> i just noticed how the file save dialog in libreoffice is blazing fast, but the file save dialog in firefox is very poor in performance
[23:25] <NewtonTrendy> i heard ubuntu is the best operating system, that is 100% right?
[23:28] <tomreyn> it is, if you think it is.
[23:28] <NewtonTrendy> it is
[23:29] <NewtonTrendy> :)
[23:30] <NewtonTrendy> it is the best of all worlds
[23:30] <NewtonTrendy> :)


[05:44] <Cracknel> stas: a dat-o in balarii serverul
[05:44] <Cracknel> 16 packets transmitted, 0 received, 100% packet loss, time 15006ms
[13:30] <ag24sas> wb citro
[13:32] <ag24sas> scuze