[14:12:12] mooooorning guys [14:12:24] it was a super nice warm weekend, +13C [14:12:29] made some nice strolls! [14:21:21] moooorning OTTOMATA! [14:21:40] whhooomp there he is, whhhoomp there he is! [14:21:56] mornnniiiiiin! [14:23:47] i would like to do some small tasks today, if that's okay with you? [14:24:53] x-carrier comes to mind :) [14:26:06] sure, the next step in my flume stuff is bigger stuff, so it'd be good to take some time to do the small things i've been putting off because of it [14:26:18] x-carrier means ping patrick and asher [14:26:20] right? [14:26:31] probably, we need to figure out why it's not wokring [14:27:16] and another small issue, can you enable erik zachte to do git push on stat1:/a/wikistats_git and having a working version of git-review as well [14:27:27] he keeps making commits on stat1 but they don't get pushed or reviewed [14:28:03] so then once in a while i just push them all but that usually results in merge conflicts with one of stefan's patchsets [14:28:04] s [14:28:36] right now there are 5 unpunshed commits for example on master on stat1 [14:34:14] brb [15:03:46] morning! [15:03:56] amazing day for a bike ride, had to take the opportunity [15:22:53] niiice [15:23:01] is it sunny there? [15:23:07] a bit gloomy here, but kinda warm [15:25:04] oh definitely gloomy [15:25:14] but 50+ in January is a great day :) [15:27:00] ja, birds are chirping hear, feels a little springy [15:31:57] drdee, has erik z ever pushed to gerrit before? [16:15:26] mk, battery dying, heading back to my place for hte rest of the day, be back on in a bit. [17:06:36] drdee hai [17:06:39] you back? [17:47:28] mornin [17:47:32] i feel SO MUCH better [17:47:52] so much better! i am eager to start solving problems and digging myself out of the huge hole of my absence! [17:47:54] whee~ [17:48:35] welcome back! [17:50:12] ty! [17:50:18] i missed you guys! [17:51:39] yay! hey man [17:51:43] glad you're feeling better [17:52:03] you already jump on any specific problems? [17:52:30] 'cause Limn needs TLC if not [17:54:15] i think i first need to play email catchup. [17:54:21] probably no limn today [17:54:54] mmmmmm….. i think i agree with milimetric, we need your help to improve performance of limn [17:55:25] well, here's the brain tease: [17:55:54] reload page in Chrome: 30 seconds delay before page reloads, 50MB-100MB memory leak [17:56:01] reload page in Firefox: no problem [17:58:01] sounds sweet! [17:58:14] but i need to get caughtup with email first. [18:01:09] ping ottomata [18:13:38] so good to see you all! [18:13:38] <3 [18:13:41] heading into the office now [18:13:42] brb [18:48:02] ottomata, questions regarding stat1, wikistats and git? [18:48:24] oh yeah [18:48:34] has ez ever pushed to gerrit before? [18:48:47] ever ever? or just from stat1? [18:52:02] ummmmmm, i guess ever ever [18:52:10] i just tried to git-review as him, and it asked me for his gerrit username [18:52:52] that's exactly the part that needs to be fixed on stat1, so he hasn't every pushed from stat1 [18:53:07] what's his gerrit username? [18:53:22] ezachte [18:53:29] (i am 99% confident) [18:54:16] i don't htink so, but I will try [18:54:46] ha, i don't know his ssh key pw [18:55:51] has he tried git-review [18:56:00] as far as I can get it looks like it should work [19:00:57] ok, ty [19:01:14] did you add a new remote for him? [19:04:46] no [19:04:51] master already points where it should [19:05:09] and when I try to git-review as him [19:05:14] Enter passphrase for key '/home/ezachte/.ssh/id_rsa': [19:05:20] i can't do that, but after it errors out with [19:05:23] Exception: Could not connect to gerrit at ssh://ezachte@gerrit.wikimedia.org:29418/analytics/wikistats [19:05:26] which looks like the correct url [19:13:03] but iirc, you had used master for the wikistats user so it could easily pull [19:15:13] not for wikistats_git [19:15:17] you mean 'stats' user? [19:15:22] we did that for gerrit-stats [19:15:35] so that we could have a generic user that would automatically pull [19:15:36] and push [19:15:42] we had a cron job [19:15:50] this is regular ol' git-review, it should work fine [19:16:31] aight, i could thought the stats user was also used to pull wikistat updates (not automatic obviously) [19:16:41] nope [19:16:43] i could be wrong though [19:16:44] ok [19:17:08] so what's the best/ easiest way to deploy wikistats manually? [19:17:16] just using your own account and do a git pull [19:17:36] because right now i can't do git push origin master, i can only do git push diederik master [19:21:16] you can't push [19:21:20] wait [19:21:23] right [19:21:32] do you want to push or review? [21:00:13] ahoy [21:00:26] yoyo [21:00:29] https://plus.google.com/hangouts/_/322e3c8af33eb2ae796897d108662d579d176845 [21:01:26] wat, a plugin is now required? [21:01:34] uhhhhhh [21:01:37] i guess [21:01:42] i'll need a minute then, sorry. [21:01:45] ok [21:22:30] ori-l, your udpkafka producer looks great [21:25:22] dschoon: cool, that's good to hear! [21:49:17] dschoon: i wasn't sure about the following things -- [21:49:43] 1. packaging is one big '???' for me [21:50:15] i'm pretty sure that's true overall. we're heading toward maven, and i believe scala's sbt is maven-based [21:50:31] but we don't have the artifact repository set up from from top to bottom [21:50:33] 2. it seems weird to catch exceptions only to print a stacktrace and crash, but otherwise IntelliJ yells at me. i kept the try / catches because i figure someone else would know how to handle it. [21:50:55] (it needs an Archiva instance, seed projects, etc) [21:51:05] i'll nod and pretend like i know what any of this means :) [21:51:33] yeah, java makes that a bitch. [21:51:49] there's a whole rage-y debate about unchecked exceptions in the java world [21:51:57] but it's the simplest way to avoid writing pointless code [21:52:02] you add the @unchecked annotation [21:52:04] I've also encountered snippets of code where people are loading module-specific properties from the system properties object, which made me suspect that there is some centralized configuration store that I should be using rather than just loading a file [21:52:23] ohhh, that's a good tip. [21:52:24] you can restrict it by giving types you're not catching as parameters [21:52:49] yeah, you're just hitting on all the java pain points :) [21:52:57] hence things like the Configurator class and a bunch of crap in guava [21:53:15] I will dredge up all my articles about this later in the week and try to put together a wiki page [21:53:33] i went through all this a few years ago, and i agree the internet is not really forthcoming [21:53:44] it seems like java programmers assume we are all in it for the long haul :) [21:53:45] * milimetric is deathly afraid of Java configuration [21:53:46] :) [21:54:03] one thing i'd love if everybody who knew stuff did [21:54:18] i always wish every language had some obvious place to learn about its best projects [21:54:25] like, at least with Ruby, we all knew it was Rails [21:54:33] so to learn, you went and read Rails [21:54:48] (this happens to not be the best example, because Rails does some scary things, but hey, at least you know) [21:55:14] with java, there are some good examples, but they're not remotely obvious [21:55:28] Guava and Jetty come to mind. [21:55:36] i found Cassandra's source fantastically illuminating. [21:55:40] same with Solr and Lucene. [21:55:44] yeah, i stumbled across guava looking for a suitable hashing algorithm and used that as a reference for code style generally, but guava seems like a library that was custom-tailored for people with plenty of experience w/java's pain points, so it's compensating and working with or around various things that aren't especially familiar to me [21:55:53] (Apache Commons, by contrast, is fucking awful) [21:55:59] yes. [21:56:08] Guava is fantastic, but totally non-obvious. [21:56:18] Like null-checking methods. That's useful? Really? [21:56:22] Turns out the answer is FUCK YES. [21:56:56] null-checking methods? [21:58:43] http://code.google.com/p/guava-libraries/wiki/FunctionalExplained [21:58:44] oh, and last but definitely not least, i'm not doing specifying character encoding anywhere and i'm dealing with strings rather than bytes. i sort of allowed myself to believe that unicode is the default and was too afraid to check :) [21:58:51] oops, wrong one [21:59:01] * not specifying [21:59:09] this one [21:59:10] http://code.google.com/p/guava-libraries/wiki/UsingAndAvoidingNullExplained [21:59:35] it is, actually. [21:59:41] java is all utf8. [21:59:52] you can't get strings any other way without going through the encoding dance. [22:00:02] oh, good times. [22:03:50] it seems sensible to me [22:03:59] i haven't ever wasted several hours on string encoding in java. [22:04:06] whereas i've lost whole days to it in python [22:05:01] yup :/ [22:29:44] OR STUPID DATAGRAM PACKETS! GAAAHHHH [22:29:53] my flume stuff works just fine, BUT I CAN'T WRITE A TEST [22:30:18] i can't even a simple standalone class to send a datagram packet properly! [22:30:23] i can write a listner, but not a sender [22:30:28] this must mean that it is the end of the day :) [22:33:35] ottomata: can ask you quickly about some tips for asana [22:33:40] we could just as well do this tomorrow [22:33:45] given that it is your end of day [22:34:20] naw ask me! [22:34:43] basically, do you use the today/later/upcoming stages? [22:35:05] and do you have any suggestions about good uses of tags [22:35:26] I'm trying to make sure I have good system set up so that I don't have to retrain people [22:36:20] yeah, i don't think my system is good though, but I do use them [22:36:25] I basically only ever use the My Tasks page [22:36:26] hmm [22:36:29] yeah [22:36:45] how do you organize that? [22:36:45] those get grouped by today/upcoming/later [22:36:45] yeah [22:37:00] so I enter things in today (because its at the top), and set the project there [22:37:14] gotcha [22:37:21] then, if I'm not going to work on it relatively soon, then I change it to upcoming or later [22:37:23] do you ever make tasks and then mark them as later? [22:37:28] once my today tasks are real small [22:37:28] gotcha [22:37:35] then I go look in upcoming and later and put things into today [22:37:40] yes [22:37:43] great [22:37:53] that I what I was thinking, but I wasn't sure if there were some hidden snags [22:38:13] there probably are, this is easy for me because pretty much nobody ever looks at my tasks except for me, afaik [22:38:24] if I was actually sharing tasks with people, it might get more difficult [22:38:24] ya [22:38:26] true [22:38:46] cool [22:38:51] any other asana words of wisdom? [22:39:06] i ask cause it seems like you are a major user [22:39:11] i should probably ask milimetric [22:39:17] howdy [22:39:19] milimetric: any asana lessons? [22:39:35] TAB+Backspace [22:39:35] :) [22:39:37] hehe [22:39:46] weirdest keyboard shortcut ever, btw [22:39:49] seriously [22:40:24] I only realized on this project that you can shift + click to select a bunch of stuff and then you can drag and drop them everywhere, give them all the same tag, etc. [22:40:34] ooo nice [22:40:35] good to know [22:40:43] yeah the tags thing seems kind of tedious but that might help [22:40:44] so maybe the word of wisdom is: "think of it like typical windows file management" [22:40:48] i noticed you [22:40:54] used tags for velocity points [22:40:56] how is that working [22:41:18] haven't parsed it out with asana-stats yet, but it's very easy to add/remove/filter based on them [22:41:38] and really helps me instantly understand a set of tasks and how they could be fit into my day [22:41:48] gotcha [22:42:13] i was considering prepending a [#h] to my task titles [22:45:38] what's annoying about tags? [22:46:18] from the doom 3 source article [22:46:23] oops... wrong window [22:46:41] i guess it is just the requirement of adding them manually to each task that needs them [22:46:48] rather than just creating a task in a section [22:46:52] this one in case people are now curious :) [22:46:53] http://kotaku.com/5975610/the-exceptional-beauty-of-doom-3s-source-code [22:46:57] which automatically adds [22:49:37] aha, i read that, and disagree with him on some points! [22:49:54] Code should be self-documenting. Comments should be avoided whenever possible. [22:49:55] WHAT?! [22:49:57] no way man [22:50:09] sure, make code as readable as possible [22:50:12] i disagreed at first, but I sort of buy it [22:50:14] yeah [22:50:29] but there's no way you are going to know the whole context of what some little complicated bit of code is doing just by reading that code [22:50:49] make it easy for people who don't know anything about your codebase to jump in anywhere [22:50:57] motivations and intentions are more important to document than anything else [22:51:26] that way someone later reading your code isn't all like "WHy tha crap did he do that?! I'm gonnaa fix it!", only to find out later WHY you did it. [22:52:15] ya ya [22:52:58] it seems like the "make your code self-documenting" injunction is more for inline comments stuff [22:53:12] i'm all for function docs which give system context [22:55:47] yeah, agreed with ott [22:58:04] ditto erosen and ottomata [22:58:20] comments are useful and good, redundancy is bad [22:58:54] like @param {number} length - the length is silly :) [22:59:04] so I just do @param {number} length [22:59:25] and try to make sure it's really obvious which length I'm talking about [22:59:37] I definitely disagree with a lot of stuff that article says [22:59:58] but agree with having strong opinions on this type of thing and debating them very fiercely :) [23:00:50] hehe [23:38:17] agree! [23:39:04] finishing up from home. need to stop and grab some meds on the way. (boo) [23:55:29] later guys!