fluid-work IRC Logs-2008-04-11

[08:46:54 EDT(-0400)] * davidb (n=davidb@bas4-toronto06-1242458163.dsl.bell.ca) has joined #fluid-work
[10:25:50 EDT(-0400)] * anastasiac (n=team@142.150.154.105) has joined #fluid-work
[10:34:12 EDT(-0400)] * michelled (n=team@142.150.154.197) has joined #fluid-work
[10:39:00 EDT(-0400)] * davidb_ (n=davidb@bas4-toronto06-1242458163.dsl.bell.ca) has joined #fluid-work
[10:39:45 EDT(-0400)] <michelled> colinclark: I'm working on cleaning up some of the sample code examples. I'm thinking of merging the uportal tabs and uportal portlet reordering examples. any complaints?
[10:40:11 EDT(-0400)] <colinclark> Into the up3 skin file?
[10:41:11 EDT(-0400)] <colinclark> michelled: ^
[10:41:21 EDT(-0400)] <michelled> yes
[10:42:03 EDT(-0400)] <colinclark> I think you could go ahead and do it.
[10:42:54 EDT(-0400)] <colinclark> The only downside is that this file will no longer serve as an illustration of what we are doing for uP3.1, since it will include a sort of Reorderering that we'd need to do a bit more design thinking to implement well.
[10:43:07 EDT(-0400)] <colinclark> Gary's got a really nice wireframe for how sortable tabs should actually work in uPortal.
[10:43:21 EDT(-0400)] <colinclark> But our example doesn't follow this spec.
[10:43:23 EDT(-0400)] <colinclark> Do you know what I mean?
[10:43:46 EDT(-0400)] <michelled> yes, is the spec on the fluid wiki?
[10:43:54 EDT(-0400)] <colinclark> I wondered if we were better off cleaning up the abstract sortable tabs example and "promoting" it to a full-fledged example.
[10:44:00 EDT(-0400)] <colinclark> I think so, yes. Let me check.
[10:44:11 EDT(-0400)] <colinclark> It's a really nice design.
[10:46:57 EDT(-0400)] <colinclark> michelled: I can't find it. Shall I ping Gary about it?
[10:47:29 EDT(-0400)] <michelled> yes, please - I'd like to see it.
[10:49:14 EDT(-0400)] <colinclark> michelled: It's very much inspired by the Firefox tabs behaviour.
[10:49:45 EDT(-0400)] <colinclark> The avatar is a cute little arrow.
[10:49:57 EDT(-0400)] <colinclark> And there is support for tab locking.
[10:51:32 EDT(-0400)] <colinclark> michelled: As well as the ability to close tabs, too. Cool stuff. If we could rationalize this design with the Sakai More Tabs design and the jQuery Tabs widget, we'd have a hot "NavigationTabs" component.
[10:51:44 EDT(-0400)] <colinclark> I have been hoping to componentize our work on tabs for awhile now.
[10:52:32 EDT(-0400)] <michelled> Sounds nice. I wonder if there is an in between stage that would be ok in the uportal mockup. Perhaps the cute avatar? Maybe I'm just being silly.
[10:53:34 EDT(-0400)] <colinclark> michelled: I would love to show examples of very different avatar behaviour, aside from the "big red bar" approach we have shown. (smile)
[10:53:57 EDT(-0400)] <michelled> you mean drop marker (smile)
[10:54:06 EDT(-0400)] <colinclark> Sorry, yes.
[10:54:24 EDT(-0400)] <colinclark> Drop marker = the thing that shows you where an item will drop.
[10:54:30 EDT(-0400)] <michelled> yup
[10:54:41 EDT(-0400)] <colinclark> Drop target = the thing you hover over to choose where you will drop.
[10:54:45 EDT(-0400)] <michelled> avatar = thing that follows the mouse pointer around
[10:54:52 EDT(-0400)] <colinclark> You beat me to it. (tongue)
[10:54:52 EDT(-0400)] <michelled> yup
[10:55:05 EDT(-0400)] <colinclark> I knew that. (tongue)
[10:55:20 EDT(-0400)] <colinclark> As for the tabs, I still wonder if we're better of keeping our uPortal concrete example focussed on the portal layout manager work we're doing.
[10:55:35 EDT(-0400)] <colinclark> And to clean up our simple abstract tabs example
[10:55:49 EDT(-0400)] <colinclark> Or even cooler, to hook up the Reorderer to the jQuery tabs example.
[10:56:30 EDT(-0400)] <colinclark> michelled: What's your preference?
[10:58:07 EDT(-0400)] <michelled> No real preference. I was having fun with multiple reorderers on a page - that's all.
[10:58:28 EDT(-0400)] <colinclark> (smile)
[10:58:44 EDT(-0400)] <michelled> jQuery tabs example from jQuery UI?
[11:00:12 EDT(-0400)] <colinclark> michelled: Yep, that one.
[11:00:22 EDT(-0400)] <colinclark> I have a keyboard-accessible example.
[11:00:27 EDT(-0400)] <colinclark> With some of the ARIA roles added, too.
[11:00:52 EDT(-0400)] <colinclark> https://source.fluidproject.org/svn/sandbox/tabindex/trunk/examples/jquery-ui-tabs/
[11:03:39 EDT(-0400)] <michelled> thanks
[11:08:44 EDT(-0400)] <colinclark> Boson: There's an interesting little discussion on the ##uportal channel about multiple JS includes and jQuery.
[11:08:51 EDT(-0400)] <colinclark> Bosmon: ^
[11:08:56 EDT(-0400)] <colinclark> Thought you might be curious.
[11:30:20 EDT(-0400)] * anastasiac (n=team@142.150.154.105) has joined #fluid-work
[12:35:16 EDT(-0400)] * davidb (n=davidb@bas4-toronto06-1242458163.dsl.bell.ca) has joined #fluid-work
[13:41:23 EDT(-0400)] <Bosmon> Anyone here
[13:42:45 EDT(-0400)] * theclown (n=theclown@user383.megabit.utoronto.ca) has joined #fluid-work
[13:45:26 EDT(-0400)] <michelled> yes
[13:45:36 EDT(-0400)] <michelled> (smile)
[13:45:58 EDT(-0400)] <Bosmon> i have discovered an "unusual phenomenon"
[13:46:07 EDT(-0400)] * anastasiac (n=team@142.150.154.105) has joined #fluid-work
[13:46:21 EDT(-0400)] <Bosmon> Ah, great, Stasia has come to hear about my "phenomenon" (tongue)
[13:46:33 EDT(-0400)] * michelled listens
[13:46:44 EDT(-0400)] <Bosmon> It appears that, when using an "Object" as the key into a hash, Javascript considers that "every Object is the same Object"
[13:46:52 EDT(-0400)] <Bosmon> Much in the same way that every CAT is really the same CATT
[13:47:29 EDT(-0400)] <Bosmon> Has anyone any experience of this?
[13:47:31 EDT(-0400)] <michelled> what do you mean by "the same Object" does === return true?
[13:47:42 EDT(-0400)] <Bosmon> No, I mean they are entered "into the same slot" in the hash
[10:25:50 EDT(-0400)] * anastasiac (n=team@142.150.154.105) has joined #fluid-work
[10:34:12 EDT(-0400)] * michelled (n=team@142.150.154.197) has joined #fluid-work
[10:39:00 EDT(-0400)] * davidb_ (n=davidb@bas4-toronto06-1242458163.dsl.bell.ca) has joined #fluid-work
[10:39:45 EDT(-0400)] <michelled> colinclark: I'm working on cleaning up some of the sample code examples. I'm thinking of merging the uportal tabs and uportal portlet reordering examples. any complaints?
[10:40:11 EDT(-0400)] <colinclark> Into the up3 skin file?
[10:41:11 EDT(-0400)] <colinclark> michelled: ^
[10:41:21 EDT(-0400)] <michelled> yes
[10:42:03 EDT(-0400)] <colinclark> I think you could go ahead and do it.
[10:42:54 EDT(-0400)] <colinclark> The only downside is that this file will no longer serve as an illustration of what we are doing for uP3.1, since it will include a sort of Reorderering that we'd need to do a bit more design thinking to implement well.
[10:43:07 EDT(-0400)] <colinclark> Gary's got a really nice wireframe for how sortable tabs should actually work in uPortal.
[10:43:21 EDT(-0400)] <colinclark> But our example doesn't follow this spec.
[10:43:23 EDT(-0400)] <colinclark> Do you know what I mean?
[10:43:46 EDT(-0400)] <michelled> yes, is the spec on the fluid wiki?
[10:43:54 EDT(-0400)] <colinclark> I wondered if we were better off cleaning up the abstract sortable tabs example and "promoting" it to a full-fledged example.
[10:44:00 EDT(-0400)] <colinclark> I think so, yes. Let me check.
[10:44:11 EDT(-0400)] <colinclark> It's a really nice design.
[10:46:57 EDT(-0400)] <colinclark> michelled: I can't find it. Shall I ping Gary about it?
[10:47:29 EDT(-0400)] <michelled> yes, please - I'd like to see it.
[10:49:14 EDT(-0400)] <colinclark> michelled: It's very much inspired by the Firefox tabs behaviour.
[10:49:45 EDT(-0400)] <colinclark> The avatar is a cute little arrow.
[10:49:57 EDT(-0400)] <colinclark> And there is support for tab locking.
[10:51:32 EDT(-0400)] <colinclark> michelled: As well as the ability to close tabs, too. Cool stuff. If we could rationalize this design with the Sakai More Tabs design and the jQuery Tabs widget, we'd have a hot "NavigationTabs" component.
[10:51:44 EDT(-0400)] <colinclark> I have been hoping to componentize our work on tabs for awhile now.
[10:52:32 EDT(-0400)] <michelled> Sounds nice. I wonder if there is an in between stage that would be ok in the uportal mockup. Perhaps the cute avatar? Maybe I'm just being silly.
[10:53:34 EDT(-0400)] <colinclark> michelled: I would love to show examples of very different avatar behaviour, aside from the "big red bar" approach we have shown. (smile)
[10:53:57 EDT(-0400)] <michelled> you mean drop marker (smile)
[10:54:06 EDT(-0400)] <colinclark> Sorry, yes.
[10:54:24 EDT(-0400)] <colinclark> Drop marker = the thing that shows you where an item will drop.
[10:54:30 EDT(-0400)] <michelled> yup
[10:54:41 EDT(-0400)] <colinclark> Drop target = the thing you hover over to choose where you will drop.
[10:54:45 EDT(-0400)] <michelled> avatar = thing that follows the mouse pointer around
[10:54:52 EDT(-0400)] <colinclark> You beat me to it. (tongue)
[10:54:52 EDT(-0400)] <michelled> yup
[10:55:05 EDT(-0400)] <colinclark> I knew that. (tongue)
[10:55:20 EDT(-0400)] <colinclark> As for the tabs, I still wonder if we're better of keeping our uPortal concrete example focussed on the portal layout manager work we're doing.
[10:55:35 EDT(-0400)] <colinclark> And to clean up our simple abstract tabs example
[10:55:49 EDT(-0400)] <colinclark> Or even cooler, to hook up the Reorderer to the jQuery tabs example.
[10:56:30 EDT(-0400)] <colinclark> michelled: What's your preference?
[10:58:07 EDT(-0400)] <michelled> No real preference. I was having fun with multiple reorderers on a page - that's all.
[10:58:28 EDT(-0400)] <colinclark> (smile)
[10:58:44 EDT(-0400)] <michelled> jQuery tabs example from jQuery UI?
[11:00:12 EDT(-0400)] <colinclark> michelled: Yep, that one.
[11:00:22 EDT(-0400)] <colinclark> I have a keyboard-accessible example.
[11:00:27 EDT(-0400)] <colinclark> With some of the ARIA roles added, too.
[11:00:52 EDT(-0400)] <colinclark> https://source.fluidproject.org/svn/sandbox/tabindex/trunk/examples/jquery-ui-tabs/
[11:03:39 EDT(-0400)] <michelled> thanks
[11:08:44 EDT(-0400)] <colinclark> Boson: There's an interesting little discussion on the ##uportal channel about multiple JS includes and jQuery.
[11:08:51 EDT(-0400)] <colinclark> Bosmon: ^
[11:08:56 EDT(-0400)] <colinclark> Thought you might be curious.
[11:30:20 EDT(-0400)] * anastasiac (n=team@142.150.154.105) has joined #fluid-work
[12:35:16 EDT(-0400)] * davidb (n=davidb@bas4-toronto06-1242458163.dsl.bell.ca) has joined #fluid-work
[13:41:23 EDT(-0400)] <Bosmon> Anyone here
[13:42:45 EDT(-0400)] * theclown (n=theclown@user383.megabit.utoronto.ca) has joined #fluid-work
[13:45:26 EDT(-0400)] <michelled> yes
[13:45:36 EDT(-0400)] <michelled> (smile)
[13:45:58 EDT(-0400)] <Bosmon> i have discovered an "unusual phenomenon"
[13:46:07 EDT(-0400)] * anastasiac (n=team@142.150.154.105) has joined #fluid-work
[13:46:21 EDT(-0400)] <Bosmon> Ah, great, Stasia has come to hear about my "phenomenon" (tongue)
[13:46:33 EDT(-0400)] * michelled listens
[13:46:44 EDT(-0400)] <Bosmon> It appears that, when using an "Object" as the key into a hash, Javascript considers that "every Object is the same Object"
[13:46:52 EDT(-0400)] <Bosmon> Much in the same way that every CAT is really the same CATT
[13:47:29 EDT(-0400)] <Bosmon> Has anyone any experience of this?
[13:47:31 EDT(-0400)] <michelled> what do you mean by "the same Object" does === return true?
[13:47:42 EDT(-0400)] <Bosmon> No, I mean they are entered "into the same slot" in the hash
[16:04:55 EDT(-0400)] <Bosmon> This was really not what I was expecting
[16:04:55 EDT(-0400)] <michelled> ack - no I've never seen that.
[16:04:55 EDT(-0400)] <Bosmon> For example say that hash, key1, key2, obj1 and obj2 are all {}
[16:04:55 EDT(-0400)] <Bosmon> Then doing hash[key1] = obj1; followed by hash[key2] = obj2;
[16:04:55 EDT(-0400)] <Bosmon> The second object actually obliterates the first
[16:04:55 EDT(-0400)] <michelled> because they are equivalent at to their content...not what I'd have expected.
[16:04:55 EDT(-0400)] <Bosmon> Well no
[16:04:55 EDT(-0400)] <Bosmon> It doesn't matter WHAT you put in them, I just put {} for convenience
[16:04:55 EDT(-0400)] <Bosmon> EVERY Object used as a key will obliterate every other
[16:04:55 EDT(-0400)] <Bosmon> They are all the same CATT...
[16:04:55 EDT(-0400)]

<michelled> so if key1 is

Unknown macro: {"key1"}

and key2 is

Unknown macro: {"key2"}

it will still overwirte?


[16:04:55 EDT(-0400)]

<Bosmon> What does

Unknown macro: {"key1"}

mean?


[16:04:55 EDT(-0400)] <Bosmon> Don't you need to actually give a value to it...
[16:04:55 EDT(-0400)] <michelled> yes - I wasn't being literal (tongue)
[16:04:55 EDT(-0400)]

<Bosmon> But yes, key1 is

Unknown macro: {"key1"}

or whatever


[16:04:55 EDT(-0400)] <Bosmon> Basically I took a whole bunch of quite radically different objects and used them as hash keys
[16:04:55 EDT(-0400)] <Bosmon> And only one goldfish came out the other end
[16:04:55 EDT(-0400)] <michelled> yuck. Thanks for letting us know.
[16:04:55 EDT(-0400)] <Bosmon> Well
[16:04:55 EDT(-0400)] <Bosmon> I sort of came here to "let you know"
[16:04:55 EDT(-0400)] <Bosmon> But also partly to see if anyone had any suggestions for stopping it (tongue)
[16:04:55 EDT(-0400)] <michelled> any reason you need to use objects as the keys?
[16:04:55 EDT(-0400)] <Bosmon> Erm, well, yes
[16:04:55 EDT(-0400)] <Bosmon> I want to get the values back again (tongue)
[16:04:55 EDT(-0400)] <michelled> I know that! What I mean is - can you use something else as the key? Do the values have a unique id or something?
[16:04:55 EDT(-0400)] <Bosmon> Well....
[16:04:55 EDT(-0400)] <Bosmon> I suppose they do (sad)
[16:04:55 EDT(-0400)] <Bosmon> Come on, why is noone leaping up and down being outraged by this (tongue)
[16:04:55 EDT(-0400)] <michelled> There is so much else to be outraged about. Like 'out' events that shouldn't happen and 'over' and 'out' events that happen in the wrong order. I think I'm outraged out this week (wink)
[16:04:55 EDT(-0400)] <Bosmon> ha
[16:04:55 EDT(-0400)] <Bosmon> I have just realised that there actually is a Javascript language spec....
[16:04:55 EDT(-0400)] <Bosmon> This should be interesting...
[16:04:55 EDT(-0400)] <Bosmon> PropertyName : See 11.1.5
[16:04:55 EDT(-0400)] <Bosmon> Identifier
[16:04:55 EDT(-0400)] <Bosmon> StringLiteral
[16:04:55 EDT(-0400)] <Bosmon> NumericLiteral
[16:04:55 EDT(-0400)] <Bosmon> "Return a default value for the Object. The default value of an object is retrieved
[16:04:55 EDT(-0400)] <Bosmon> by calling the internal [[DefaultValue]] method of the object, passing the optional
[16:04:55 EDT(-0400)] <Bosmon> hint PreferredType. The behaviour of the [[DefaultValue]] method is defined by
[16:04:55 EDT(-0400)] <Bosmon> this specification for all native ECMAScript objects (8.6.2.6)."
[16:04:55 EDT(-0400)] <Bosmon> (Section 9.1)
[16:04:55 EDT(-0400)] <davidb> Bosomon: hash['key1'] is like writing hash.key1 right? now suppose key1 = "foo", then hash[key1] is like writing hash.foo... is that what you intended? or did you want hash['key1'] ?
[16:04:55 EDT(-0400)] * davidb confuses himself
[16:04:55 EDT(-0400)] <davidb> anyways... myobject[foo] != myobject.foo
[16:04:55 EDT(-0400)] <davidb> myobject['foo'] == myobject.foo
[16:04:55 EDT(-0400)] <Bosmon> Quite
[16:04:55 EDT(-0400)] <Bosmon> I mean, "foo" in that case would be interpreted as an object reference named "foo"
[16:04:55 EDT(-0400)] <davidb> Bosmon: not sure that helps – i couldn't tell from your {} example
[16:04:55 EDT(-0400)] <Bosmon> Rather than the String "foo"
[16:04:55 EDT(-0400)] <davidb> right
[16:04:55 EDT(-0400)] <Bosmon> And this is the case I am talking about, trying to use keys to hashes which are not Strings
[16:04:55 EDT(-0400)] * davidb nods
[16:04:55 EDT(-0400)] * davidb shrugs
[16:04:55 EDT(-0400)] <davidb> btw, offtopic...
[16:04:55 EDT(-0400)] <Bosmon> It seems that this is only possible to express for a [] operator
[16:04:55 EDT(-0400)] <davidb> we have a #wai-aria public channel now (irc.w3.org:6665)
[16:04:55 EDT(-0400)] <Bosmon> So, it seems that the [[DefaultValue]] for every Object is a String named "[Object]", or some such
[16:04:55 EDT(-0400)] <davidb> Bosmon: yes quite possibly
[16:04:55 EDT(-0400)] <Bosmon> Which is what gets used as the key into the hash....
[16:04:55 EDT(-0400)] <davidb> that explains it
[16:04:55 EDT(-0400)] <Bosmon> Well, it's still deeply unsatisfactory (tongue)
[16:04:55 EDT(-0400)] <davidb> (smile)
[16:04:55 EDT(-0400)] <Bosmon> But I guess it would actually be impossible to express the resulting structure in JSON
[16:04:55 EDT(-0400)] <anastasiac> Hi- I'm coming in to this late, and I've just skimmed the conversation but:
[16:04:58 EDT(-0400)] <Bosmon> If they didn't force the keys of every map to "degrade"
[16:04:58 EDT(-0400)] <anastasiac> basically, my understanding is that you can't use an object as a key
[16:04:58 EDT(-0400)] <davidb> yeah seems so
[16:04:58 EDT(-0400)] <anastasiac> you have to use a string (or an object that represents a string)
[16:04:58 EDT(-0400)] * davidb nods
[16:04:58 EDT(-0400)] <Bosmon> Yes, this seems to be the result
[16:04:58 EDT(-0400)] <anastasiac> so an object that is more complicated can't be expected to work
[16:04:58 EDT(-0400)] <davidb> nice to have that clarity.
[16:04:58 EDT(-0400)] <anastasiac> it's not a bug, just the nature of the language
[16:04:58 EDT(-0400)] <Bosmon> Although it being javERscript it can't actually prevent you from doing stuff
[16:04:58 EDT(-0400)] * davidb puts the kettle on
[16:04:58 EDT(-0400)] <Bosmon> Well, it is not how hashes work in other languages (tongue)
[16:04:58 EDT(-0400)] <anastasiac> no, they do let you hang yourself
[16:04:58 EDT(-0400)] <Bosmon> Typically they work together with some natural concept of "equality"
[16:04:58 EDT(-0400)] <anastasiac> javascript doesn't actaully have hashes
[16:04:58 EDT(-0400)] <Bosmon> That is, key1 != key2 => hash[key1] != hash[key2]
[16:04:58 EDT(-0400)] <anastasiac> you can use an object in a way similar to a hash, but that doesn't make it an actual hash
[16:04:58 EDT(-0400)] <Bosmon> It has things that it calls hashes
[16:04:58 EDT(-0400)] <Bosmon> In fact, it insists all the time that it "doesn't have X" for some X defined in other languages
[16:04:58 EDT(-0400)] <anastasiac> hm. I can't find reference to hashes in the rhino book...
[16:04:58 EDT(-0400)] <Bosmon> But frequently I have found that the response to certain kinds of question of the form "Why doesn't Javascript have Y" is of the form "Javascript doesn't have Y, it has hashes" (tongue)
[16:04:58 EDT(-0400)] <Bosmon> Yes, but the rhino book is woefully incomplete in lots of other ways, as we discovered (tongue)
[16:04:58 EDT(-0400)] <davidb> Bosmon: that could be an implementation detail... under the hood
[16:04:58 EDT(-0400)] <Bosmon> For example having a totally incorrect explanation of the effect of calling "new X()"
[16:04:58 EDT(-0400)] <anastasiac> perhaps they're using the word hash in a different way than you're meaning it?
[16:04:58 EDT(-0400)] <Bosmon> The rhino book makes me want to set fire to it
[16:04:58 EDT(-0400)] <anastasiac> LOL
[16:04:58 EDT(-0400)] <Bosmon> For all its doorstoppy thickness
[16:04:58 EDT(-0400)] <anastasiac> would make a nice big fire
[16:04:58 EDT(-0400)] <Bosmon> It really would
[16:04:58 EDT(-0400)] <Bosmon> Like in 1920s Germany, when they burned Javascript books rather than firewood
[16:04:58 EDT(-0400)] <anastasiac> You might want to watch the Crockford videos
[16:04:58 EDT(-0400)] <Bosmon> Yes
[16:04:58 EDT(-0400)] <anastasiac> Not really a reference, much more time consuming
[16:04:58 EDT(-0400)] <anastasiac> but very educational
[16:04:58 EDT(-0400)] <Bosmon> Crockford's explanation of what new X() does is correct, but barely comprehensible (tongue)
[16:04:58 EDT(-0400)] <theclown> then you'd want to burn the videos, I'm guessing...
[16:04:58 EDT(-0400)] <davidb> isn't that how they used to make stink bombs?
[16:04:58 EDT(-0400)] <Bosmon> So, Javascript values degrade through the chain getValue() -> getObject() -> getString()
[16:04:58 EDT(-0400)] <Bosmon> From section 11.2.1 of the spec
[16:04:58 EDT(-0400)] <Bosmon> Now 8.6.2.6 suggests then that if you implement the "toString()" method of the key type in question, that will be used for the conversion
[16:04:58 EDT(-0400)] <Bosmon> Or else you can implement "valueOf" it seems...
[16:04:58 EDT(-0400)] <Bosmon> OK, gotcha finally!
[16:04:58 EDT(-0400)] <Bosmon> "If you do not override toString in a custom object, toString returns [object type ], where type is the object type or the name of the constructor function that created the object"
[16:04:58 EDT(-0400)] <Bosmon> Hence the actual key forms the text "[object Object]"
[16:04:58 EDT(-0400)] <Bosmon> I'd always assumed this was just some weird Firebug crap in the viewer (tongue)
[16:04:58 EDT(-0400)] <davidb> Bosmon: nice investigation. it is nice to close the loop on that.
[16:04:58 EDT(-0400)] * anastasiac (n=team@142.150.154.105) has joined #fluid-work
[16:04:58 EDT(-0400)] * EricDalquist (n=EricDalq@72.33.101.56) has joined #fluid-work
[16:04:58 EDT(-0400)] * davidb_ (n=davidb@bas4-toronto06-1242458163.dsl.bell.ca) has joined #fluid-work
[16:15:54 EDT(-0400)] * davidb (n=davidb@bas4-toronto06-1242458163.dsl.bell.ca) has joined #fluid-work
[17:06:05 EDT(-0400)] * EricDalquist (n=EricDalq@76.201.154.58) has joined #fluid-work
[17:08:01 EDT(-0400)] * davidb (n=davidb@bas4-toronto06-1242458163.dsl.bell.ca) has joined #fluid-work
[17:21:10 EDT(-0400)] * michelled (n=team@142.150.154.197) has left #fluid-work
[18:21:56 EDT(-0400)] * theclown (n=theclown@user383.megabit.utoronto.ca) has left #fluid-work