[00:00:11] fuck yeah, moar globals :D [00:05:54] class constant :) [00:08:28] [Commons-iOS] brion pushed 5 new commits to master: http://git.io/TMhj3g [00:08:28] Commons-iOS/master 2fbe772 Felix Mo: Upload button in detail view now triggers upload action in 'MyUploadsViewController' and upload button in main view is now only enabled when there is an upload queued [00:08:28] Commons-iOS/master 6d6cf1d Felix Mo: Merge remote-tracking branch 'upstream/master' [00:08:28] Commons-iOS/master 444aa66 Brion Vibber: Merge remote-tracking branch 'felixmo/master' into upload-count... [00:11:37] [Commons-iOS] brion pushed 2 new commits to master: http://git.io/0kMJ9w [00:11:37] Commons-iOS/master a2a2531 Daniel Zhang: adding disk space utilities [00:11:37] Commons-iOS/master 0d924d5 Brion Vibber: Merge remote-tracking branch 'dz1111/Tools'... [00:13:22] New review: Brion VIBBER; "Patch Set 3: Code-Review+1" [mediawiki/extensions/MobileFrontend] (master) C: 1; - https://gerrit.wikimedia.org/r/47915 [00:14:26] New patchset: awjrichards; "(mingle 330) Displays number of user uploads on upload dashboard" [mediawiki/extensions/MobileFrontend] (master) - https://gerrit.wikimedia.org/r/48978 [00:15:01] Change abandoned: awjrichards; "abandoned in favor of squashed and updated set: https://gerrit.wikimedia.org/r/#/c/48978/" [mediawiki/extensions/MobileFrontend] (master) - https://gerrit.wikimedia.org/r/48059 [00:15:15] Change abandoned: awjrichards; "abandoned in favor of squashed and updated set: https://gerrit.wikimedia.org/r/#/c/48978/" [mediawiki/extensions/MobileFrontend] (master) - https://gerrit.wikimedia.org/r/48164 [00:15:50] Change abandoned: awjrichards; "abandoned in favor of squashed and updated set: https://gerrit.wikimedia.org/r/#/c/48978/" [mediawiki/extensions/MobileFrontend] (master) - https://gerrit.wikimedia.org/r/48584 [00:18:29] Change abandoned: Jdlrobson; "This patchset got left for far too long and has gone stale as a result. I have spent too much time r..." [mediawiki/extensions/MobileFrontend] (master) - https://gerrit.wikimedia.org/r/43003 [00:25:21] New patchset: Jdlrobson; "locally track languages the reader can speak (alpha)" [mediawiki/extensions/MobileFrontend] (master) - https://gerrit.wikimedia.org/r/43002 [00:28:23] Maryana: Is the 10% relative to total page views ? [00:28:42] no, 10% of the account creation rate on desktop for the same time period [00:29:01] mobile account / total page views vs desktop account / total page views [00:29:08] thats what i thought. we should get it relative to the eyes that see it [00:29:13] thats going to be a key metric for us [00:29:34] Maryana: do you have the numbers for total pages of mobile vs desktop for the last 24 hrs ? [00:29:35] we still don't have that data reliably. it requires additional work in this current iteration [00:30:06] i can guesstimate something, but it won't be exact [00:30:13] go for it [00:49:53] Change abandoned: Jdlrobson; "This patchset got left for far too long and has gone stale as a result. I have spent too much time r..." [mediawiki/extensions/MobileFrontend] (master) - https://gerrit.wikimedia.org/r/43001 [00:50:01] anyone else seeing test.m.wikipedia.org return 503s? [00:50:07] New patchset: Jdlrobson; "alpha: show preferred languages at top of language selector" [mediawiki/extensions/MobileFrontend] (master) - https://gerrit.wikimedia.org/r/48984 [00:50:58] New review: Jdlrobson; "Patch Set 2: Verified+2 Code-Review+2" [mediawiki/extensions/MobileFrontend] (master); V: 2 C: 2; - https://gerrit.wikimedia.org/r/48857 [00:50:59] Change merged: Jdlrobson; [mediawiki/extensions/MobileFrontend] (master) - https://gerrit.wikimedia.org/r/48857 [00:51:23] awjr: 503 for me too on test.m.wp.o [00:51:29] :( [01:07:16] YuviPanda: are you still awake? [01:13:15] im outta here - jdlrobson, have a great trip! [01:13:22] thanks awjr just about to leave myself [01:13:23] exciting times :D [01:13:26] :D [08:09:30] [Commons-iOS] dz1111 opened pull request #25: Initial configuration of the GHUnit testing framework (master...GHUnit3) http://git.io/9tZ2DA [09:22:48] New review: Siebrand; "Patch Set 1: Code-Review-1" [mediawiki/extensions/MobileFrontend] (master) C: -1; - https://gerrit.wikimedia.org/r/48978 [09:48:23] [Commons-iOS] dz1111 opened pull request #26: Initial configuration of the GHUnit testing framework (master...GHUnit4) http://git.io/BZVzZg [14:32:56] New review: Zfilipin; "Patch Set 1:" [mediawiki/extensions/MobileFrontend] (master) - https://gerrit.wikimedia.org/r/47330 [15:09:17] New review: Zfilipin; "Patch Set 2: Code-Review-1" [mediawiki/extensions/MobileFrontend] (master) C: -1; - https://gerrit.wikimedia.org/r/47694 [16:05:32] @seen jcmish [16:06:17] NEVER [16:56:24] hey brion [17:00:23] hey notnarayan [17:00:39] brion: any updates I could help you with :) [17:02:08] oh i've been refactoring internally and starting on the event logging [17:02:20] but will probably start on that pretty photo button today or tomorrow too :D [17:02:42] brion: great! :D [17:03:10] * brion takes another look at http://commons.wikimedia.org/wiki/File:Commons-ios-app.png [17:03:34] brion: anything specific? [17:03:36] notnarayan: did we want to do that 'tutorial' screen that points at the buttons? [17:03:45] that we had on the wireframes earlier? [17:03:49] brion: yes [17:04:10] brion: not sure if its part of this iteration though [17:04:11] got a font you want to use for that? i'll see if i can embed pretty handwriting ;) [17:04:17] eh we could wait on it if need be [17:04:38] brion: iv been looking at a few fonts. the trouble is, the free ones are not that pretty :) [17:04:43] brion: but I'm looking. [17:08:38] ah well [17:10:30] wheeee more testing updates for ios: https://github.com/wikimedia/Commons-iOS/pull/26 [17:11:05] :) [17:14:10] agh i pushed caps lock and it was like myh terminal was shouting [17:14:13] GIT CHECKOUT MASTER [17:14:44] would've worked on WIndows:) [17:14:55] heh [17:14:58] lulz [17:15:05] [Commons-iOS] brion pushed 9 new commits to master: http://git.io/sxNIZA [17:15:05] Commons-iOS/master eb602a1 Daniel Zhang: adding ghunit target [17:15:05] Commons-iOS/master fa32680 Daniel Zhang: copying ghunit framework [17:15:05] Commons-iOS/master 16a72b0 Daniel Zhang: adding ghunit framework to project [17:15:19] actually on osx 'GIT' works but it doesn't recognize the 'CHECKOUT MASTER' :) [17:17:16] * MaxSem scratches his head: he remebers there was a reason why he reimplemented OutputPage::makeResourceLoaderLink() - but he doesn't remember why [17:18:27] ah, versions [17:18:36] die [17:18:45] hey brion :) [17:18:50] yo yo [17:18:56] how's android coming? [17:19:19] YuviPanda: ya, hows android coming ? [17:19:45] * brion goes to review some android java code [17:19:55] brion: EventLoggin with ori-l, mostly. Fixed one bug in 2.3 but some more things are still a mystery. [17:20:04] spiff [17:20:07] what's still broken on 2.3? [17:20:18] should have all the required logging in place tonight. still debugging stuff with him, since I'm the first non-js client [17:20:34] brion: sync provider doesn't show up + notification progress bar crash [17:20:40] :( [17:21:30] notnarayan: how's visual design for Android coming laong? [17:21:31] *along [17:21:40] YuviPanda: i will surprise you :) [17:21:49] :) [17:21:50] YuviPanda: but not tonight. :D [17:21:54] ok [17:22:04] YuviPanda: nah, joking. [17:22:19] YuviPanda: are you implementing the client-side schema validation in the java version? [17:22:24] nope :P [17:22:24] or just passing data through :) [17:22:29] haha excellent [17:22:37] i'll do the same [17:22:43] :D [17:25:48] YuviPanda: do you have a branch up with the event logging code that i can look at? or shall i just work on mine and wait :D [17:25:57] oh I can push... [17:26:00] to a branch yes [17:26:09] it's not complete because debugging but it does generate valid events! [17:26:19] ok [17:29:57] brion: branch coming right up [17:30:17] thx [17:30:42] wow this connection is... bad [17:31:07] :( [17:32:09] [android-commons] yuvipanda created eventlogging (+1 new commit): http://git.io/R0KVmQ [17:32:09] android-commons/eventlogging 0d92012 YuviPanda: Initial cut of EventLogging support [17:32:17] brion: ^ [17:32:27] whee [17:32:44] Project Android-Commons (mobile) - Nightly builds build #55: SUCCESS in 34 sec: https://integration.mediawiki.org/ci/job/Android-Commons%20(mobile)%20-%20Nightly%20builds/55/ [17:33:00] hmmm github is acting up [17:33:03] https://github.com/wikimedia/android-commons/branches/eventlogging gives me a 404 [17:33:41] stabby stab stab [17:33:58] ah m aybe github is acting up [17:34:00] not my connection [17:34:27] heh [17:39:56] tfinc: can you poke RT folks (Daniel, I think?) about my request? [17:40:07] YuviPanda: i'm remote today [17:40:16] I am currently blocked on someone else (ori or maryana) being available to test this now [17:40:20] ok [17:40:23] but i'll see what i can do [17:40:39] tfinc: thanks [17:41:30] YuviPanda: notpeter is oncall for RT. i bet he'll be in soon [17:41:49] brion: I suppose you do have shell access [17:42:16] hmm i may [17:42:18] this stat1? [17:42:25] anywhere in eqiad, really [17:42:31] but stat1 is easiest [17:42:35] yeah [17:42:46] and I suppose you also know how to check the logs, etc? [17:43:12] stat1 won't let me in [17:43:20] Permission denied (publickey). [17:45:47] brion are you forwarding your key? [17:45:53] * brion slaps self [17:46:02] yeah i should pass that paramater] [17:46:06] :) [17:47:16] ok i'm in [17:47:42] ori-l: what should i be looking for? [17:48:41] brion: on stat1 you can run "zsub vanadium.eqiad.wmnet:8600 | grep MobileApp" [17:49:08] nice [17:49:14] YuviPanda: ok go for it, i'm watching [17:49:32] i'm generating fake events every 2 seconds [17:49:33] brion: :D [17:49:38] i see em [17:49:40] yeah me too :P [17:49:42] oh nice :) [17:50:05] haha at brion talking on -office :P [17:50:08] clientIp? i hope that's hashed right :D [17:50:18] that's something that eventlogging adds [17:50:21] ori-l: ^ [17:50:22] brion: and salted [17:50:26] yay [17:50:36] brion: I am recording cleartext username though [17:50:44] YuviPanda: need a copy of what's going in? [17:50:57] I'll stop generating spam events [17:51:01] brion: so what I really wanted to see was if my stuff is going through into the database [17:51:07] I know that they're coming through here... [17:51:10] ah ok [17:52:10] YuviPanda: if they're showing up on :8600, they should be on the database too [17:52:19] ah, nice! [17:52:28] excellent [17:53:09] ....hrm, actually, there's a generic researcher account that has access to that database that I'm pretty should I can just give you, YuviPanda. [17:53:16] * pretty sure [17:53:23] .... that would be nice :D [17:53:47] btw: http://dpaste.de/EgSbC/raw/ for generating MobileAppUploadAttempts events [17:56:08] * ori-l slaps forehead. [17:56:12] aah bash :) [17:56:22] No, that won't work, since you'll need to tunnel through a host on cluster to get to that database. [17:57:06] So we're back to plan A: ops-begging :) [17:57:37] and/or using brion as a human unix pipe [17:57:43] hehe [17:58:22] ori-l: :P [17:58:50] Ok, I should probably head to the office at some point [17:59:07] I'll be back online in an hour [18:00:08] ori-l: :) I might not be around... [18:02:26] YuviPanda: ? [18:02:37] jcmish: hey. You pinged yesterday? [18:02:41] howdy yessir [18:02:49] Can I get some of your time early next week [18:03:05] to walk through getting my Android simulators to play nice? [18:03:08] sure thing! [18:03:15] I hate them right now [18:03:19] Monday? [18:03:28] haha yes. they're fickle little s [18:03:30] Monday is a holiday but yes [18:03:35] that's the PERFECT day for me [18:03:45] I can then just focus on that [18:03:48] you just tell me when [18:04:06] ah :D [18:04:12] I didn't realize monday is a holdiay :) [18:04:15] then tuesday! [18:05:08] I really don't mind Monday [18:06:13] sweet. Then about 11 am PST? [18:06:27] yup that works [18:06:30] thanks a bunch! [18:07:09] :D [18:07:14] jcmish: put up a calendar event so I don't forget? [18:07:23] yup doing that now :D [18:07:25] hmmm [18:07:27] I know you well ;-) [18:07:31] i'm missing something, this isn't triggering [18:07:35] http://bits.wikimedia.org/event.gif?%7B%22source%22%3A%222%22%2C%22username%22%3A%22Brion%20VIBBER%22%2C%22filename%22%3A%22Testfile%201360865181.png%22%2C%22result%22%3A%22success%22%7D; [18:08:15] ori-l: I notice that brion is going through the same process I did :P [18:08:20] jcmish: you do indeed :) [18:08:22] heh [18:08:26] brion: so that needs to be 'encapsulated' in something else [18:08:37] aha there we go [18:08:43] i found it in the js [18:08:45] :D [18:08:58] or EventLog.java line 69 [18:10:11] brion: so on log points. I think we should log on 1. Upload Failure (with failure code) 2. Upload Success 3. Upload Cancel [18:10:21] and on login (failure and success) [18:10:33] brion: we have to implement captchas for login too at some point [18:10:51] yeah that's on my list [18:11:11] YuviPanda: on errors -- it might be good to have separate fields for type of error and error text [18:11:24] so i can say "network" for generic failure, then pass through the error message form the system [18:11:43] hmm [18:11:51] that makes sense when there are not a bounded number of failure modes [18:11:58] brion: edit the schema! :D [18:12:02] LD [18:13:10] hmmmmm [18:13:13] ori-l: thoughts on automatically recording UA? [18:13:16] ttps://bits.wikimedia.org/event.gif?{"isValid"%3Atrue%2C"revision"%3A"UNKNOWN"%2C"schema"%3A"MobileAppUploadAttempts"%2C"event"%3A{"source"%3A"2"%2C"username"%3A"Brion%20VIBBER"%2C"filename"%3A"Testfile%201360865512.jpg"%2C"result"%3A"success"}%2C"webHost"%3A"commons.wikimedia.org"%2C"wiki"%3A"commonswiki"}; still not working [18:13:25] revision: UNKNOWN? :P [18:13:34] should i make one up? [18:13:42] look up the revision of the Schema: page [18:13:46] ahhh [18:13:59] yeah that :) [18:14:08] and that should be a number or a string? [18:14:12] brion: number [18:14:13] i'll assume number [18:14:20] good :D [18:14:30] brion: plus 'source' should *not* be a number but the value itself [18:14:30] so you wanted 'external' (string) [18:14:30] not (2) [18:14:30] ahh [18:14:40] having those numbers there is confusing and ori-l is going to fix them sometime :) [18:27:44] hmm [18:28:18] YuviPanda: i got ops's attention [18:28:26] ooo sweet/ [18:28:27] . [18:28:36] * YuviPanda updates ADT [18:28:37] notpeter should be joining shortly. find him in the ops channel [18:29:05] tfinc: thanks [18:29:24] https://bits.wikimedia.org/event.gif?%7B%22isValid%22%3Atrue%2C%22revision%22%3A5241449%2C%22schema%22%3A%22MobileAppUploadAttempts%22%2C%22event%22%3A%7B%22source%22%3A%22launcher%22%2C%22username%22%3A%22Brion%20VIBBER%22%2C%22filename%22%3A%22Testfile%201360866527.jpg%22%2C%22result%22%3A%22success%22%7D%2C%22webHost%22%3A%22commons.wikimedia.org%22%2C%22wiki%22%3A%22commonswiki%22%7D; [18:29:30] what am i still missing? [18:29:37] YuviPanda: join #wikimedia-operations to finish up with him [18:29:50] there. [18:30:35] brion: launcher not a valid source? [18:30:36] New patchset: MaxSem; "Get rid of home-made RL links generation" [mediawiki/extensions/MobileFrontend] (master) - https://gerrit.wikimedia.org/r/49076 [18:31:03] durrr [18:31:09] New review: MaxSem; "Patch Set 1: Verified-1" [mediawiki/extensions/MobileFrontend] (master); V: -1 - https://gerrit.wikimedia.org/r/49076 [18:31:45] :D [18:32:04] is jgonera simply late or he will not be with us today? [18:32:07] brion: I'm modifying it now, to separate resoult and errormessage [18:32:12] ok [18:32:18] https://bits.wikimedia.org/event.gif?%7B%22isValid%22%3Atrue%2C%22revision%22%3A5241449%2C%22schema%22%3A%22MobileAppUploadAttempts%22%2C%22event%22%3A%7B%22source%22%3A%22gallery%22%2C%22username%22%3A%22Brion%20VIBBER%22%2C%22filename%22%3A%22Testfile%201360866694.jpg%22%2C%22result%22%3A%22success%22%7D%2C%22webHost%22%3A%22commons.wikimedia.org%22%2C%22wiki%22%3A%22commonswiki%22%7D; still nothin [18:32:25] wait no [18:32:36] that went through! [18:32:45] wheee :D [18:32:54] it just takes a couple seconds to make it through the queue [18:33:41] brion: :D ok [18:33:48] brion: I'm addint the extra field now [18:35:36] [Commons-iOS] brion pushed 1 new commit to master: http://git.io/tWOD9g [18:35:36] Commons-iOS/master 3c0fc42 Brion Vibber: initial use of EventLogging infrastructure... [18:41:55] alright off to sleep now. [18:42:14] should have a much better compile / test cycle tomorrow with stat1 access :) [18:42:17] gnite everyone :) [18:42:35] sweet dreams, awesome panda:) [18:42:44] YuviPanda: seeya, you should have access when you wake up [18:42:53] yay [18:42:55] ori-l: once I'm on stat1 I can just do zsub vanadium.eqiad.wmnet:8600 | grep MobileApp to grep through, I'm assuming. [18:43:47] tfinc: yes, indeed. Thanks for pushing that through :) [18:43:54] * tfinc steps away [18:44:46] yuvipanda - yeah, that should work. welcome to the faux data analysts club :) [18:44:54] Maryana: thank you :) [18:45:19] Maryana: I've been a little Jealous(TM) of the stuff that Ironholds did, tbh. But I guess you'll be far ahead of me in this anyway [18:45:56] i'm pretty sure his R skills far exceed mine at this point [18:46:10] sure, and mine are non-existant :) [18:46:36] but I like live dashboards more, and this stuff isn't as hard as the stuff he seems to be doing (identifying reverts, etc) [18:46:38] i'm sure you'll be fine. once you know one programming language, you know 'em all [18:46:43] Maryana: and I bet his SQL is better than mine too :) [18:47:41] Maryana: trivia - a long long time ago (when I was 14?) I made a fair bit of money doing analytics work in C# :D [18:47:48] so looking forward to going back to that :) [18:48:08] yuvi, stop being so damn cool :) [18:48:40] oh wait there's definitely this link i gotta show off :P [18:49:00] when i was 14, the only thing i did on the internet was hang out on forums for shitty 90s bands i liked [18:49:22] Maryana: http://thinklab.typepad.com/think_lab/2006/12/get_on_the_yuvi.html :P [18:49:47] it's a bit.. embarassing though. But still a nice mood lifter now and then [18:49:54] awwwwww [18:49:58] "get yuvified" [18:50:02] i'm going to start using that more [18:50:31] :P 'twas the heady days of blogging, years before Twitter and Facebook stole everything :) [18:50:37] btw, if you like live dashboards, check out dario's: http://toolserver.org/~dartar/ and get into dygraphs: http://dygraphs.com/ [18:50:42] let the yuvification commence! [18:51:03] Maryana: ah that sounds sweet! (dygraphs) [18:51:07] there's also d3 [18:51:11] yup [18:51:24] ori-l has experience working w/that [18:51:37] i think he was visualizing edits on enwiki with d3 at some point [18:52:29] Maryana: yeah will poke him. We seem to have similar sleep cycles, except for the 12 hour timezone offset, which is sortof unfortunate :P [18:53:10] haha, yeahhhh.. ori does his best work at 3 a.m. PST [18:53:13] (there's also a bunch of other gushing posts like that linked one from other people at the same time period. I guess I never fulfilled the promises of being awesome enough) [18:53:20] Maryana: indeed! [18:54:05] okay, off now. Have a conference to attend tomorrow! [18:54:06] bye [18:54:14] (I guess i never leave at the first bye. Sigh) [18:54:15] bye, awesomepanda [18:55:02] [Commons-iOS] brion pushed 1 new commit to master: http://git.io/NF_o1A [18:55:02] Commons-iOS/master 18284ad Brion Vibber: remove debugspam in upload progress handler [19:11:01] New review: MaxSem; "Patch Set 2:" [mediawiki/extensions/MobileFrontend] (master) - https://gerrit.wikimedia.org/r/48978 [19:11:09] awjr, ^^ [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:39] MaxSem: img_name is keyed [19:11:44] *indexed [19:11:57] wait hang on that's not right [19:11:58] one sec [19:12:46] it's a primary key [19:13:08] but does it matter? [19:13:17] not as a select field, it shouldnt [19:14:41] so if you use e.g. img_size, you will load just 2kb of data [19:16:28] well actually, wont selecting non-indexed fields potentially be slower? [19:17:44] img_size is also indexed;) [19:18:26] oh indeed it is [19:19:23] New patchset: awjrichards; "(mingle 330) Displays number of user uploads on upload dashboard" [mediawiki/extensions/MobileFrontend] (master) - https://gerrit.wikimedia.org/r/48978 [19:22:30] awjr, why do you use Html::element() when there's nothing to escape, e.g. Html::openElement( 'div', array( 'class' => 'mobileUserUploadCount' ) )? It doesn't improve anything (neither security nor performance) and makes reading harder [19:23:46] as opposed to just writing the html? [19:23:54] yes [19:23:57] consistency [19:24:00] but i dont really care [19:24:10] i am pretty tired of this patchset [19:24:19] ok [19:26:24] oops, found double-escaping - fixing [19:27:26] oh jeez yeah message + element. this whole thing was sloppy [19:27:40] I'll push a fix [19:27:45] thanks MaxSem :) [19:27:57] im gonna go grab some lunch, bbiab [19:39:58] awjr_lunch, can you check if I tweaked evrything right - then I'll merge it [19:40:08] New patchset: MaxSem; "(mingle 330) Displays number of user uploads on upload dashboard" [mediawiki/extensions/MobileFrontend] (master) - https://gerrit.wikimedia.org/r/48978 [20:17:29] hi :-] [20:17:35] * awjr waves [20:18:39] MaxSem: just read through your changes and tested - lgtm [20:18:46] thanks :) [20:18:59] New review: MaxSem; "Patch Set 4: Verified+2 Code-Review+2" [mediawiki/extensions/MobileFrontend] (master); V: 2 C: 2; - https://gerrit.wikimedia.org/r/48978 [20:24:31] Change merged: jenkins-bot; [mediawiki/extensions/MobileFrontend] (master) - https://gerrit.wikimedia.org/r/48978 [20:29:35] awjr, jcmish mtg [20:29:41] yup on my way [20:35:50] [Commons-iOS] brion pushed 2 new commits to master: http://git.io/JjS0EQ [20:35:50] Commons-iOS/master 7bce695 Brion Vibber: Squarify and decrease size of image tiles on iPhone [20:35:50] Commons-iOS/master c022f5e Brion Vibber: Icon for settings button, switch to the right (upload over to the left) [20:44:42] * MaxSem pounces at awjr [20:46:07] awjr, can you review https://gerrit.wikimedia.org/r/23108 please? [20:46:21] also, there are lots of unreviewed MF changes [20:48:11] I will review some more today [20:48:37] MaxSem: you got it [20:50:12] turns out that my explanation was really crazy [20:50:46] so to rephrase it, yesterday I observed that some requests to m.beta were sent to the mobile varnish, which then hits the Apache. That is fine. [20:50:51] [Commons-iOS] brion pushed 1 new commit to master: http://git.io/jJrzgQ [20:50:51] Commons-iOS/master 9e7e216 Brion Vibber: tweak grid sizes/borders [20:51:15] hashar: so no problems with squid? [20:51:20] but then the Apaches were querying the normal squid which in turns hit the apache again. End result is that normal site were displaying mobile version of the page :-D [20:51:25] so I rebooted everything [20:51:32] and it magically solved at one point [20:51:35] @_@ [20:51:43] and I have no idea what was happening [20:51:50] I suspect some mod_proxy under Apache mis behaving [20:52:02] why would apache ever query squid? [20:52:21] I am wondering :-] [20:52:46] but tcpdump does not lie :-] [20:53:03] anyway, that is solved by now apparently [20:53:11] heh ok - for now! [20:53:28] another thing, chrismcmahon would like us to have HTTPS and Search in beta (which are good things) [20:53:42] search would be great [20:53:50] so I am going to contact whoever has the knowledge about both infra and get them to set them up in beta :-] [20:53:59] thanks hashar [20:54:02] oh there's no search? [20:54:11] for Search that would be ram part of my team and anth1ny a volunteer who used to work for Wikimedia Office IT [20:54:23] ram is a java guy that it is taking care of the Lucene setup [20:54:35] ahhh you mean a lucene setup for search on beta [20:54:38] that makes sense [20:54:40] yeah sorry [20:54:46] no problem :) [20:54:49] anthony is a great guy [20:54:55] I haven't drink any beer today so my english is not really good [20:55:00] lol [20:55:04] * awjr hands hashar a beer [20:55:35] * hashar hands a REAL beer ๐Ÿบ [20:55:45] ! [20:55:52] you are welcome [20:56:09] is there some sort of utf8 character for a mug of beer that i did not know about? [20:56:28] found that one in mac homebrew [20:56:35] an utility to install OSS on a Mac [20:56:42] :) [20:56:48] http://shapecatcher.com/unicode_info/127866.html [20:56:51] I made it a shell function named "beer" (yeah I am THAT creative) [20:56:51] https://github.com/hashar/alix/blob/master/shell_functions [20:56:56] I got some cookies too [20:57:02] lol [20:57:31] ( :: ))))) [20:57:34] the nice list http://en.wikipedia.org/wiki/Emoji#Regional_Indicator_Symbols [20:57:53] hmm [20:57:59] I notice some clocks symbols there [20:58:20] that would be nicer than the usual one used to denote processing aka: | / - | \ | ... [20:59:14] heh http://en.wikipedia.org/wiki/%F0%9F%91%AD [20:59:39] whoa! [21:00:52] i wonder if you can use those emoji characters in internationalized domain names [21:01:08] Today I learn: so thanks to Georges W. Bush we can hold hands to a same sex person while in USA. [21:01:11] learned [21:02:35] mission accomplished [21:02:35] brion that would be awesome like ๐Ÿบ.com [21:02:40] hehe [21:03:05] lol [21:04:01] try it :-] [21:04:13] whois says 'No match for "๐Ÿบ.COM".' [21:04:20] anybody up for spending money on xn--xj8h.com? :) [21:04:26] yes [21:04:36] I would pay it back in beers / phone accessories [21:04:39] haha [21:04:46] expect delivery in 9 - 11 days [21:04:49] hand to hand [21:05:07] hehehe [21:05:25] we could make it use geolocalization and points to the language wikipedia page :-D [21:06:39] i cannot tell you how happy this makes me http://en.wikipedia.org/wiki/%F0%9F%8D%BA [21:06:49] ahaha [21:06:52] :DDD [21:06:54] the registrar i tried all complained about invalid formats [21:07:00] *registrars [21:07:07] and that show up nicely in my browser bar [21:07:12] damn we need to register all of them [21:08:17] the french one redirect to the article about the mug http://fr.wikipedia.org/wiki/๐Ÿบ [21:08:23] hahaha [21:09:00] and MediaWiki properly parse http://fr.wikipedia.org/wiki/๐Ÿบ [21:09:03] I will add a test [21:12:50] brion, from puppet I see you have root?:) [21:12:58] yep [21:13:08] i hide though ;) [21:13:23] brion was probably the original root, or at least one of them [21:16:53] brion or jgonera, do you see an op around? [21:16:58] brion: awjr: https://gerrit.wikimedia.org/r/49162 [21:17:20] added you as reviewers [21:17:26] :D [21:19:03] MaxSem: i'm at home office, i can yell at robh if you want [21:21:29] enough fun for tonight, see you later [21:25:41] MaxSem, you mean someone from ops team or someone who has op on the channel? [21:26:11] Ryan_Lane is here [21:29:08] MaxSem in $dt = new DateTime( "@$timestamp", self::getTimezone() ); what does the '@' mean/do? [21:29:30] unix timestamp [21:29:55] oh is that a DateTime format symbol or something? [21:30:00] i havent seen that befoer [21:31:37] sweet, Angry Birds Star Wars for my BlackBerry 10 device [21:36:10] jgonera, I asked for an operations engineer [21:36:17] already resolved - thanks [21:47:28] MaxSem: reviewed - https://gerrit.wikimedia.org/r/#/c/23108/ [21:55:27] awjr, thanks - committed another patchset [21:59:45] cool MaxSem i'll check it out [22:01:23] i like the improved diff interface for gerrit - it's finally eaiser to compare patchsets [22:03:45] MaxSem: im still a bit confused about startOfDay() vs todaysStart() [22:04:18] especially if you wind up adding other periods, it would be cool if startOfDay() was consistent with startOfWeek(), etc [22:04:19] todaysStart = startOfDay( $today ) [22:09:04] awjr, startOfWeek() is consistend with todaysStart() [22:09:23] oh yeah, i know, but their names are not consistent ;) [22:09:48] what do you suggest? [22:10:39] if you need both methods to be separate, maybe change the names so startOfDay() can be consistent with startOfWeek() [22:12:18] like? [22:12:48] startOf(Day|Week) looks consistent:) [22:13:08] or you mean thisWeeksStart()? [22:13:31] that could work too - i was more concerned that startOfDay() takes a param and startOfWeek() does not [22:13:51] aha [22:14:39] hmm, the function is named startOfThisWeek() [22:14:45] note *This* [22:15:17] startOfToday()/startOfThisWeek() or startOfDay() startOfWeek() [22:15:37] i think the first pair is more clear [22:15:57] * MaxSem paints the bikeshed pink [22:16:26] hahahaha [22:16:43] yeah - at the end of the day, not a big deal [22:17:56] i dont think it's worth blocking a merge if you dont think it's worth making the change, i was just making a suggestion :) [22:39:49] jgonera https://mingle.corp.wikimedia.org/projects/mobile/cards/295 [22:41:12] it looks nice, but Maryana and I are wondering if the filled in icon looked better or not [22:42:26] i think filled in looks good, but i wanted to maintain the same pattern as an anon user [22:42:30] since it's a similar concept [22:42:47] * Maryana ponders [22:43:04] plus a full red camera was pretty intense [22:43:18] the non-filled in design is a little too abstract - i don't know if i'd immediately realize it's a camera [22:43:28] i agree that the red is kinda heavy for totally filled in [22:43:38] on the other hand the icon for the photo upload button is filled in [22:43:44] I'm good with either one [22:44:00] we need a third opinion [22:44:15] i am full of opinions [22:44:18] :D [22:44:28] awjr: https://mingle.corp.wikimedia.org/projects/mobile/cards/295 [22:44:44] we're just bikeshedding on the camera icon [22:45:10] Hello mobilers. [22:45:15] I discovered prop=extracts today. [22:45:19] Pretty neat stuff. :-) [22:45:33] Maryana: what is the alternative to that mockup? [22:45:48] awjr a filled in red camera instead of an outline. [22:45:55] i like the camera, it feels like a CTA in itself [22:45:56] like the donate image button camera [22:46:01] i think filled in would be too intense [22:46:06] yeah that was my thinking [22:46:08] yeah, true [22:46:12] plus we use an outline for anon users [22:46:12] ok, consensus achieved [22:46:16] and this is a similar concept [22:46:20] the camera outline is intense as it is, but at least it is not totally distracting [22:46:42] wish we could add text to it. oh well. [22:46:56] we canโ€ฆ just not easily [22:46:58] i think it speaks for itself, munaf [22:47:02] Susan, thank you [22:47:20] yeah, i think it works. thanks, munaf :) [22:47:26] noooo problem. [22:59:23] poop. having trouble getting photo buttons to float over the collection view [23:02:04] gotta take the pooch to the vet. i should still be accessible via IRC tho i may be slow to respond [23:13:30] huh. just tried to email the mobile tech list and got this error: 550 Address mobile-tech@wikimedia.org does not exist [23:13:42] did somebody delete the list..? [23:16:46] holy cow [23:17:00] jcmish, did anything from me come through in the past couple minutes? [23:17:12] looking now [23:17:35] Maryana: nope [23:17:40] I just sent a test out [23:17:45] to see if I get an error [23:17:54] good call [23:18:00] same error [23:18:02] ah! [23:18:07] returned witha list does not exist :D [23:18:08] uhoh [23:18:23] that's not good [23:18:26] sigh [23:18:47] nope [23:31:55] [Commons-iOS] brion pushed 2 new commits to master: http://git.io/TQMm0g [23:31:55] Commons-iOS/master 8eb45af Brion Vibber: Attempting to bring in pretty photo buttons from the mockups.... [23:31:55] Commons-iOS/master 999bc1e Brion Vibber: Rearrange view hierarchy so buttons float over collection view [23:33:56] If tfinc is around he's a list admin otherwise I can dbl check when I'm home [23:34:30] Maryana ^ [23:34:34] awjr: what do you need ? [23:34:48] mobile-tech disappeared [23:35:02] Maryana: what?!? [23:35:09] both jcmish and i tried sending emails to it, and we got this: 550 Address mobile-tech@wikimedia.org does not exist [23:35:27] Maryana: please mail chip and cc me [23:35:35] will do [23:38:40] tfinc: sent [23:41:02] [Commons-iOS] brion pushed 1 new commit to master: http://git.io/FeGzmQ [23:41:02] Commons-iOS/master 4eb3cad Brion Vibber: Make pretty buttons behave nice [23:46:55] New patchset: JGonera; "Use autoless to compile LESS files" [mediawiki/extensions/MobileFrontend] (master) - https://gerrit.wikimedia.org/r/49184 [23:47:23] New review: Krinkle; "Patch Set 1: Code-Review-1" [mediawiki/extensions/MobileFrontend] (master) C: -1; - https://gerrit.wikimedia.org/r/49076 [23:49:44] New patchset: JGonera; "Use autoless to compile LESS files" [mediawiki/extensions/MobileFrontend] (master) - https://gerrit.wikimedia.org/r/49184