[09:01:30] hullo [09:02:44] morning phuedx [09:08:54] hey joakino, how're you? [09:09:44] fine, going to catch up on phab emails now [09:11:25] and you phuedx ? [09:12:30] today is the q review [09:16:31] joakino: are you attending? [09:16:37] i haven't seen an invite/email [09:16:41] also, is jon attending!? [09:17:09] joakino: honestly, i'm in a pretty bad place right now and trying to figure out a way forward [09:17:16] jonk's gone so toby is presenting [10:38:59] * YuviPanda waves at phuedx and joakino :) [10:39:04] hey YuviPanda [10:53:26] hi YuviPanda [11:38:25] lunch [14:49:22] mdholloway: morning! you around? [14:49:28] dbrant: yep! [14:49:39] mdholloway: batcave for 2min? [14:49:48] dbrant: sure, omw [14:50:27] dbrant: looks like coreyfloyd and bgerstle beat us there again [14:51:35] joakino, James_F edsanders : meeting slated for 10 minutes from now cancelled, as it conflicted with the final schedule for the reading quarterly review. i'll ask sarah to reschedule [14:52:29] dr0ptp4kt: noted, thx [15:15:35] dbrant: well that was a lot simpler than i was making it out to be. [15:16:03] mdholloway: the arrow position? [15:16:09] dbrant: yep. [15:16:14] mdholloway: ah good [15:28:21] dbrant: for the donations campaign install referrer task, do we want to track how many installs are coming through without a referrer? [15:28:27] dbrant: oh and good morning! [15:29:36] niedzielski: morning! [15:30:13] niedzielski: i'm not sure we need that.... and how would we do it? the Play Store only sends that intent if there was a referrer. [15:30:52] dbrant: hey! i was just wondering if we wanted to log the first launch scenario (we can use a shared preference, maybe appinstallid) [15:31:57] dbrant: on second thought, maybe that's not apples to apples since the user has to actually launch the app [15:32:53] niedzielski: yeah, that's probably more than what's necessary for now. [15:34:14] dbrant: i'm a little surprised google will actuall notify our broadcast receiver after install since we could actually start an app from there [15:35:35] niedzielski: well, it actually behaves a bit inconsistently on my devices. On one device, it sent the broadcast right after installing. On others, it sends the broadcast only upon first launch... [15:36:21] dbrant: oh wow, first launch makes a lot more sense to me [15:38:07] dbrant: that might be a good thing to note when reporting on the referrer numbers. it would be neat if we could stuff initial install date in the referrer link [15:39:01] niedzielski: all of the events have a timestamp on them. [15:39:46] dbrant: the events have a timestamp but the user might not launch the app for months after install. since we don't report the events until first launch, it would be nice to trace the date of install [15:41:16] niedzielski: it looks like my one device that sends the broadcast upon install is an exception (1 of 7)... [15:42:47] dbrant: yeesh. even more valuable then [15:45:27] dbrant: on a different topic, do you know if there's an easy way to link to our current sprint board in phabricator? bearND mentioned he just goes to phabricator and types the sprint number, 61 today, into the search box and jumps to it that way. [15:47:03] niedzielski: i just have it bookmarked... [15:47:20] dbrant: so you update your bookemark each sprint? [15:47:28] niedzielski: yep [15:49:26] niedzielski: I usually add bookmarks for up to two sprints to my bookmark bar. I only use the Phab search feature the first time. [15:49:41] when I add a new sprint [15:50:37] bearND: hi! so the old debug keystore - I'd like it to be available a bit more permanently than in just some labs instances. I'm wondering how to get it to you guys. [15:50:48] I guess I can just put it in the instance for a bit [15:51:09] YuviPanda: yes, put it on the new instance in the build users home dir [15:51:21] yes but that'll die if / when that instance dies. [15:51:29] or under /srv [15:51:34] there's no NFS in the mobile project anymore... [15:52:11] YuviPanda: yes, I'll save to my local machine, too [15:52:23] alright [15:53:46] niedzielski: Another idea is to go to the Android board, click on a task in the "current sprint" column. From there should be a link to the current sprint, at least when it's populated. [15:55:25] bearND: it's in /home/yuvipanda, do copy off :) [15:55:35] bearND: i think that would work. i was really looking for an evergreen link but i'm not sure it's possible in our current setup. maybe i will ping those phab guys [15:58:10] niedzielski: we could also add a link to the profile page (https://phabricator.wikimedia.org/project/sprint/profile/489/) but I don't know if anyones actually using that one (I haven't yet) [15:58:21] YuviPanda: got it. Thank you [15:59:35] bearND: there's the concept of a sprint board on that profile page, "View sprint board," but that's our massive everything board [16:04:42] YuviPanda: was there a home dir for the build user on the old machine? [16:05:52] phuedx [16:05:54] join [16:07:07] bearND: yes there was, I picked out the debug keystore from there [16:07:14] I've to go now though :( [16:07:15] bye! [16:07:22] YuviPanda|brb: ok, thanks [16:09:25] dbrant: what should actually be shared when a user selects to share a snippet as text? The snippet and a URL? This should be an easy fix but I'm not clear on the acceptance criteria: https://phabricator.wikimedia.org/T104704 [16:11:37] mdholloway: i'll update the description [16:12:10] dbrant: cool, thanks. [16:55:06] niedzielski:AVD seems to be working :) can you tell which devices is good to use? [16:55:17] etonkovidova: woohoo! [16:55:41] niedzielski: yeah! :) [16:56:03] etonkovidova: most are decent. just make sure they're x86. i've been using the Google API 22 Nexus 5 lately [16:56:23] niedzielski: ok - will try it [16:59:00] etonkovidova: here's the settings i have on it. pretty much defaults: https://img.bi/#/uqkvOsV!fgkNWessRpeueGxcntmGvaHljeahUaieFBiargma [16:59:30] niedzielski: thx! [16:59:31] etonkovidova: you might want to uncheck "enable keyboard input" so that the on screen keyboard is used when testing [17:00:20] etonkovidova: i noticed the new "MNC" x86_64 image works well too but our app still has some sticky spots with it so i recommend the api 22 version [17:00:34] etonkovidova: note: the Gingerbread (API 10) image is incompatible with our app [17:00:47] niedzielski: ok... [17:06:04] etonkovidova: hey there's a new settings screen to help testing i can show you after stand up if you're free. should only take a few minutes [17:06:28] niedzielski: sure :) [17:24:25] taking a break [17:50:24] dbrant: a user reported, that he can't move the app to the SD card anymore since the update today. I have tested it with the beta app (i haven't received the update, yet) and alpha, and it's still working. Do you know any change, that would result into this problem? [17:50:32] bearND, niedzielski ^ [17:52:36] FlorianSW: i believe we explicitly enable this functionality. i'm looking into it [17:52:58] FlorianSW: hmm.. no, i don't think we changed anything that would affect this capability. [17:58:34] niedzielski: have you found it? dbrant hmm, I will ask, if he mean the stock App2SD function or maybe something like Link2SD :) [17:59:05] FlorianSW: so far all my installs have landed on the sd card by default [17:59:32] niedzielski: ok, let's see, what he says :D [17:59:39] joakino: phuedx jdlrobson|hols https://regmaster4.com/2015conf/ICFP15/register.php [17:59:41] seems an error on his side :) [17:59:44] i'll just leave that there ;-) [18:00:04] PureScript, ClojureScript, and React, oh my! [18:00:18] (oh and haskell too) [18:01:36] FlorianSW: i happened to be looking into this recently for a potential (but unrelated) sd card issue. looking at the code, we allow the app to be installed anywhere but specify "auto" for no preference. from the docs: [18:01:41] If you declare "auto", you indicate that your application may be installed on the external storage, but you don't have a preference of install location. The system will decide where to install your application based on several factors. The user can also move your application between the two locations. [18:02:19] niedzielski: ah, great! Thanks :) [18:02:26] dbrant: thank you, too [18:04:13] FlorianSW: thanks, I tried a couple devices and we seem to be acting normal. maybe the user doesn't have enough space or didn't have the sd card inserted? [18:04:37] niedzielski: great, thanks for testing, i will ask these things, too :) [18:06:44] bgerstle: saw your note ICFP. i just started "The Little Schemer" recently [18:07:00] niedzielski: i've heard about taht [18:07:01] that* [18:07:05] they have a scheme workshop at ICFP [18:07:12] yeah! very cool [18:07:18] still working through LYAHFGG [18:07:23] love that acronym [18:07:39] niedzielski: meanwhile, writing swift for the iOS app [18:07:46] i am only a couple chapters into TLS but it is a book like no other i've read. it teaches by pattern recognition which is ideal for me. kind of blew my mind [18:07:46] niedzielski: you guys are on the JVM, you have no excuse ;-P [18:07:51] get some scala and/or clojure in there! [18:08:11] niedzielski: highly recommend Learn You A Haskell [18:08:13] there's some excuse i think to not use scala... [18:08:24] i also read a bit of a Clojure book [18:08:41] good to have a dynamic lisp & a strongly typed language [18:09:50] bgerstle: i used the Xmonad tiling window manager which is all haskell for a year or two. it uses a haskell configuration file for customation but i've no other experience with the language. i was going to try racket for a bit [18:10:33] niedzielski: codewars.com is fun for "code golf/kata" [18:10:38] they support clojure & haskell :-D [18:10:56] bgerstle: i'll check it out. thanks! [18:11:10] but yeah, after TLS i'd highly recommend LYAHFGG [18:11:23] you can also check out the website to get a feel for it: http://learnyouahaskell.com/ [18:11:34] http://learnyouahaskell.com/chapters <-- [18:12:17] haskell's _great_ for learning to think in terms of "type classes" and first-class functions [18:12:32] bgerstle: nice! i saw some college students recently wrote a game in haskell but didn't look into it too deeply [18:12:39] cool [18:12:52] i hope to eventually get to parallel programming in haskell [18:12:58] and/or reactive programming [18:13:01] (probably related) [18:13:08] anyway, back to swift for now ;-) [18:13:19] niedzielski: i'll let you know if i seriously consider going to ICFP [18:14:08] bgerstle: thanks! i'll take a closer look at what courses they have [18:14:28] i'm definitely interested in FARM (FP for art music & design) [18:14:42] but also Commercial Users of Functional Programming (CUFP) [18:14:52] some of the "pearls" sessions sound interesting too [18:14:56] the rest is a bit over my head [18:15:01] academic stuff about compilers [18:18:34] bgerstle: i recently finished hackers and painters which espoused lisp so hard i felt i owed it to myself to give it a real try. i picked the racket dialect, partly because i needed to pick a dialect, and partly because there was some recent news that it might be a supported scripting language for oculus rift [18:18:58] ahhh [18:19:00] interesting.. [18:19:13] i'm not as big a fan of dynamic languages, hence my gravitation towards haskell ;-) [18:22:53] bgerstle: the author talks a little bit towards that in the book as a strength and that he found strongly typed languages constricting, which probably isn't a new thought. i personally find strongly typed languages more familiar but am hoping to learn to leverage and maybe love dynamic typing [18:23:17] niedzielski: yeah, i can definitely see the appeal [18:24:27] but OTOH, you're on the edge of "just enough rope..." [18:24:27] but yeah, Rich Hickey is the same way [18:24:27] some thing are hard to model in strongly-typed languages [18:24:27] he has a great talk about arrows that exposes this [18:24:27] e.g. early termination of a map-reduce [18:24:27] he always uses such great analogies too [18:25:36] bgerstle: for larger refactors, i definitely feel more comfortable in a strongly typed language. i can really leverage the compiler to complain about broken things [18:26:18] ohyeah [18:26:18] niedzielski: but, tests can tell you some of that too, but you usually don't have tests for tedious things (that can be statically checked) [18:26:25] bgerstle: when tests exist, yes :) [18:26:30] exactly [18:26:39] and the coverage needed to support even small refactorings is very rare [18:26:48] definitely agree [18:26:50] and ridiculously tedious [18:27:01] you basically end up writing a compiler ;-P [18:27:07] or a static checker [18:27:43] (hence the arguable trend of dynamic languages getting opt-in typing: TypeScript, Python, PHP [i think?]) [18:28:43] bgerstle: according to the hackers and painters guy, you specify typing in lisp only when performance is needed, but i haven't studied that far yet [18:28:57] hm [18:42:25] icfp also has erlang! [18:47:54] niedzielski: well, how to "install" apk on emulator? I found some instructions - nut maybe there a good proven way? :) [18:50:31] etonkovidova: easiest way is to hit the green play button in android studio [18:50:51] if you have emulator or device running, it will prompt to install on them. if not, if will prompt to launch and install [18:51:58] niedzielski: after the user said, that this is "definitly a problem on our side", now he answered, that a restart of the phone solved the problem :) [18:52:01] dbrant: ^ [18:52:20] niedzielski: ahh... :) [18:52:25] FlorianSW: that's great! thanks for the follow up! [18:54:08] FlorianSW: thank you :) [18:56:22] /Users/etonkovidova/Documents/android-wikipedia/wikipedia/src/main/java/org/wikipedia/SharedPreferenceCookieManager.java [18:56:22] Error:(21, 84) illegal start of type [18:56:25] niedzielski: I hit the green button in android studio - and I got Gradle build failed with [18:56:46] etonkovidova: want to debug in batcave? [18:58:00] niedzielski: do you have have time? And what's batcave? - sorry [18:58:44] etonkovidova: batcave is the little community hangout out for casual video conferencing. i will just call you [18:59:25] niedzielski: ok [19:00:26] dbrant: I've uploaded the current java-mwapi 1.3.2-SNAPSHOT to the team repo. Your patch https://gerrit.wikimedia.org/r/#/c/221821/5 still needs a manual rebase [19:00:59] bearND: on it... [19:07:14] gonna head off [19:13:59] dbrant mdholloway: hey! what version of java do you guys have installed on your os x? [19:14:48] niedzielski: 1.8.0_45 [19:15:00] ^ [19:39:52] niedzielski: got 1.7 currently, but going to switch to 1.8 [19:40:10] dbrant mdholloway bearND: thanks! looks like 1.8 works [19:40:47] from here (for reference): http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html [20:19:21] bearND: would you be willing to push to fdroid in addition to play store ? [20:19:49] matanya: yes, I'd love to [20:20:00] matanya: just no idea how that works [20:21:05] bearND: for starters: https://f-droid.org/wiki/page/FAQ_-_App_Developers [20:21:29] and this is the current version: https://f-droid.org/repository/browse/?fdid=org.wikipedia [20:22:56] matanya: ty. I've seen the latter, but not the app dev FAQ yet. Do you happen to know who did the older versions? [20:23:47] bearND: https://gitlab.com/fdroid/fdroiddata/blob/master/metadata/org.wikipedia.txt [20:24:50] bearND: so the owner is https://gitlab.com/u/mvdan [20:27:21] bearND: he works @ google [20:28:51] matanya: ah, good find. I'm re-opening https://phabricator.wikimedia.org/T67460 and add this info to it /cc:dbrant niedzielski mdholloway [20:29:39] nice! [20:29:56] bearND: i support this! [20:30:03] bearND: thank, i can help with that too, as i am a user and a contributer myself [20:37:21] bearND: I asked mvdan to join the channel. please try to catch him in several hours when he is available. [20:37:48] ...or now [20:37:50] will be home in about 7h [20:40:38] matanya: thank you for your help. That's awesome. [20:40:48] I come to serve :) [22:28:00] dbrant|brb: hey! i was hoping to solicit your advice for "app retention stats." which of the following would you recommend? A) create DailyStatFunnel or equivalent that we can grow as needed. B) create InstallAgeFunnel or equivalent. C) create ArticleFunnel that we can grow as needed. the install age would only be added once a day on a "logLoadComplete". D) something else :)