User:Enus Linden/Office Hours/2009 March 27

From Second Life Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
  • [9:29] Morgaine Dinova: So, nothing to talk about today I guess ..... ;-)
  • [9:29] Enus Linden: nada at all
  • http://slurl.com/secondlife/Longfellow/93/115/25 (Starts now)
  • [9:30] Morgaine Dinova: Hiya bots!
  • [9:30] Saijanai Kuhn: oh no its all the lindens I spammed
  • [9:30] Enus Linden: they will just sit and listen for today
  • [9:30] Morgaine Dinova: Hehe
  • [9:30] Morgaine Dinova: Right, tell us how that works :-)
  • [9:31] Enus Linden: how which works? multiple bots?
  • [9:31] Morgaine Dinova: Yeah
  • [9:31] Enus Linden: okies
  • [9:31] Morgaine Dinova: Unless it's simply N copies of pyogp of course :P
  • [9:31] Enus Linden: let me get code
  • [9:32] Enus Linden: clients = [['first', 'last, 'pword'], [first1', 'last1', 'pword1',
  • [9:32] Enus Linden: # Now let's log them in
  • for params in clients:
  • #First, initialize the agent
  • client = Agent(settings)
  • api.spawn(client.login, options.loginuri, params[0], params[1], params[2], start_location = options.region, connect_region = True)]
  • [9:33] Enus Linden: poof, many bots from one script
  • [9:33] Enus Linden: it's not a pyogp bot manager yet
  • [9:33] Enus Linden: but that would be trivial to add i suppose
  • [9:33] Morgaine Dinova: Right, so the single piece of Python is doing N full connects, right?
  • [9:33] Saijanai Kuhn: just refer to the client in a dictionary indexed by name
  • [9:33] Enus Linden: correct morgaine
  • [9:34] Enus Linden: was just a 'let's see what happens' kind of thing
  • [9:34] Enus Linden: each client instance has it's own event queue and udp process
  • [9:34] Morgaine Dinova: Super. Sai was trying to get his head around how to keep those separate login states separate in the wx client.
  • [9:34] Saijanai Kuhn: and for added goodness, have an option to add the name on to the end of the logger name: pyogp.base.example.bots.first.last
  • http://slurl.com/secondlife/Longfellow/93/115/25 (Started 5 minutes ago)
  • [9:35] Morgaine Dinova: UDP "process"? An O/S process?
  • [9:35] Enus Linden: sai, that's a good idea, some sort of key for the logging.
  • [9:35] Saijanai Kuhn: right, the real issue is keeping track of the output and messaging, and logger will do that automatically for the debug info
  • [9:35] Enus Linden: while, eventlet coroutine
  • [9:35] Enus Linden: well*
  • [9:35] Morgaine Dinova: Aha, internal coroutine, cool
  • [9:35] Enus Linden: i also poked at connecting to child regions yesterday...
  • [9:36] Saijanai Kuhn: can possibly reuse the logger to store the packet data
  • [9:36] Morgaine Dinova: So, the single pyogp lib instance is clearly reentrant :-)))) Good start!!
  • [9:36] Enus Linden: it 'works', but for some reason the event queue ceases when a client connects to a child region
  • [9:36] Enus Linden: i will figure that out shortly
  • [9:36] Saijanai Kuhn: I wasn't worried about the instance being reentrant, but about keeping track of the data on reentrancy (?), morgaine
  • [9:36] Enus Linden: what is reentrant?
  • [9:37] Saijanai Kuhn: doesn't blow up when you create multiple copies
  • [9:37] Enus Linden: right...
  • [9:37] Morgaine Dinova: The lib
  • [9:38] Enus Linden: the very insteresting thing imo, and the reason i tried this yesterday, is that cpu usage remains the same on average when running 20 bots vs 1
  • [9:38] Morgaine Dinova: When you do that iterated spawn, where's the top level index or whatever it is, that Sai can grab as a primary index?
  • [9:38] Saijanai Kuhn: wowser
  • [9:38] Enus Linden: thats eventlet for you apparently
  • [9:38] Enus Linden: morgina, i didn't sort that out yet
  • [9:38] Saijanai Kuhn: morgaine I don't think he's iterating. he just does client = blah over and over again
  • [9:39] dinha Nayar: oi
  • [9:39] dinha's translator: hi
  • [9:39] Enus Linden: i think adding an agentmanager to pyogp would deal with all this best
  • [9:39] Saijanai Kuhn: all we need is agent_list["clientname"
  • [9:39] Morgaine Dinova: for params in clients: :-) That iterates
  • [9:39] Saijanai Kuhn: I think
  • [9:40] Morgaine Dinova: The problem is that api.spawn is not returning an index.
  • [9:40] Saijanai Kuhn: you don't need one. I think. CLient is the object that contains references to all spawned processes
  • [9:40] Saijanai Kuhn: or it could
  • [9:40] Enus Linden: and that's weird sai
  • [9:41] Enus Linden: i didnt think it would work that way
  • [9:41] Enus Linden: i'll just make a new class
  • [9:41] Enus Linden: make it easy
  • [9:41] Saijanai Kuhn: well, I'm not sure you have connections to all the eventlets directly but that could get plunked in I think
  • [9:41] Morgaine Dinova: Sure, it can be done by side effect on the global "client", but that's a bit icky.
  • [9:41] Saijanai Kuhn: is it? Works the same for one or many
  • [9:42] Morgaine Dinova: Side effects are always icky :P
  • [9:42] dinha Nayar: oi
  • [9:42] dinha's translator: hi
  • [9:42] Enus Linden: so we will formalize things properly
  • [9:42] Enus Linden: so when i ran these yesterday, i was in a full on funk, and didnt explore why the sim decided to kick the bots after 30ish minutes. i dont think it was a disconnect due to inactivity, nor did i notice the sim thinking the clients were slow
  • [9:42] Saijanai Kuhn: well is it a side effect if you refer to client.blah or to agent_list[name].blah?
  • [9:42] Enus Linden: it may have been inactivity
  • [9:43] dinha Nayar: oi
  • [9:43] dinha's translator: hi
  • [9:43] Enus Linden: which makes sense, all they were doing was idling
  • [9:43] Saijanai Kuhn: like I said, maybe we're missing a undocumented ack
  • [9:43] Enus Linden: and sims kick for that
  • [9:43] Enus Linden: nope
  • [9:43] Enus Linden: 1 client can persist forever
  • [9:43] Saijanai Kuhn: ah no activity at all. RIght
  • [9:43] Enus Linden: or until it falls apart
  • [9:43] Enus Linden: just sending CompletePingCheck responses and packet acks and agent updates
  • [9:44] Enus Linden: but, i was pleased to see it just work with no effort :)
  • [9:44] Saijanai Kuhn: periodically send a "I'm here" completeagentmovement message?
  • [9:44] Morgaine Dinova: Do you have the means to alter character tests Enus, to make it stop logging you out?
  • [9:44] Enus Linden: some keepalive mechanism would be nice :)
  • [9:45] Enus Linden: morgaine, just sending some random packet should do so fine
  • [9:45] Morgaine Dinova: Advanced->Character->Character Tests->Go Away/AFK Ehen Idle
  • [9:45] Enus Linden: oh
  • [9:45] Morgaine Dinova: Just negate that and you're fine
  • [9:45] Enus Linden: i can look into it
  • [9:45] Jonit Ivory: Hello
  • [9:45] Jonit Ivory: thanks Sai
  • [9:45] Morgaine Dinova: Hiya Jonit
  • [9:45] Enus Linden: not sure how that works, but we could make it so :)
  • [9:46] Saijanai Kuhn: what's the name of your friend for the invite, Jonit?
  • [9:46] ~Azora*~ Meter: 1.5.3: Jonit Ivory has removed their combat meter.
  • [9:46] Jonit Ivory: a very austere name
  • [9:46] Jonit Ivory: Reverend Upshaw
  • [9:46] Enus Linden: omg!
  • [9:46] Morgaine Dinova: There's also the IdleAFKTimeOut in Debug Settings
  • [9:46] Enus Linden:  :)
  • [9:46] Jonit Ivory: Hello Enus
  • [9:46] Enus Linden: hi jonit
  • [9:47] Morgaine Dinova: Sai, did you check the wx code into SVN yet?
  • [9:47] Enus Linden: how are ya today?
  • [9:47] Saijanai Kuhn: did not
  • [9:47] Jonit Ivory: not too bad at all
  • [9:47] Enus Linden: i didnt create that branch yet morgaine
  • [9:47] Morgaine Dinova: Aha
  • [9:47] Saijanai Kuhn: see?
  • [9:47] Enus Linden: i did not clean up groiup chat b/c of headaches and multibots
  • [9:47] Enus Linden: i will clean up this morning and checkin and cut a branch
  • [9:47] Morgaine Dinova: Woot! :-)
  • [9:48] Saijanai Kuhn: yay
  • [9:48] Enus Linden: for that matter, after today all dev work should be happening in side branches
  • [9:48] Saijanai Kuhn: but, that means I gotta tidy up MY code too :-/
  • [9:48] Jonit Ivory: Enus, are those your bots?
  • [9:49] Enus Linden: that they are jonit
  • [9:49] Morgaine Dinova: OK, so we're theorizing that the data of every connection spawned can be accessed through client.blah, does that seem right?
  • [9:49] Jonit Ivory: hmm, ok
  • [9:49] Enus Linden: morgaine, let's make that clientmanager.blah once i add it
  • [9:50] Enus Linden: in this example, none of the data is accessible save the last one spawned
  • [9:50] Saijanai Kuhn: as long as we have a central place for the GUI/command parser to look
  • [9:51] Saijanai Kuhn: enus, at this point even the client list would work for most stuff. Not sure if there's a way to get to the individual spawned eventlets though
  • [9:52] Morgaine Dinova: Cool, so 1 client, N agents. Now how is the AD angle looking, or LL's "pseudo-AD" anyway. That needs to be any of the ADs that are coming.
  • [9:53] Morgaine Dinova: Sai: you shouldn't need to talk to the coroutines directly, but only manage the data that the processes running in those coroutines use or create.
  • [9:54] Enus Linden: dunno about ADs lately
  • [9:54] Saijanai Kuhn: hmmm... to quit them I think you would need to have some channel open
  • [9:54] Enus Linden: AD work is quiet
  • [9:54] Morgaine Dinova: Uh oh
  • [9:54] Enus Linden: uh oh?
  • [9:54] Morgaine Dinova: Let's not forget that this is PyOGP, not PySL :-)))
  • [9:54] Saijanai Kuhn: Zha's work with OpenSim is the only AD work I know that is going on right now
  • [9:55] Enus Linden: well, pyogp still works against an AD
  • [9:55] Jonit Ivory: Morgaine, you remind us well ((hehe))
  • [9:55] Enus Linden: works just fine in fact
  • [9:55] Enus Linden: the only diff was login -> rez
  • [9:55] Enus Linden: that is retained in pyogp
  • [9:56] Jonit Ivory: Sai, Enus, all meet Reverend
  • [9:56] Saijanai Kuhn: he Rev
  • [9:56] Jonit Ivory: a pesky coder
  • [9:56] Enus Linden: and anytime ogp work picks up, pyogp will be one step ahead with accomodating the protocol changes and being able to test implementations
  • [9:56] Morgaine Dinova: I wish Zha's lawyers would finish their deliberations, blast. It's taking ages, to no purpose if it's going to be BSD code.
  • [9:56] Enus Linden: hello reverend :)
  • [9:56] ~Azora*~ Meter: 1.5: Reverend Upshaw has removed their combat meter.
  • [9:56] Morgaine Dinova: Hi Rev
  • [9:56] Gellan Glenelg: eek! HOW many bots?
  • [9:56] Saijanai Kuhn: we're just admiring Enus's bots on parade
  • [9:57] Reverend Upshaw: hello folks
  • [9:57] Enus Linden: i think 20 gellan :)
  • [9:57] Morgaine Dinova: 1 client, N agents, PyOGP is progressing nicely :-)
  • [9:57] Enus Linden: nice to see ya here....
  • [9:57] Morgaine Dinova: The bots do need avs though :-)
  • [9:58] Enus Linden: help me figure out appearance and baking and i'd be glad to morgaine :P
  • [9:58] Jonit Ivory: Yes all teh bots should be blue cats
  • [9:58] Morgaine Dinova: Haha
  • [9:58] Enus Linden: i have a stub appearance class lol
  • [9:58] Enus Linden: all my libsl bots are either totoro or the cardboard box bots or little tux wearing daft punk bots
  • [9:59] Morgaine Dinova: Avoid the problem by just attaching a sphere or something
  • [9:59] Enus Linden: i do so want appearance for pyogp soon, but its not a priority
  • [9:59] Morgaine Dinova: Ah, how to make the cloud go away .... invis?
  • [9:59] Enus Linden: as soon as they are wearing stuff the cloud goes away
  • [10:00] Morgaine Dinova: (Short of doign avs properly I mean)
  • [10:00] Enus Linden: 30 minute disconnect :)
  • [10:00] Morgaine Dinova: Bye bye bots :-)
  • [10:00] Jonit Ivory: they were intimidating, gathered there
  • [10:00] Enus Linden: ha jonit
  • [10:01] Saijanai Kuhn: if they just said hello every 30 minutes, that would have been enough, I think
  • [10:01] Enus Linden: i've done 200 libsl on a modified sim, now that's scary, 200 totoros staring at you.....
  • [10:01] Saijanai Kuhn: my eyes my eyes
  • [10:01] Jonit Ivory: hehe
  • [10:01] Saijanai Kuhn: well should be able to put 20 bots in 2+ sims each just by chaning the login parameters
  • [10:01] Jonit Ivory: well not one of them managed a group invite, so I am happy
  • [10:02] Morgaine Dinova: Enus, could the agentManager be next in line for writing, so that Sai can grab the data?
  • [10:02] Enus Linden: morgaine: sure, unless whump needs help with objects. that takes priority for me, we are working out objects and inventory to be able to regression test permissions
  • [10:02] Saijanai Kuhn: shhhh
  • [10:03] Enus Linden: we have an object permissions test plan that takes 3+ days for one person to run.
  • [10:03] Enus Linden: would be nice to automate that away
  • [10:03] Morgaine Dinova: Aye
  • [10:03] Enus Linden: and be able to run it against every branch
  • [10:03] Saijanai Kuhn: could 20 bots do it 20x as fast?
  • [10:03] Enus Linden: we run it infrequently atm
  • [10:03] Black Cat: Doll: ~^.^~ Meow!!! ~^o^~
  • [10:03] Enus Linden: i'd say 100x faster at least
  • [10:04] Enus Linden: no clicks and whatnot
  • [10:04] Saijanai Kuhn: ah, so parallelism and UI speedup too
  • [10:04] Saijanai Kuhn: so much for the Mythical ManMonth
  • [10:04] Morgaine Dinova: Bah, just 100X speedup? ;-)))
  • [10:05] Enus Linden: any other topics?
  • [10:05] Morgaine Dinova: Well this is all very nice, but ..... Sai can't get at the spawned agents, and the rest of us can't get at Sai's wx code.
  • [10:06] Enus Linden: i'll get agent manager done quite soon
  • [10:06] Enus Linden: that one is simple
  • [10:06] Enus Linden: all it is is storage of and accessibility to metadata and instances
  • [10:06] Saijanai Kuhn: morgaine, a simple list will be all I need. That and something to tell output where to stick packet info
  • [10:06] Enus Linden: i'll take a stab at it and sai can tell me what else he needs
  • [10:07] Enus Linden: should that go in before a branch is cut?
  • [10:07] Morgaine Dinova: Sai: yep. That's all I expected actually, not a manager class but a simple array in client.agents[]
  • [10:07] Enus Linden: i'm still gonna classify it :P even if it's jsut an array it stores, or a dict
  • [10:08] Saijanai Kuhn: right. The big deal will be the ability to reference the data by avaie name
  • [10:08] Enus Linden: so what do you want to key off of sai?
  • [10:09] Enus Linden: first + ' ' + last?
  • [10:09] Morgaine Dinova: Does the manager singleton add value to agent classes?
  • [10:09] Saijanai Kuhn: yeah, that should do. Maybe have a second index eventually for agent domain if we want to get fancy
  • [10:09] Enus Linden: in time it can.
  • [10:09] Enus Linden: it can keep track of who is logged in when
  • [10:09] Morgaine Dinova: Sounds good
  • [10:09] Enus Linden: and can relog members if they disconnect
  • [10:09] Enus Linden: things like that
  • [10:10] Morgaine Dinova: Cool
  • [10:10] Enus Linden: ok, i'm tuckered, and should run...
  • [10:10] Saijanai Kuhn: hey is a great stride Enus. Grats
  • [10:10] Enus Linden: will catch y'all in irc and the pyogp group
  • [10:11] Enus Linden: anyone care for a group invite btw?
  • [10:11] Saijanai Kuhn: should ask if anyone wants invites. NM
  • [10:11] Enus Linden: hehe
  • [10:11] Morgaine Dinova: Avie name is not a good index, In PyOGP there will be a distinction between visibile names and portable names
  • [10:11] Enus Linden: should be a uuid then....
  • [10:11] Enus Linden:  :)
  • [10:11] Enus Linden: we love UUIDs
  • [10:11] Saijanai Kuhn: human readable ftw
  • [10:12] Morgaine Dinova: Ie. Enus.Linden@OSgrid.org or whatever
  • [10:12] Morgaine Dinova: Yep, UUIDs are best internally
  • [10:12] Saijanai Kuhn: ye olde primary key
  • [10:12] Enus Linden: i'll do uuid, and people can map that however they want
  • [10:12] Saijanai Kuhn: as long as we can reference anything needed with the same key, it shouldn't matter
  • [10:12] Enus Linden: and we will prolly change it anyway
  • [10:13] Enus Linden: k, thanks gang!
  • [10:13] Saijanai Kuhn: could even use it in the logger namespace
  • [10:13] Jonit Ivory: Enus thanks, I wil have bot nightmares tonight
  • [10:13] Morgaine Dinova: Cheers Enus! And don't forget wx branch for Sai! :-)
  • [10:13] Saijanai Kuhn: that's right morgaine, make wor for ME
  • [10:13] Saijanai Kuhn: work*
  • [10:13] Enus Linden: happy to give you nightmares joinit :)
  • [10:13] Morgaine Dinova: Trying to allow *US* to do work :-)
  • [10:14] Enus Linden: ok morgaine, will do
  • [10:14] Enus Linden: see yas :)
  • [10:14] Saijanai Kuhn: laters enus
  • [10:14] Morgaine Dinova: waves at Enus
  • [10:14] Jonit Ivory: ciao
  • [10:15] Morgaine Dinova: Enus didn't bring his ant ... I wonder if it got eaten by his bots :P