Skip to content

Instantly share code, notes, and snippets.

@eloquence
Created October 31, 2012 20:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eloquence/3989704 to your computer and use it in GitHub Desktop.
Save eloquence/3989704 to your computer and use it in GitHub Desktop.
[19:31:38] <dschoon> Youtube Link: http://youtu.be/mLHSeH376y0
[19:31:44] <milimetric> :)
[19:32:13] <qgil> Looking good :)
[19:32:15] <aude> how do i join?
[19:32:17] <YairRand> how much of a lag does this have?
[19:32:24] <sumanah> I can see it from here
[19:32:24] <Eloquence> aude, view the live stream at http://youtu.be/mLHSeH376y0
[19:32:34] <Eloquence> if you want to join as a video participant /msg dschoon for an invite
[19:32:38] <aude> click
[19:32:47] <brion_> can somebody stick the youtube link in the channel msg?
[19:32:53] <aude> no video from my side?
[19:33:01] <brion_> oh there it i
[19:33:07] <James_F> Gah.
[19:33:07] <Krenair> It's not a +t channel, brion_ :)
[19:33:07] * chrismcmahon listens
[19:33:07] <RoanKattouw> WTF
[19:33:10] <aude> smile
[19:33:12] <James_F> RoanKattouw: Not working?
[19:33:15] <RoanKattouw> I changed the topic and then Krenair changed it to the same thing?
[19:33:21] * RoanKattouw is confused
[19:33:24] <harshkothari410> Live streming is working
[19:33:29] <Krenair> Oh... sorry RoanKattouw
[19:33:35] <RoanKattouw> No worries
[19:33:43] <RoanKattouw> I figured my topic change didn't go through or something
[19:33:50] <James_F> RoanKattouw: Not string-identical.
[19:34:05] <sumanah> Did he say "muggles"?
[19:34:10] <RoanKattouw> Yes
[19:34:17] <RoanKattouw> dschoon: We can't see the projected screen
[19:34:27] <sumanah> we see 3 people
[19:34:34] <RoanKattouw> There we go
[19:34:34] <sumanah> There's Chip!
[19:34:34] <sumanah> Hi Chip
[19:34:35] <hexmode> yay!
[19:34:43] <sumanah> http://reportcard.wmflabs.org/
[19:35:30] <sumanah> We are all technical enough that you can drop acronyms
[19:35:33] <milimetric> deep
[19:35:33] <milimetric> :)
[19:35:35] <sumanah> and if you say something we don't understand I will ask
[19:37:01] <sumanah> better browsers really helped
[19:37:04] <sumanah> also broadband
[19:37:09] <siebrand> lost audio
[19:37:47] <Eloquence> is audio gone for everyone or just siebrand?
[19:37:51] <sumanah> i have audio
[19:37:52] <siebrand> (local issue)
[19:37:54] <Eloquence> ok
[19:37:55] <RoanKattouw> I have audio
[19:37:56] <Krenair> Audio is working for me
[19:37:56] <tfinc> audio works great for me on the hangout
[19:38:00] <hexmode> siebrand: I'm listening for you :)
[19:38:00] <lazowik> me too
[19:39:09] * RoanKattouw snorts
[19:39:39] <RoanKattouw> "JS was never really intended as a fully functional programming environment" *coughvisualeditorcough* :D
[19:39:39] <Eloquence> heh
[19:39:49] <sumanah> I am not above ave in dev
[19:40:11] <harshkothari410> we can also do live comment over there
[19:40:29] <YairRand> there's a "Live comments" area next to the youtube feed. is there any reason not to use this instead of irc?
[19:40:34] <StevenW> This history is too much?
[19:40:47] <James_F> RoanKattouw: I thought the same. :-)
[19:41:05] <RoanKattouw> Some people are using the hangout directly rather than watching via Youtube, I'm not sure if they'll see the live comments
[19:41:13] <lazowik> You can't see too many of them on youtube (at least I think so)
[19:41:59] <hexmode> it is fun to watch siebrand walking around during this :)
[19:41:59] <tfinc> RoanKattouw: correct. hangout users will *not* see them. i'm switching between both to see which one is better for being remote
[19:42:18] * sumanah eats lunch because it is a brown bag!
[19:42:19] <siebrand> hexmode: I walk around a lot with my laptop. Had to get a drink this time… ;
[19:42:38] * aude loves backbone :)
[19:42:45] * milimetric used it
[19:42:47] * milimetric not loved it
[19:43:16] * hexmode invokes WP:Bold
[19:44:08] <sumanah> siebrand: you are a JS framework?
[19:44:22] <siebrand> apparently.
[19:44:29] <siebrand> learn something new every day. Thanks dschoon
[19:44:49] <Eloquence> siebrand.js
[19:44:55] <sumanah> be the framework you want to see in the world
[19:45:03] <siebrand> very scary.
[19:45:04] <siebrand> s
[19:45:05] <siebrand> ounds
[19:45:05] <siebrand> li
[19:45:13] <siebrand> k
[19:45:13] <siebrand> e a
[19:45:13] <siebrand> ehr...
[19:45:16] <Eloquence> lmgtfy: http://knockoutjs.com/ http://emberjs.com/ http://backbonejs.org/
[19:45:17] <siebrand> sounds like a heavy framework...
[19:45:34] <spagewmf> angular.js had the best tutorial
[19:46:24] <harshkothari410> yeah agree
[19:46:40] <milimetric> try the knockout tutorials. You might change your mind
[19:46:58] <jeremyb> who's speaking?
[19:47:14] <RoanKattouw> jeremyb: dschoon
[19:47:14] <jeremyb> ahhhh
[19:47:31] * jeremyb follows sumanah's lead and eats as well
[19:47:48] <siebrand> Almost 21.00 here. Had all meals already.
[19:48:05] <Edokter> it thought it was tomorrow...!
[19:48:05] * tfinc switches to youtube url to see how to compares to being on the hangout 
[19:48:13] <^demon> It's time to eat here as well.
[19:48:14] <RoanKattouw> dschoon: Zoom in please?
[19:48:21] <RoanKattouw> Oh nm
[19:48:26] <RoanKattouw> I thought you were actually gonna show code
[19:48:28] <Denny_WMDE> whats the youtube link?
[19:48:37] <tfinc> Denny_WMDE: check channel topic
[19:48:37] <sumanah> topic, Denny_WMDE
[19:48:39] <Reedy> http://www.youtube.com/watch?v=mLHSeH376y0&feature=youtu.be
[19:48:54] <sumanah> :)
[19:49:11] <Denny_WMDE> thanks, sorry
[19:49:49] <Eloquence> btw the codebase of limn (which dschoon is showing) is at https://github.com/wikimedia/limn
[19:50:05] <spagewmf> Wikipedia 3.0: JS shell loads wikidata facts and turns them into a stub article in your language ;)
[19:50:23] <Eloquence> that was wikipedia 1.0 .. we called it User:RamBot
[19:52:06] <tfinc> and now to up stairs to see how that compares to hangout and youtube
[19:52:31] <hashar> I wish MediaWiki had some conventions so our PHP code would automatically generate some basic javascript helpers
[19:53:09] <Eloquence> adhd much tfinc :p
[19:53:25] <Nikerabbit> what's going on right now?
[19:53:43] <hashar> Nikerabbit: http://www.youtube.com/watch?v=mLHSeH376y0&feature=youtu.be
[19:53:43] <hexmode> dschoon: scrolling looks pretty smooth from this youtube
[19:53:44] <RoanKattouw> dschoon: The font size is way too small for your highlighting to have any meaning
[19:53:44] <Nikerabbit> I just joined
[19:54:09] <hashar> all looking at Siebrand while listening to david presenting some javascript frameworks
[19:54:29] <hexmode> RoanKattouw: well, I can just barely read it, but, yes, it is too hard
[19:54:43] <RoanKattouw> I can just about read it in full-screen mode
[19:55:11] <RoanKattouw> But I want to be able to do other things on my computer :)
[19:55:11] * milimetric has a mustache
[19:55:16] <hexmode> that Ember.View page seems good
[19:55:21] * robla has a beard
[19:55:34] <hexmode> RoanKattouw: just put it on another monitor :P
[19:55:37] * zeljkof used to have a mustache
[19:56:03] * Eloquence thinks something got lost in translation :p
[19:56:20] <RoanKattouw> hexmode: I don't have a portable 20" monitor unfortunately
[19:56:53] <siebrand> Anyone who wants to come into the hangout and overthrow dschoon's monologgue?
[19:57:15] <Eloquence> activating siebrand.js ...
[19:57:27] <siebrand> just ran out of memory....
[19:57:28] <ori-l_> an opinionated framework
[19:57:41] <siebrand> hah
[19:58:21] <spagewmf> hashar, onMakeGlobalVariablesScript sends down variables, and wgResourceModules sends down JS. What more do you want?
[19:58:48] <hashar> enhance HTMLForm ? ;-]
[20:00:20] <sumanah> we hear you
[20:00:26] <sumanah> we see you
[20:00:26] <zeljkof> and see the screen
[20:00:27] <milimetric> i see
[20:00:28] <sumanah> you are real
[20:00:37] <hashar> the ability to write something like: Linker::link( 'Main_page', array( 'onclick' => 'Are you sure?' );
[20:00:47] <ori-l_> sumanah: #wikimedia-ontology
[20:01:01] <sumanah> I was thinking more therapy-style
[20:02:05] <hexmode> hashar: maybe 'onclick' => function() { alert('Are you sure?') }...
[20:02:27] <Eloquence> ok
[20:02:41] <Eloquence> shall we open it up a bit now? I'd like to talk about which of these libraries to use in mw
[20:02:45] <hashar> hexmode: alert could be an option to display the message :-]
[20:03:02] <sumanah> huh? why bicycles?
[20:04:10] <hexmode> backbone is an mvc in js?
[20:04:11] <robla> anyone here with something to say to Erik's question?
[20:04:11] <milimetric> one great guide is one of the top most popular repos on github: http://addyosmani.github.com/todomvc/
[20:04:37] <YairRand> +1 to being distrustful of frameworks :)
[20:04:39] <Krenair> who's speaking now?
[20:04:43] <Eloquence> jon robson
[20:04:50] <Krenair> ok
[20:05:08] <yuvipanda> jdlrobson: the templating one? hogan.js?
[20:05:23] <sumanah> oh hey! Ori, Jon, & Rob!
[20:05:23] <sumanah> *wave*
[20:05:24] <dschoon> ohay
[20:05:26] <yuvipanda> yeah, port of moustache.js
[20:05:28] <sumanah> and A SEA OF CHAIRS
[20:05:45] <ori-l_> hey
[20:05:50] <sumanah> also I did not get an announcement email when that small one-pint plastic bottle got hired (next to S)
[20:05:57] <hexmode> sumanah: everybody ran out
[20:06:00] <robla> James and Steven are out of frame
[20:06:38] <jeremyb> robla: alexander and walling?
[20:07:04] <robla> Forrester and Walling
[20:07:04] <jeremyb> ahh
[20:07:05] <hexmode> MW doesn't really have MVC, does it? Wouldn't it be confusing to have MVC in js, but not php?
[20:07:09] <spagewmf> what does V.E. use as a framework?
[20:07:24] <Eloquence> I understand skepticism about frameworks but sensible architecture is essential .. I've seen far too much dom spaghetti in mediawiki js (gadgets + some js-heavy extensions like uploadwizard)
[20:07:39] <James_F> spagewmf: Other than jQuery?
[20:07:44] <yuvipanda> jdlrobson: we sortof built a viewing / page framework for WLM app, I guess.
[20:07:46] * jeremyb suddenly wants meatballs
[20:08:03] * marktraceur supports Eloquence's statement about UploadWizard
[20:08:14] <spagewmf> James_F yeah, how do you keep the HTML window and that dropdown thingy in sync
[20:08:15] <ori-l_> hexmode: in my experience, "MVC" (sometime "MV*" to include MVVC & other patterns) doesn't really describe what these frameworks do, and is merely a buzzword.. it has very little to do with the original ideas from SmallTalk or whatever. But the ideas in these libraries *are* useful. I consider the term a bit like "NoSQL" -- useful but ultimately nonsubstantial.
[20:08:17] <lwelling1> How would a bundled framework work in the mw political environment? Is this the type of project that can mandate the use of a single one?
[20:08:28] <sumanah> lwelling1: very good question
[20:08:28] <James_F> spagewmf: That's RoanKattouw's specialism. :-)
[20:08:45] <jdlrobson> yuvipanda: most of the things i do need events and templating
[20:08:45] <hexmode> ori-l_: ok, makes sense
[20:08:47] <jdlrobson> (custom events)
[20:08:52] <ori-l_> (data bindings)
[20:08:52] <spagewmf> hexmode, I think Article Feedback and Page Curation are great examples. PHP sends you a plain HTML doc, but then you do something that happens entirely in JS and gets pretty complicated
[20:08:53] <gwicke> please switch to screen sharing
[20:09:03] <ori-l_> (decoupling application logic from dom)
[20:09:17] <yuvipanda> jdlrobson: +1 for templating (I keep using them all the time - even in the gadgets I build)
[20:09:17] <jeremyb> dschoon: ^ gwicke
[20:09:21] <ori-l_> (why am i talking in lisp)
[20:09:38] <jeremyb> you are
[20:09:38] <milimetric> (don't know)()
[20:09:38] <yuvipanda> It'll be really nice if we pick a templating engine and put them on by default (or at least available by with RL)
[20:09:39] <sumanah> Eloquence: after this discussion, "The future of Gadgets/ResourceLoader"? or other?
[20:09:41] <gwicke> dschoon: thanks!
[20:10:06] <marktraceur> (reply good-question 'ori-l)
[20:10:27] * aude distracted with editing wikidata :o
[20:10:30] <sumanah> I don't know how to participate in this parenthetical discussion because I don't have a car
[20:10:58] <jeremyb> aude: i can see natural light out there!
[20:10:58] <milimetric> I think the key for MW would be to find a framework that lets you build a plugin-able core and figuring out a way to ease extension development, maintenance, and compatibility testing
[20:11:04] <aude> jeremyb: :)
[20:11:05] <yuvipanda> sumanah: it floated away? #sorry
[20:11:17] * James_F laughs.
[20:11:18] <yuvipanda> did we all lose audio or just me?
[20:11:21] <sumanah> Thank you James_F for laughing at my terrible scheme joke
[20:11:23] <sumanah> just lost audio
[20:11:24] <yuvipanda> or are people just quiet?
[20:11:26] <hexmode> yuvipanda: me too
[20:11:26] <siebrand> audio back
[20:11:32] <jeremyb> yeah, lost audio
[20:11:32] <aude> not just you
[20:11:32] <milimetric> if that framework is jQuery + some simple glue, then great, but organization leads to maintainability is the underlying philosophy of all these frameworks
[20:11:35] <aude> back
[20:11:35] <sumanah> audio is back
[20:11:36] <siebrand> ori-l_: yes, please repeat
[20:11:42] <hashar> dschoon: next week will you introduce MVC frameworks for MediaWiki =]
[20:11:46] <hexmode> wmf is super sekrit
[20:11:52] <sumanah> I can hear you now Ori
[20:11:53] <spagewmf> yuvipanda, I like handlebars for templating.
[20:11:55] <hexmode> hashar++
[20:12:07] <dschoon> i'm allergic to PHP, unfortunately
[20:12:20] <Eloquence> backbone.js source: https://github.com/documentcloud/backbone
[20:12:28] * sumanah gets out the epipen for dschoon 
[20:12:33] <James_F> RoanKattouw_: I was taking your name in vain telling spagewmf about how VisualEditor works and keeps the model and the page in sync.
[20:12:36] <dschoon> no stabby :(
[20:12:46] * RoanKattouw_ reads chanlog
[20:13:31] <jdlrobson> sorry got to dash off to a meeting :(
[20:13:50] <yuvipanda> spagewmf: I had one pet peeve with all the moustachey ones - i think it was something to do with lack of even simple logic and being unable to iterate over objects
[20:13:52] <yuvipanda> okay, two
[20:14:14] <Eloquence> todomvc looks handy
[20:14:41] <hashar> dschoon: I got a few js hackers in my coworking that have recommended backbone js too
[20:14:41] <Eloquence> http://addyosmani.github.com/todomvc/
[20:14:47] <yuvipanda> spagewmf: I've used underscore's minimal templating system in some gadgets i've built, but of course, that's the other extreme...
[20:14:55] <milimetric> Eloquence: browsing the source of each implementation helps you understand the difference between the frameworks pretty fast
[20:14:56] <hashar> dschoon: make sure to talk about it with Krinkle / Timo :-]
[20:15:47] * RoanKattouw stabs GWT
[20:15:52] * hashar wonders if todomvc would end up making me choose MediaWiki
[20:15:52] <yuvipanda> GWT is wonderful, we should port Mediawiki to it
[20:15:52] * yuvipanda runs
[20:16:07] <hexmode> we should write all our js in php
[20:16:13] <hashar> or all our PHP in js :-]
[20:16:21] <jeremyb> still works
[20:16:25] <jeremyb> (the mic)
[20:16:30] <preilly> hexmode: 1 There's a problem with this change, please improve
[20:16:44] * preilly missed the -
[20:16:51] <hashar> Eloquence: kind of out of topic but I am wondering if we could make youtube to stream HD video
[20:16:51] <yuvipanda> thoughts on picking at least a template engine, rather than a full fledged 'framework'?
[20:16:51] <hexmode> heh
[20:17:06] <yuvipanda> I'd really love it if we could pick one and make it available
[20:17:08] <ori-l_> yuvipanda: let's settle vi vs emacs while we're at it
[20:17:09] <hashar> though 480px is already nice
[20:17:19] <sumanah> hashar: Chip'd be the one to have to work on that and I think he has his hands full for the next few weeks
[20:17:28] * hexmode bashes ori-l_ with emacs
[20:17:33] <yuvipanda> ori-l_: Depends on wether you need an operating system or text editor
[20:17:42] <hashar> yuvipanda: there is a vim plugin for emacs IIRC
[20:17:50] <hashar> yuvipanda: so choose emacs, end of story :-]
[20:17:50] <ori-l_> viper
[20:17:52] <yuvipanda> hashar: yup, vim runs on most operating systems
[20:18:02] <yuvipanda> :P
[20:18:05] <milimetric> yuvipanda: knockout is actually more of a templating engine than a framework. It lacks opinion on how you should structure your app. The weird thing about it is two-way databinding your templates. So if you change text in a text box, it updates your model
[20:18:07] <jeremyb> is this pushstate?
[20:18:12] <hexmode> yuvipanda: also, using emacs as your os makes Windows act like linux :)
[20:18:23] <milimetric> uh oh, holy war underway
[20:18:31] <hashar> the nice thing with Todo MVC is that you get the source
[20:18:38] <hashar> so that is a nice way to see how a real app looks like
[20:18:38] <milimetric> yep
[20:18:45] <hashar> nice find
[20:18:49] <yuvipanda> milimetric: true, but a template engine is much simpler - pass in a string + data, get out string
[20:19:00] <milimetric> that's what knockout does :)
[20:19:01] <yuvipanda> milimetric: useful for HTML production, wikitext production, etc
[20:19:05] <milimetric> ko.applyBindings(data)
[20:19:16] <milimetric> right, true
[20:19:21] <milimetric> mustache I think is pretty king in that area
[20:19:28] <milimetric> you can generate whatever you want
[20:19:28] <yuvipanda> milimetric: oh? thought it was DOM + data -> DaOM?
[20:19:30] <yuvipanda> *DOM
[20:19:42] <milimetric> and to someone's point earlier, {{#each items}}{{/each}} does a loop
[20:19:42] <yuvipanda> milimetric: true, but I was hoping if we could pick one :)
[20:19:57] <yuvipanda> milimetric: it doesn't loop over items in an object
[20:19:57] <milimetric> yeah, it'd help a lot
[20:19:59] <yuvipanda> milimetric: only loops over lists
[20:20:26] <yuvipanda> milimetric: it's a pain (we use hogan.js in the mobile app, and I've used handlebars elsewhere)
[20:20:26] <milimetric> right but you can nest templates right? so {{> thatTemplateAbove}}
[20:20:28] <hashar> dschoon: can't read the code on youtube :-D
[20:20:49] <Amgine> hashar: is there a canonical method to generate missing page titles?
[20:20:55] <dschoon> how much bigga?
[20:20:59] <Amgine> (in unit tests)
[20:21:00] <hexmode> enlarge, enlarge!
[20:21:03] <dschoon> mo bigga?
[20:21:08] <RoanKattouw> Re DOM as your data model: that can also really screw you over when cross-browser differences occur
[20:21:09] <milimetric> knockout is built to solve exactly what ori-l is talking about
[20:21:10] <hexmode> 2x
[20:21:24] <RoanKattouw> Especially in a contentEditable *shudder*
[20:21:25] <hexmode> I can make it out almost now
[20:21:28] <yuvipanda> milimetric: so we have to re-shape the data in js before passing in
[20:21:31] <hexmode> :)
[20:21:40] <hashar> Amgine: in a middle of a meeting right now http://www.youtube.com/watch?v=mLHSeH376y0&feature=youtu.be ;-)
[20:21:55] <Amgine> kk
[20:22:06] * yuvipanda is not particularly a fan of purely logicless templates
[20:22:09] <sumanah> Eloquence: after this discussion, "The future of Gadgets/ResourceLoader"? or other? I'd like to get a brief read re the "what do you want to learn" discussion
[20:22:20] <milimetric> yuvipanda, shoot me over a use case that you're puzzling over and I can see if I can help
[20:23:18] <Eloquence> sumanah, up to everyone .. there's not a lot of active dev on gadgets/rl2 right now afaik so it might be best to wait til timo/roan or platform engineering have time to pick it up
[20:23:23] <milimetric> +2 on what ori-l just said about generic eventing with jQuery
[20:23:23] <hashar> ori-l_: dschoon: regardless of which js MVC framework we end up choosing, I am a bit worried how it will get the data from the PHP backend.
[20:23:40] <yuvipanda> milimetric: $.each( object, function( key, value) { } );. No way to do that.
[20:23:54] <hashar> ori-l_: dschoon : since we do not have a routing system in MediaWiki AFAIK, that might makes things a bit uglier in the JS code we will end up writing.
[20:24:03] <hexmode> hashar: your job is to rewite mw in symfony
[20:24:12] <yuvipanda> milimetric: loops only do $.each( list, function( i, item ) { } );
[20:24:33] <YairRand> and if you don't need anything other than raw js... oh wait
[20:24:33] <spagewmf> yuvipanda, handlebars nested template fragments let the templates stay logicless yet you can be pretty structured. And it's like MediaWiki, {{{link story}}} will invoke your JavaScript helper.
[20:24:34] <hashar> hexmode: that is my secret plan. First step would be to start using composer for our extension :-]
[20:25:02] <hexmode> excellent... symfony is growing on me... like a fungus
[20:25:26] <yuvipanda> milimetric: use case: an object with key as language code and language name as value
[20:25:38] <yuvipanda> milimetric: true, but I shouldn't have to write a custom helper to iterate through objects
[20:25:45] <ori-l_> var channel = $( { channel: '#wikimedia_dev', network: 'freenode' ); channel.on( 'user-join', function () { ... } ); channel.trigger( 'user-join', userObject );
[20:26:00] <ori-l_> i accidentallly a }
[20:26:14] <sumanah> milimetric: jeremyb: aude: zeljkof: Krenair: I was curious to get your responses to http://www.gossamer-threads.com/lists/wiki/wikitech/308569
[20:26:16] <milimetric> thanks yuvipanda, I'll puzzle over it :)
[20:27:01] <zeljkof> sumanah: I am thinking about it
[20:27:11] <sumanah> Thanks zeljkof
[20:27:14] <pginer> Another aspect to consider is the reusability of UI templates
[20:27:47] <hashar> dschoon: +1 for being lazy when writing code :-]
[20:27:54] <zeljkof> sumanah: but I would like to learn javascript, and even PHP, looks like it will get handy these days :)
[20:27:54] <Krenair> sumanah, I read that email but I don't think there's anything specific I want to learn about right now
[20:28:03] <hashar> dschoon: though one could consider that copy pasting is the ultimate sign of laziness :-]
[20:28:32] <zeljkof> sumanah: the more I think about it, the more I am sure I would like to learn some javascript
[20:28:37] <pginer> ember.js (with Handlebars) looked really nice but I found not easy to share a template outside HTML to be used among different apps.
[20:28:42] <zeljkof> sumanah: I will send you an e-mail message
[20:28:45] <hashar> siebrand: I guess you are considering how to translate all that stuff aren't you ? ;-]
[20:29:05] * aude has not enough hours in the day
[20:29:05] <sumanah> I will try and see dschoon!
[20:29:11] <sumanah> zeljkof: :) cool! and the even more important part - HOW do you learn best?
[20:29:13] <siebrand> hashar: What stuff?
[20:29:19] <yuvipanda> milimetric: http://jsfiddle.net/MNmj8/
[20:29:19] <yuvipanda> is what i meant
[20:29:27] <milimetric> sweet, thx
[20:29:34] <hashar> siebrand: all the javascript madness that is going to be implemented in backbone or whatever framework
[20:29:49] <zeljkof> sumanah: I learn the best with small tasks
[20:29:49] <milimetric> one sec, I'm trying to follow
[20:29:50] <hashar> siebrand: though that would probably on the existing jquery modules we have
[20:30:03] <milimetric> I'm quite interested in seeing what people think about this issue
[20:30:03] <sumanah> got it dschoon
[20:30:05] <sumanah> reading ToS now
[20:30:19] <yuvipanda> pgehres: what exactly do you mean by 'not easy to share'?
[20:30:21] <zeljkof> sumanah: so, a little bit of theory, then a task
[20:30:31] <yuvipanda> err, i meant pginer
[20:30:31] <yuvipanda> sorry pgehres
[20:30:47] <siebrand> hashar: from what I know, they're currently using resourceLoader. I haven't heard of anyone using i18n outside of MediaWiki's, except for the Language Engineering team with jQuery.i18n.
[20:30:50] <aude> sumanah: glad you didn't lose internet access :)
[20:30:53] <aude> apparently
[20:31:01] <siebrand> hashar: That's live on wikidata at the moment (will bugs and all)
[20:31:10] <aude> siebrand: but generally working though
[20:31:24] <aude> caching to be configured better, though
[20:31:44] <siebrand> aude: Make sure ops knows that's a problem to you...
[20:31:44] <hashar> Q: ori-l_: dschoon : since we do not have a routing system in MediaWiki AFAIK, that might makes things a bit uglier in the JS code we will end up writing.
[20:31:58] <siebrand> aude: it's the way paver for other Wikimedia sites, too.
[20:32:15] <ori-l_> hashar: yes agreed, not everything is applicable to our world
[20:32:54] <dschoon> hashar: you mean a client-side routing system?
[20:32:54] <ori-l_> relevant: http://i.stack.imgur.com/ssRUr.gif
[20:32:58] <aude> siebrand: indeed
[20:33:09] <milimetric> hashar: you can build a routing layer that abstracts the framework away from the server
[20:33:11] <yuvipanda> milimetric: http://jsfiddle.net/NhU53/ is how I'd have to do it now
[20:33:23] * aude not aware that the squid config is in gerrit anywhere
[20:33:37] <milimetric> yuvipanda that's the same as before
[20:33:40] <aude> that's one thing missing (to poke at and learn)
[20:33:51] <sumanah> thanks aude!
[20:33:53] <yuvipanda> milimetric: try http://jsfiddle.net/NhU53/1/
[20:34:05] <milimetric> ah, cool :)
[20:34:14] <hashar> dschoon: a server side routing that would use some nice conventions.
[20:34:19] <aude> it's nice to be able to fix our on ops problems, with the stuff in gerrit
[20:34:22] <siebrand> hashar: tests for 1.19 are broken. https://gerrit.wikimedia.org/r/#/q/status:open+project:mediawiki/core+branch:REL1_19,n,z
[20:34:25] <dschoon> hashar: because i agree with that. but larger is some sort of module system.
[20:34:34] <hashar> I am assuming the frameworks are assuming some kind of REST api
[20:34:34] <pginer> LinkedIn evaluation of client-side template systems may be interesting: http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more
[20:34:42] * yuvipanda notes that the storm has started in Chennai :)
[20:34:43] <ori-l_> dschoon: a resource loader of sorts
[20:34:43] <siebrand> hashar: How do I get trivial localization updates merged?
[20:34:48] <aude> hi sumanah :)
[20:34:53] <preilly> dschoon: thanks
[20:34:56] <aude> jeremyb!
[20:34:57] <hashar> siebrand: please fill in a bug for REL1_19 tests being broken. Will poke it tomorrow.
[20:35:14] <Krenair> Sorry my reply wasn't much use :)
[20:35:22] <dschoon> ori-l_: actually, that's a good question! does resourceloader support CommonJS or AMD?
[20:35:25] <dschoon> RoanKattouw?
[20:35:38] <sumanah> Krenair: you might find your curiosity piqued once you see some of the maintainership table I work on
[20:35:38] <siebrand> hashar: I'm not putting anything in bugzilla or gerrit for you anymore. Make a note yourself, please.
[20:35:38] <siebrand> hasher: you haven't given me the impression you do something with it.
[20:36:02] <ori-l_> dschoon: yes. i'm not sure how strictly it adheres to the commonjs proposals, but it does everything require.js does + more
[20:36:16] <spagewmf> can't hear him Mark
[20:36:16] <sumanah> that thread re mentorship and learning http://www.gossamer-threads.com/lists/wiki/wikitech/308569
[20:36:23] <ori-l_> it's really awesome actually. it just doesn't have a hip name :)
[20:36:31] <RoanKattouw> dschoon: We do want to eventually make RL's module system CommonJS-like or -compatible
[20:36:33] <RoanKattouw> I don't know what AMD is
[20:36:33] <sumanah> preilly: what is Mark saying?
[20:36:37] <yuvipanda> hexmode: wonderful mouth movements Mark! :D
[20:36:54] <dschoon> that would be awesome
[20:36:54] <hexmode> i'll send email
[20:36:55] <YairRand> SPEAK LOUDER
[20:37:00] <YairRand> :)
[20:37:07] <yuvipanda> hexmode: one step away from Gangam style.
[20:37:15] <preilly> sumanah: ha ha
[20:37:25] <ori-l_> MY HAIR IS RECEDING
[20:37:30] <ori-l_> as we sit here discussing js
[20:37:31] <dschoon> RoanKattouw: yeah, that'd be pretty awesome
[20:37:39] <spagewmf> hexmode, congrats on 1.20 work, great!
[20:37:40] <ori-l_> good god, please don't show people how they look on a large display
[20:38:06] <dschoon> RoanKattouw: imo, when it comes to "module loaders", features aren't really as important as standards
[20:38:22] <spagewmf> It's in my employment contract that I can only be digitized at low resolutions, or with vaseline on the lens
[20:38:22] <jeremyb> aude: yes?
[20:38:38] <aude> jeremyb: you're on the video :)
[20:38:43] <sumanah> Krenair: it's all data :)
[20:39:06] <jeremyb> aude: i was wondering who that was! not me
[20:39:26] <jeremyb> who's the guy in green?
[20:39:30] <Krenair> sumanah, maintainership table... sorry I'm struggling to understand, Is this about code review?
[20:39:33] <sumanah> jeremyb: that's hexmode
[20:39:33] <Eloquence> jeremyb, that's hexmode
[20:39:40] <jeremyb> I am wearing green actually. but a different green
[20:39:40] <Eloquence> I was faster :)
[20:39:40] <jeremyb> i thought so!
[20:39:56] <aude> it's blurry
[20:39:58] <aude> :O
[20:40:03] <aude> ah, okay
[20:40:09] <jeremyb> aude: ;)
[20:40:17] <ori-l_> NOT USELESS
[20:40:17] <aude> heh
[20:40:24] <ori-l_> A++++ would attend again
[20:40:25] <Eloquence> thanks all!
(Hangout ends, but discussion continues for a bit on IRC.)
[20:40:31] <chrismcmahon> thanks!
[20:40:32] <hexmode> moar lisp!
[20:40:45] <yuvipanda> +1 to ori-l_
[20:40:53] <YairRand> O_O
[20:40:53] <yuvipanda> nice background!
[20:40:55] <Edokter> next time in HD?
[20:40:57] <ori-l_> hexmode: https://github.com/clojure/clojurescript
[20:40:59] <yuvipanda> sumanah: which Nation's?
[20:41:00] <yuvipanda> :P
[20:41:08] <sumanah> Krenair: code review is one of the reasons for keeping track of and nurturing maintainership, but mentorship is another big one
[20:41:08] <James_F> Mine!
[20:41:12] <Eloquence> Edokter, I don't think hangout on air can do any better
[20:41:22] <yuvipanda> is that a dinosaur with a top hat?
[20:41:27] <hexmode> ori-l_: ooo!
[20:41:27] <Eloquence> yes
[20:41:27] <YairRand> play "La Espero", that'll do fine
[20:41:29] <jeremyb> yuvipanda: MediaWiki?
[20:41:30] * aude goes back to wikidata
[20:41:31] <sumanah> yuvipanda: don't talk about Erik that way
[20:41:37] <sumanah> ;-)
[20:41:45] <ori-l_> ha ha
[20:41:46] <Eloquence> there's a lot more fun/weird stuff from david here: http://art.less.ly/
[20:41:51] <zeljkof> good night
[20:42:05] <Eloquence> hum hum
[20:42:05] <multichill> sumanah: I would expect you not to be online ;-)
[20:42:22] <jeremyb> multichill: what am i, chopped liver? ;)
[20:42:29] <yuvipanda> from way back in 2000? Wow, I was like, 9 then.
[20:42:35] <milimetric> yuvipanda so one thing you could do is "clean" the data (and you can create this generically as a template adapter).
[20:42:35] <milimetric> http://jsfiddle.net/NhU53/8/
[20:42:43] <dschoon> it is a LOVING dinosaur in a tophat
[20:43:07] <dschoon> http://art.less.ly/2012/heart-dino.png
[20:43:12] <yuvipanda> milimetric: That's what I had to do when I ran into it the last time, and I do not want to do that. I shouldn't have to restructure my data to make it fit into a templating engine
[20:43:33] <yuvipanda> milimetric: now when doing templates I've to figure out what structure my data is in
[20:43:33] <aude> come join us in #wikimedia-wikidata :)
[20:43:33] <milimetric> well, the data isn't structured to begin with, I think that's the problem right?
[20:43:50] <yuvipanda> milimetric: it is structured!
[20:43:54] <ori-l_> aude: challenge accepted
[20:43:55] <milimetric> like a dictionary isn't something you should be able to iterate over
[20:43:55] <multichill> jeremyb: ?
[20:43:57] <yuvipanda> milimetric: usually the 'value' is itself a dictionary
[20:44:02] <spagewmf> I ask dschoon "If you rewrote Limn, what framework would you use?"
[20:44:08] * sumanah can only see S and David
[20:44:10] <jeremyb> multichill: re not be online
[20:44:11] <yuvipanda> milimetric: why not?
[20:44:12] <sumanah> not hear them
[20:44:25] <ori-l_> children shoul.. nevermind 8)
[20:44:25] <spagewmf> dschoon says good question, hard to answer, things missing from all of them
[20:44:41] <yuvipanda> milimetric: the wiki app keeps the list of languages as a dict with the lang as key (fast lookups!) + value as an object with name, name in english, etc
[20:44:46] <milimetric> yuvipanda: just to keep datastructures true to their purpose. lists are for iterating
[20:44:53] <milimetric> yeah, that makes perfect sense
[20:45:02] <yuvipanda> milimetric: converting that into a list is a bad idea, since lookup would be slow
[20:45:19] <milimetric> well, on the client side that tends to not matter
[20:45:22] <yuvipanda> milimetric: now, I shouldn't have to transform a perfectly sane data structure because of a library limitation
[20:45:22] <Krenair> sumanah, ok, but maintainership? you mean +2 on a repo or..?
[20:45:32] <milimetric> nono, I'm not arguing that
[20:45:40] <sumanah> Krenair: lemme turn that around. What does maintainership mean to you?
[20:45:49] <yuvipanda> milimetric: well, it's used pretty often, and on a slow mobile device...
[20:45:59] <yuvipanda> milimetric: plus, i'd have to write code to loop over it
[20:46:14] <yuvipanda> milimetric: I'm saying that iterating over dictionaries is a perfectly useful thing to do
[20:46:28] <ori-l_> oooooh i forgot! as far as powerful abstractions that are already available to you go, this is hard to beat: http://api.jquery.com/category/deferred-object/
[20:46:43] <milimetric> right, sorry, that was more of a side point
[20:46:45] <sumanah> Krenair: To me it's partly about status and partly about knowledge
[20:46:46] <yuvipanda> ah, okay :)
[20:46:57] <ori-l_> may be confusing at first if you're not familiar with the concept of promises or futures from other languages but eminently worth grokking.
[20:47:00] <yuvipanda> +1 to ori-l_
[20:47:07] <milimetric> I'm trying to work on my other point in the jsfiddle, one more sec :)
[20:47:12] <yuvipanda> milimetric: heh,. ok
[20:47:40] <yuvipanda> ori-l_: we switched pretty much all code in the mobile app from callbacks to deferreds about 7-8 months ago. Made things a *lot* more cleaner
[20:48:09] <yuvipanda> ori-l_: though I'll note that there are more powerful async libraries available - like https://github.com/caolan/async
[20:48:11] <yuvipanda> jQuery's one is pretty basic
[20:48:26] <gwicke> hehe- with deferreds being just a tiny bit extra abstraction over callbacks..
[20:49:01] * gwicke is intrigued by declarative / reactive programming
[20:49:07] <Krenair> sumanah, just generally maintaining code.. being knowledgeable about how it all works, that sort of thing
[20:49:22] <gwicke> lambda the ultimate has some great discussions on ideas in that area
[20:49:42] <ori-l_> gwicke: yes, i was explaining it to spagewmf the other day and as an exercise we implemented 80% of $.Deffered in 5 minutes. but the simplicity of it and the fact that no deep magic is happening does not detract from how useful it can be as a way of structuring your thoughts and your code
[20:50:30] <ori-l_> +λ for lambda the ultimate
[20:50:54] <gwicke> already-tested articles.
[20:51:00] <gwicke> oops.. http://lambda-the-ultimate.org/
[20:51:14] <gwicke> http://lambda-the-ultimate.org/search/node/reactive
[20:51:27] * yuvipanda adds to greader
[20:51:30] <yuvipanda> thanks gwicke
[20:51:37] <ori-l_> gwicke -> greader
[20:51:38] <yuvipanda> I wonder if it might be useful if we all share reading lists
[20:51:39] <ori-l_> great.
[20:51:49] <sumanah> yuvipanda: there's a meta page
[20:51:54] <sumanah> wait
[20:51:56] <sumanah> never mind
[20:52:46] <ori-l_> yuvipanda: start an article on meta?
[20:52:49] <ori-l_> or office?
[20:53:13] <yuvipanda> ori-l_: sure
[20:53:27] <ori-l_> office is private, but it might be off-topic for meta. mw.org? dunno where something like this belongs.
[20:53:35] <yuvipanda> I think mw.org
[20:53:58] <aude> mw.org is good
[20:54:12] <yuvipanda> ori-l_: https://www.mediawiki.org/wiki/Developer_reading_list
[20:54:14] <yuvipanda> aude: sumanah gwicke
[20:54:33] <aude> nice
[20:57:19] <yuvipanda> sumanah: would an email asking for people to add to that be off topic for wikitech-l?
[21:01:50] <hexmode> yuvipanda: I think it would be appropriate
[21:02:14] <yuvipanda> hexmode: can you do it? I'm unsure how much traction me mailing would get… :D
[21:02:39] <hexmode> yuvipanda: post and I'll follow up
[21:02:47] <yuvipanda> hexmode: ok
[21:05:23] <yuvipanda> hexmode: done
[21:05:36] <hexmode> :)
[21:08:22] <milimetric> yuvipanda: grr, I gotta go but I think you're right. I mean that seems like a very unique case though. I use a variant of mustache in this crazy framework called meteor js. That one lets you do what you want. You could easily add support for dictionary as a slightly different looking tag. Like {{##langs}} to faintly conjure up python's **
[21:08:54] <yuvipanda> milimetric: you'd need a way to refer to 'key' and 'value' in the body
[21:09:13] <yuvipanda> they'd either need to be 'magic words' or specified in the original invocation
[21:09:31] <yuvipanda> I *think* I tried to write a handlebars handler that did that, and gave up - rewrote it using underscore.js templates
[21:09:39] <yuvipanda> underscore.js templates are the PHP of the templating world :P
[21:09:47] <milimetric> yeah, you could do the map I did automatically and make a list of key: ,value:
[21:10:03] <yuvipanda> milimetric: indeed, that should be done in the handler in the template
[21:10:12] <milimetric> but that would loop twice over the object
[21:10:23] <yuvipanda> true
[21:10:40] <yuvipanda> but right now, there's no way to do it without looping over the object *and* creating a duplicate data structure
[21:10:43] <milimetric> yeah, with underscore you get that transform for free
[21:11:12] <yuvipanda> yeah, I'd be happy if we just make underscore.js a RL module, tbh
[21:11:12] <milimetric> how many items are in this dictionary?
[21:11:19] <yuvipanda> gives us a lot of things besides templating
[21:11:28] <milimetric> yeah, agreed. that's a useful library
[21:11:31] <yuvipanda> milimetric: uh, ~280
[21:11:36] <yuvipanda> i'm not sure, one per language
[21:11:38] <milimetric> oh geez, well that's nothing :)
[21:11:46] <yuvipanda> one entry per language
[21:11:46] <yuvipanda> of course it is nothing
[21:11:46] <milimetric> you can have like 5000 copies of that thing
[21:12:03] <milimetric> and iterate over all of the on mouseover :)
[21:12:30] <yuvipanda> on mobile… :P
[21:12:30] <milimetric> but yeah, with mobile you'd like to save as much as possible
[21:12:46] <yuvipanda> i think it might be more - picking up the data structure from a JSON file and parsing it into an object takes significant time - a bit over a second on some slower devices
[21:12:56] <yuvipanda> that's even with 0 network (everything's local on the app)
[21:13:04] <milimetric> hm, really?
[21:13:44] <yuvipanda> milimetric: entire structure is 31172 bytes
[21:14:41] <yuvipanda> milimetric: 274 items, key is language name, value is a dictionary with 3 keys
[21:14:47] <milimetric> might be that sending it as a list that ends up in a dictionary makes sense then. because you could send chunks
[21:15:06] <milimetric> and render some of the ui before they scroll down
[21:15:16] <yuvipanda> milimetric: true, we load it only when the user first hits the 'settings' menu
[21:15:32] <milimetric> and what's the purpose? for them to be able to pick a language?
[21:15:38] <yuvipanda> milimetric: yup
[21:16:31] <milimetric> yeah, that seems ok-ish to have a 1 sec. blow there. Have you performance tested the templating part?
[21:16:48] <yuvipanda> milimetric: this is a simple js loop now
[21:16:54] <yuvipanda> no templating involved
[21:17:09] <yuvipanda> mostly because I didn't want to deal with doing the transformation into the list myself
[21:17:22] <yuvipanda> and it's a one off thing, so it was ok.
[21:17:22] <milimetric> right, the first one you showed. That should be the most performant unless there's some optimization mustache does that I don't know about
[21:17:48] <milimetric> well you can do that transform generically into objects with key and value props
[21:18:04] <milimetric> but it is a one off so that doesn't make anybody happy :)
[21:18:14] <yuvipanda> true
[21:18:14] <yuvipanda> i'd want this in the language itself
[21:18:19] <yuvipanda> or at least as a default plugin
[21:18:30] <yuvipanda> lack of that makes me a sadpanda
[21:18:31] <milimetric> no, I think the place for frameworks is with bigger picture apps that have a certain amount of computing power
[21:18:50] <yuvipanda> of course. But I'm not using a framework - just a templating engine
[21:19:10] <milimetric> python does that pretty well. I mean I guess you could just add it to the Object prototype
[21:19:20] <milimetric> .propertiesToArray()
[21:19:45] <yuvipanda> or I could try convincing moustache / handlebars / hogan.js folks to include it by default :)
[21:19:54] <yuvipanda> i'm surprised nobody else has hit on this before
[21:19:56] <milimetric> yeah, when KBs matter though it seems even templating languages incur penalties that are unreasonable
[21:20:18] <milimetric> well, I think everyone shares my bias that one iterates over lists
[21:20:34] <yuvipanda> true but I don't think it's that bad - I think in this case the perf hit is from the JSON parse than from the copying
[21:20:50] <yuvipanda> so the argument is essentially one of convenience
[21:20:58] <milimetric> so one thing you could do is send it over as a list, render it, then load it into a dictionary and delete the list
[21:21:13] <milimetric> but convenience wise, def. needs to be in mustache
[21:21:15] <yuvipanda> milimetric: but you realize the need - the need to keep some data in a dict, and sometimes to render that dict
[21:21:16] <milimetric> or whoever dethrones that
[21:21:25] <yuvipanda> milimetric: yeah, not 'impossible', just inconvenient
[21:21:28] <milimetric> oh is it updated as well?
[21:21:43] <yuvipanda> I suppose Jinja2 has spoilt me
[21:21:43] <milimetric> the dictionary I mean?
[21:21:43] <yuvipanda> milimetric: no, it is read only
[21:21:45] <yuvipanda> (in this case)
[21:21:46] <milimetric> heh, i love jinja2
[21:22:00] <yuvipanda> best templating library, ever
[21:22:00] <yuvipanda> just the right mix of simplicity and power
[21:25:36] <yuvipanda> milimetric: i just realized I had no idea who you are :D
[21:25:37] <milimetric> cool well fun talking with you yuvipanda. I love learning about people's worlds
[21:25:41] <milimetric> oh, I'm Dan Andreescu
[21:26:09] <yuvipanda> ooh, hi dan.
[21:26:09] <yuvipanda> yeah, 'twas fun.
[21:28:35] <milimetric> oh yuvipanda are you local in SF?
[21:28:53] <yuvipanda> milimetric: no, I'm sitting in the middle of a small storm in southern India right now :)
[21:28:54] <yuvipanda> (Chennai)
[21:29:04] <milimetric> oh cool :)
[21:29:14] <milimetric> i just sat through hurricane Sandy - that was fun
[21:29:22] <yuvipanda> milimetric: I used to work with the Mobile team. Back to school now. Will be back soon
[21:29:38] <yuvipanda> milimetric: yeah, stay safe. Ours are a lot more frequent, but not *that* bad (usually)
[21:30:10] <milimetric> cool, yea, once the craziness in my world settles down a bit (probably mid December) I'd love to take another look at Mobile and see if I can help you guys out with anything I know from my world
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment