User:Which Linden/Office Hours/2008 Feb 7
Jump to navigation
Jump to search
Transcript of Which Linden's office hours:
[11:13] | Which Linden: | Hi Phli |
[11:14] | Phli Foxchase: | Wich, you are working on https ? |
[11:14] | Which Linden: | Certified HTTP |
[11:14] | Phli Foxchase: | what's the difference ? |
[11:14] | Which Linden: | Well, https is http tunneled over SSL |
[11:14] | Saijanai Kuhn: | its encrypted |
[11:15] | Phli Foxchase: | ok |
[11:15] | Which Linden: | And Certified HTTP is a spec for adding some additional information to a http message so that it can be idempotent |
[11:15] | Which Linden: | so Certified HTTP can be done over https as well |
[11:15] | Phli Foxchase: | ok |
[11:15] | Which Linden: | I am beginning to see why 'Certified HTTP' is not the awesomest of names |
[11:16] | Which Linden: | ' |
[11:16] | Saijanai Kuhn: | crazy HTTP sounds easier to work with ;-) |
[11:16] | Which Linden: | hah |
[11:16] | Which Linden: | Certified HTTP does sound very heavy-weight and expensive |
[11:17] | Phli Foxchase: | Linden Lab works on certified http and https both ? |
[11:17] | Which Linden: | We don't work on https |
[11:17] | Phli Foxchase: | ok |
[11:17] | Saijanai Kuhn: | up... the CAPs and login are on https... |
[11:17] | Which Linden: | I mean, we use it, but we're not responsible for the standard |
[11:17] | Which Linden: | If that's what you meant |
[11:17] | Which Linden: | If you meant, do we deal with it on a daily basis, then yes |
[11:17] | Phli Foxchase: | Yes |
[11:18] | Phli Foxchase: | and where do you want to put certified http? |
[11:18] | Phli Foxchase: | Ims ? |
[11:18] | Which Linden: | Certified HTTP is going to be purely internal, for L$ transactions |
[11:18] | Which Linden: | At first |
[11:18] | Saijanai Kuhn: | IMS at least for groups, should probably stay UDP |
[11:19] | Which Linden: | The agent domain will change a lot of the design decisions we've made so far |
[11:20] | Which Linden: | I.e. group chat over udp makes sense now cause there are so many recipients of it |
[11:20] | Saijanai Kuhn: | for IM? I hope that just thinking about thingswould lead to redesigns for IM |
[11:21] | Which Linden: | when we move to agent hosts, there would be a much higher density of agents per agent host, so it'd make sense to send one tcp message to each host for all the agents hosted thereupon |
[11:21] | Saijanai Kuhn: | hmmm. So would the Agent domain be responsible for gorup IM, or just for tracking the destination of group IM? |
[11:21] | Which Linden: | well the location of the agent moves to the agent host rather than the sim |
[11:22] | Phli Foxchase: | and what protocole do you plan to replace ? |
[11:22] | Saijanai Kuhn: | asure, but wouldn't it be better to offload the agent domain as much as possible too? |
[11:22] | Phli Foxchase: | with certified http* |
[11:22] | Saijanai Kuhn: | http://wiki/secondlife.com/wiki/ImprovedInstantMessage is the current protocol |
[11:22] | Which Linden: | Phli: I guess what we'll be replacing is mysql transactions |
[11:22] | Saijanai Kuhn: | I've got theat memorized. Ishould make a hot key for it in the client LOL |
[11:23] | Which Linden: | Phli: right now we have lots of transactions going through a central database |
[11:24] | Phli Foxchase: | asset server ? |
[11:24] | Which Linden: | And we'd like to distribute those transactions over lots of agent stores |
[11:24] | Which Linden: | not the asset server, the central database |
[11:24] | Phli Foxchase: | ok |
[11:24] | Which Linden: | eventually the goal is to have every Resident's data live on a particular database cluster |
[11:25] | Which Linden: | and have many such clusters |
[11:25] | Which Linden: | each with their own distinct population of Residents ("agents") |
[11:25] | Which Linden: | We call them agents when we're referring to the code |
[11:25] | Which Linden: | Not sure why |
[11:26] | Which Linden: | I guess the Resident is the person, and the Agent is the representation in our system of the Resident's will |
[11:26] | Saijanai Kuhn: | Zero said that you guys had worked out a glossary for some o fthis stuff |
[11:27] | Which Linden: | Hah, we do have a linden glossary |
[11:27] | Saijanai Kuhn: | this was a recent meeting. Might not be the same glossary |
[11:27] | Which Linden: | "the digital representation of a Second Life Resident who is logging in or logged into a Second Life grid. " |
[11:28] | Which Linden: | Mebbe |
[11:28] | Which Linden: | Phli: check this out: http://wiki.secondlife.com/wiki/Agent_Domain |
[11:28] | Which Linden: | This is what we're talking about |
[11:29] | Phli Foxchase: | Do you have a date for when certified http will be ready ? |
[11:29] | Which Linden: | This quarter |
[11:29] | Which Linden: | Come hell or high water |
[11:29] | Which Linden: | It's mostly done, you can start using it now if you want to |
[11:29] | Which Linden: | There are just some loose ends |
[11:29] | Saijanai Kuhn: | Which you mentioned standards. Will this stuff become part of the standard, or are you working within an existing standard? |
[11:30] | Which Linden: | Standards.... um, hmmm. |
[11:30] | Which Linden: | Well, we are calling it a "standard" or a "spec" despite the fact that we're the only users |
[11:30] | Saijanai Kuhn: | [11:17] Which Linden: I mean, we use it, but we're not responsible for the standard |
[11:31] | Which Linden: | Oh, I meant SSL the standard |
[11:31] | Which Linden: | Just now I thought you were referring to Certified HTTP |
[11:31] | Which Linden: | Certified HTTP is not a standard, but hopefully it will be |
[11:31] | Saijanai Kuhn: | I thought you meant that chttp was or was becoming a standard and you guys were working on it as a standard (not just internally) |
[11:31] | Which Linden: | Some standards body has to bless it I think before it can be a standard |
[11:32] | Which Linden: | Yes, we want to be interoperable in that regard |
[11:32] | Saijanai Kuhn: | yeah, total confusion. I thought you meant you were already working with a standards body or were going to soon or something. My bad |
[11:32] | Which Linden: | Not any time soon. |
[11:32] | Which Linden: | I think the plan is for it to become a de facto standard first |
[11:32] | Saijanai Kuhn: | well, sounds closer than the SL protocols LOL |
[11:33] | Which Linden: | If you can't even get your shit to be a de facto standard then it probably sucks |
[11:33] | Saijanai Kuhn: | ... |
[11:33] | Which Linden: | Heh, yeah, well, you're helping us turn the sl protocols into something semi-standard |
[11:33] | Which Linden: | Bringing us out of proprietary/anarhy |
[11:33] | Saijanai Kuhn: | thats my goal (wishes I could get paid for it though) |
[11:34] | Which Linden: | I hear ya |
[11:34] | Saijanai Kuhn: | Zha says wonce I'm further along with IM, she'll back me in pitching a call to hire me for that |
[11:34] | Which Linden: | You would, at that point, probably know more about IM than any individual Linden |
[11:34] | Saijanai Kuhn: | gotta show more functiong work to make it have a chance |
[11:35] | Saijanai Kuhn: | well, once I get that table filled in, and a chart like you have here created, it should be possible for anyone to "know" as much |
[11:35] | Saijanai Kuhn: | IM isn't that complicated in SL. Its just really REALLY obscure |
[11:36] | Which Linden: | Yup |
[11:36] | Which Linden: | Getting back to how it might be affected by agent domain though |
[11:36] | Saijanai Kuhn: | though, just glancing at that table tells me a lot about the kinds of errors we see. LIke me sending a group IM and it showing up as individual IM. Or TPs going bad at the same time as IM |
[11:37] | Which Linden: | Those things happen? |
[11:37] | Saijanai Kuhn: | yeah. I spam a group with Zero's office hours and I get private calls from folks compliaing about spam |
[11:37] | Saijanai Kuhn: | Last week my python script suddenly started showing messages but mostly to inidivuals |
[11:38] | Saijanai Kuhn: | I found a bug in the code and suddenly the individuals stopped getting mesages, but group IM showed nothing but my name and no message |
[11:38] | Saijanai Kuhn: | so I fixed one bug and uncovered another |
[11:38] | Which Linden: | :-/ |
[11:39] | Saijanai Kuhn: | today I spammed Metaverse wth Zero's office hours and got flamed bigtime for spamming private IM |
[11:39] | Saijanai Kuhn: | that was with the main client, not my scirpt |
[11:39] | Which Linden: | So it effectively seemed like you mass-sent private ims to the members of teh group? |
[11:39] | Saijanai Kuhn: | yep |
[11:40] | Saijanai Kuhn: | some people say that they'll get error messages about a group session not starting, which automatically closes the group window... on a bunch of messages they're reading |
[11:40] | Which Linden: | My understanding is that group and personal ims go over rather different routes |
[11:41] | Saijanai Kuhn: | is all the same packet though |
[11:41] | Which Linden: | Once it gets to the viewer, yes |
[11:41] | Saijanai Kuhn: | so if there's a bug in the client for packet handling, or the packet sending... |
[11:41] | Which Linden: | So the sim can corrupt it |
[11:41] | Which Linden: | Or the client can |
[11:41] | Which Linden: | Yah |
[11:42] | Saijanai Kuhn: | anything that corrupts that packet in the middle would change the value of Dialog byte and boom, you've got strangeness |
[11:42] | Which Linden: | With agent domain, I'd expect this code path to be significantly cleaned up |
[11:42] | Saijanai Kuhn: | sure hope so ;-) |
[11:42] | Which Linden: | It'd be a lot easier to locate the agent since they'd live on a particular agent host |
[11:42] | Saijanai Kuhn: | right now, its still confusing to me though. blank messages adie, I still don't understand EvetnQueueGet |
[11:43] | Saijanai Kuhn: | blank messages aside* |
[11:43] | Which Linden: | Oh, well, um, hmm...do you want more details, or is the general concept eluding you? |
[11:43] | Saijanai Kuhn: | ...details please |
[11:43] | Saijanai Kuhn: | or rather, let me tell you what I'm doing... |
[11:44] | Which Linden: | sure |
[11:44] | Saijanai Kuhn: | I get the cap for event queue get. I send the ack with an undef/boolean/false |
[11:44] | Saijanai Kuhn: | get the first ID. Send that back in the ack with a boolean/true |
[11:45] | Saijanai Kuhn: | I would *expect that the next time I do that, the old event would be cleared, but thats not what is happening |
[11:45] | Which Linden: | wait you get teh cap over udp? |
[11:45] | Saijanai Kuhn: | I'm getting the new event accumjulated in the old event |
[11:45] | Saijanai Kuhn: | I'm sending the ack over the EventQUeueGet CAP |
[11:45] | Which Linden: | I see |
[11:46] | Which Linden: | Ummm.... my event-queue-fu is weak |
[11:46] | Saijanai Kuhn: | So it *seems* like I'm never clearing the queue. Each new event is tacked into the same event array |
[11:46] | Which Linden: | lemme looks some stuff up |
[11:46] | Which Linden: | right, yeah, so perhaps the ack isn't being done properly |
[11:46] | Saijanai Kuhn: | might be. I'm getting a new AID at the end of each new event though and its always +1 over what I sent |
[11:47] | Saijanai Kuhn: | maybe its a problem with my boolean |
[11:47] | Saijanai Kuhn: | so it never closes |
[11:48] | Saijanai Kuhn: | the other up, is probably some UDP packet issue which I can just "figure out" eventually |
[11:48] | Saijanai Kuhn: | the other prob* |
[11:48] | Saijanai Kuhn: | firing up eclipse... |
[11:48] | Which Linden: | man, is there any documentation anywhere about the llsd structure of the event queue? |
[11:49] | Saijanai Kuhn: | my original packet issue was I said IM_packet = ... position + postion instead of IM_packet == position + UUID... |
[11:49] | Saijanai Kuhn: | sigh... |
[11:49] | Saijanai Kuhn: | then my next problem was I was sending the wrong length byte for my name... hmmm Maybe I need to check, that again. Name is coming through but not message... |
[11:50] | Saijanai Kuhn: | anyway, cclipse is still loading... |
[11:50] | Which Linden: | vc still loading for me :-) |
[11:50] | Saijanai Kuhn: | afk while waint gof Java VM to start |
[11:53] | Which Linden: | the ack seems to be per-message |
[11:53] | Which Linden: | not per-message |
[11:54] | Which Linden: | per http request |
[11:54] | Which Linden: | i.e. you ack the entire queue |
[11:55] | Saijanai Kuhn: | that makes sense... but the entire event queu comes in as one LLSD-XML array? DIctinoary? |
[11:55] | Saijanai Kuhn: | so if I ack it I would expect the entire thing to clear... |
[11:56] | Which Linden: | yah |
[11:56] | Saijanai Kuhn: | if thats not the behavior, then its prety wasteful, I think, since you would accumualte every packet ever sent forever |
[11:56] | Saijanai Kuhn: | Though I've seen some libsl packets that suggest that that is happening |
[11:56] | Which Linden: | yeah so you get a structure that looks like this: {'id': 1234, 'events': [...] } |
[11:56] | Saijanai Kuhn: | The *client* seems to be able to clear at least some things |
[11:57] | Saijanai Kuhn: | right, I send the undef and get back the packets with id 1234 |
[11:57] | Which Linden: | ok |
[11:57] | Saijanai Kuhn: | I send the 1234 and get back teh same packet with id 12345 |
[11:57] | Saijanai Kuhn: | 1235 |
[11:58] | Which Linden: | yup |
[11:58] | Which Linden: | my reading of the code is that if you POST a structure looking like {'ack':1234} then it should do the right thing |
[11:58] | Saijanai Kuhn: | so that accumualtes each new item. is there anyway to clear it? |
[11:59] | Which Linden: | I think that it should be clearing it |
[11:59] | Saijanai Kuhn: | oh bother... My reinstalling of the OS seems to have reinstalled an ancient version of my source... |
[12:00] | Saijanai Kuhn: | wiat wrong file (where) |
[12:00] | Saijanai Kuhn: | wherw |
[12:01] | Which Linden: | hey, why don't you send me your code? |
[12:01] | Which Linden: | it's possible that there's a server bug, who knows |
[12:01] | Saijanai Kuhn: | OK. I'd life to take a moment to tidy it up first though. Huge blocks of comments and stray comments and so on |
[12:01] | Which Linden: | ok, cool |
[12:02] | Which Linden: | it does seem like we're at the point where I'm saying "that should work" and you're saying "but it doesn't" :-) |
[12:02] | Which Linden: | Anyway, that was fun digging through that old code |
[12:02] | Saijanai Kuhn: | like I said position+ poistion instead of poistion +UUID... |
[12:02] | Saijanai Kuhn: | sighs |
[12:03] | Which Linden: | I gotta get lunch though |
[12:03] | Saijanai Kuhn: | for some reason the server didn't like 3 zero FP values intead of 16 bytes of zero |
[12:03] | Saijanai Kuhn: | KK will tidy it up and send it to you |
[12:03] | Which Linden: | Awesome |
[12:04] | Which Linden: | Take it easy! |
[12:04] | Saijanai Kuhn: | byut eyeballing it, i didn't notice 12 bytes instead of 16 |