fluid-work IRC Logs-2013-01-17

[08:12:57 CST(-0600)] <yzen> Justin_o, cindyli1, jhung good morning. do you have time now to chat about UIO ?

[08:13:12 CST(-0600)] <cindyli1> sure, yzen

[08:13:14 CST(-0600)] <Justin_o> yzen: sure

[08:15:02 CST(-0600)] <yzen> cindyli1: Justin_o ill skype you in

[08:15:09 CST(-0600)] <cindyli1> ok, yzen

[08:15:37 CST(-0600)] <Justin_o> yzen: okay.. just logging in now

[08:17:00 CST(-0600)] <jhung> gimme a sec yzen

[08:17:29 CST(-0600)] <yzen> jhung: let me know ill skype you in then

[10:36:57 CST(-0600)] <yzen> fluid-everyone: hi sorry my battery is dying right now, Ill give an update here. Cindy, Jon, Justin and I met today and we have our initial iteration steps defined: http://wiki.fluidproject.org/display/fluid/User+Interface+Options+Iteration+Planning . Ill make JIRA's by the end of the day. Otherwise investigating GPII production failure from A5 test cases

[12:35:21 CST(-0600)] <jhung> justin_o, anastasiac, michelled: I just found 2 bugs that affect Windows only, and it can't be reproduced inside a VM.

[12:35:41 CST(-0600)] <Justin_o> jhung: really

[12:35:43 CST(-0600)] <anastasiac> can't be reproduced in a VM? well, that's going to make debugging difficult

[12:35:57 CST(-0600)] <Justin_o> jhung: what are the issues

[12:36:06 CST(-0600)] <jhung> yeah. I'm going to check on a Win7 machine now (I'm on Win8).

[12:36:14 CST(-0600)] <jhung> Keyboard scrubbing is broken-ish.

[12:36:46 CST(-0600)] <jhung> In FF, you scrub about 5 seconds of video and then it loses focus.

[12:37:13 CST(-0600)] <jhung> In Chrome, you scrub a few seconds, the video turns blank and playing the video starts at the beginning.

[12:37:31 CST(-0600)] <jhung> None of this happens on Mac, or Windows 7 in VM.

[12:37:33 CST(-0600)] <Justin_o> jhung: (sad) so could be related to Win 8?

[12:37:44 CST(-0600)] <jhung> Yeah. I'm going to check a Win 7 machine now.

[12:37:58 CST(-0600)] <Justin_o> jhung: i have a win 8 vm here at home.. i'll try to reproduce it there

[12:38:06 CST(-0600)] <jhung> okay.

[12:38:24 CST(-0600)] <Justin_o> jhung: is this scrubbing while the video is playing or paused?

[12:39:01 CST(-0600)] <jhung> Paused in both cases.

[12:39:05 CST(-0600)] <jhung> Using keyboard to scrub.

[12:39:17 CST(-0600)] <Justin_o> jhung: okay… i'll go check now

[12:39:33 CST(-0600)] <jhung> In Chrome, the blank image / video restart only happens if you've played the video a little bit first, and then attempted to scrub using the keyboard.

[12:47:04 CST(-0600)] <Justin_o> jhung: i couldn't reproduce the issue, but i'll try with the instructions you just gave

[12:48:43 CST(-0600)] <jhung> justin_o: keyboard scrubbing works fine in FF on Win 7. Checking chrome now.

[12:49:04 CST(-0600)] <Justin_o> jhung: i still couldn't reproduce it, but will try restarting my vm and trying again

[12:49:18 CST(-0600)] <Justin_o> jhung: could it have been something to do with the video buffering?

[12:50:27 CST(-0600)] <jhung> justin_o: possibly. Seems okay in Win 7.

[12:52:27 CST(-0600)] <Justin_o> jhung: okay after restarting the vm i was able to reproduce the FF issue, but still couldn't reproduce the chrome one.. was there a specific point you had to play to before you paused and started scrubbing?

[12:53:20 CST(-0600)] <jhung> I just played the video until I heard "Eeny". Paused it. Pressed tab 2 to focus scrubber, then pressed and held the right arrow.

[12:54:32 CST(-0600)] <Justin_o> jhung: can't reproduce that one still

[12:54:46 CST(-0600)] <jhung> okay.

[12:55:46 CST(-0600)] <jhung> I guess we'll test with a Win 7 and Win 8 machine in the office when we get a chance.

[14:04:43 CST(-0600)] <cindyli1> hi, Bosmon

[14:04:57 CST(-0600)] <Bosmon> Hi cindyli1

[14:05:13 CST(-0600)] <cindyli1> do you have a minute to take a look on my implementation of the showhide grade?

[14:05:15 CST(-0600)] <cindyli1> https://github.com/cindyli/videoPlayer/blob/FLUID-4853/js/VideoPlayer_showHide.js

[14:06:56 CST(-0600)] <cindyli1> the unit test that shows how to use it: https://github.com/cindyli/videoPlayer/blob/FLUID-4853/tests/js/VideoPlayerShowHideTests.js

[14:07:21 CST(-0600)] <cindyli1> Bosmon: ^

[14:08:13 CST(-0600)] <Bosmon> Hi cindyli1 - it's interesting that it only works for the overall container of the component

[14:08:21 CST(-0600)] <Bosmon> Rather than, in addition, being able to use any selector held in the DOM binder

[14:08:31 CST(-0600)] <Bosmon> Also, you should use a more robust means of composing EL paths

[14:08:38 CST(-0600)] <cindyli1> I did it that way after a chat with michelled

[14:08:53 CST(-0600)] <Bosmon> Well, chat again (smile)

[14:09:33 CST(-0600)] <Bosmon> The fact that "modelCollectionName" is hard-coded is also peculiar

[14:09:34 CST(-0600)] <cindyli1> she brought up a good point that if one part of a component needs to be show/hidden at a different timing with different logic, it's worthwhile to make it a separate component

[14:09:49 CST(-0600)] <cindyli1> makes good sense, i think

[14:09:52 CST(-0600)] <Bosmon> cindyli1 - I don't think that's true in general

[14:10:15 CST(-0600)] <Bosmon> There are many cases where, for example, a component has been rendered using the renderer, where things accessible via selectors are not separate components and never will be

[14:10:29 CST(-0600)] <Bosmon> So it doesn't seem reasonable to force the user to make something into a component just so it can be shown/hidden : P

[14:10:59 CST(-0600)] <Bosmon> So, I think about 3 issues in total

[14:11:07 CST(-0600)] <Bosmon> You can take a look in DataBinding.js for functions like fluid.pathUtil.composePath

[14:11:16 CST(-0600)] <michelled> Bosmon: that was cindyli1's opinion too - it was me who felt it would be more clear to have hide/show be in charge of one thing

[14:11:40 CST(-0600)] <Bosmon> In general we don't like to just slap strings together to make EL paths

[14:12:13 CST(-0600)] <cindyli1> ok, what's the more robust way to make EL paths then, might be a silly question. (smile)

[14:12:21 CST(-0600)] <Bosmon> cindyli1 - I referred you to a utility just then

[14:12:42 CST(-0600)] <cindyli1> ya, the indirectReader, Bosmon

[14:12:43 CST(-0600)] <Bosmon> michelled - it seems to kill a lot of the value behind having the DOM binder, if we don't accept it can bind onto things which are not components (smile)

[14:12:50 CST(-0600)] <colinclark> hi GUYZ!

[14:12:54 CST(-0600)] <colinclark> whatcha talking about?

[14:13:03 CST(-0600)] <Bosmon> cindyli1 - [13:11] <Bosmon> You can take a look in DataBinding.js for functions like fluid.pathUtil.composePath

[14:13:24 CST(-0600)] <cindyli1> oh, thanks, didn't see that

[14:15:54 CST(-0600)] <cindyli1> colinclark: we are talking about the implementation of a showHide grade component that can be attached onto any video player component to perform the show/hide functionality by simply firing a model change request

[14:15:56 CST(-0600)] <michelled> Bosmon: the code that cindyli1 showed me earlier had two arrays that she needed to keep coordinated - one of selectors and one of the parts of the model that she was interested in. it seemed to me to be a lot of work for the hide/show component

[14:16:58 CST(-0600)] <michelled> colinclark: showHide is actually a pattern we continually see in things we build

[14:17:22 CST(-0600)] <colinclark> ok

[14:17:28 CST(-0600)] <colinclark> that seems fairly prudent to do

[14:17:32 CST(-0600)] <colinclark> how will you do it?

[14:17:33 CST(-0600)] <michelled> so this component should be generally useful

[14:17:35 CST(-0600)] <colinclark> seems pretty interesting

[14:20:23 CST(-0600)] <michelled> colinclark: Bosmon and I talked about it a little the other day and I commented on cindyli1's pull request: https://github.com/fluid-project/videoPlayer/pull/109#issuecomment-12245984

[14:20:38 CST(-0600)] <michelled> but I'm not convinced I understood the full picture

[14:20:48 CST(-0600)] <michelled> so I'm curious to hear what Bosmon and cindyli1 talked about

[14:21:04 CST(-0600)] <colinclark> Can you describe the full picture to me, michelled?

[14:21:20 CST(-0600)] <colinclark> That is, what aspects of it that are on your mind?

[14:23:18 CST(-0600)] <michelled> well, I guess foremost is how we use hideShow - I thought it would be used on each thing we hide and show, but it sounds like Bosmon and cindyli1 see this differently and I'm trying to understand it.

[14:23:40 CST(-0600)] <cindyli1> Bosmon: does this look more robust in terms of composing EL paths - https://github.com/cindyli/videoPlayer/commit/b24f85d7be0712ed49edcdf1688194969a4b5cde

[14:23:42 CST(-0600)] <michelled> Bosmon, cindyli1: are you envisioning a single hideShow for the videoPlayer that would be used to hide and show different things?

[14:23:57 CST(-0600)] <cindyli1> yes, michelled

[14:25:08 CST(-0600)] <michelled> what's the API for using it?

[14:25:12 CST(-0600)] <cindyli1> the way I'm thinking is, since each component on the video player tree is unique, we can fire the model request by providing a path to the showHide grade. that path is the component nickname or this sort

[14:26:24 CST(-0600)] <michelled> what does the model look like?

[14:26:30 CST(-0600)] <michelled> and what sort of change do you make?

[14:26:48 CST(-0600)] <cindyli1> the only trick to use it is that, when this grade is attached onto a component, the component needs to define an option which is the path, or the nickname of that component

[14:27:04 CST(-0600)] <cindyli1> my unit test might explain better: https://github.com/cindyli/videoPlayer/blob/FLUID-4853/tests/js/VideoPlayerShowHideTests.js

[14:27:36 CST(-0600)] <cindyli1> seems i'm missing some messages, i hear the new msg alerting sound, but no new msg coming up on the screen

[14:27:42 CST(-0600)] <cindyli1> let me open the channel backup

[14:28:26 CST(-0600)] <Bosmon> Hi cindyli1 - that looks better, yes

[14:29:09 CST(-0600)] <cindyli1> cool, Bosmon and michelled, now the only issue left is whether we should show/hide by selectors

[14:29:18 CST(-0600)] <Bosmon> michelled - in response to your earlier comment about it being a lot of work - it's certainly less work than having to derive new Fluid components for every one of the entries that were in that table (smile)

[14:37:50 CST(-0600)] <cindyli1> michelled: do you have a response to Bosmon's comments?

[14:38:06 CST(-0600)] <cindyli1> come on, guys, we need to make a decision

[14:38:11 CST(-0600)] <michelled> sorry, yzen and I are looking at a pull request

[14:38:17 CST(-0600)] <cindyli1> oh, well

[14:49:00 CST(-0600)] <michelled> Bosmon: in your pullrequst for FLUID-4886, you removed 'fetchTemplate' from jqUnit - is that because we no longer use it?

[14:49:40 CST(-0600)] <Bosmon> michelled - we have never used it, to my knowledge

[14:50:13 CST(-0600)] <Bosmon> And the purpose for having it in the testing framework has always been fundamentally obscure

[14:50:50 CST(-0600)] <Bosmon> Are you guys Skyping together?

[14:52:06 CST(-0600)] <michelled> yes, we are sky ping

[14:52:13 CST(-0600)] <Bosmon> cool

[14:53:05 CST(-0600)] <michelled> so, it looks to me, Bosmon, that you've removed the (annoying to be sure) global namespace pollution that Qunit has

[14:53:15 CST(-0600)] <Bosmon> michelled - that's right

[14:53:29 CST(-0600)] <michelled> but what that means is that if someone uses jqUnit, they can't expect to have the Qunit API available

[14:53:37 CST(-0600)] <Bosmon> It is available under QUnit.*

[14:53:45 CST(-0600)] <Bosmon> Otherwise jqUnit couldn't work!

[15:05:24 CST(-0600)] <michelled> Bosmon: I noticed that you've added a 'sortTree' function "to facilitate comparison with deepEq". We used to use Qunit's deepEqual - are we no longer using that?

[15:06:02 CST(-0600)] <Bosmon> michelled - if you are looking at the most recent version of the pull, you can see that we are now forwarding to QUnit's new "propEqual" method

[15:06:15 CST(-0600)] <Bosmon> Although the method still has the same name as far as jqUnit is concerned

[15:06:39 CST(-0600)] <Bosmon> The usage of sortTree remains unchanged - it is a piece of preprocessing which is done before sending the tree to whatever equality comparison method you are using

[15:07:02 CST(-0600)] <Bosmon> Which, ironically, is all that QUnit's own "propEqual" does........

[15:07:42 CST(-0600)] <michelled> hmmm… I don't see 'sortTree' in the master repo - am I missing something?

[15:08:21 CST(-0600)] <Bosmon> These were all taken from the now destroyed files TestUtils.js

[15:08:40 CST(-0600)] <Bosmon> I took the opportunity to fold these into the main implementation given it now seemed ok to give jqUnit a dependence on Fluid.js

[15:08:57 CST(-0600)] <michelled> ah, that makes a lot more sense

[15:08:58 CST(-0600)] <michelled> thx

[15:09:23 CST(-0600)] <michelled> so, why did it seem ok to give jqUnit a dependence on Fluid.js?

[15:09:55 CST(-0600)] <Bosmon> Because I think it is now perfectly clear that we have no expectation of interesting anyone outside the Fluid community in it (smile)

[15:10:06 CST(-0600)] <Bosmon> And it makes the implementation quite annoying if we don't

[15:10:20 CST(-0600)] <Bosmon> Especially figuring out how to get code-loading to work sensibly in node.js

[15:10:47 CST(-0600)] <Bosmon> If we can just defer to Fluid.js own "registerNamespace" mechanics, it makes it a lot clearer how the code can be expected to be loaded

[15:11:49 CST(-0600)] <michelled> I think we'd better check in with the community. I agree that jqUnit is for us, but that wasn't what we had originally decided on. could you send something to list so KING sees it?

[15:12:13 CST(-0600)] <Bosmon> ok

[15:18:57 CST(-0600)] <michelled> Bosmon: it's a bit hard to tell what has changed in terms of things that have moved around from TestUtils into jqUnit - did you make any actual changes to those functions?

[15:19:12 CST(-0600)] <Bosmon> michelled - no, there is no implementation change

[15:19:36 CST(-0600)] <Bosmon> All of the usages of them in the framework could be handled by simply renaming the use from fluid.testUtils.* to jqUnit.*

[15:19:46 CST(-0600)] <michelled> cool

[15:19:51 CST(-0600)] <Bosmon> Although there was a lot more complexity with the functions that were found to be special to the reorderer

[15:20:02 CST(-0600)] <michelled> in terms of the jqUnit-browser file - is there anything new in there?

[15:20:13 CST(-0600)] <Bosmon> It turns out that the key simulation functions actually had a dependence on reorderer from jqUnit!!

[15:20:25 CST(-0600)] <Bosmon> So there was a more fundamental refactoring there

[15:20:32 CST(-0600)] <Bosmon> Yes, those functions ended up in jqUnit-browser

[15:20:39 CST(-0600)] <Bosmon> They still offer the same functionality, but differently packaged

[15:21:18 CST(-0600)] <Bosmon> jqUnit.bindKeySimulator allows clients to supply a "key code map" from the outside, creating a package of related simulation functions which have closed over it

[15:21:29 CST(-0600)] <Bosmon> In this way we could get rid of the awful dependency on Reorderer.js

[15:23:47 CST(-0600)] <Bosmon> Given there was so much refactoring in this area I took the opportunity at the same time to get rid of the awful file UnorderedListTestConstants.js .....

[15:26:28 CST(-0600)] <michelled> Bosmon: did you run those tests in all the target browsers?

[15:26:57 CST(-0600)] <Bosmon> No, I only ran them in Firefox and Chrome

[16:06:33 CST(-0600)] <michelled> Bosmon: we are looking at ReordererTestUtils.js and are wondering why you are packaging up 'keyEvent' and 'ctrlKeyEvent' in the object returned by 'bindReorderer'

[16:06:55 CST(-0600)] <Bosmon> Just for convenience

[16:07:08 CST(-0600)] <Bosmon> It is annoying for the user to type a long global name every time he uses it....

[16:07:52 CST(-0600)] <michelled> fair enough