fluid-work IRC Logs-2012-05-15

[08:10:35 CDT(-0500)] <alexn1> cindyli, anastasiac: are you aware of anyone who works on Research Page? If not I will create a JIRA ticket and start working on it.

[08:10:58 CDT(-0500)] <cindyli> not me, alexn1

[08:11:33 CDT(-0500)] <anastasiac> go for it, alexn1

[08:11:54 CDT(-0500)] <alexn1> alright (smile)

[08:11:59 CDT(-0500)] <alexn1> exciting !

[08:12:39 CDT(-0500)] <Justin_o> Bosmon: continuing on from what i was talking with you about yesterday. It seems like we must have talked about things before because I was fetching the resources in the parent. However, it appears that my call to fetch resources in the subcomponent isn't running.. or at least the function i pass into it isn't. This has the result of the template not being appended to the container..

[08:12:53 CDT(-0500)] <Justin_o> Bosmon: any thoughts on what might be happening here?

[08:13:19 CDT(-0500)] <Bosmon> Justin_o - it doesn't sound like a good idea to have a renderer component which modifies the document during its creation phase

[08:14:11 CDT(-0500)] <Justin_o> Bosmon: hmm… so i shouldn't have a renderer component which has a call to fetch resources ?

[08:14:22 CDT(-0500)] <Bosmon> If you have a template which needs to go into the document, it needs to get there before rendering starts

[08:14:42 CDT(-0500)] <Justin_o> Bosmon: also it seems that it is only failing in the unit tests run under FF.. the unit tests pass in chrome and the actual application works

[08:15:20 CDT(-0500)] <Justin_o> Bosmon: right.. so that part is okay.. i guess.. it's the template for the subcomponent which is created through the render which isn't being applied..

[08:15:23 CDT(-0500)] <Justin_o> or is that what you are saying

[08:17:17 CDT(-0500)] <Justin_o> Bosmon: let me know if i've managed to confuse you.. since my rambling does seem a bit confused (smile)

[08:17:26 CDT(-0500)] <Bosmon> Justin_o - it does seem extremely confusing, yes (smile)

[08:17:38 CDT(-0500)] <Bosmon> Perhaps we could go back to this part - " However, it appears that my call to fetch resources in the subcomponent isn't running.. or at least the function i pass into it isn't. "

[08:17:47 CDT(-0500)] <Bosmon> Could you expand on the evidence you have for this statement? : P

[08:19:17 CDT(-0500)] <Justin_o> Bosmon: sure.. so i put a break point in there.. and it doesn't get run

[08:19:52 CDT(-0500)] <Bosmon> In where!

[08:19:59 CDT(-0500)] <Bosmon> And this happens just in tests in FF, or on all browsers?

[08:20:33 CDT(-0500)] <Justin_o> Bosmon: sorry.. should be more specific.. let me send you some code one second, and yes.. it is only in FF.. in chrome at least the tests are all passing

[08:22:28 CDT(-0500)] <Justin_o> Bosmon: so if i put a breakpoint here it won't get run https://bitbucket.org/jobara/decapod-ui-05release/src/3efab2d4d2a2/components/exporter/js/exportType.js#cl-555

[08:23:01 CDT(-0500)] <Justin_o> Bosmon: this is the parent component https://bitbucket.org/jobara/decapod-ui-05release/src/3efab2d4d2a2/components/exporter/js/exportType.js#cl-357

[08:27:30 CDT(-0500)] <Bosmon> Justin_o - and what have you done to ensure that the resources you load have been cached already?

[08:29:04 CDT(-0500)] <Justin_o> Bosmon: so i did put a break point in the pre-init function and the template looks like it's filled out correctly.. but anyways.. it's being passed from the parent component via demands block https://bitbucket.org/jobara/decapod-ui-05release/src/3efab2d4d2a2/components/exporter/js/exportTypeDemands.js#cl-56

[08:29:24 CDT(-0500)] <Bosmon> Hi Justin_o ^ my question about caching

[08:29:38 CDT(-0500)] <anastasiac> alexn1, cindyli, michelled: I've merged michelle's and alex's latest pull requests into the dev branch, so feel free to update (also, please update the wordpress-fss-theme as well, if you haven't already)

[08:30:03 CDT(-0500)] <michelled> ok, thx anastasiac

[08:30:34 CDT(-0500)] <Bosmon> Justin_o - also, this is an extremely peculiar refreshView function

[08:30:35 CDT(-0500)] <Bosmon> that.refreshView = function () {

[08:30:35 CDT(-0500)] <Bosmon> that.refreshView();

[08:30:35 CDT(-0500)] <Bosmon> };

[08:30:38 CDT(-0500)] <Bosmon> At line 539

[08:30:43 CDT(-0500)] <Bosmon> Why doesn't this cause an infinite recursion?

[08:31:31 CDT(-0500)] <Justin_o> Bosmon: i thought you might ask about that…

[08:32:46 CDT(-0500)] <Justin_o> Bosmon: so that's one of the methods i've employed to get around the fact that component functions don't work in listeners.. so what it does is defines that.refrehsView which then gets rewritten by the component to the proper function

[08:33:38 CDT(-0500)] <Bosmon> Justin_o - it seems to me that that function can only run once successfully

[08:34:09 CDT(-0500)] <Bosmon> Actually I am quite confused that it can ever run at all

[08:34:11 CDT(-0500)] <Justin_o> Bosmon: it seems to work.. do take note that i make no claims to it's morality

[08:35:18 CDT(-0500)] <Bosmon> Justin_o - I'm not convinced that "it seems to work" is enough to justify it (smile)_

[08:35:20 CDT(-0500)] <Justin_o> so i do this for some of the invokers.. so it would work like this.. on initial definition.. it points to a function with the same name.. when i bind it to a listener it will call said function.. but before a listener is invoked.. the component itself will have changed the function to call the proper method

[08:35:25 CDT(-0500)] <Bosmon> Could you explain why it doesn't result in an infinite recursion?

[08:36:17 CDT(-0500)] <Bosmon> Ah, I see.... these methods are assigned late

[08:36:29 CDT(-0500)] <Bosmon> It would be safer to write it in such a way that it can't possibly fail

[08:36:42 CDT(-0500)] <Bosmon> That is, by saving references to the values that these methods have when preInit executes

[08:36:43 CDT(-0500)]

<Justin_o> so say i do something like b = function () { b()); c = function ()

Unknown macro: {b()}

;, b = function ()

Unknown macro: {d()}

; then run c(); .. d will ultimately get run

[08:36:55 CDT(-0500)] <Bosmon> Should there be any change in the framework, this code will start to fail in an extremely nasty way

[08:37:19 CDT(-0500)] <Justin_o> Bosmon: probably.. yes.. when you say save the references.. do you just mean use a different name?

[08:38:18 CDT(-0500)] <Bosmon> Urgh

[08:38:24 CDT(-0500)] <Bosmon> At the very least put a comment on it or something : P

[08:39:14 CDT(-0500)] <Bosmon> Something like, "These methods are overwritten by the framework after initComponent executes, this preInit function guarantees that functions which forward to the overwritten versions are available during the event binding phase"

[08:39:19 CDT(-0500)] <Bosmon> And a reference to a JIRA (smile)

[08:39:52 CDT(-0500)] <Justin_o> Bosmon: (smile) yes.. i should have put in a comment there.. will do

[08:40:33 CDT(-0500)] <Justin_o> Bosmon: I guess i should write a jira, if one doesn't exist, for having invokers work for listeners

[08:43:42 CDT(-0500)] <Bosmon> Justin_o - you can see my version of this situation at UIOptions.js, line 437

[08:44:05 CDT(-0500)] <Bosmon> I make sure to forward explicitly to the renderer's version of the function to ensure that infinite recursion can't occur

[08:44:13 CDT(-0500)] <Bosmon> And also refer to FLUID-4334

[08:45:25 CDT(-0500)] <Justin_o> Bosmon: thanks

[08:45:34 CDT(-0500)] <Bosmon> So, to get back to your templates issue

[08:45:52 CDT(-0500)] <Bosmon> How have you ensured that the templates have already been loaded, and so the fetchResources call executes synchronously?

[08:46:55 CDT(-0500)] <Justin_o> Bosmon: yes.. so i have the resources fetched by the parent component and passed down to the subcomponents via demands

[08:47:55 CDT(-0500)] <Justin_o> Bosmon: https://bitbucket.org/jobara/decapod-ui-05release/src/3efab2d4d2a2/components/exporter/js/exportTypeDemands.js#cl-56

[08:48:34 CDT(-0500)] <Bosmon> Ah, fascinating

[08:48:45 CDT(-0500)] <Bosmon> Well, this explains a lot (smile)

[08:49:02 CDT(-0500)] <Justin_o> Bosmon: uh oh.. what did i do wrong

[08:49:04 CDT(-0500)] <Bosmon> Passing an already completed resources structure probably guarantees that fetchResources will conclude that its work is done already

[08:49:16 CDT(-0500)] <Bosmon> Since it keeps track of its work by various "extra fields" put within the structure

[08:49:33 CDT(-0500)] <Bosmon> There's no need to try to transfer the resources, it's enough to have "forceCache" written on the resources entry

[08:49:45 CDT(-0500)] <Bosmon> If it finds the flag, and it finds the resource in the cache, it will get it from there

[08:50:06 CDT(-0500)] <Justin_o> Bosmon: oh really.. so i didn't need to pass it around

[08:50:31 CDT(-0500)] <Bosmon> You might want to trace into the fetchResources call to double-check that this is the case... I guess in theory we could call this a "framework bug" if this explanation is correct

[08:50:39 CDT(-0500)] <Bosmon> Since its certainly unexpected behaviour by the framework...

[08:51:07 CDT(-0500)] <Justin_o> Bosmon: okay.. i'll step through the call to fetchResources now

[08:52:50 CDT(-0500)] <Bosmon> In theory all the flags are private

[08:53:11 CDT(-0500)] <Bosmon> They are a combination of i) entries on "that" which is a fresh component created every time you call fetchResources, and ii) private variables inside fetchResourcesImpl

[08:53:50 CDT(-0500)] <Bosmon> If you are getting lost, you can check in your test cases somewhere and I could try tracing them myself on Firefox... but this might be a helpful exercise for you (smile)

[08:54:45 CDT(-0500)] <Bosmon> Ah, I guess it is the fact that "resourceText" is filled in already

[08:54:47 CDT(-0500)] <Justin_o> Bosmon: so far so good i think

[08:55:07 CDT(-0500)] <Bosmon> This is fetchResources signal to itself that its work is done on a resource

[08:55:20 CDT(-0500)] <Bosmon> Oh yes

[08:55:24 CDT(-0500)] <Bosmon> Also the "completeTiem" field

[08:55:27 CDT(-0500)] <Bosmon> completeTime

[08:55:46 CDT(-0500)] <Bosmon> Yes, if it finds an entry with completeTime and resourceText already filled in, it will queue up nothing

[08:56:07 CDT(-0500)] <Justin_o> Bosmon: where are those lines?

[08:56:15 CDT(-0500)] <Bosmon> fluidRequests.js lines 258 and 266

[08:56:33 CDT(-0500)] <Justin_o> i'm also stepping through the concatenated version.. so it will take me a minute or so to match them up

[08:56:38 CDT(-0500)] <Bosmon> Ok

[08:56:47 CDT(-0500)] <Bosmon> These lines read if (resourceSpec.href && !resourceSpec.completeTime) {

[08:56:56 CDT(-0500)] <Bosmon> And else if (resourceSpec.nodeId && !resourceSpec.resourceText) {

[08:57:04 CDT(-0500)] <Bosmon> Inside fluid.fetchResources.fetchResourcesImpl

[08:58:15 CDT(-0500)] <Bosmon> Hmm well... even in this case, it should still call the overall callback

[08:58:49 CDT(-0500)] <Justin_o> Bosmon: i think it was.. it may have something to do with the setTimeout which is specific to FF

[08:58:53 CDT(-0500)] <Bosmon> Yes

[08:58:54 CDT(-0500)] <Bosmon> I see that

[08:59:49 CDT(-0500)] <Bosmon> So I suspect what is happening is that this is forced to be async, and given you are in a sync test case, the entire material is being swept away by teardown of the test before the callback returns

[09:00:14 CDT(-0500)] <Bosmon> BUT it should be true that the "allSync" flag is true

[09:00:35 CDT(-0500)] <Bosmon> Since I assume you didn't set the "async" flag on any of the options

[09:00:51 CDT(-0500)] <Bosmon> Ah

[09:00:55 CDT(-0500)] <Bosmon> It seem that is the default though

[09:01:10 CDT(-0500)] <Bosmon> All a bit of a mess

[09:01:27 CDT(-0500)] <Bosmon> Ok well, this is definitely a bug

[09:02:02 CDT(-0500)] <Bosmon> If all the requests can be satisfied from the cache, the callback should be synchronous

[09:03:06 CDT(-0500)] <Justin_o> Bosmon: okay.. sorry i'm not responding.. stepping through the debugger is still a bit slow.. and when i make mistakes.. i have to start all over.. anyways.. stepping through again right now and it is hitting line 256 and setting allSync to false

[09:03:25 CDT(-0500)] <Bosmon> Ok Justin_o - that suggests we're definitely homing in on the mechanism for the failure

[09:04:15 CDT(-0500)] <Justin_o> Bosmon: ah good.. so next it skips down to the condition in 266 and falls in there

[09:04:36 CDT(-0500)] <Bosmon> Justin_o - so this means that resourceText is not actually set?

[09:04:42 CDT(-0500)] <Bosmon> DOes this mean your demands block is not working?

[09:06:00 CDT(-0500)] <Justin_o> Bosmon: actually the resourceText is there it's the resourceSpec.nodeId that isn't

[09:06:11 CDT(-0500)] <Bosmon> Justin_o - that's fine

[09:06:27 CDT(-0500)] <Bosmon> But if nodeid isn't set, why does it reach line 267

[09:06:38 CDT(-0500)] <Justin_o> Bosmon: actually hold that.. i had already gotten past where it redefines the resource text.. let me step through again

[09:06:38 CDT(-0500)] <Bosmon> Or did you mean "falls in there" that it skips that block?

[09:09:18 CDT(-0500)] <Justin_o> Bosmon: okay.. resourceSpec.resourceText is set and has the value i would expect

[09:09:46 CDT(-0500)] <Justin_o> the nodeId isn't

[09:09:59 CDT(-0500)] <Bosmon> Justin_o - that's all good

[09:10:04 CDT(-0500)] <Bosmon> So it should then skip the block at 266

[09:10:17 CDT(-0500)] <Justin_o> it hits line 271

[09:10:30 CDT(-0500)] <Bosmon> Justin_o - that's probably a firebug illusion

[09:10:39 CDT(-0500)] <Bosmon> It is never terribly good about the last lines of loops

[09:11:14 CDT(-0500)] <Justin_o> ah .. could be since it seemed to jump straight to there.. although i figured i had hit the next button too many times when it was going slow

[09:11:37 CDT(-0500)] <Bosmon> It's ok, as long as you see the right values in the structure, you should assume that it follows the logic correctly (smile)

[09:12:01 CDT(-0500)] <Bosmon> So it should end up queuing the callback in a setTimeout 1 on line 278

[09:12:16 CDT(-0500)] <Justin_o> Bosmon: yes.. i'm at line 275 now

[09:12:19 CDT(-0500)] <Bosmon> And it should do it immediately on finishing the loop, since "complete" should be true

[09:12:35 CDT(-0500)] <Bosmon> Then the remaining question is just why the callback NEVER executes, which may just be a jqUnit oddity

[09:13:00 CDT(-0500)] <Bosmon> Yes, I think it is

[09:13:14 CDT(-0500)] <Bosmon> qunit actually hijacks the browser's setTimeout with a fake version

[09:13:27 CDT(-0500)] <Bosmon> Which just clears everything out if a testcase ends with any setTimeout callbacks outstanding

[09:13:40 CDT(-0500)] <Justin_o> (sad)

[09:13:43 CDT(-0500)] <Justin_o> that seems evil

[09:13:47 CDT(-0500)] <Bosmon> So, the mystery is largely solved

[09:13:51 CDT(-0500)] <Bosmon> It's relatively evil yes

[09:13:59 CDT(-0500)] <Bosmon> But you could argue it is actually part of its moral responsibility

[09:14:10 CDT(-0500)] <Bosmon> It does need to make sure it "resets the environment completely" once a testcase concludes

[09:14:44 CDT(-0500)] <Justin_o> Bosmon: yes.. that's true, but i'm sure people use setTimeout for lots of valid reasons.. which they would expect to be able to use an async test for

[09:15:03 CDT(-0500)] <Justin_o> Bosmon: like if i was making some sort of game with a timer or something

[09:15:46 CDT(-0500)] <Bosmon> Justin_o - well, it would work fine if your test were async

[09:15:58 CDT(-0500)] <Bosmon> I think the issue is that your code is UNEXPECTEDLY asynchronous

[09:16:11 CDT(-0500)] <Bosmon> If the test case hadn't concluded already, the setTimeout wouldn't be cleared

[09:16:30 CDT(-0500)] <Justin_o> Bosmon: ah okay.. let me look at my test case

[09:17:10 CDT(-0500)] <Bosmon> Justin_o - but actually the point is you (in theory, correctly) weren't expecting this rendering to be asynchronous

[09:17:20 CDT(-0500)] <Bosmon> Since you believed you were fetching markup from the cache

[09:18:24 CDT(-0500)] <Justin_o> Bosmon: here's the test case https://bitbucket.org/jobara/decapod-ui-05release/src/3efab2d4d2a2/tests/exporter/js/exportTypeTests.js#cl-597

[09:19:03 CDT(-0500)] <Bosmon> Justin_o

[09:19:07 CDT(-0500)] <Bosmon> Yes, that seems reasonable

[09:19:17 CDT(-0500)] <Bosmon> So I would guess that the issue is that your component is MORE asynchronous than you are expecting

[09:19:30 CDT(-0500)] <Bosmon> You are expecting that the afterRender call marks the last asychronous thing that you do

[09:19:41 CDT(-0500)] <Justin_o> Bosmon: yes… that's correct

[09:19:47 CDT(-0500)] <Bosmon> Whereas in fact, we see now that its finalInit operation queues a FURTHER asynchronous activity

[09:19:49 CDT(-0500)] <Bosmon> Even though it shouldn't

[09:20:49 CDT(-0500)] <Justin_o> Bosmon: right.. any thought on how to work around this.. outside of putting in another setTimeout in the assertion

[09:22:29 CDT(-0500)] <Bosmon> Justin_o - I suggest supplying an "options" block for each of your resources with the "async" flag set to false

[09:22:57 CDT(-0500)] <Bosmon> But do this the SECOND time round!

[09:22:59 CDT(-0500)] <Justin_o> Bosmon: i should be able to just do that in the parent component right

[09:23:08 CDT(-0500)] <Bosmon> That is, allow them to be fetched properly the first time in the parent component

[09:23:09 CDT(-0500)] <Justin_o> hmm. what do you mean by SECOND time round?

[09:23:26 CDT(-0500)] <Justin_o> oh.. you mean inject it after it's passed down from the parent?

[09:23:29 CDT(-0500)] <Bosmon> But when the resources reach the child component, massage the resources block to make sure that it doesn't attempt to be async a second time

[09:23:45 CDT(-0500)] <Bosmon> But to be honest, if you are going to the length of injecting the whole resources block, there's no real reason to call fetchResources at all

[09:23:55 CDT(-0500)] <Bosmon> You KNOW that the template text must be there already

[09:24:03 CDT(-0500)] <Bosmon> So the simplest solution is to simply not call fetchResources a 2nd time

[09:24:21 CDT(-0500)] <Justin_o> Bosmon: right.. i should put a conditional into my final init blocks

[09:24:34 CDT(-0500)] <Justin_o> and call the callback function straight away instead?

[09:24:48 CDT(-0500)] <Bosmon> Justin_o - I guess so

[09:24:56 CDT(-0500)] <Bosmon> I might almost be tempted even to do away with the conditional

[09:25:19 CDT(-0500)] <Bosmon> But I guess this goes against the grain of i) expecting the framework issue to be resolved at some point, and ii) allowing your trigger component to participate in other scnarios

[09:25:22 CDT(-0500)] <Bosmon> scenarios

[09:31:47 CDT(-0500)] <Justin_o> Bosmon: yes.. i suppose it won't be used anywhere else.. but i don't know that for sure.. I suppose i'll just make a new function that will handle this and let all my components use it

[09:32:42 CDT(-0500)] <Bosmon> Justin_o - cool

[09:32:47 CDT(-0500)] <Bosmon> I will JIRA this issue in the meantime

[09:32:54 CDT(-0500)] <Bosmon> After my shower : P

[09:33:34 CDT(-0500)] <Justin_o> Bosmon: thanks so much.. I'm not sure i would have figured this out nearly as fast or at all, on my own.

[09:33:38 CDT(-0500)] <Justin_o> Bosmon: enjoy your shower (smile)

[09:33:56 CDT(-0500)] <Bosmon> Justin_o - sorry for yet another irregularity in the framework : P

[09:34:07 CDT(-0500)] <Bosmon> It's ironic that this branch was only put in in order to make debugging easier

[09:34:19 CDT(-0500)] <Bosmon> And as a result this "feature" is rather hard to test

[09:36:13 CDT(-0500)] <Justin_o> Bosmon: that is ironic

[09:41:36 CDT(-0500)] <avtar> hey kasper

[09:44:46 CDT(-0500)] <jhung> Justin_o: added http://issues.fluidproject.org/browse/DECA-253 as a Blocker.

[09:50:07 CDT(-0500)] <kasper> hey avtar

[09:50:35 CDT(-0500)] <avtar> yura1 mentioned that you're having port issues at the conference

[09:51:00 CDT(-0500)] <kasper> avtar: yeah - seems they have blocked most ports - in particular 8080 and 8081

[09:51:28 CDT(-0500)] <jessm> anastasiac: ping

[09:51:29 CDT(-0500)] <avtar> hmm have you tried approaching the network admins, crossing your arms and pouting?

[09:51:31 CDT(-0500)] <Justin_o> jhung: thanks.. i'll take a look at that after i finish up with http://issues.fluidproject.org/browse/DECA-251

[09:51:43 CDT(-0500)] <anastasiac> jessm, polo

[09:52:02 CDT(-0500)] <jessm> anastasiac: did we get materials from UOIT? bio and institution descriptions etc.?

[09:52:29 CDT(-0500)] <avtar> kasper: if that doesn't sound like a good idea could you give me some port suggestions that aren't blocked?

[09:53:10 CDT(-0500)] <anastasiac> jessm, yes, I'm just going over that now. I've added the institution description to the site; the have no projects yet, and I've put Bill Muirhead's bio on the about page

[09:53:22 CDT(-0500)] <kasper> avtar: actually - now that ask, I'm not sure.. Gregg headed up to ask them earlier today but never got back to me on it

[09:53:33 CDT(-0500)] <jessm> ok

[09:53:39 CDT(-0500)] <kasper> … might make sense to try that first

[09:53:53 CDT(-0500)] <jessm> anastasiac: is their institu. page up?

[09:53:54 CDT(-0500)] <avtar> kasper: you could use something like this tool to test ports yourself http://firebind.com/clients/applet/

[09:54:10 CDT(-0500)] <anastasiac> jessm, yes: http://dev.inclusivedesign.ca/research/uoit/

[09:54:47 CDT(-0500)] <anastasiac> I have to fix the image size; I'm in the middle of working on it now, jessm, so take it with a grain of salt (wink)

[09:55:54 CDT(-0500)] <jessm> anastasiac: awesome

[09:55:55 CDT(-0500)] <jessm> thanks

[10:05:12 CDT(-0500)] <kasper> avtar: ok, so gregg had talked to the sysadmin, and he would look into it

[10:05:28 CDT(-0500)] <kasper> avtar: but suggested that it would be better to change on your side

[10:05:41 CDT(-0500)] <kasper> since it's gonna be demoed again in early and mid june

[10:05:41 CDT(-0500)] <avtar> i can change it

[10:05:57 CDT(-0500)] <kasper> and places are likely to have blocked 'odd' ports

[10:06:00 CDT(-0500)] <avtar> we'll need to notify codefactory as well

[10:06:13 CDT(-0500)] <kasper> avtar: already did - he said it was an easy fix

[10:06:35 CDT(-0500)] <kasper> so port 80 and 443 are open in the conference for sure

[10:06:52 CDT(-0500)] <kasper> would it be possible to run the prefs server on 80 and UIO on 443?

[10:08:30 CDT(-0500)] <avtar> i'm wondering if 443 will be an issue

[10:08:51 CDT(-0500)] <avtar> since browsers might expect an ssl handshake and end up being disappointed

[10:09:02 CDT(-0500)] <avtar> we can give it a shot

[10:09:50 CDT(-0500)] <kasper> ok, else let me know and I can check for other ports

[10:25:04 CDT(-0500)] <jessm> anastasiac: on the front page the mailing list join is to what list? do you know?

[10:25:26 CDT(-0500)] <anastasiac> jessm, it's an idi-working mailing list, I believe

[10:26:46 CDT(-0500)] <anastasiac> jessm: http://lists.idrc.ocad.ca/cgi-bin/mailman/listinfo/idi-discuss

[10:57:21 CDT(-0500)] <avtar> so kasper, any chance we could try some non-standard ports to see if they're open?

[10:57:27 CDT(-0500)] <avtar> anything above 1024

[11:10:00 CDT(-0500)] <kasper> sure

[11:10:36 CDT(-0500)] <kasper> at the office right now, but will walk over there (10 mins or so),find a web IRC client and test out the ports

[11:24:56 CDT(-0500)] <kasper> avtar: is there an easy linux command for testing outgoing ports?

[11:25:10 CDT(-0500)] <kasper> or do I use that page you linked?

[11:25:22 CDT(-0500)] <kasper> (for which I lost the link, now that I switched computer

[11:25:38 CDT(-0500)] <avtar> i would use the java applet http://firebind.com/clients/applet/

[11:26:01 CDT(-0500)] <avtar> i can't think of a linux command that won't require a service listening on the other end

[11:28:30 CDT(-0500)] <kasper> avtar: ok gimme a minute (just installing java)

[11:38:07 CDT(-0500)] <avtar> kasper2 || kasper: if it's easier, you could install nmap and i'll open up a bunch of ports on this end that you could use to test

[11:45:21 CDT(-0500)] <Bosmon> avtar - could we just not use two different domains?

[11:45:31 CDT(-0500)] <Bosmon> I imagine in the long run it will be hard to run any infrastructure not on port 80 in any case

[11:51:31 CDT(-0500)] <avtar> Bosmon: i'm not sure i understand the question

[11:51:44 CDT(-0500)] <Bosmon> avtar - why don't you run both services on port 80

[11:52:04 CDT(-0500)] <Bosmon> On different domains

[11:52:46 CDT(-0500)] <kasper> avtar: btw, it's scanning

[11:56:36 CDT(-0500)] <avtar> Bosmon: the two concerns i have with that are 1. having to run node as root so that it can use port 80 and 2. having either services running on port 80 will mean they'll start receiving random requests every second or two from other compromised servers

[11:57:27 CDT(-0500)] <avtar> the first point can be worked around by either dropping root privileges somehow within node

[11:57:31 CDT(-0500)] <Bosmon> avtar - I don't see we have a choice about the port number - we are in the business of providing web infrastructure (smile)

[11:57:40 CDT(-0500)] <Bosmon> Presumably we can improve the security situation by using some kind of reverse proxy

[11:58:18 CDT(-0500)] <Bosmon> We probably shouldn't have node as the front-line server in any case, as you say

[11:58:36 CDT(-0500)] <avtar> yes

[11:58:49 CDT(-0500)] <avtar> i can set up nginx in front of node

[11:58:57 CDT(-0500)] <avtar> but i won't have time to do that today

[11:59:07 CDT(-0500)] <Bosmon> ok

[11:59:28 CDT(-0500)] <kasper> avtar, Bosmon: so currently we're up to 1080 with no open ports

[11:59:36 CDT(-0500)] <kasper> unfortunately, we gotta shut down here

[11:59:41 CDT(-0500)] <Bosmon> I'd be amazed if we found any

[12:00:05 CDT(-0500)] <kasper> then dinner ... but I'll get online again once I'm home

[12:01:11 CDT(-0500)] <Bosmon> I also wouldn't be surprised if you got shut down for port scanning (smile)

[12:01:29 CDT(-0500)] <kasper> haha

[12:01:30 CDT(-0500)] <avtar> well, i can look into setting up iptables to redirect requests to port 80 to 8080, that way the process won't run with root privileges

[12:01:58 CDT(-0500)] <Bosmon> iptables - the reverse proxy you can use between meals without ruining your appetite (smile)

[12:02:20 CDT(-0500)] <kasper> ok, off I go, talk to you later

[12:02:23 CDT(-0500)] <avtar> how comfortable are you with the pref server receiving bogus requests?

[12:02:46 CDT(-0500)] <Bosmon> avtar - that would be a question for yura1

[12:03:06 CDT(-0500)] <Bosmon> But I don't believe at this stage it embodies sufficient intelligence that it could pose a security threat

[12:03:58 CDT(-0500)] <Bosmon> Certainly it could be the route for some varieties of DOS attacks

[12:03:58 CDT(-0500)] <avtar> i guess my concern is that we'll be testing this while kasper is relying on the instance being stable for this demo

[12:04:02 CDT(-0500)] <Bosmon> But then, most things could

[12:05:27 CDT(-0500)] <Bosmon> I would say as it stands the only risk from bogus requests to the prefs server is filling up a couch table with lots of bogus user tokens

[12:05:42 CDT(-0500)] <Bosmon> I can't see any route for a privilege escalation attack

[12:07:24 CDT(-0500)] <michelled> anastasiac: I just made another pull request with some more styling tweaks: https://github.com/inclusive-design/idi-theme/pull/30

[12:07:32 CDT(-0500)] <michelled> anastasiac: now I'm turning to keyboard a11y

[12:07:48 CDT(-0500)] <anastasiac> thanks, michelled

[12:08:16 CDT(-0500)] <avtar> anastasiac: the dev site has your latest changes

[12:08:25 CDT(-0500)] <avtar> Bosmon: ok

[12:08:44 CDT(-0500)] <anastasiac> avtar, excellent, thanks

[12:09:40 CDT(-0500)] <avtar> i guess worst case scenario, if things get out of hand i'll throw up away this vm and start another

[12:10:41 CDT(-0500)] <anastasiac> michelled, jvass: the dev site is quite up-to-date (not michelled most recent pull request, though). Do we want to have a run-through?

[12:11:11 CDT(-0500)] <michelled> anastasiac: let's just do it tomorrow after standup

[12:11:23 CDT(-0500)] <anastasiac> ok

[12:13:22 CDT(-0500)] <michelled> anastasiac: it looks to me like a recent push and had the institutions box get wide again

[12:56:23 CDT(-0500)] <jessm> another story about RM* http://www.openculture.com/2012/05/the_time_pixar_almost_deleted_toy_story_2.html

[13:25:45 CDT(-0500)] <Justin_o> Bosmon: I have another question for you if you have time.

[13:25:56 CDT(-0500)] <Bosmon> Hi Justin_o

[13:26:31 CDT(-0500)] <Justin_o> Bosmon: hello.. so i guess my question is around component creation .. in a way

[13:26:52 CDT(-0500)] <Justin_o> Bosmon: so i have another test that is failing in FF but passing in chrome.. always.. i think it has to do with the way i'm chaining events

[13:27:04 CDT(-0500)] <Justin_o> so i've reworked somethings but there is still a problem

[13:27:33 CDT(-0500)] <Justin_o> i have a subcompoent called accordion.. it will fire on onReady event in it's final init function.. which the parent component will use for it's onReady event

[13:27:55 CDT(-0500)] <Justin_o> however in my unit tests i need to verify that the accordion has been created..

[13:28:09 CDT(-0500)] <Justin_o> but when i try to tests some properly the that.accordion is undefined

[13:28:24 CDT(-0500)] <Justin_o> i trigger the test with the onReady event from the parent component

[13:28:34 CDT(-0500)] <Justin_o> if i put in a setTimeout function things work.

[13:28:37 CDT(-0500)] <Bosmon> The order of listeners is probably undefined

[13:28:42 CDT(-0500)] <Bosmon> I mean, it is

[13:28:51 CDT(-0500)] <Bosmon> But you are probably relying on it to be a particular way

[13:29:23 CDT(-0500)] <Bosmon> Can you be more specific about what you mean by "will use for it's onReady event"?

[13:29:30 CDT(-0500)] <Justin_o> hmmm.. so the onReady from the parent component should be the same as the childs.. i'm using event injection for it

[13:30:08 CDT(-0500)] <Bosmon> ok

[13:30:15 CDT(-0500)] <Justin_o> in the demands block for the subcomponent i have

[13:30:16 CDT(-0500)] <Justin_o> events: {

[13:30:17 CDT(-0500)]

<Justin_o> onReady: "

Unknown macro: {exporter}

.events.onReady"

[13:30:17 CDT(-0500)] <Justin_o> }

[13:30:19 CDT(-0500)] <Justin_o> sorry about the code

[13:30:26 CDT(-0500)] <Bosmon> You should be aware that even in a finalInit function, a component has not yet been delivered to its parent

[13:30:33 CDT(-0500)] <Bosmon> It is only assigned once all construction has finished

[13:31:05 CDT(-0500)] <Justin_o> Bosmon: okay.. i was afraid this might be the case.. so that's why the setTimeout allows it to work

[13:31:22 CDT(-0500)] <Justin_o> Bosmon: is there a proper way around this for a subcomponent that is completely synchronous

[13:32:19 CDT(-0500)] <Bosmon> Well, you know that the component is definitely constructed by the time of finalInit for the parent

[13:32:26 CDT(-0500)] <Bosmon> Since initDependents has finished by that point

[13:32:29 CDT(-0500)] <Bosmon> Can't you wait until then?

[13:34:13 CDT(-0500)] <Justin_o> Bosmon: it's a bit more complicated than that.. so the accordion has to be initialized after all of the other subcompoents are created since it will contain them… it's been a while since i did that part but if i recall correctly this was necessary

[13:35:04 CDT(-0500)] <Bosmon> Justin_o so it is constructed with "createOnEvent"?

[13:35:13 CDT(-0500)] <Justin_o> Bosmon: yes.. it's needed because it acts on portions of markup that the subcomponents bring in

[13:35:19 CDT(-0500)] <Justin_o> Bosmon: yes.. that's correct

[13:35:28 CDT(-0500)] <Bosmon> Ok, then you can just add your test listener to listen to the same event, with priority: last

[13:36:06 CDT(-0500)] <Justin_o> Bosmon: ah .. okay.. that seems so easy

[13:36:09 CDT(-0500)] <Justin_o> (smile)

[13:36:11 CDT(-0500)] <Justin_o> i'll give it a go

[13:36:15 CDT(-0500)] <Bosmon> Hopefully (smile)

[13:38:08 CDT(-0500)] <Justin_o> Bosmon: thanks.. that seems to have done it.. just a few more issues to track down though.. thanks again

[13:38:25 CDT(-0500)] <Bosmon> No worries - glad to be able to help

[13:46:35 CDT(-0500)] <cindyli> anastasiac: my local installation of idi site doesn't have inistitution and cluster pages. Are they defined as wordpress pages? how do you usually sync up the database with dev idi site? can we do the same?

[13:48:07 CDT(-0500)] <anastasiac> cindyli, I don't really have a process for syncing the databases. The dev site has the most up-to-date database, I have something adequate on my machine. I could give you a dump, or you could just create the pages yourself

[13:49:57 CDT(-0500)] <cindyli> i see. Can you send me the dump file, anastasiac

[13:50:15 CDT(-0500)] <anastasiac> ok, give me a minute or two

[13:50:21 CDT(-0500)] <cindyli> thanks

[13:59:16 CDT(-0500)] <anastasiac> ok, cindyli, database dump in the (e)mail

[13:59:31 CDT(-0500)] <cindyli> great. thanks, anastasiac

[14:02:38 CDT(-0500)] <Justin_o> Bosmon: have you ever seen an error like this in jqUnit Died on test #1: Maximum call stack size exceeded - {}

[14:02:54 CDT(-0500)] <Bosmon> Justin_o - yes, frequently (smile)

[14:03:06 CDT(-0500)] <Bosmon> These things are somewhat hard to debug

[14:03:25 CDT(-0500)] <Justin_o> Bosmon: oh (sad)

[14:03:36 CDT(-0500)] <Bosmon> But might result from i) a pretty direct recursion, like the one you nearly wrote earlier (: P) or ii) an attempt by the framework to apply merging or expansion to a circularly linked structure

[14:04:19 CDT(-0500)] <Bosmon> It's best to switch to Chrome when you start getting into this territory

[14:04:37 CDT(-0500)] <Bosmon> Since Firebug is particularly bad at dealing with stack blows

[14:05:24 CDT(-0500)] <Bosmon> THat is, in FF you'll most likely need to restart the browser if you manage to let the stack "run away" whilst Firebug is open

[14:05:29 CDT(-0500)] <Bosmon> But in Chrome you will most likely survive it

[14:10:54 CDT(-0500)] <Justin_o> Bosmon: okay.. here's the interesting part

[14:11:05 CDT(-0500)] <Justin_o> Bosmon: it works in FF, there is no error there at all

[14:11:14 CDT(-0500)] <Justin_o> Bosmon: it only has a problem in Chrome

[14:11:23 CDT(-0500)] <Bosmon> Well, isn't that lucky (smile)

[14:11:47 CDT(-0500)] <Justin_o> Bosmon: yes very (smile) reverse of my other misfortunes

[14:11:49 CDT(-0500)] <Bosmon> The fact that it is browser-dependent implies that it is tickled by the issue we mentioned earlier

[14:12:06 CDT(-0500)] <Bosmon> That is, it must be somehow resulting from the fact that some I/O which is synchronous on Chrome is asynchronous on FF

[14:12:34 CDT(-0500)] <Bosmon> Although it is possible there's some other explanation

[14:12:38 CDT(-0500)] <Justin_o> Bosmon: ah right.. makes sense.. it actually only appeared after i made that last change we talked about

[14:12:49 CDT(-0500)] <Bosmon> But usually Chrome and FF don't behave so differently in such a macroscopic way

[14:12:52 CDT(-0500)] <Bosmon> Ok, cool

[14:12:55 CDT(-0500)] <Bosmon> So you know where to look (smile)

[14:13:10 CDT(-0500)] <anastasiac> jessm, marco...

[14:13:11 CDT(-0500)] <Bosmon> Did you clear out all those potential sites for infinite recursion I observed?

[14:13:24 CDT(-0500)] <Justin_o> Bosmon: oh not yet..

[14:13:31 CDT(-0500)] <jessm> anastasiac: polo

[14:13:36 CDT(-0500)] <Justin_o> maybe i should look into that

[14:13:53 CDT(-0500)] <Justin_o> but it appeared after i changed my unit test to trigger not on the onReady but on the other event

[14:14:04 CDT(-0500)] <anastasiac> jessm, I want to put some of the partner projects into the cluster pages, but honestly, I can't quite tell which cluster they should go in :-/

[14:14:12 CDT(-0500)] <anastasiac> might you be able to provide insights?

[14:14:28 CDT(-0500)] <anastasiac> the partner projects are up on their respective pages on the dev site (for those that have us info)

[14:14:51 CDT(-0500)] <anastasiac> I could guess, but if you know better, jessm, I'd rather have some guidance (wink)

[14:15:24 CDT(-0500)] <jessm> anastasiac: let's guess together (smile)

[14:16:07 CDT(-0500)] <jessm> anastasiac: Skype me up

[15:06:21 CDT(-0500)] <avtar> cindyli, Justin_o, yura1: do you need the gpii pref server and the mammals demo for tomorrow's community meeting? or an oercommons vm as well?

[15:12:10 CDT(-0500)] <Justin_o> avtar: I'm not sure you'll have to confirm with cindyli and yura1

[15:21:29 CDT(-0500)] <cindyli> avtar, i would say yes. yura1, what do you think? what's in the plan? btw, yura1 will be the primary speaker for tomorrow. (wink)

[15:40:22 CDT(-0500)] <travis_84> Hey Bosmon, found a post on "multi-threading" JS using JSON http://msdn.microsoft.com/en-us/hh549259 thought it might be useful. Here's the API: http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html

[15:40:51 CDT(-0500)] <Bosmon> Thanks, travis_84

[16:09:49 CDT(-0500)] <avtar> kasper: does this work for you? http://ec2-107-21-143-113.compute-1.amazonaws.com:443/demos/Mammals.html

[16:10:12 CDT(-0500)] <kasper> avtar: like a charm

[16:10:17 CDT(-0500)] <avtar> o/

[16:11:19 CDT(-0500)] <avtar> just a heads-up, it'll b0rk if you try https in your url

[16:13:44 CDT(-0500)] <kasper> avtar: ok thanks

[16:14:32 CDT(-0500)] <kasper> avtar: sorry for not getting back to you sooner though

[16:14:45 CDT(-0500)] <avtar> no worries

[20:16:29 CDT(-0500)] <travis_84> Bosmon: you around?