[00:19:33] user@garage:/tmp/r31-mimetype-samples$ cat * | perl -ne 'BEGIN{$wiki_basic = 0; $wiki_index = 0; $api = 0;}; @f=split(/\ /); $url=$f[8]; if($url=~m|\.org/wiki/|){$wiki_basic++} elsif($url=~m|/w/index.php|){$wiki_index++;} elsif($url=~m|/w/api.php|){$api++;}; END{ print "/wiki/ => $wiki_basic\n"; print "/w/index.php => $wiki_index\n"; print "/w/api.php => $api\n"; };' [00:19:39] /wiki/ => 610377 [00:19:42] /w/index.php => 14719 [00:19:44] /w/api.php => 526 [00:19:59] so in 14-31dec 2012 /wiki/ is on top [00:20:17] ip classification follows [00:20:57] drdee: did you ever get the instructions for setting up a local limn install? [00:21:32] i think milimetric put it in the README on the repo [00:21:38] k [00:21:51] just hit an error with the install instructions there, that's why i ask [00:33:25] hey erosen, if you're using the development branch, we just pushed the new limn that can server multiple instances [00:33:42] so the instructions haven't been updated for that [00:33:50] gotcha no worries [00:33:59] i was just trying to test the new graph format and labs was being slow [00:34:06] as for json or yaml, no preference [00:34:11] but I was finally able to get to kirpke [00:34:15] cool [00:34:15] I can't get into labs anymore at all [00:34:18] i switched to json [00:34:25] ok, cool [00:34:40] here is a successful graph with the new format: http://gp-dev.wmflabs.org/graphs/new_limn_test [00:34:46] milimetric: ^ [00:34:56] i'll update install instructions tomorrow [00:35:03] ah, very cool [00:35:23] milimetric: is the default color for one line black? [00:35:38] no, but I don't think gp-dev has the latest code, right? [00:35:44] probably not [00:35:48] i haven't redeployed [00:35:57] or do I just need to pull and restart? [00:36:44] you could try copying the graph, datasource, and datafile to the respective dev-reportcard.wmflabs.org/limn/var/data/* directories and [00:37:02] cool [00:37:05] because if you re-deploy to gp-dev, you'll get the latest code and that's gonna mess with kripke quite a bit [00:37:06] www user is okay? [00:37:13] hehe gotcha [00:37:36] yeah, www user is good [00:37:39] cool [00:38:09] yeah, sorry about this, we're just in the middle of this whole deb/puppet thing [00:38:14] if you have some time in the next few days to push the coloring changes to gp-dev that would be great, but perhaps today isn't the best day because of labs issues [00:38:19] no worries [00:38:36] okay, I'm off to catch a train , be back on soon [15:08:18] morning everyone [15:14:59] hi milimetric [15:15:10] brb in 40m , and we can talk more about the package [15:15:22] cool [15:36:43] back [15:36:48] hi ottomata , dschoon_ [15:36:57] Hiiaayyy [15:37:07] milimetric: did you try dpkg-buildpackage -us -uc ? [15:38:42] I did not [15:38:53] But I'm very confident it works [15:39:06] Did you try it in a VM? [15:39:13] average_drifter^ [15:39:25] milimetric: gonna try it now [15:39:27] I'm scp-ing it now [15:39:33] cool [15:44:16] drdee: good day sir :) [15:50:26] morning! [15:50:37] ottomata: faidon approved the rsync patch [15:50:40] you can merge it [15:50:42] yeehaw! [15:51:03] milimetric, ottomata, could you please make one or two limn charts using the data from kraken / stat1001 [15:51:06] haha, so i'm checking email, here is a mark quote that is funny: [15:51:12] re puppetizing squid confs [15:51:14] > And, adding in Puppet would make configuration changes quite a slow and tedious process, as opposed to how it is now. [15:51:18] hehheh [15:51:24] and email me the links so i can demo it? [15:51:35] regarding squid conf: you forgot to commit your changes [15:51:43] ? [15:51:54] the tab/ cs stuff [15:51:59] it was deployed but not committed [15:52:08] OH! geez, [15:52:30] faidon fixed it [15:52:37] yeah that whole process is kinda janky, thank you faidon! [15:53:23] hey drdee, assign it to me in Asana and add links to the data. I'm almost done coordinating this whole puppetization debianization thing [15:53:52] you have to ask ottomata for the actual links :) [15:54:15] yeah, you'll see, one sec [15:55:32] milimetric; ok created an asana task for you :) [15:58:10] thank you :) [16:17:50] drdee, milimetric [16:17:50] http://stats.wikimedia.org/kraken-public/ [16:18:03] should be synced hourly [16:18:47] we should make that directory all nice clean too [16:19:16] i'll remove my stuff [16:22:41] very cool ottomata [16:29:30] who am i? [16:29:32] grrrrr [16:29:33] not who I want to be. [16:30:16] ahhhgg, can't be who I want to be :( [16:30:20] will try later wah wah [16:37:29] yes! [16:37:36] i have achieved my goals of becoming who I want to be [16:38:03] that was fast [16:40:44] milimetric, my next trick requires ops people in chat rooms to ask them questions. in the meantime, can I help you guys with limn proding? [16:41:15] I'm updating the deployer to work with the new data structure [16:41:35] ottomata: https://github.com/wikimedia/limn/blob/develop/Deb.md [16:41:47] ottomata: have a look at this please, if you follow the steps you will get a limn deb [16:41:51] so you're saying that all of the puppet modules are done, except for something you need help from ops with? [16:42:14] haha [16:42:15] uh huh [16:42:23] no i'm saying that I need them to say I can do something before I do it [16:43:05] hmmm, i think we can use the wikimedia apt for node.js [16:43:13] apt? [16:43:23] http://apt.wikimedia.org/wikimedia/pool/main/n/nodejs/ [16:43:29] ottomata: sure, if you think that's better, please modify the Deb.md in the link above ^ [16:43:30] 0.8.2 ok? [16:43:35] ok w ill [16:43:36] clonging now [16:43:40] thank you [16:43:47] yes, average_drifter, can you make it > 0.8.0 then? [16:43:53] milimetric: no problem [16:43:55] it's like 0.8.19 or something now [16:43:57] cool, thanks [16:44:22] ottomata: does the wikimedia apt have npm packaged as well ? [16:44:34] ok so guys I think the last step is for me to spin up a labs instance to test out both of your work [16:44:58] milimetric: can you tell me what I need to do after limn is installed to start it ? [16:45:04] hmm, average_drrifter, don't think so [16:45:05] I forgot this step [16:45:18] do we need it though? i think we were hoping to not use npm for the .deb install, right? [16:45:25] only to build the package? [16:45:25] on the server right stefan? [16:45:38] ottomata: indeed [16:45:51] aye cool [16:45:54] milimetric: yeah, I have a local limn package, so I install it, and then how do I start limn ? [16:46:08] ottomata: but we have Build-Depends on npm [16:46:19] ottomata: so only the person who wants to build the package needs to have npm [16:46:25] that's fine [16:47:04] average_drifter: you'd need to execute server/server.co [16:47:08] I think I will not modify the readme for building the package [16:47:17] building with chris-leas node.js shoudl be fine [16:47:21] milimetric: is there a command involving supervisor ? [16:47:23] the Deb.md readme [16:47:42] no, server.co is just a coco executable, it can run by itself and go from there [16:48:01] but coco is not globally installed - we tried the local version and it works though right? [16:48:26] milimetric: yep [16:48:51] yeah so like this works average_drifter: [16:48:52] ./node_modules/.bin/coco server/server.co [16:50:04] yeah, ottomata, if ops has a problem with that, we can change it [16:50:24] yeah, i'm not sure what the proper process will be for this [16:50:29] they like to review all debianization stuff too [16:50:33] and usually they want that in gerri [16:50:34] tt [16:50:45] so, i'm not sure [17:04:08] ottomatta, fyi,I just sent you a new invitation to the hangout for today... [17:04:49] oh [17:05:06] oop, sorry, as in not now? [17:05:44] as in now, but I'm guessing you need to check your email for info about the new address... [17:05:50] ahhm [17:06:03] I tried to enter the hangout via google calendar, and it borked me. [17:06:08] hmmm, yeah, hm [17:06:16] ok i'm here at the moment, don't see a new link yet.. [17:06:21] https://plus.google.com/hangouts/_/7f471a23310d2cffe7a2efcc30fb9d7f073109ad?authuser=1 [17:22:53] milimetric: got sec for a limn coloring q? [17:23:05] I got better than a sec [17:23:12] hehe [17:23:16] I got an updated deployer that should fix it once and for all [17:23:23] so this is the one: http://dev-reportcard.wmflabs.org/graphs/new_limn_test [17:23:24] but yes, I also have a sec :) [17:23:32] nice [17:23:40] yeah, it's using the palette wmf_projects [17:23:48] i tried it with and without that palette [17:23:49] so it should get a color [17:23:57] i tried leaving it null [17:24:03] is that the way to go? [17:25:08] no it's straightforward now [17:25:29] if you specify palette at the line-group but no color for line, it'll use a color from the palette [17:25:40] if you specify color for the line, it will use that color [17:25:45] so what are the valid palette names? [17:25:48] cool [17:25:53] wmf_projects, category10, category20 [17:26:07] wmf_projects falls back onto category10 when it can't find a color [17:26:29] hmm [17:26:34] but it'll give you consistent colors for all the labels we hard coded (like Europe, German, Total, Projected, etc.) [17:26:43] the stuff you see on the reportcard basically [17:26:50] so shouldn't the example graph I linked to work? [17:27:04] not deployed yet! [17:27:05] :) [17:27:16] aaah [17:27:17] hehe [17:27:18] nice [17:27:20] you told me to ping you and I've been working on it [17:27:33] just a tiny bit longer [17:27:51] gotcha, forgot about that, sorry. [17:27:59] well i'll await a ping. thanks for working on this [17:30:08] hey, you guys said > 0.8.0 is ok for nodejs? [17:30:25] milimetric: ^^ [17:30:25] my vm has 0.8.1 and npm 1.1.34 [17:30:26] s'ok? [17:31:01] yes ottomata and average_drifter, anything over 8 should be fine afaik [17:31:14] that npm seems a bit old, but let's try it [17:32:19] how will we know? [17:32:26] i'm building right now [17:32:31] your pants will go on fire [17:32:36] oh crap [17:32:49] hm, [17:32:49] npm WARN prefer global coco@0.9.0 should be installed with -g [17:32:49] coco@0.9.0 node_modules/coco [17:32:49] coke build; [17:32:49] /bin/sh: 1: coke: not found [17:33:20] coco has to be installed globally? [17:33:26] or is that an old version of npm problem? [17:41:20] milimetric, average_drifter: [17:41:24] /usr/lib/node_modules/coco/lib/node.js:24 [17:41:25] throw hackTrace(e, code, filename); [17:41:25] ^ [17:41:25] Error: Cannot find module 'underscore.string' [17:42:04] no so instead of coke [17:42:10] we can do node_modules/.bin/coke [17:42:27] that'll use the locally installed coke [17:42:43] I'm sorry my head is spinning right now because kripke is refusing to work [17:42:54] erosen ^ this will hold up deployment for a bit longer [17:43:02] no worries [17:43:07] it's not actually a blocker [17:43:26] i've got the graphs ready, I just wanted to wait for the coloring to work before I put them on the dashbaord [17:45:12] milimetric, you should just get yourself a local vm [17:45:15] precise [17:45:29] virtualbox or something [17:45:41] oh you're linux on your lappy, aren't you? [17:46:00] yeah, I have virtualbox, but in this case it's supervisor that's not passing the environment variable [17:46:10] ahhh, ok [17:46:18] for LIMN_DATA or whatever? [17:46:55] mornin [17:47:00] morning! [17:48:27] morning [17:51:44] yeah ottomata - NODE_ENV and LIMN_PORT are being passed fine through supervisor's environment= thing but not LIMN_DATA [17:51:47] I'm very confused [17:51:51] morning dschoon :) [17:51:57] #does $NODE_PATH describe where [17:52:10] milimetric: I'm havin trouble running coke [17:52:30] NODE_PATH is usually controlled partially by what npm does when it sets things up [17:52:38] (that is, it links binaries into the right places) [17:52:43] you tried node_modules/.bin/coke [17:52:57] exactly. [17:53:08] when it's local, it's node_modules/.bin [17:53:19] when it's global, its NPM_PREFIX/bin [17:53:39] milimetric: yes [17:53:48] milimetric: it says it's missing server.js [17:53:55] milimetric: it's refering to node_modules/coke/lib/server.js [17:54:02] milimetric: how can I tell node where to look for libs ? [17:54:10] I tried NODE_ENV and NODE_PATH to no avail [17:55:21] dschoon can you see what's up with that? I gotta keep wrestling with supervisor [17:56:50] buh? [17:56:53] that makes no sense. [17:57:00] hm [17:57:05] unless cwd isn't being set. [17:57:40] checking for cwd [17:58:07] ottomata, milimetric I think it might be smart to do the replication into gerrit now. [17:58:10] i could set that up today [17:58:21] that way we don't have to hit github for anything [17:59:01] please hold off until we figure out this mess [17:59:05] from github -> gerrit? [17:59:16] I don't want another headache right now, I already have 99 [17:59:32] yes let's wait [17:59:39] sure. [17:59:43] hehe [17:59:46] wouldn't change anyting [17:59:50] milimetric, can I help you with supervisor? [18:00:25] as I looked into it ottomata, my local install decided to do super weird crap [18:00:31] nice! [18:24:39] export NODE_INTESTINES="troubled" [18:27:36] super weird! [18:30:16] oh dschoon - I think I know the problem [18:30:30] var was being served as static right? [18:30:38] yes [18:30:39] so that's how /data datafiles were being served [18:30:43] but now it's a different directory [18:30:43] yes [18:30:46] oh? [18:31:00] because it can be like /var/www/limn-data-for-this-instance [18:31:13] so what do you think is best? [18:31:21] serving that directory as static? [18:31:40] sure, but it depends on how it's structured [18:31:54] structured? [18:31:56] is it always /var/www/limn-data-for-foobar/data ? [18:32:12] because then you can add /var/www/limn-data-for-foobar as a static dir [18:32:14] no LIMN_DATA literally stands for var/data [18:32:15] but if it's: [18:32:31] right, you have to map it to /data [18:32:37] /var/www/limn-data-for-foobar/{datafiles,graphs,datasources,dashboards} [18:32:40] yep [18:32:42] then you have to ... yes [18:32:42] I gotcha [18:32:47] is that possible with static? [18:32:49] yes. [18:32:53] the middleware file has examples. [18:32:57] or i can do it [18:32:59] if you'd like [18:33:15] line 255 [18:33:15] like here: [18:33:15] @use express.static varDir, {maxAge} [18:33:18] yep [18:33:19] instead of that I'd do: [18:33:19] but [18:33:24] @use '/js/limn/test', express.static TEST, {maxAge} [18:33:28] @use 'data', express.static varDir, {maxAge} [18:33:29] right [18:33:33] that mounds TEST at /js/limn/test [18:33:37] *mounts [18:33:40] oh so it's /data not data [18:33:46] mounds :) [18:33:47] right. they're paths. [18:33:52] MOUNDS OF DATAS [18:33:54] cool, doing so now [18:33:56] thanks! [18:33:59] np! [18:34:37] brb a few [18:58:54] ottomata: figured out the dumb problem [18:58:57] it wanted quotes [18:59:02] "./var/data" [18:59:07] because of the slashes [18:59:12] doh [18:59:13] ha [18:59:14] but there were other things at work [18:59:17] that made it a moving target [18:59:23] all fixed, hopefully, deploying now [19:05:01] how do I fix this? [19:05:02] Error: Cannot find module 'underscore.string' [19:08:55] I think that used to be a problem in the old code ottomata, how/where areyou seeing? [19:09:57] erosen: is this an ok time to deploy to gp-dev? [19:10:04] yup [19:10:05] is indeed [19:10:20] ok, dev was ok so I'm gonna start that now [19:10:41] cool [19:10:43] thanks for working on this [19:12:45] root@wmvm:~/deb/build/limn# server/server.co [19:12:45] Failed at: server/server.co [19:12:45] Error: Cannot find module 'underscore.string' [19:14:21] there you go erosen: nice orange color for ya [19:14:22] http://gp-dev.wmflabs.org/graphs/new_limn_test [19:14:33] yay [19:14:59] oo, this one is nice too: http://gp-dev.wmflabs.org/graphs/free_mobile_page_requests_percent_country [19:15:01] thanks [19:17:31] ottomata: this throws a 404 now: http://stats.wikimedia.org/kraken-public/aggregated/mobile/part-r-00000 [19:17:45] yeah, drdee, asked me to change the url [19:17:53] rename the file [19:17:53] uh [19:17:55] what's it now? [19:18:10] http://stats.wikimedia.org/kraken-public/aggregated/mobile/pageview_by_devices_monthly.tsv [19:18:18] cool, gotcha [19:18:31] oh, so underscore.string thing, I'm looking at it [19:18:36] but I think this is more urgent for drdee [19:18:45] yeah no probs [19:27:34] erosen: can we talk ? [19:27:37] erosen: or chat [19:27:41] ya [19:27:44] either way is good [19:28:40] erosen: is this up to date ? https://github.com/wikimedia/metrics/blob/master/pageviews/embr_py/Pageview_definition.png [19:28:48] erosen: because I'm about to implement it [19:29:04] erosen: I'll basically have to simplify my code to adapt to it [19:29:12] the one thing I would expand on, is the way I check for whether the url contains "wikipedia.org" [19:29:18] i didn't really give the full story in the flow chart [19:29:33] i am using a greedy parsing algorithm [19:29:43] where I look for a language code from a known set [19:29:50] erosen: I use a hash for that [19:29:55] if i find it, I chop it off [19:30:21] and then I look for m. or zero. and if I find it i chop it off [19:30:33] I extract everything from http://(stuff).m.wikipedia.org/wiki and then check if it is in a hash with all the accepted stuff [19:30:36] and then i remove .org from the end of whatever is left [19:30:45] cool [19:30:51] erosen: are we doing the same thing ? [19:31:08] well i guess it depends on how you built the hash [19:31:30] is it clear from your code? [19:31:36] mine is about 10 lines of python [19:33:13] 50 lines of C++ http://bit.ly/14X2Ozn [19:33:18] uhm [19:33:40] erosen: can you paste a link to the python code where you do the parsing please ? [19:33:45] ya [19:34:22] https://github.com/wikimedia/metrics/blob/master/pageviews/embr_py/squidrow.py#L230 [19:35:53] self['netloc'] is just the domain with the path stripped off the end [19:37:12] is netloc an array of domain parts ? [19:37:29] for example if the domain was "en.m.wikipedia.org" then netloc would be [19:37:37] yeah, sorry [19:37:39] ["en","m","wikipedia","org"] ? [19:37:44] exactly [19:38:05] it is defined right above netloc_parsed: https://github.com/wikimedia/metrics/blob/master/pageviews/embr_py/squidrow.py#L225 [19:40:13] drdee, ottomata: http://test-reportcard.wmflabs.org/graphs/pageviews_mobile_by_manufacturer [19:40:28] erosen: I think I'm not counting the zero urls [19:40:35] erosen: how does a zero url look like ? [19:40:41] it shouldn't matter much, as they are very rare [19:40:48] ok [19:40:50] but they have the same syntax as a mobile domain [19:41:02] so en.zero.wikipedia.org right ? [19:41:02] except m. is replaced by zero. [19:41:05] yup [19:41:17] it might not work for you, because it only works for certain ip ranges [19:41:19] ok average_drifter, I'm sorry, I'm back to normal [19:41:22] it works in the office though [19:41:24] cooooOOl! [19:41:33] did dschoon help you with that coke problem? [19:41:35] milimetric: you're back to normal ? [19:41:36] naw [19:41:37] still having it [19:41:40] milimetric: cool [19:41:46] how can i help? [19:42:06] # server/server.co [19:42:06] Failed at: server/server.co [19:42:06] Error: Cannot find module 'underscore.string' [19:42:18] ok, let's see, we should build the deb again [19:42:34] erosen: so what I do is I just throw in a hash http://en.m.wikipedia.org/wiki , http://ja.m.wikipedia.org/wiki etc etc [19:42:35] ottomata: does node_modules/underscore.string exist? [19:42:42] yes [19:43:00] erosen: and then I check if the hash has any keys in it for that url [19:43:11] ottomata: what's cwd when that's running? [19:43:13] https://gist.github.com/anonymous/4962883 [19:43:22] limn repo root [19:43:48] average_drifter: i think i follow: you see if the hash has the url as a key [19:44:02] average_drifter: what are the values then? [19:44:22] buh [19:44:24] and are you using the domain and path together? or are you splitting htem [19:44:36] and node_modules/underscore.string/package.json exists? [19:44:39] ja [19:44:48] gaw. [19:44:57] erosen: the values are either "wiki_basic" , "wiki_index" , "api" [19:44:59] root@wmvm:~/deb/build/limn# cat node_modules/underscore.string/package.json [19:44:59] { [19:44:59] "name": "underscore.string", [19:44:59] "version": "2.1.1", [19:44:59] .. [19:45:15] erosen: they correspond to /wiki/ , /w/index.php , /w/api.php urls [19:45:26] gotcha, so you are classifying the page view type--got it [19:45:27] erosen: so you are only counting /wiki/ right ? [19:45:31] yup [19:45:33] only wiki at the moment [19:45:33] hm. [19:45:37] you're root when that's running? [19:45:47] ja [19:46:27] node_modules/underscore.string/dist/underscore.string.min.js [19:46:30] is the only .js file [19:46:31] oh, ottomata [19:46:35] i know why you're having that problem [19:46:39] oh? [19:46:43] the debian package doesn't include /src [19:46:45] I'm fixing [19:46:58] i'm using repo [19:47:00] not from package [19:47:01] it's a bit annoying - that file is used by both the client and server [19:47:03] wait huh? [19:47:09] what steps are you doing exactly? [19:47:12] ls src [19:47:12] base dashboard data edit graph index.co template util version.js [19:47:28] well, i started with the Deb.md instructions [19:47:37] but that failed on npm install coke [19:47:40] had to do that with -g flag [19:47:42] then did it again [19:47:45] I added -g [19:47:52] and kept hitting things that didn't work, unless I manually did npm install on them [19:47:52] because it's the dev machine so it doesn't matter [19:47:54] then I got to underscore [19:47:57] right [19:47:59] you shouldn't be installing coke... [19:48:02] erosen: I'll implement your diagram, with your list of wikiprojects [19:48:03] it ships with coco [19:48:04] this is on the build box [19:48:09] yeah this is for building [19:48:17] average_drifter: cool [19:48:20] (re: npm install coke) [19:48:25] average_drifter: by wikiprojects do you mean language? [19:48:26] we're just trying to make it easier dschoon [19:48:32] so we're setting it up like our local [19:48:35] right. [19:48:37] i'm saying [19:48:44] npm install coke is not a real thing [19:48:51] coke is a binary that comes with coco [19:48:55] he didn't mean that, it says coco in the deb [19:48:55] oh sorry [19:48:56] npm install coco [19:48:58] iddn't mean coke [19:49:00] coco [19:49:00] ok [19:49:02] just checking. [19:49:08] yeah sorry [19:49:09] no that's a good catch [19:49:10] erosen: yes [19:49:12] mistyped there [19:49:20] ok, so in what environment are you doing this otto? [19:49:25] ? [19:49:29] average_drifter: just checking [19:49:30] like a VM? [19:49:34] or your lappy? [19:49:34] yeah my local VM [19:49:45] can I run that on virtualbox? [19:49:52] or is it fusion? [19:49:53] andrew, you don't have node_modules/underscore.string/lib/underscore.string.js [19:49:53] ? [19:49:58] i'm using fusion [19:49:59] no [19:50:00] no lib dir [19:50:08] # ls node_modules/underscore.string/ [19:50:08] dist package.json [19:50:27] so you're trying to generate the deb package locally Andrew? [19:50:36] why? [19:50:38] ok [19:50:44] i just removed the underscore.string dir [19:50:45] and then did [19:50:49] npm install underscore.string [19:50:51] and now it has mroe files [19:51:06] why not milimetric? [19:51:08] its just as good as on labs [19:51:13] it works building it on my box so I think we can just build it and use it to puppetize for now, then worry about automating the deb build later [19:51:18] but I don't have to ssh into labs [19:51:33] well, i'm also trying to write you a limn wrapper script :) [19:51:38] otto, that sounds like a bad install [19:51:53] exactly. [19:52:06] you should probably: [19:52:08] there are so many modules not installed [19:52:11] rm node_modules? [19:52:12] rm -rf node_modules; npm install [19:52:16] ja [19:52:17] aye k [19:52:28] it sounds like it aborted midway through at some point [19:52:31] and was missing deps [19:52:42] yeah, dpkg-buildpackage aborted when it couldn't do npm install coco [19:52:46] the first time [19:52:54] oh yeah ok [19:53:00] npm does very nasty things if it's not allowed to finish [19:53:05] like super unpredictable [19:53:08] oh that is way better [19:53:11] works now [19:53:11] heh [19:53:17] always check status codes! [19:53:21] brb [19:53:34] otto, before you go further you should wait [19:53:48] because I'm fixing some of the files that control what happens during deb build [19:55:02] that's cool [19:55:17] ottomata: the npm install coco was problematic for me also [19:55:27] so we have coco and coke [19:55:35] what does coco do, what does coke do ? [19:55:42] coco seems like a sugar syntax over js [19:55:49] coke seems like a build system [19:55:54] not sure of either [19:56:02] coco is a compiler. [19:56:06] dschoon - which one do we need to copy? packages.co or packages.json? I never understood what's going on there [19:56:09] coke is like make in coco. [19:56:19] ok [19:56:20] packages.co is compiled to packages.json by the build. [19:56:26] which build? [19:56:29] packages.json is required for npm to work. [19:56:31] coke build [19:56:41] ok [19:56:41] dschoon: so after the build is done, we end up only with .js files right ? [19:56:49] you must always run that after changing the co file. [19:56:57] no, not at the moment. [19:57:00] though we could if we wanted to. [19:57:12] it doesn't matter, because coco can compile at runtime. [19:57:27] ok, so we need coco [19:58:10] coke is part of coco. [19:58:13] npm install -g coco [19:58:22] gives you both in /usr/local/bin [19:58:32] ok ottomata - I updated the debian/control and debian/rules files [19:58:46] if you're impatient you can go ahead but I'm gonna try it locally first [19:58:56] (it's pushed to wikimedia) [19:59:30] k [19:59:40] I have a bin/limn wrapper script [19:59:43] can I push it to develop branch? [19:59:54] uh [19:59:55] why? [20:00:07] like, what does it do? [20:00:12] so it could be in included in deb package at /usr/bin/limn [20:00:17] i only ask because imo we need *fewer* ways of starting limn [20:00:21] or symlinked [20:00:23] ah. [20:00:38] also, env vars are a we annoying, this wraps them into cli options [20:00:54] I agree. [20:01:00] oh cool, sure, push it [20:01:07] (making revtags now [20:01:09] We should just get rid of the vars completely. [20:01:15] and switch to a config.json [20:01:21] which you can pass a path to via CLI [20:01:24] that would be great, cli flags are nice tooo [20:01:25] shoudl ahve both [20:01:30] cli flags overriding config [20:01:31] indeed [20:01:35] all pretty easy to do. [20:01:41] yeah, you guys have fun with that [20:01:44] haha [20:01:45] k [20:01:47] * milimetric hates all things CLI [20:01:48] :) [20:01:49] obv not now. [20:01:50] milimetric: does ./node_modules/.bin/coke build work for you ? [20:01:58] just trying to make the .deb as complete as possible before we ask ops to review it [20:02:04] * milimetric mourns the loss of his beautiful GUI world in perpetuity [20:02:31] actually, dschoon, better would be for the .deb to just symlink /usr/bin/limn to server.co, if server.co took flags and config file [20:02:31] average_drifter, I updated debian building so it would npm install -g coco [20:02:38] because it's simpler that way and no more headaches [20:02:41] *nod* [20:02:45] we'll do that in the future. [20:03:00] unless you'd like me to do it now [20:03:07] it'd take maybe an hour to sort everything out. [20:03:11] bigger fish peoples :) [20:03:40] milimetric: yes but then .. it will install things outside of the current working directory [20:03:49] milimetric: we ideally want everything inside node_modules [20:03:49] that's fine, it's just a build box [20:03:55] ok [20:04:00] that's for the prod box [20:04:09] so we have to start it with node_modules's coke [20:04:14] but to build, let's just make it easy [20:05:03] welp. if the symlink causes problems, ottomata, lmk and i'll write the cli crap [20:05:07] otherwise i agree with dan, we'll do it later [20:05:22] well, i'm writing a wrapper, it would be better if server.co was cool [20:05:25] but i think it will work [20:05:40] if it proves uncool, lmk [20:05:48] but, i'm doing this…because I actually need things to work on, waiting on ops responses on things atm [20:07:29] ottomata1: i have a wishlist a mile long if you're bored :) [20:08:23] for example, we need an init.d script for nexus on kripke [20:08:50] atm, nexus is installed in /srv/nexus.wmflabs.org/nexus [20:09:05] bin/nexus {start|stop|restart} etc all works [20:09:26] but it needs to run as www-data and restart on machine reboot [20:09:32] ottomata1, how can I help with puppetization? [20:09:51] i need a deb before I can puppetize, ahve to know where things will be installed [20:11:34] ok, check out this file: https://github.com/wikimedia/limn/blob/develop/debian/rules [20:11:49] in the install: section, you see all the files that will be copied [20:13:05] so basically two dirs [20:13:06] /usr/lib/limn/node_modules/ [20:13:10] /srv/limn [20:13:16] ottomata1: ^^ [20:14:40] average_drifter, I think the SERVER_LIMN variable inside the BASE_DIR variable is having a problem: [20:15:09] check out that first line: [20:15:09] mkdir -p ""/home/dan/projects/limn/debian/limn"/srv/limn"; [20:15:10] mkdir -p "/home/dan/projects/limn/debian/limn"/usr/lib/limn/node_modules; [20:15:26] will that work like you want it to? [20:15:45] milimetric: remove the quotes [20:15:58] export SRVLIMN="$(BASEDIR)/srv/limn" <=== on this line [20:16:51] erm [20:17:02] milimetric: I don't get that error here [20:17:07] milimetric: you're using bash right ? [20:17:10] on Ubuntu [20:17:22] yep [20:17:35] ok let me pull [20:17:40] and I'll try to see if I get this [20:18:08] there's no error [20:18:19] I just didn't know if that was a valid path [20:18:29] I took out the quotes on both lines and it works fine though [20:18:36] I think it's better that way, for now [20:18:54] ottomata1: I've got a deb built, and it should be a happy little deb [20:18:57] would you like it over email? [20:19:11] milimetric: wait, have you tested it locally ? [20:19:20] with -c [20:19:25] but not tested [20:19:34] I don't have supervisor or anything [20:19:39] I figured otto would test as he's puppetizing [20:19:41] ok [20:19:47] sorry, internet probs [20:19:49] test wha? [20:19:57] I have a deb [20:19:59] want me to email? [20:19:59] oh [20:20:02] sure! [20:20:32] milimetric, dschoon: do you know if it is possible to set the yrange on a plot with the old graph format? [20:20:40] no. [20:20:42] wait do you need just the deb or the tar.gz file average_drifter [20:20:43] it is not. [20:21:04] k [20:21:09] milimetric: the .deb should be enough if someone wants to install I think [20:21:34] ok ottomata, sent the deb over emails [20:21:36] this isn't the final package anyway, there are multiple tweaks until the final one [20:21:49] ok cool [20:22:39] so //kripke/etc/supervisor/conf.d/*.conf are all updated to specify the environment variables LIMN needs [20:22:40] this one installs a buncha stuff in /srv [20:22:41] ? [20:22:45] if your wrapper does the same, we're good [20:23:04] ottomata: yes [20:23:04] 22:13 < average_drifter> /usr/lib/limn/node_modules/ [20:23:04] 22:13 < average_drifter> /srv/limn [20:23:05] the wrapper is being annoying, holding off on pushing it [20:23:05] uh... I thought you could pass that in [20:23:07] uhoh [20:23:41] that stuff should also probably be in /usr/lib/limn,right? [20:23:43] all the .co files? [20:23:52] i agree with ottomata [20:24:06] esp if we're moving toward a federated single install [20:24:31] ok, can we have a hangout I feel like I'm lost and this is something Suuuuper simple [20:24:43] standup link [20:24:51] https://plus.google.com/hangouts/_/2da993a9acec7936399e9d78d13bf7ec0c0afdbc [20:27:47] ottomata, average_drifter, ^ [20:36:57] gonna grab some lunch [20:37:00] back in a while [20:39:54] oh you know what else? [20:39:58] the .deb should create a limn user [20:41:33] see this: [20:41:34] https://github.com/wikimedia-incubator/kafka-debian/blob/master/preinst [20:41:42] yikes [20:41:52] not hard [20:42:01] i can add that to debian/ for you if you like [20:42:01] average_drifter - can you try that? [20:42:05] milimetric: yes [20:42:07] actually, you better try [20:42:08] ottomata: thanks for the link [20:42:11] since you guys have got this to build :p [20:42:33] k, cool, I'm building again and will send you this deb which hopefully has the right paths [20:42:43] yeah its cool, we will probably build a bunch more times :p [20:43:02] average_drifter, so yeah, /var/lib/limn should be created for sure, and that should be limn user's homedir [20:45:18] otto, will the limn user be running the limn server process? [20:45:42] That's important because whoever it is has to be able to write to the LIMN_DATA directory if we allow the web user to do that [20:45:53] es [20:45:56] yes [20:46:11] /var/lib/limn shoudl be owned by limn:limn [20:46:16] /usr/lib/limn should be owned by root:root [20:49:03] ok, so limn:limn should then also own any LIMN_DATA directories that will be configured [20:49:05] cool [20:49:16] well, sortof [20:49:23] if the limn user is running it, then yeah [20:49:26] ok guys, I pushed the latest debian change, sending deb to andrew in email [20:49:39] i'm writing an init script that will run as limn user [20:49:59] sorry, init conf [20:50:14] probably this init conf should be in the .deb as well, and puppet will be smart about how to run multiple instances [20:50:17] for now i'm making puppet smart [20:50:22] we can add init conf to deb later if we wannt [20:50:35] the one in teh .deb would do all the default things [20:55:38] sounds good to me [20:56:58] ottomata, average_drifter, erosen, dschoon, drdee, re: project management, I wanted to try Trello [20:57:26] what's Trello ? [20:57:35] it would help us be more public, keep an awesome interface/tool that doesn't get in our way, and inform perhaps an effort to modify an existing redmine plugin to meet the same needs far down the line [20:57:50] Trello is an agile project management tool like Asana [20:58:06] Asana is lacking three key things [20:58:26] 1.) publicly visible [20:58:35] 2.) reporting on status [20:58:44] 3.) managing sprints [20:58:56] so we should definitely talk about this soon [21:02:14] milimetric: i'm down with the Trello exploration plan [21:02:39] milimetric: on an unrelated note, do you know how to tell github to start tracking a branch you created locally without the --track option? [21:03:10] You have to push your branch [21:03:19] you use --track for the other way around [21:03:20] to track a remote [21:03:34] git branch -u origin/my_new_branch? [21:03:57] git checkout -t origin/your_new_branch I think [21:03:59] erm [21:04:07] if the branch is already there [21:04:12] yeah [21:04:15] that is the problem [21:04:18] yes [21:04:21] -u [21:04:28] k, trying [21:04:51] oh, but i think it's origin your_new_branch [21:04:56] not origin/your_new_branch [21:05:57] milimetric: weird, git is saying -u isn't recognized [21:06:03] and it's not in the help [21:06:30] so this is what you're saying: [21:06:34] git checkout new_branch [21:06:38] do stuff [21:06:42] git commit -a -m "blah" [21:06:56] now you want new_branch to be on the remote, right? [21:06:59] yup [21:07:10] oh lol, I'm super sorry [21:07:12] it's git push -u [21:07:14] not branch [21:07:16] I didn't see that [21:07:17] aaah [21:07:20] that makes much more sense [21:07:23] :) [21:07:37] seems to be working [21:07:38] thanks [21:07:39] k [21:07:40] np [21:10:24] milimetric: can I pull npm install -g coco out of debian/rules ? [21:10:42] milimetric: because it requires sudo and it's to be done by the maintainer of the package [21:10:54] you'd have to see if ./node_modules/.bin/coke build works [21:11:06] I don't think it works [21:11:08] oh gotcha [21:11:26] I've tried to fiddle with ./node_modules/.bin/coke and I didn't reach a working solution [21:11:34] so npm install -g coco is good for now [21:13:31] milimetric , ottomata pushed preinst script [21:13:39] cool [21:13:40] thx [21:13:43] np [21:14:41] milimetric: we have to make a new tag soon [21:16:25] ottomata: we need also a postrm script to remove the user ? [21:17:02] yeah [21:17:24] hm I don't have that eh? [21:18:41] ottomata: :D [21:19:17] ottomata: btw, if you add a user like that, what will the password for it be ? [21:19:47] if ! getent passwd kafka >/dev/null; then [21:20:03] uhm [21:20:32] oh, that one checks if the user is already present [21:20:39] right [21:20:49] no password [21:20:57] oh, so I can just login as that user ? [21:21:01] no [21:21:06] i mean, yes, but no [21:21:14] it odesn't have a pw entry [21:21:20] so you can't use password to login [21:21:26] you can become that user via su or sudo [21:21:36] ok [21:21:43] actually [21:21:46] you can set the shell [21:21:49] to /bin/false [21:21:51] i you like [21:21:55] then the user can't log in at all [21:21:57] probably good [21:22:55] ottomata: is key-only login present on an* and labs ? [21:24:00] yes, maybe [21:24:16] i wouldn't be surprised if pw login was enabled, just that nobody had a real pw [21:29:23] milimetric, does LIMN_DATA have a default value? [21:29:30] in server.co, or does it always have to be supplied? [21:29:44] you can maybe default it to ./var/data, or whatever it was before [21:57:59] LIMN_DATA does have a default, in sources.co [21:58:09] but I'll change it to ./var/data [21:58:22] think i missed what you just said [21:59:38] oh I just said that I'm changing it to ./var/data [21:59:43] the default was defined in sources.co [21:59:53] and it was bad - /srv/limn-data [22:00:00] so I pushed the change [22:00:41] I just installed the limn deb on my VM [22:00:56] is there an easy way to start it ? [22:01:38] tried [22:01:42] average_drifter: [22:02:00] export LIMN_DATA=./var/data [22:02:03] npm start [22:02:08] not yet! that's what i'm working on [22:02:10] oh but that won't work [22:02:19] average_drifter, I have an /etc/init/limn.conf script you could put in the deb [22:02:21] ./node_modules/.bin/coke server [22:02:30] ottomata: yes sir, please gist it [22:02:31] i can set the defaults for the .deb in it [22:02:41] i'm going to make a fancier one to puppetize, but if we include this in the .deb [22:02:45] then hopefully you can just do [22:02:46] service limn start [22:03:08] but if you just want to try it out to see if it worked - coke server will do it like I say above [22:03:25] then it'll serve on 8081 [22:04:15] https://gist.github.com/ottomata/4963928 [22:04:31] so [22:04:35] the .deb should [22:04:43] put that file in /etc/init/limn.conf [22:04:45] milimetric: https://gist.github.com/anonymous/35f727e2974e03747816 [22:04:54] ottomata: ok [22:05:01] symlink /etc/init.d/limn -> /lib/init/upstart-job [22:05:05] and also [22:05:13] probably create a /var/log/limn directory [22:05:16] and own it limn:limn [22:05:22] ok [22:05:33] dschoon: can you point me to the way to set the graph y range? [22:05:39] check out the stuff here [22:05:39] https://github.com/wikimedia-incubator/kafka-debian [22:05:44] link for example [22:05:46] creates the symlink [22:05:53] links [22:05:53] ottomata: shouldn't /lib/init/upstart-job be specific to limn in naming ? [22:05:54] and [22:05:58] no [22:06:05] that is a gernal upstart thing [22:06:12] if you ls -l your /etc/init.d directory [22:06:16] you'll see a bunch files all sylminked [22:06:19] so [22:06:28] /etc/init is the upstart replacement for /etc/init.d [22:06:31] oh ok [22:06:39] adding symlinks in /etc/init.d makes it backwards compatible with a buncha stuff [22:09:01] milimetric: i suspect your super busy at the moment, but can you give me some pointers on how to set a y range on a graph manually? [22:09:11] you're*, whoops [22:12:16] milimetric: currently trying root": {"yDomain" : [min, max], ... [22:12:35] uh, david just did that [22:12:39] but i can try to figure it out [22:12:43] i'm busy with non-work stuff atm [22:12:44] no worries [22:12:44] :) [22:12:51] not urgent [22:12:57] get back to non-work [22:28:09] yo guys [22:28:15] i am at the airport [22:28:30] it seems that you have made some real progress with debianizing limn, kudos for that! [22:30:05] ahhh airport aye [22:30:05] cool [22:30:09] i'm being kicked out for the day [22:30:14] of this cafe [22:30:18] laters all! [22:30:38] 'ta luego [22:32:16] back. lunch with a friend went a little long :) [22:33:04] yo dschoon, you might be able to help with a limn yDomain question [22:33:08] word [22:33:18] do you know if it is currently set up to read from the graph file? [22:33:24] http://gp-dev.wmflabs.org/graphs/free_mobile_page_requests_percent_country.json?pretty=True [22:33:29] that's what I have now [22:33:46] okay. [22:34:07] but no dice on effecting the graph [22:34:39] here's the one i made using yDomain: http://dev-reportcard.wmflabs.org/graphs/pageviews_mobile_target_stacked.json?pretty=1 [22:34:49] http://dev-reportcard.wmflabs.org/graphs/pageviews_mobile_target_stacked [22:35:51] so. [22:35:58] i think you're doing it right. [22:36:15] any ideas on why it's not working? [22:36:21] i suspect you need to update limn [22:36:29] aah [22:36:30] yes [22:36:31] i added that feature at like 4am last thursday [22:36:32] likely [22:36:34] heh [22:36:35] gotcha [22:36:56] cool, well I'll just leave it in the graph file and dan can help update it sometime [22:37:07] however [22:37:07] "valueFormat": ",.undefineds", [22:37:11] might also be a problem. [22:37:36] which shows up all over the place. [22:37:57] yeah [22:38:03] not sure why that's there [22:38:18] i think i just copied it from a working graph [22:38:21] looks like you're substituting something in to that string which is undefined. [22:38:22] ahh [22:38:33] sounds like a bug in GraphJSONConverter [22:38:40] i should probably just drop the field [22:38:47] this i a new graph though [22:38:56] so i just need to delete it from the boilerplate [22:40:52] cool. you sure you weren't copying from a converted graph in the old format? [22:41:05] i see places where i forgot defaults [22:41:41] seems likely [22:41:46] I think i was [22:41:53] coolio. [22:42:25] but I mean we don't need to worry about the converter at the moment, because the current file is being created from scratch with the undefineds in it [22:42:32] yep. [22:43:40] it annoys me that we have random non-camelCase options [22:43:44] source_id [22:43:46] source_col [22:43:46] hehe [22:43:49] graph_version [22:43:54] and everything else is camel [22:43:58] i've always been annoyed at mixed capitalization schemes as well [22:44:10] maybe someday i'll fix it. [22:44:35] it would require bumping the graph minor version, at least. [22:45:20] yeah, probably not worth it right now [22:46:17] ofc. [23:06:35] I'm out for the weekend guys, have a good one [23:06:42] laters [23:06:44] have a good one [23:19:55] millimetric: cheers! [23:20:21] i like how we are all willing to say goodbye to somebody who signed of 15 minutes ago [23:20:57] pardon me for not checking the timestamp. [23:21:02] hehe [23:21:10] i just think it's funny how the digital world works [23:21:14] we can't see faces [23:21:24] the text hangs around even after he leaves [23:21:30] so it's almost like we're saying goodbye to the text [23:21:45] i almost did it too! [23:21:52] i just happened to read the sign-off message [23:33:40] i had a reason to dig this up for a friend. http://nplusonemag.com/interview-hedge-fund-manager [23:33:45] such a fantastic series. [23:33:57] HFM is bloody brilliant [23:53:49] average_drifter: did you end up downloading the old maxmind dbs?